Tutorial: Suche nach übersetzten Segmenten in vergleichbaren Korpora - mtuoc/tutorials GitHub Wiki
1. Einleitung
Bisher haben wir parallele Dokumente abgeglichen, d.h. Dokumente, bei denen die meisten Segmente des Dokuments in einer Sprache auch in dem Dokument in der anderen Sprache enthalten sind. Die Programme, die wir gesehen haben, sind in der Lage, fehlende Segmente zu erkennen und sogar nach Ausrichtungen mit einem anderen Verhältnis als 1:1 zu suchen.
In diesem Abschnitt werden wir eine Technik sehen, die es ermöglicht, herauszufinden, ob es in zwei Dokumenten, die nicht parallel sind, Segmente gibt, die einander gleichwertig sind. Dies ist möglich, indem man so genannte sentence embeddings, das ist ein Konzept ähnlich wie word embeddings, aber anstatt ein Wort mit einem Vektor, stellt es ein ganzes Gebet. Für diese Aufgabe verwenden wir mehrsprachige sentence embeddings Modelle, die es ermöglichen, Gebete in verschiedenen Sprachen in einem Vektorraum darzustellen. Auf diese Weise werden Gebete, die im Vektorraum nahe sind, viele Möglichkeiten haben, Übersetzungsäquivalent zu sein.
2. Empfohlenes Lesen
3. Vorgehensweise bei der Suche nach übersetzten Segmenten
Die Schritte zur Suche nach äquivalenten Übersetzungssegmenten in nicht-parallelen Korpora sind wie folgt:
- Wir haben eine Datei mit Segmenten in einer bestimmten Sprache (L1) und eine mit Segmenten in einer anderen Sprache (L2)
- Wir stellen die Segmente jeder Datei mithilfe eines mehrsprachigen sentence embeddings Modell dar.
- Wir vergleichen die resultierenden Vektoren für die Segmente in L1 mit allen Vektordarstellungen der Segmente in L2. Wenn ein Segment in L1 ein Segment L2 mit ausreichend ähnlichen Vektoren hat, sind diese Segmente in L1 und L2 wahrscheinlich gleichbedeutend mit Übersetzungen.
Dieser Prozess kann mit den Programmen MTUOC-bitext_mining.py und MTUOC-bitext_mining-GPU.py aus dem Repository https://github.com/mtuoc/MTUOC-aligner durchgeführt werden. Beide Programme sind das gleiche, aber das zweite erlaubt die Verwendung von GPU-Laufwerken. Der Prozess der Vektordarstellung und die Suche nach ähnlichen Vektoren haben hohe Rechenkosten, so dass es häufig notwendig ist, GPU-Laufwerke zu verwenden.
Um diese Algorithmen zu testen, werden wir das Ergebnis der Konvertierung des Medline-Downloads in Text mit dem generischen Programm verwenden, das, wenn Sie sich erinnern, zwei Textdateien erstellt hat, eine mit allen Segmenten in Englisch und die andere mit allen Segmenten in Spanisch. Sie können diese Dateien aus den folgenden Links herunterladen:
http://lpg.uoc.edu/seminarioTAN/semana_3/text-en.txt
http://lpg.uoc.edu/seminarioTAN/semana_3/text-es.txt
Wir können schreiben:
wget http://lpg.uoc.edu/seminarioTAN/semana_3/text-en.txt
wget http://lpg.uoc.edu/seminarioTAN/semana_3/text-es.txt
Wir entfernen wiederholte Segmente aus diesen Dateien:
cat text-en.txt | sort | uniq | shuf > text-uniq-en.txt
cat text-es.txt | sort | uniq | shuf > text-uniq-es.txt
Und jetzt können wir das Programm wie folgt ausführen:
python3 MTUOC-bitext_mining.py text-uniq-en.txt text-uniq-es.txt aliSBERT-uniq-brut-en-es.txt
(Vielleicht fehlt euch etwas, also wenn es euch nicht gelingt, es zu installieren: sentence_transformes und faiss-cpu, wenn ihr keine GPU habt)
Der Prozess ohne GPU ist ziemlich langsam, also Geduld.
Sie können das Ergebnis direkt herunterladen von: http://lpg.uoc.edu/seminarioTAN/Woche_4/aliSBERT-uniq-brut-eng-spa.txt
Die Ausrichtung besteht aus dem Segment im L1, Tabulator, dem Segment im L2, Tabulator und einem Vertrauensindex. Die Ergebnisse werden von dieser Vertrauensquote sortiert.
Hier ist es wichtig, eine Sichtprüfung durchzuführen. Öffnen Sie die Alignment-Datei mit einem Texteditor und blättern Sie nach unten, bis die Ergebnisse schlecht sind, um die niedrigste Rate zu bestimmen, bei der wir die Ergebnisse ablehnen. Danach können Sie das Programm selectAlignmentsFile.py verwenden, um Segmente mit einem Index auszuwählen, der höher ist als der gefundene Index.
Beachten Sie auch, dass es Linien von Segmenten L1 - L2 im Beispiel Englisch - Englisch gibt. Das ist der Grund, warum diese Segmente in den spanischen Texten erschienen sind. Betrachtet sie jetzt als eine gute Ausrichtung. In Woche 6 lernen wir, wie man Corpus reinigt und automatisch die Sprache der Segmente überprüft.