Lektion 2: Kommandozeile und TMX - mkappus1/datenmanagement-mt-25 GitHub Wiki

Willkommen zur zweiten Lektion im Kurs Datenmanagement für die MT. In dieser Lektion geht es um den Umgang mit TMX-Dateien und grundlegende Unix-Werkzeuge zur Bearbeitung und Analyse solcher Daten und anderer mehrsprachiger Korpora.

Inhalte der Lektion

  • Einführung in TMX (möglicherweise schon bekannt)
  • Tool-Übersicht
  • Manipulieren von TMX-Dateien mit Hilfe der Kommandozeile
  • Exkurs:
    • OPUS Korpora
    • Grundlegende Korpusvorbereitung mit Unix-Befehlen

Voraussetzungen für diese Lektion:

  • Eine funktionierende Linux-Umgebung, z. B. (siehe Lektion 1):
    • WSL auf Windows
    • Terminal auf dem Mac
    • oder ein natives Linux

Motivation

In diesem Block beschäftigen wir uns mit dem Bearbeiten von Dateien in der Kommandozeile mit Hilfe verschiedenster Tools. Dabei wird der Fokus auf das TMX-Datei Format gelegt, da es:

  • für viele Übersetzer:innen ein bekanntes und relevantes Format ist
  • ein Format ist, das auch beim Training und bei der Feinanpassung von NMT-Systemen nützlich sein kann
  • ein XML-Datei basiertes Format ist, und so viele Konzepte und Prozesse auch auf andere XML-basierte Formate übertragen werden können.

Hinweis: Viele der hier gezeigten Befehle und Prozesse sind besonders im Umgang mit grossen Dateien sinnvoll. Aus Gründen der Anschaulichkeit wird in diesem Kurs aber immer wieder auch mit kleineren Dateien gearbeitet für die es möglicherweise effizientere Prozesse und Werkzeuge gibt als die hier gezeigten. Bitte verwenden Sie trotzdem für die Übungen und Aufgaben wann immer möglich die vorgestellten Kommandozeilen-Tools. Natürlich können Sie diese Tools auch für andere Aufgaben als die aus diesem Kurs einsetzen.

Link zum nächsten Abschnitt (Einführung TMX)

Einführung TMX

TMX (Translation Memory eXchange) ist ein XML-basiertes Austauschformat.

Hier eine kurze (XML Einführung) für diejenigen die noch nicht mit XML gearbeitet haben.

TMX wird verwendet, um die Inhalte von Übersetzungsspeichern (Translation Memories, TMs) auszutauschen. Das Austauschformat wurde von der LISA (Localization Industry Standards Association) entwickelt und ermöglicht den Austausch von TMs zwischen verschiedenen Übersetzungsprogrammen und -umgebungen. Link zur offiziellen TMX Spezifikation

Hauptmerkmale des TMX-Formats:

  • Struktur: TMX-Dateien bestehen aus einer Hierarchie von XML-Tags, wobei <tu> (Translation Unit) einzelne Übersetzungseinheiten darstellt. Jede Einheit enthält <tuv> (Translation Unit Variant) für verschiedene Sprachvarianten.
  • Interoperabilität: Da TMX plattform- und softwareunabhängig ist, können TMs aus einem CAT-Tool (z. B. SDL Trados, MemoQ) in ein anderes importiert werden.
  • Metadaten: TMX kann auch Metadaten wie Erstellungsdatum, Bearbeiter oder Änderungen speichern.

Bedeutung für die Übersetzung:

  • TMX als Format für Translation Memory Inhalte erleichtert die Wiederverwendung von bereits übersetzten Inhalten über verschiedene Werkzeuge hinweg, was die Konsistenz und Effizienz erhöht.

Bedeutung für NMT (Neural Machine Translation):

  • TMX-Dateien stellen eine wertvolle Ressource für das Training von NMT-Systemen dar, da sie grosse Mengen an Satzpaaren in mehreren Sprachen enthalten können.
  • Saubere, gut gepflegte TMX-Dateien können die Qualität der maschinellen Übersetzung verbessern, indem sie als paralleles Korpus dienen.
  • NMT-Systeme können spezifische TMs integrieren, um Übersetzungen an kundenspezifische Terminologien und Schreibweisen anzupassen.

Hier ein kleines Beispiel für eine TMX-Datei (kann hier heruntergeladen werden):

<?xml version="1.0" encoding="UTF-8"?>
<tmx version="1.4">
  <header creationtool="ExampleTool" creationtoolversion="1.0" segtype="sentence" o-tmf="ExampleTMF" adminlang="en-US" srclang="en" datatype="PlainText"/>
  <body>
    <tu>
      <tuv xml:lang="en">
        <seg>Hello, world!</seg>
      </tuv>
      <tuv xml:lang="de">
        <seg>Hallo, Welt!</seg>
      </tuv>
    </tu>
    <tu>
      <tuv xml:lang="en">
        <seg>How are you?</seg>
      </tuv>
      <tuv xml:lang="de">
        <seg>Wie geht es dir?</seg>
      </tuv>
    </tu>
    <tu>
      <tuv xml:lang="en">
        <seg>Thank you!</seg>
      </tuv>
      <tuv xml:lang="de">
        <seg>Danke!</seg>
      </tuv>
    </tu>
  </body>
</tmx>

Hier einige Fragen zur Struktur dieser TMX-Datei?

  • Wie/wo werden Ausgangs- und Zielsprache in der TMX-Datei angegeben?
  • Wie kann man den Unterschied zwischen den Tags <tu> und <tuv> beschrieben?

Kurzer Exkurs zum Herunterladen von Dateien von der Kommandozeile aus:Herunterladen von Dateien von der Kommandozeile

Tool Übersicht

TMX-Dateien dienen hauptsächlich als Austauschformat und sind nicht dafür gedacht, von Menschen gelesen oder manuell verarbeitet zu werden. Die Inhalte eines Translation Memories (TM), die dann im TMX-Format exportiert werden können, kann man im jeweiligen CAT-Tool anschauen und in gewissem Mass auch bearbeiten. Wenn man die Inhalte der TMX-Dateien verändern möchte hat man (je nach Art der Bearbeitung, Grösse der Datei, ...) die Wahl aus verschiedenen Werkzeugen.

TMX-Editoren

Es gibt einige wenige dedizierte TMX-Editoren, mit denen man TMX-Dateien bearbeiten kann.

Tool Plattform Funktionen Status / Besonderheiten
Okapi Olifant Windows - TMX anzeigen, filtern, bearbeiten
- Zusammenführen, splitten, sortieren
- Unicode-fähig
Teil des Okapi Frameworks
Heartsome TMX Editor Plattformübergreifend (Java) - Bearbeiten, sortieren, suchen/ersetzen
- GUI altmodisch, aber funktional
Nicht mehr aktiv entwickelt, aber als Open Source verfügbar
TMX Editor (Maxprograms) Windows, macOS, Linux (Java) - Einfache TMX-Bearbeitung mit GUI
- Unterstützt TMX 1.1–1.4b
Website: maxprograms.com
OmegaT + External TMs Plattformübergreifend (Java) - Anzeige, Export und Referenz von TMX-Dateien
- Kein dedizierter TMX-Editor
In erster Linie ein CAT-Tool, aber TMX-fähig

Text-Editoren

TMX-Dateien lassen sich aber auch mit normalen Texteditoren bearbeiten. Dabei empfehlen sich Editoren, die die Bearbeitung von XML unterstützen (z. B. mit Syntaxhervorhebung). Zum Beispiel ermöglichen die Texteditoren Notepad++ (nur Windows), Sublime Text (Windows und Mac) und Visual Studio Code (Windows, Mac und Linux) das direkte Bearbeiten von XML.

Diese Werkzeuge eignen sich in der Regel nur für TMX-Dateien bis zu einer bestimmten Grösse. Bei grösseren Dateien, wie sie z.B. für das Training oder Fine-tuning von NMT-Systemen benötigt werden, ist die Arbeit mit diesen Werkzeuge oft mühsam, da die Werkzeuge bei grossen Dateien nur sehr langsam reagieren.

Dedizierte Kommandozeilen Tools (für XML-basierte Formate)

Grössere (TMX-) Dateien lassen sich oft besser mit Kommandozeilentools zur Manipulation von Dateien bearbeiten, wie sie in Linux (und ähnlichen Umgebungen) standardmässig zur Verfügung gestellt werden. Darüber hinaus gibt es spezielle Kommandozeilen-Tools, mit deren Hilfe man TMX-Dateien (bzw. XML-Dateien im allgemeinen) bearbeiten kann. Die bekanntesten sind wahrscheinlich:

  • xmllint (Kommandozeile) – zum Prüfen und Formatieren von TMX.
  • xmlstarlet – vielseitiges Tool zum Bearbeiten, Extrahieren und Transformieren von XML.

Darüber hinaus lassen sich TMX-Dateien auch mit Hilfe von Python-Skripten manipulieren. Dazu sollte man sogenannte Bibliotheken für die Verarbeitung von XML-Dateien (xml.etree.ElementTree oder lxml) in Python importieren. Mehr dazu später in diesem Kurs.

Gerade kleinere TMX-Dateien können im CAT-Tool, mit TMX-Editoren oder normalen Texteditoren einigermassen effizient bearbeitet werden. Bei grösseren TMX-Dateien empfiehlt es sich jedoch, direkt in der Kommandozeile oder mit (Python-)Skripten zu arbeiten.

Hier ein kleines Quiz zum Thema TMX

Praktische Übungen zum TMX-Format

Im folgenden finden Sie ein paar praktische Übungen, in denen Sie lernen werden, wie Sie mit TMX-Dateien (und anderen Text-basierten) Dateien in der Kommandozeilenumgebung umgehen können. Laden Sie die Dateien

Inhalte einer TMX-Datei anzeigen lassen

Lassen Sie sich zunächst über den Befehl lsden Inhalt des neuen Verzeichnisses (mit den beiden TMX Dateien) anzeigen.

image

In der Kommandozeile gibt es eine Reihe von Befehlen, mit denen man Inhalte von (grossen) TMX-Dateien (aber auch anderen textbasierten Dateien) schnell anzeigen kann.

Inhalte grosser TMX-Dateien schnell auf dem Bildschirm anzeigen: Die Befehle cat, more und less

Exkurs: Die Befehle cat, more und less.

Der Befehl cat („concatenate“)

Verwendung: Zeigt den Inhalt einer Datei an oder verbindet mehrere Dateien.

Beispiel:

cat datei.txt zeigt den Inhalt der Datei datei.txt an.

Mit dem Befehl cat datei1.txt datei2.txt > zusammen.txt werden die Inhalte der Dateien datei1.txt und datei2 zusammengeführt und in eine neue Datei mit dem Namen zusammen.txt geschrieben. Ohne den Zusatz > zusammen.txt würden die Inhalte der beiden Dateien einfach am Bildschirm zusammengefügt und angezeigt.

Führen Sie die Befehle die folgenden Befehle nacheinander aus und notieren Sie die Ergebnisse (also was passiert). Gibt es Probleme mit der praktischen Nützlichkeit des Befehls cat?

  • cat tmx_klein.tmx
image
  • cat tmx_gross.tmx
image
  • cat tmx_klein.tmx tmx_klein2.tmx
image
  • cat tmx_klein.tmx tmx_klein2.tmx > tmx_neu.tmx
image
  • lassen Sie sich den Inhalt des Verzeichnisses mit ls noch einmal anzeigen.
image
  • cat tmx_neu.tmx
image
Der Befehl less

Verwendung: Anzeige von Textdateien seitenweise mit der Möglichkeit zu scrollen. Praktischer als cat bei grossen Dateien.

less grosse_datei.txt

Mit den Pfeiltasten und den Tasten Bild hoch/runter kann man zur vorherigen/nächsten Seite navigieren. Mit der Tasteq kann less beendet werden.

→ Lektion zu Texteditoren aus dem letzten Jahr.

Der Befehl nano in Unix (inklusive Linux und WSL) startet einen einfachen, textbasierten Texteditor direkt im Terminal. Mit nano können Sie Textdateien anzeigen und bearbeiten. Es ist ein beliebter Editor, da er im Vergleich zu anderen Unix-Editoren wie vim oder emacs als sehr benutzerfreundlich gilt.

3. Grundlegende Nutzung von nano:

  1. Öffnen einer Datei:
    Sie können eine Datei mit nano öffnen, indem Sie den Befehl zusammen mit dem Dateinamen eingeben:
nano dateiname.txt

Wenn die Datei nicht existiert, wird sie automatisch erstellt.

  1. Bearbeiten von Dateien:
    Sobald die Datei geöffnet ist, können Sie den Text direkt bearbeiten. Die Navigation erfolgt über die Pfeiltasten.

  2. Speichern von Änderungen:
    Um die Änderungen zu speichern, drücken Sie Ctrl + O (das bedeutet, dass Sie gleichzeitig die Ctrl-Taste und die O-Taste drücken). Anschließend können Sie den Dateinamen bestätigen oder ändern, indem Sie die Enter-Taste drücken.

  3. Beenden des Editors:
    Um den Editor zu schließen, drücken Sie Ctrl + X. Falls Sie die Datei nicht gespeichert haben, fragt nano, ob Sie Ihre Änderungen speichern möchten.

Nützliche Tastenkombinationen in nano:

  • Ctrl + G: Hilfemenü anzeigen.
  • Ctrl + W: In der Datei nach einem Textabschnitt suchen.
  • Ctrl + K: Eine Zeile ausschneiden.
  • Ctrl + U: Ausgeschnittenen oder kopierten Text einfügen.
  • Ctrl + C: Aktuelle Cursorposition anzeigen.

Beispiel für den Befehl:

nano /home/user/dokument.txt

Dies öffnet die Datei dokument.txt zur Bearbeitung. Wenn die Datei nicht existiert, wird sie neu erstellt.

nano ist ideal für schnelle Änderungen an Konfigurationsdateien oder zum Erstellen und Bearbeiten einfacher Textdateien in einer Unix-Umgebung.

Nach bestimmten Begriffen oder Tags innerhalb einer TMX-Datei suchen.

Mit Hilfe der Befehl **grep** oder **findstr** Kann man nach bestimmten Begriffen oder Tags innerhalb einer (TMX)-Datei suchen.

Exkurs: Was machen die Befehle grep und findstr:

Zum Beispiel:

grep -i "<seg>" beispiel.tmx
  • Wie kann man die Segmente, die einen bestimmtem Begriff enthalten in eine neue Datei schreiben (also "filtern")?

  • wc -l: Zählen, wie viele Zeilen die Datei hat – als erste Schätzung der Grösse.

**Hier die Befehle sort, ... aus dem letzten Jahr vorstellen

TMX-Dateien konvertieren oder splitten

Mit dem Befehl split können grosse TMX-Dateien in kleinere Portionen aufgeteilt werden, um sie für Tests oder Analysen vorzubereiten

split

Verwendung: Der Befehl split teilt grosse Dateien in kleinere Stücke.

**Beispiel: **

split -l 1000 grosse_datei.txt teil_

Diese Anweisung teilt grosse_datei.txt in Dateien mit je 1000 Zeilen. Die erzeugten Dateien heissen teil_aa, teil_ab, teil_ac, ...

Exkurs: OPUS Corpora

Bisher haben wir mit relativ kleinen Dateien gearbeitet. Um NMT-Systeme zu trainieren, werden aber grössere parallele Korpora von ausreichender Grösse benötigt. Diese können theoretisch selbst erstellt werden (einige der dafür benötigten Methoden werden im späteren Verlauf des Kurses vorgestellt), es gibt im Internet aber auch mehrere Repositories, aus denen wir parallele Korpora für verschiedene Sprachpaare und Fachgebiete beziehen können. Ein Repository sticht dabei besonders hervor: Opus Corpora.

Rufen Sie diese Ressource auf und sehen Sie sie sich genau an. Auf der Webseite gibt es eine Suchmaschine, in die Sie die gewünschte Ausgangs- und Zielsprache eingeben können. Wenn Sie Englisch als Ausgangssprache und Deutsch als Zielsprache eingeben, werden Sie sehen, dass Ihnen ihnen viele Korpora in dieser Sprachrichtung angezeigt werden (diejenigen, die lieber mit Italienisch oder Französisch arbeiten, können das natürlich entsprechend anpassen) Auswahl der Sprachen in OPUS

Sie sehen eine Tabelle mit grundlegenden Statistiken jedes Korpus mit der Anzahl der Segmente und der Token. Liste der Korpora in OPUS Jeder Korpusname auf der Webseite ist ein Link. Wenn Sie darauf klicken, gelangen Sie auf eine Seite, auf der die Details des angegebenen Korpus erklärt werden.

Eine Eigenschaft dieser Korpora ist, dass die Ausgangssprache des Korpus nicht unbedingt die eigentliche Originalsprache und die Zielsprache die Übersetzung sein muss. In einem englisch-deutschen Korpus kann es beispielsweise sein, dass in einem Segment Englisch das Original und Deutsch die Übersetzung ist, in einem anderen Segment kann es aber auch umgekehrt sein. Es ist sogar möglich, dass die beiden Sprachen in Wirklichkeit die Übersetzung aus einer dritten Sprache sind, die dann das Original wäre. Wenn wir uns die detaillierte Beschreibung des Korpus ansehen, können wir herausfinden, oder zumindest erahnen, ob es sich tatsächlich um die Originale handelt oder nicht.

Ein weiterer wichtiger Punkt ist, dass einige der Korpora wirklich riesig sind und das Herunterladen sehr viel Zeit und Speicherplatz auf Ihrem Computer erfordert.

Laden Sie nun ein (relativ) kleines Korpus herunter, z.B. das "ELRC-vaccination v1" mit ein paar Hundert Segmenten Segmenten (laden Sie jetzt nicht das ELRC-EMEA herunter, das viel grösser ist.

Vaccination Korpus

Übersicht über das Korpus ELRC-vaccination

Sie werden sehen, dass Sie es im sogenannten Moses-Format und im TMX-Format herunterladen können. Formate für den Dwonload

Laden Sie beide Formate herunter, entpacken Sie die Dateien, falls nötig, und sehen Sie sie sich an, indem Sie sie in einem guten Texteditor öffnen (ich gebe Ihnen weiter unten einige Tipps, welche Texteditoren geeignet sind). Verwenden Sie keine Korpora mit mehr als 1 Mio. Segmenten, da der Editor sonst wahrscheinlich abstürzen wird. https://object.pouta.csc.fi/OPUS-ELRC-vaccination/v1/moses/en-it.txt.zip https://object.pouta.csc.fi/OPUS-ELRC-vaccination/v1/moses/en-fr.txt.zip https://object.pouta.csc.fi/OPUS-ELRC-vaccination/v1/moses/de-en.txt.zip

Aufgabe: Beschreiben Sie den Aufbau des Moses Dateiformats in wenigen Worten. Wie unterscheidet sich das Moses Format vom TMX-Format?

Grundlegende Korpusvorbereitung mit Unix-Befehlen

Beschaffung des Korpus

In diesem Abschnitt werden wir eine grundlegende Korpusvorverarbeitung mit Unix-Befehlen und einigen einfachen Dienstprogrammen durchführen. In diesem Kurs wollen wir ein NMT-System für das Fachgebiet Medizin und das Sprachpaar Englisch - Deutsch (oder Englisch - Italienisch) trainieren. Um mit der Vorverarbeitung zu beginnen, müssen wir auf unser Linux-Terminal zugreifen und das Korpus herunterladen. Zunächst einmal möchten wir das Opus Corpora EMEA-Korpus im Moses-Format herunterladen. Sie können die Website von Opus Corpora besuchen und mit Hilfe der Suchmaschine den Download-Link auswählen und ihn von der Website herunterladen, oder Sie kopieren den Download-Link und laden ihn mit wget herunter:

wget https://object.pouta.csc.fi/OPUS-EMEA/v3/moses/de-en.txt.zip (Englisch - Deutsch)

wget https://object.pouta.csc.fi/OPUS-EMEA/v3/moses/en-it.txt.zip (Englisch - Italienisch)

Wenn Sie eine Fehlermeldung erhalten, dass Sie wget nicht installiert haben, können Sie es installieren (unter Ubuntu 22.04 und anderen Debian-basierten Distributionen):

sudo apt-get install wget

Sobald das Korpus heruntergeladen wurde, müssen wir es entpacken, da es als Zip-Datei heruntergeladen wird. Gehen Sie dazu im Terminal in das Verzeichnis, in dem sich die Datei befindet, und geben Sie folgenden Befehl ein:

unzip de-en.txt.zip

unzip en-it.txt.zip (Italienisch)

Achtung: Wenn die Anwendung unzip auf Ihrem Linux-System unzip nicht installiert ist und dieser Befehl eine Fehlermeldung ausgibt, können Sie es mit dem folgenden Befehl installieren:

sudo apt-get install unzip

Grundlegende Vorverarbeitungen

Sobald die Dateien entpackt sind, sehen Sie mehrere Dateien, darunter (die Namen können je nach Sprachpaar oder Korpus, das Sie gewählt haben, variieren):

  • EMEA.de-en.en: der englische Teil des Korpus
  • EMEA.de-en.de: der deutsche Teil des Korpus

Segmente zählen

Wir können die Anzahl der Segmente (Zeilen) im Korpus mit Hilfe des Befehls wc zählen. Der Befehl wc, erlaubt es die Anzahl der Zeilen, Wörter und Bytes in den Dateien zu zählen, die mit dem Parameter _Datei _angegeben wurden. Die Syntax des Befehls sieht folgendermassen aus: wc [Option] [Datei] Dabei gibt es die folgenden Optionen:

  • -c: Zählt lediglich die Bytes innerhalb einer Datei.
  • -L: Gibt die Länge der längsten Zeile aus.
  • -l: Zählt nur die Zeilen innerhalb der Datei.
  • -m: Gibt ausschliesslich die Zeichen innerhalb der Datei an.
  • -w: Zählt nur die Wörter in der Datei.
wc -l EMEA.de-en.??
  1108752 EMEA.de-en.de
  1108752 EMEA.de-en.en
  2217504 total

Wie erwartet, haben die beiden Dateien die gleiche Anzahl von Zeilen, da es sich um Parllelkorpora handelt. Dieses parallele Korpusformat mit zwei zeilenweise ausgerichteten Dateien wird als Moses-Format bezeichnet.

Tabellenförmiges Format erstellen

Wir wollen nun dieses Korpus im Moses-Format in ein Korpus im tabellenförmigen Textformat zu konvertieren (mit _Paste_verbinden wir nacheinander jede Zeile der ersten Datei mit einem Tabulator und der entsprechenden Zeile der zweiten Datei). Gleichzeitig entfernen wir die Wiederholungen (mit sort | uniq) und wir sortieren das Korpus nach dem Zufallsprinzip (mit shuf):

Eine kleine Übung zu diesem Vorgehen zusammen mit einer detaillierteren Erklärung der verwendeten Befehle finden Sie hier: Übung-Inhalt von 2 Dateien in einer Datei tabellenförmig zusammenfassen.


Was macht der Befehl paste?

Ähnlich wie cat ermöglicht das Kommandozeilenprogramm paste die Ausgabe von Dateiinhalten auf die Standardausgabe. Während cat jedoch Inhalte einfach aneinanderreiht, werden sie mit paste spaltenweise aneinandergereiht. Das Grundschema des Befehls ist:

paste [OPTIONS] DATEI1 DATEI2 ...

Das von paste verwendete Trennzeichen kann mit der Option -d angepasst werden. Standardmässig werden Tabulatoren verwendet. Mit der Option _-s _ (serial) kann ein zweiter Modus aktiviert werden. In diesem werden alle Zeilen der ersten Eingabedatei in einer eigenen Zeile in die Ausgabe übernommen. Jede Zeile der Ausgabe enthält somit nur den Inhalt einer Eingabedatei.


paste EMEA.de-en.en EMEA.de-en.de | sort | uniq | shuf > EMEA-uniq-eng-deu.txt

Wenn auf Ihrem System shuf nicht installiert ist, geben Sie ein:

apt-get install coreutils

Jetzt können wir die Anzahl der Zeilen in der resultierenden Datei zählen:

wc -l EMEA-uniq-eng-deu.txt
366888 EMEA-eng-deu.txt

Wie wir sehen können, ist die Anzahl der Segmente geringer, da es in der ursprünglichen Datei sich wiederholende Segmente gab. Tatsächlich gab es in diesem Korpus eine Menge wiederholter Segmente, da sich die Zahl von mehr als 1 Mio. Segmente auf etwas mehr als 350.000 Segmente reduziert hat.

Wir haben gelernt, wie man vom Moses-Format zu tabellarischem Text übergeht, aber es ist auch möglich, mit dem Befehl cut von tabellarischem Text zu Moses überzugehen:

cut -f 1 EMEA-uniq-eng-spa.txt > EMEA-uniq.en
cut -f 2 EMEA-uniq-eng-spa.txt > EMEA-uniq.de

Anzeigen von Dateien im Terminal

Unter Unix können Sie den Inhalt von Dateien, wie gross sie auch sein mögen, mit den folgenden Befehlen anzeigen:

cat: Dieser Befehl verkettet den Inhalt von Dateien und zeigt ihn auf dem Bildschirm an, wenn nicht angegeben ist, wo er abgelegt werden soll, etwa so

cat EMEA-uniq-eng-deu.txt

zeigt den Inhalt schnell und ohne Unterbrechung an. Um es zu stoppen, drücken Sie Strg+C

more: zeigt den Inhalt der Datei an, hält aber an, wenn der Bildschirm voll ist, und um fortzufahren, müssen Sie Enter drücken. Der Befehl less bewirkt übrigens genau dasselbe.

more EMEA-uniq-eng-deu.txt

tail: zeigt die letzten Zeilen der Datei an.

tail EMEA-uniq-eng-spa.txt

6.4 Zwei Dateien konkatenieren (aneinanderhängen) und Wiederholungen entfernen

Wie wir gesehen haben, ist unser EMEA-Korpus nach dem Entfernen der wiederholten Segmente zu klein geworden. Wie können wir unser Korpus sinnvoll erweitern um eine ausreichende Datenmenge zu erhalten? Wenn wir uns die Ressourcen in Opus ansehen, sehen wir, dass wir das Korpus ELRC-EMEA zur Verfügung haben.

grafik Um die Inhalte diese Korpus zu unserem bereinigten Korpus hinzuzufügen, führen Sie die folgenden Operationen aus (analog zum EMEA-Koprus):

Laden Sie das ELRC-EMEA Korpus im Moses Format herunter (ACHTUNG: wenn Sie dies im gleichen Verzeichnis wie die EMEA-Dateien tun, löschen Sie zuerst die en-es.txt.zip mit rm en-en.txt.zip oder benennen Sie die ursprüngliche ZIP-Datei mit dem Befehl mv alterdateiname neuerdateiname um (mv steht eigentlich für move))

wget https://object.pouta.csc.fi/OPUS-ELRC-EMEA/v1/moses/de-en.txt.zip

Entpacken Sie die heruntergeladenen ZIP-Datei:

unzip de-en.txt.zip

Zählen Sie die Inhalte der beiden heruntergeladenen Dateien.

wc ELRC-EMEA.de-en.*

Entfernen Sie Doubletten und führen Sie die beiden einsprachigen Dateien zusammen. paste ELRC-EMEA.de-en.en ELRC-EMEA.de-en.de | sort | uniq | shuf > ELRC-EMEA-uniq-eng-deu.txt

wc -l ELRC-EMEA-uniq-eng-deu.txt 777372 ELRC-EMEA-uniq-eng-deu.txt

Nun wollen wir die beiden bereinigen Korpora wie folgt kombinieren:

cat EMEA-uniq-eng-deu.txt ELRC-EMEA-uniq-eng-deu.txt | sort | uniq | shuf > corpusEMEA-uniq-eng-deu.txt

Wir verwenden den Befehl cat statt wie vorher paste, weil wir die Inhalte beiden Dateien ja hintereinander zusammenführen wollen und nicht wie vorher Inhalte von beiden Dateien auf einer Zeile zusammenführen wollen.

Dann zählen wir, wie viele unetrschiedliche Segmente wir haben:

wc -l korpusEMEA-uniq-eng-eu.txt
1144260 corpusEMEA-uniq-eng-deu.txt

Am Ende haben wir ein Korpus mit etwas mehr als 1 Mio. Segmenten aus dem Bereich Medizin erhalten. Dieses Korpus wird die Grundlage für die Engine sein, die wir in diesem Kurs trainieren werden. Geben Sie Ihre Korpusdatei hier auf Moodle ab.


Ein zusammenfassenden Video zu diesen Schritten gibt es auf Moodle.

⚠️ **GitHub.com Fallback** ⚠️