2.5 Alignment mit hunalign - mkappus1/DatenmanagementMTHS24 GitHub Wiki
Im vorigen Abschnitt haben wir gelernt, wie man LF-Aligner verwendet, ein Programm, das auf dem berühmten Programm hunalign basiert. In diesem Abschnitt werden wir lernen, wie wir hunalign direkt verwenden können, was es uns ermöglicht, eine große Anzahl von Dokumenten in einem einzigen Schritt zu alignieren. Im Gegensatz zu LF-Aligner richtet hunalign jedoch nur die Dokumente aus, aber es gibt eine Reihe allgemeiner Schritte, die wir selbst durchführen müssen. Die allgemeinen Schritte für das Alignment von Dokumenten sind:
- Konvertierung der Dateien in Text.
- Segmentierung der Textdateien. Im Allgemeinen möchten wir ein Alignment auf Satz- oder Segmentebene durchführen. Daher müssen wir den Text des Dokuments, der normalerweise in Absätzen organisiert ist, in Segmente oder Sätze unterteilen.
- Das Alignment selbst, das wir mit hunalign durchführen werden. Das Programm setzt die Segmente der Originaldatei mit den Segmenten der übersetzten Datei in Beziehung.
- Auswahl der Segmente auf der Grundlage eines von hunalign für jedes Segment bereitgestellten Qualitätsindexes.
- Konvertierung des Alignments in das gewünschte Format. Am Ende des Prozesses haben wir eine tabellarische Textdatei, die wir eventuell in ein anderes Format konvertieren müssen, z.B. TMX.
In diesem Schritt können Sie die Dateien alignieren, die Sie möchten, aber zu Testzwecken schlage ich die gleichen Dateien vor, die wir mit LF-Aligner aligniert haben:
- N2130752-eng.docx
- N2130755-spa.docx
Diesen ersten Schritt können Sie mit einem Programm Ihrer Wahl durchführen. Hier sehen wir uns ein Programm aus dem MTUOC-Toolkit an, mit dem Sie eine große Anzahl von Formaten in Text umwandeln können: MTUOC-any2text.
Alle Einzelheiten zur Verwendung dieses Tools finden Sie in seinem Wiki, daher werde ich hier einfach die Anweisungen wiedergeben, die wir zur Durchführung der Konvertierung verwenden müssen. Bevor Sie die Programme ausführen, vergessen Sie nicht, die Voraussetzungen zu installieren.
Um die Datei N2130752-eng.docx in Text zu konvertieren, geben wir in Terminal ein:
python3 MTUOC-any2text.py -i N2130752-eng.docx
Und um die Datei N2130755-spa.docx zu konvertieren, schreiben wir:
python3 MTUOC-any2text.py -i N2130755-spa.docx
Sie werden sehen, dass Textdateien erstellt wurden, bei denen die Dateierweiterung .txt an die ursprünglichen Dateinamen angehängt wurde.
Auch dieser Schritt kann mit vielen Programmen durchgeführt werden. Ich schlage vor, https://github.com/mtuoc/MTUOC-segmenter zu verwenden. Hier werden wir einen Segmentierer verwenden, der auf einer SRX-Datei (Segmentation Rules eXchange) basiert. Eine Datei segment.srx wird mit dem Programm mitgeliefert, aber Sie können auch jede andere SRX-Datei verwenden. Öffnen Sie die Datei segment.srx mit einem guten Texteditor und sehen Sie sich den Inhalt an. Sie werden sehen, dass es eine Reihe von Sprachen gibt, für die spezifische Regeln gelten. Wenn Ihre Arbeitssprachen nicht in dieser srx-Datei enthalten sind, können Sie die generische Sprache verwenden, eine andere srx-Datei suchen oder den Abschnitt Mehr über Segmentierung weiter unten in diesem Abschitt lesen.
Die Erklärung des Programms finden Sie in seinem Wiki, daher stellen wir hier nur die notwendigen Befehle vor. Vergessen Sie auch hier nicht (wie bereits beschrieben), die Voraussetzungen zu installieren.
Um die Datei _N2130752-eng.docx.txt _zu segmentieren, geben wir im Terminal ein:
python3 MTUOC-segmenter.py -i N2130752-eng.docx.txt -o N2130752-seg-eng.docx.txt -s segment.srx -l English -p
Und um die Datei N2130755-spa.docx.txt zu segmentieren, schreiben wir:
python3 MTUOC-segmenter.py -i N2130755-spa.docx.txt -o N2130755-seg-spa.docx.txt -s segment.srx -l Spanisch -p
Sehen Sie sich die segmentierten Dateien an (mit dem Befehl more oder indem Sie sie in einem Texteditor öffnen). Wie Sie sehen, haben wir die Option -p verwendet, damit bei jedem Absatzumbruch eine Absatzmarke hinzugefügt wird. Diese Information ist später bei der Verwendung von hunalign nützlich.
Auf der Hunalign-Website finden Sie ausführliche Informationen über die Verwendung dieses Tools. Sie können die hunalign-Binärdateien für Linux, Windows und Mac auch von https://github.com/mtuoc/hunalign herunterladen. Diese Dateien sind:
- Für Linux: hunalign
- Für Windows: hunalign.exe und außerdem werden msvcp100.dll und msvcr100.dll benötigt.
- Für Mac: hunalignMAC (eventuell müssen Sie den Namen in hunalign ändern oder daran denken, das Programm mit dem richtigen Namen auszuführen).
Zum Alignment mit hunalign benötigen Sie ein zweisprachiges Wörterbuch im richtigen Format. Sie können Wörterbücher aus dem Repository https://github.com/aoliverg/hunapertium beziehen, selbst welche erstellen oder das Programm MUSE2Hunalign.py verwenden, das mit MTUOC-aligner verteilt wird. Obwohl sich die Genauigkeit des Alignments mit der Verwendung von Wörterbüchern verbessert, können Sie auch mit einer leeren Datei arbeiten, wenn Sie keine Wörterbücher für das Arbeitssprachpaar haben (das leere Wörterbuch null.dic wird mit MTUOC-aligner verteilt). Unter Unix können Sie ein leeres Wörterbuch erstellen, indem Sie eingeben:
touch null.dic
Bei den Dateien für diese Woche finden Sie auch das Wörterbuch hunapertium-en-de-de.dic
./hunalign hunapertium-en-en-es.dic N2130752-seg-eng.docx.txt N2130755-seg-spa.docx.txt -text -utf -realign > alignment-eng-spa.txt
In der Hunalign-Dokumentation finden Sie die Erklärung zu jedem dieser Parameter. In alinacion-eng-spa.txt finden Sie nun das Ergebnis des automatischen Alignments. Unten sehen wir einen Ausschnitt davon:
<p> <p> 0
I. I. 1.8
Bestandsaufnahme der wichtigsten globalen Verpflichtungen im Bereich Gesundheit und Außenpolitik Bestandsaufnahme der wichtigsten globalen Verpflichtungen im Bereich Gesundheit und Außenpolitik 1.09821`
<p> <p> 0
Absatzmarken werden an Absatzmarken ausgerichtet, haben aber einen Index von 0, da diese Ausrichtung für uns nicht funktioniert. In den verbleibenden Segmenten haben wir das englische Segment, Tab, das spanische Segment, Tab und den Zuverlässigkeitsindex. Schritt 4: Auswählen der Segmente
Jetzt wollen wir die Segmentpaare mit einer Reliabilität oberhalb einer bestimmten Grenze, z.B. 0, auswählen. Dies können Sie mit dem Programm selectAlignmentsFile.py tun, das mit MTUOC-aligner verteilt wird. Die Option -h zeigt Ihnen die Hilfe an. Wir können schreiben
python3 selectAlignmentsFile.py -i alignment-eng-spa.txt -o alignment-selected-eng-spa.txt -c 0
Und nur Segmentpaare mit einem Zuverlässigkeitsindex größer als 0 werden ausgewählt. Betrachten Sie das Ergebnis mit mehr oder öffnen Sie es in einem Texteditor. Schritt 5: Konvertierung in das endgültige Format
Jetzt haben wir unseren parallelen Korpus in einem tabellarischen Textformat, das sich bereits gut für das Motorentraining eignet. Dieser Korpus kann wiederholte Segmente enthalten. Denken Sie daran, dass wir diese mit dem folgenden Befehl entfernen können:
cat align-selected-eng-spa.txt | sort | uniq | shuf > align-unic-eng-spa.txt
Wenn wir diese eindeutigen Segmente in das Moses-Format umwandeln wollen, können wir das tun:
cut -f 1 ausrichten-unic-eng-spa.txt > alienacion-unic.en-en.en
cut -f 2 alineacion-unic-eng-spa.txt > alineacion-unic.en-en-es.en
Nicht für Trainingsmaschinen, aber vielleicht für die Verwendung dieses Parallelkorpus als Übersetzungsspeicher in unseren computergestützten Übersetzungswerkzeugen sind wir daran interessiert, das Alignment ins TMX-Format zu konvertieren. Dazu können wir das Programm MTUOC-tabtxt2TMX.py verwenden. Dieses Programm zeigt die Hilfe mit der Option -h an:
python3 MTUOC-tabtxt2TMX.py -h
Verwendung: MTUOC-tabtxt2TMX.py [-h] -i INPUT -o FSORTID -s L1 -t L2
MTUOC-tabtxt2TMX: Ein Skript zur Konvertierung eines parallelen Korpus in tabellarischem Text in eine TMX-Datei.
Optionen:
-i INPUT, --input INPUT
Die zu konvertierende Eingabedatei.
-o FSORTIDA, --output FSORTIDA
Behebt einige Probleme bei der PDF-Konvertierung.
-s L1, --L1code L1 Der Sprachcode für die Ausgangssprache.
-t L2, --L2code L2 Der Sprachcode für die Zielsprache.
Um die Datei alineacion-unic-eng-spa.txt in TMX zu konvertieren, können wir schreiben:
python3 MTUOC-tabtxt2TMX.py -i alignment-unic-eng-spa.txt -o alignment-eng-spa.tmx -s en-US -t es-ES
Der Vorteil der Verwendung von hunalign gegenüber LF-Aligner ist neben der besseren Kontrolle über alle Parameter die Möglichkeit, Hunderte oder Tausende von Dokumentenpaaren sehr schnell zu alignieren. In diesem Abschnitt erfahren Sie, wie Sie etwa 260 Paare von docx-Dokumenten ausrichten können, die Sie in den folgenden gezippten Dateien finden:
-
2023-de.zip
-
2023-de.zip
Laden Sie diese Dateien herunter und entpacken Sie sie.
Die Programme, die wir Ihnen für die verschiedenen Schritte des Alignments zweier Dokumente vorgestellt haben, liegen auch in der DIR-Version vor, die mit allen Dateien in einem bestimmten Verzeichnis umgehen kann.
SEHR WICHTIG: Um mehrere Dateien automatisch alignieren zu können, müssen die Dateinamen der Ausgangs- und der Zielsprache:
-
müssen exakt denselben Namen haben. Zum Beispiel: Datei1.txt und Datei1.txt (da sie sich in verschiedenen Verzeichnissen befinden, gibt es kein Problem).
-
oder sie haben genau den gleichen Namen, können sich aber durch Codes am Ende unterscheiden, die die Sprache der Datei angeben. Zum Beispiel: file1-de.txt und file1-de.txt.
Im Folgenden werden alle Schritte zum Alignment mehrerer Dokumentenpaare erläutert: Schritt 1: Konvertierung der Dateien in Text
Wir werden die DIR-Version von MTUOC-any2text verwenden, MTUOC-any2textDIR.py. Sie können die Gebrauchsanweisung mit der Option -h einsehen.
python3 MTUOC-any2textDIR.py -i 2023-de/ -o 2023-txt-de
python3 MTUOC-any2textDIR.py -i 2023-de/ -o 2023-txt-de
In den Verzeichnissen 2023-txt-en und 2023-txt-en haben wir die in Text konvertierten Dateien. Schritt 2: Segmentierung der Dateien
Wir werden die DIR-Version von MTUOC-segmenter verwenden, MTUOC-segmentertDIR.py. Sie können die Gebrauchsanweisung mit der Option -h einsehen.
python3 MTUOC-segmenterDIR.py -i 2023-txt-de/ -o 2023-seg-de -s segment.srx -l Englisch -p
python3 MTUOC-segmenterDIR.py -i 2023-txt-en/ -o 2023-seg-en -s segment.srx -l Spanisch -p
In den Verzeichnissen 2023-seg-en und 2023-seg-es haben wir die segmentierten Textdateien. Schritt 3. Alignment
Der Schritt des Alignments mit hunalign erfolgt im Batch-Modus, den dieses Programm bietet. hunalign kann mit einer Batch-Datei versehen werden, die in jeder Zeile Folgendes enthält: segmentierte Datei in der Ausgangssprache TABULADOR segmentierte Datei in der Zielsprache TABULADOR-Datei, die das Alignment enthalten wird.
MTUOC-aligner stellt ein Programm, MTUOC-create-batchfile.py, zur Verfügung, das diese Batch-Datei automatisch erstellt. Die Option -h zeigt die folgende Hilfe an:
python3 MTUOC-create-batchfile.py -h Verwendung: MTUOC-create-batchfile.py [-h] --dirSL DIRSL --dirTL DIRTL --dirALI DIRALI --batchfile BATCHFILE [--r1 R1] [--r2 R2]
Ein Skript zur Erstellung der Batch-Datei, die mit hunalign verwendet werden soll.
Optionen:
-h, --help diese Hilfemeldung anzeigen und beenden
--dirSL DIRSL Das Eingabeverzeichnis, das die segmentierten Textdateien für die Ausgangssprache enthält.
--dirTL DIRTL Das Eingabeverzeichnis, das die segmentierten Textdateien für die Zielsprache enthält.
--dirALI DIRALI Das Ausgabeverzeichnis zum Speichern der ausgerichteten Dateien.
--batchfile BATCHFILE
Der Name des Alignment-Skripts.
--r1 R1 Die erste Zeichenfolge für die Namensersetzung.
--r2 R2 Die zweite Zeichenfolge für die Namensersetzung.
Schauen Sie sich die zu alignierenden Dateien genau an: Der Name der Dateien ist für die Ausgangs- und die Zielsprache genau gleich. Wenn wir den folgenden Befehl ausführen:
python3 MTUOC-create-batchfile.py --dirSL 2023-seg-de/ --dirTL 2023-seg-de/ --dirALI 2023-ali-en-de/ ---batchfile batchfile.txt
Das Programm erstellt die Batchdatei mit dem Namen batchfile.txt. Außerdem zeigt es die folgenden Informationen auf dem Bildschirm an:
``
*** as-zimbabwe-bildet-einen-großen-bruder-staat-der-überwachung.txt.docx.txt
*** in-türkei-gerichte-verurteilen-den-bürgermeister.txt.docx.txt
*** dieses-spiel-an-der-linie-entlarvt-die-gefahren-des-bergbaus-im-hohen-meer.txt.docx.txt
Das bedeutet, dass diese Dateien in der Ausgangssprache keinen Partner in der Zielsprache haben.
Falls die Dateien Sprachcodes am Ende des Namens haben, z.B. alle Dateien in der Ausgangssprache enden auf „-en.txt“ und die in der Zielsprache enden auf „-es.txt“, würden wir das Programm mit den Optionen --r1 und --r2 wie folgt ausführen:
python3 MTUOC-create-batchfile.py --dirSL 2023-seg-de/ --dirTL 2023-seg-de/ --dirALI 2023-ali-en-de/ --batchfile batchfile.txt --r1 en.txt --r2 es.txt
Sehen Sie sich den Inhalt der Datei batchfile.txt an.
Jetzt können wir alle Dateien mit einem einzigen Befehl alignieren:
`./hunalign -batch hunapertium-en-en.dic -text -utf -realign batchfile.txt`
Unter der Adresse 2023-ali-en-en-es werden wir alle Dateien ausgerichtet haben.
Schritt 4. die Auswahl der Segmente
Die Auswahl der Dateien erfolgt mit dem Programm selectAlignmentsDir.py, wie folgt (denken Sie daran, dass die Option -h die Hilfe des Programms anzeigt).
`python3 selectAlignmentsDir.py -i 2023-ali-de-es/ -o alignments-selected-eng-spa.txt -c 0`
Schritt 5: Konvertierung in das endgültige Format
In diesem Schritt ändert sich nichts am Alignment der beiden Dokumente, so dass Sie die oben beschriebenen Aktionen wiederholen können.