Dieses Repository präsentiert die Arbeit während meiner Masterarbeit mit dem Titel "Verbesserung der neuronalen maschinellen Übersetzung verwandter Sprachen mit niedrigem Ressourcen durch Transfer Learning" von Alexandra Birch und Rachel Bawden an der Universität von Edinburgh. Es wurde im August 2020 eingereicht. Es untersuchte einige der Transferlernansätze für die Systeme für Neural Machine Translation (NMT) mithilfe der maskierten Sprachmodelle wie XLM-Roberta (XLM-R) [1]. Dieses Projekt wurde hauptsächlich über die aufmerksamkeitsbasierte Fusion der kontextualisierten Wortdarstellungen aus den maskierten Sprachmodellen (MLM) mit dem transformator -basierten NMT -System [2] aufgebaut. Es verzeichnete auch empirisch die Übertragung des syntaktischen Wissens durch eine Analyse der Aufmerksamkeitsköpfe in diesem System basierend auf der Referenzarbeit [3]. Diese Anleitung enthält die erforderlichen Installationsanweisungen sowie ein kleines Arbeitsbeispiel mit einer kleinen Teilmenge des iIT bombay englisch-hindi-parallelen Datensatzes [4]. Alle in dieser Arbeit verwendeten Hyperparameter können aus der These zugegriffen werden.
Inhaltsverzeichnis
- Ein Überblick über aufmerksamkeitsbasierte Fusion
- Installation
- Vorverarbeitung
- Basis -NMT -System
- XLM-R-fusioniertes NMT-System
- Finetuning XLM-R
- Skriptkonvertierung
- Syntaktische Analyse
- Zusätzliche Informationen
- Referenzen
1. Ein Überblick über die aufmerksamkeitsbasierte Fusion
- Wir haben das XLM-R mit dem transformator-basierten NMT-System mit der aufmerksamkeitsbasierten Fusion nach der Arbeit verbunden [2].
- Wir nennen es das XLM-R-fusionierte NMT-System, das aus einem zusätzlichen XLM-R-Modul als dem Standard-NMT-Coder und dem NMT-Dekodierer besteht.
- Ein Eingabestsatz wird sowohl an den XLM-R als auch an den NMT-Codher übergeben, der zwei verschiedene Darstellungen für den Satz ergibt. Die kontextualisierte Wortrepräsentation aus dem XLM-R wird mit der NMT-Ccoder-Darstellung unter Verwendung einer aufmerksamkeitsbasierten Fusion verschmolzen. In ähnlicher Weise wird die XLM-R-Darstellung mit dem Decoder fusioniert.
2. Installation
2.1. Anforderungen
- Python> = 3,5
- Pytorch> = 1.5.0
- TensorFlow == 1.13.1
- Umarmungsface -Transformatoren == 2.11.0
- Matplotlib
- Seeborn
- Scikit-Learn
- Sacrebleu> = 1.4.10
- Satzstück> = 0,1,91
- INDIC NLP -Bibliothek> = 0,6
- Mosesdecoder
2.2 Installation im Verzeichnis für Pakete
- Laden Sie MosesdeCoder an diesem Ort herunter, extrahieren und installieren Sie sie.
- Laden Sie die indic NLP -Bibliothek an diesem Ort herunter, extrahieren und installieren Sie sie. Extrahieren Sie auch an diesem Ort indische NLP -Ressourcen. Wir können diesen Schritt überspringen, wenn wir nicht mit den Indic -Sprachen arbeiten.
- Laden Sie die Bibliothek der Huggingface -Transformatoren an diesem Ort herunter, extrahieren und installieren Sie sie.
2.3 Fairseq installieren
- Klonen Sie dieses Repository. Das übergeordnete Verzeichnis wird als Heimverzeichnis für alle Vorverarbeitungs-, Schulungs- und Bewertungsskripte in dieser Arbeit fungieren.
- Führen Sie die folgenden Befehle aus dem Home -Verzeichnis aus.
cd 'work/systems/baseline-NMT/fairseq'
pip install --editable ./
- Es wird das Basis-NMT-System basierend auf der Fairseq-Bibliothek zusammen mit seinen Abhängigkeiten installieren. Beachten Sie, dass wir mehrere Versionen der Fairseq -Systeme an diesem Ort verwendet haben. Wir haben also immer die genauen Wege der Trainings- und Bewertungsdateien verwendet, um die Konflikte zu vermeiden.
2.4 Herunterladen und Extrahieren von XLM-R
- Laden Sie alle mit dem XLM-R zugeordneten Dateien vom Huggingface-Hub herunter. Verwenden Sie die Option 'Listen Sie alle Dateien in Modell' , um die Dateien zu sehen und herunterzuladen, nämlich config.json, pytorch_model.bin, surepiece.bpe.model und tokenizer.json .
- Legen Sie diese Dateien in dieses Verzeichnis.
3.. Vorverarbeitung
- Bitte besuchen Sie die Fairseq- und Bert-NMT-Bibliotheken, um sich mit den grundlegenden Vorverarbeitungs-, Schulungs- und Bewertungsschritten vertraut zu machen, da unsere Arbeiten darüber aufgebaut sind.
- Wir verwendeten Mosesdecoder, um die englischen Datensätze vorzubereiten, wechselten jedoch in die indic -nlp -Bibliothek für die indic -Sprachen wie Hindi, Gujarati, Bengali und Marathi.
- Wir haben das Satzstück BPE für die Wortsegmentierung verwendet. Wenn die Quell- und Zielsprachen wesentliche Zeichen gemeinsam genutzten, haben wir die Datensätze mit dem gemeinsamen BPE mit diesem Skript verarbeitet. Ansonsten wurde ein anderes Skript verwendet.
- Für den englisch-hindi-Datensatz, der verwendet wird, um diese Arbeit zu demonstrieren, haben wir das letztere Skript verwendet.
- Setzen Sie das Home_dir auf das übergeordnete Verzeichnis dieses Repositorys.
- Wir haben bereits Zug-, Test- und Entwicklerdateien auf das RAW_DATA_DIR gestellt. Sie können sie mit Ihren Dateien mit den gleichen Namenskonventionen ändern.
- Wir haben die Trainingsdaten mit den massiven einsprachigen Datensätzen zusammengefasst, um eine bessere BPE -Segmentierung zu erlernen. Setzen Sie diese Datensätze auf raw_monolingual_data_dir . Wir haben in unserer Arbeit einen massiven Oscar Corpus verwendet, aber für diese Demo haben wir nur dieselben Zugdateien verwendet.
- Wechseln Sie zwischen der indic NLP- oder Moses -Bibliothek basierend auf den Sprachen, indem Sie die Funktion Clean_NORM_TOK aus Kommentar abgeben, wie im Skript gezeigt.
- Führen Sie dieses Skript aus, das alle Dateien vorbereitet und unter preprozed_data_dir speichert. Das tokenisierte BPE- Verzeichnis enthält alle Zwischendateien nach Normalisierung, Tokenisierung usw. sowie alle endgültigen BPD-Dateien.
- Anschließend biegt dieses Skript die Daten, die von den fairseq -basierten Systemen verwendet werden sollen, und speichert im binären Verzeichnis. Es verwendet den Fairseq-Binarisator vom XLM-R-fusionierten System, um die Dateien für die Basislinie sowie die mit XLM-R-fusionierten Systeme zu brüten. Es verwendet -Berbert-Model-NAME , um auf den XLM-R-Tokenizer zuzugreifen, um die Quelldateien zu tokenisieren, da sie auch von der XLM-R-Komponente zusammen mit dem Standard-NMT-Ccoder in den mit XLM-R-fusionierten Systemen verwendet wurden.
- (Optional) Beachten Sie, dass dieses System hauptsächlich auf dem XLM-R basiert, aber wir können auch andere maskierte Sprachmodelle verwenden, die von der Suggingface-Transformatoren-Bibliothek bereitgestellt werden. Wir müssen einige Änderungen wie folgt vornehmen:
- Laden Sie das neue Sprachmodell herunter und extrahieren Sie wie in Schritt 2.4 erwähnt.
- Importieren Sie den entsprechenden Tokenizer und Modell aus der Huggingface-Transformatoren-Bibliothek in das mit XLM-R-fusionierte System mit dem Standard, wie unten erwähnt:
from transformers import XLMRobertaModel
BertModel = XLMRobertaModel
from transformers import XLMRobertaTokenizer
BertTokenizer = XLMRobertaTokenizer
- Wir müssen sie in den folgenden Dateien importieren:
- Arbeit/Systeme/XLM-R-Fusion/Bert-NMT/Precess.py
- Arbeit/Systeme/XLM-R-fusion/Bert-nmt/interactive.py
- work/systems/xlm-r-fusion/bert-nmt/fairseq_cli/precess.py
- Arbeit/Systeme/XLM-R-fusion/Bert-nmt/fairseq_cli/interactive.py
- Arbeit/Systeme/XLM-R-fusion/Bert-nmt/fairseq/tasks/translation.py
- Arbeit/Systeme/XLM-R-fusion/Bert-nmt/fairseq/models/transformator.py
- Arbeit/Systeme/XLM-R-fusion/Bert-nmt/fairseq/binarizer.py
- Darüber hinaus müssen wir den Start
(<s>) und das Ende (</s>) in diesen Dateien gemäß dem neuen Sprachmodell ändern.
4. Basis -NMT -System
4.1 Schulungsbasis -NMT -System
- Trainieren Sie das transformatorbasierte Basissystem mit diesem Skript.
- Es wird die Gradienten ansammeln, um eine größere effektive Chargengröße zu bilden. Batch-Größe = (Anzahl der GPUs) * ( --max-tokens ) * ( --update-freq ).
- Es verwendet eine frühzeitige Strategie zur Validierungsstrategie mit -Patienten , die die maximale Anzahl von Kontrollpunkten mit sinkenden BLEU -Ergebnissen ermittelt.
- Unsere Arbeit verwendet die Transformer -Architektur: Transformator_iwslt_de_en standardmäßig. Die mit XLM-R-fusionierten Systeme stellen die Parameter aus den Basissystemen wieder her, sodass ihre Architekturen übereinstimmen sollten. Wir können auch andere größere Architekturen für das Basissystem verwenden, müssen jedoch auch die gleiche zugrunde liegende Architektur für das mit XLM-R-verwendete System angeben. Überprüfen Sie diese Datei auf zusätzliche Architekturen, die die aufmerksamkeitsbasierte Fusion implementieren.
- Es speichert die Checkpoints bei Baseline_NMt_Checkpoints_dir .
4.2 Bewertung des Basis -NMT -Systems
- Bewerten Sie das Basissystem mit diesem Skript.
- Wir müssen die BED -Testdatei mit dem besten Checkpoint bewerten. Verwenden Sie -Remove-BPE = Satzstück, um die BPE-Segmentierung aus der Ausgabedatei zu entfernen.
- Verwenden Sie entweder Indic NLP oder Moses, um die Ausgabedatei wie im Skript gezeigt zu erkennen.
- Dieses Skript berechnet die endgültigen Bleu -Scores mithilfe der unberührten Testdatei der Zielsprache.
5. XLM-R-fusioniertes NMT-System
5.1 Training XLM-R-fusioniertes NMT-System
- Trainieren Sie die mit XLM-R-fusionierten Systeme mit diesem Skript, das das System an diesem Ort verwendet.
- BERT_NAME speichert den Pfad zur XLM-R-Variante, die mit diesem System verwendet wird. Wir können hier entweder vorgebrachte oder finatunierte Varianten verwenden.
- Dieses Skript kopiert den besten Checkpoint aus dem Basissystem und stellt die Parameter für weiteres Training mit dem XLM-R-fusionierten System wieder her.
- Dieses System wurde über eine frühere Version von Fairseq erstellt, die kein frühzeitiges Stoppen lieferte. Daher speichert dieses Skript alle Kontrollpunkte für Trainingsschritte, die später bewertet werden.
- Verwenden Sie für die Aufmerksamkeitsfusion sowohl auf der Encoder- als auch auf der Decoder-Seite den --arch als Transformator_S2_IWSLT_DE_EN , während für die Decodierer-Fusion transformator_iwslt_de_en verwendet wird.
- Stellen Sie sicher, dass eine kleine Lernrate verwendet wird, da die Parameter bereits in der Nähe der optimalen Ebenen liegen.
5.2 Bewertung des XLM-R-staatlichen NMT-Systems
- Bewerten Sie die XLM-R-fusionierten Systeme mit diesem Skript, das dem für das Basissystem verwendeten Skript ähnelt.
- Dieses Skript verwendet einen bestimmten Checkpoint, um die BLEU -Bewertung zu berechnen, während ein anderes Skript es erweitert, um die Bewertungen für alle Checkpoints zu berechnen.
- Wie bereits erwähnt, gibt es mit diesem System keine frühzeitige Funktionsfunktion. Also haben wir alle paar Epochen alle Kontrollpunkte gespeichert und sie mit einem Validierungssatz bewertet. Anschließend kann der beste Checkpoint im früheren Skript mit Best_Checkpoint für die Test -Set -Bewertung festgelegt werden.
- Es verwendet die Pfade zu zwei verschiedenen Testdateien, die von verschiedenen Komponenten der mit XLM-R-verwendeten NMT-Systeme verwendet werden. Test_src_bped verweist auf die Datei, die vom Standard-NMT -Coder verwendet wird, während test_src_raw auf die Rohquelldatei verweist, die von der XLM-R-Komponente verwendet wird. Die RAW-Datei wird vom XLM-R benötigt, da sie eine eigene interne Tokenisierung mit dem von der Huggingface-Transformatoren-Bibliothek bereitgestellten Tokenizer verwendet. Stellen Sie sicher, dass Bert_Name auf das entsprechende XLM-R-Variantenverzeichnis verweist, damit er auf den entsprechenden Tokenizer zugreifen kann.
6. Finetuning XLM-R
6.1 Mehrsprachige und einsprachige Varianten
- Wir haben die XLM-R-Modelle mit Fülle geschliffen, um die mehrsprachigen und einsprachigen Varianten der ursprünglichen vorgebildeten Modelle zu erstellen.
- Indo-aryan-XLM-R-Base ist die mehrsprachige Variante, die durch die Finetuning XLM-R-Basis mit den zugehörigen Sprachen erstellt wird-Hindi, Gujarati, Marathi und Bengali. Es nutzt ihre syntaktischen, morphologischen, orthografischen und lexikalischen Ähnlichkeiten.
- Gujarati-Xlm-R-Base und Gujarati-XLM-R-Large sind die einsprachigen Varianten, die mit dem einzelnen Gujarati-Datensatz beendet sind. Darüber hinaus wird Gujarati-dev-XLM-R-Base mit der in das Devanagari-Skript konvertierten Gujarati-Sprache erstellt. Diese Modelle wurden im Huggingface -Hub veröffentlicht, das hier erhältlich ist.
- Wir haben die Pytorch-Varianten des XLM-R verwendet, die hier als vorgeborene Modelle verfügbar sind.
6.2 Daten vorbereiten
- Wir haben dieses Tutorial hauptsächlich verfolgt, das wir Ihnen zu Besuch ermutigen, bevor wir als nächstes fortfahren.
- Verwenden Sie dieses Skript, um die Daten zu erstellen. Es bereitet die Trainings- und Validierungsdateien für einen einzelnen einsprachigen Datensatz vor, dessen Pfad mit RAW_MONO_Source festgelegt wird. Anschließend wird es unter Verwendung der indic NLP -Bibliothek wie für die obigen Trainingsdateien vorverarbeitet.
- In diesem Skript verweist Bert_Name auf das ursprüngliche vorbereitete XLM-R-Modell, das zum Zugriff auf sein Wörterbuch verwendet wird.
- Anschließend wird es mit einer anderen Variante der hier verfügbaren Fairseq -Bibliothek binarisiert. Es verwendet den XLM-R-Tokenizer, der sicherstellt, dass unsere Daten genauso tokenisiert werden, wie die ursprünglichen Daten für die Vorbereitung des XLM-R durchgeführt wurden.
- (Optional) Wenn Sie ein anderes maskiertes Sprachmodell abschließen möchten, müssen Sie dieses Sprachmodell in dieser Datei importieren. Nehmen Sie die folgenden Änderungen vor:
- Importieren
from transformers import XLMRobertaTokenizer
BertTokenizer = XLMRobertaTokenizer
- Ersetzen Sie hier den Modellnamen
dict = BertTokenizer.from_pretrained("xlm-roberta-base")
- Ersetzen Sie die Start- und Ende -Token ähnlich einem Vorschlag in der Vorverarbeitung.
- Bereiten Sie die Daten für andere Sprachen vor, wenn Sie ein mehrsprachiges Modell erstellen möchten.
6.3 Training und Bewertung des Modells
- Verwenden Sie dieses Skript, um die einsprachige Variante zu beenden.
- Es verwendet das gleiche Basis -NMT -System, das in Schritt 4.1 verwendet wird, um das Modell zu beenden. Hier verweist restore_point auf den vorgeborenen Modell-Checkpoint. Verwenden Sie die Task As masked_lm für die einsprachige Variante.
- Mit diesem Skript werden die mehrsprachige Variante erstellt. Es verwendet die Task als mehrsprachiger_masked_lm , die die Daten aus verschiedenen Sprachen verschmelzen.
- Es resebt es auch neu, um die Auswirkungen des Datenungleichgewichts zu minimieren, wenn größere Datensätze die kleineren überwältigen. Verwenden Sie -Multilang-Sampling-alpha, um das Abtastverhältnis anzupassen. Die Details finden Sie im ursprünglichen XLM-R-Papier [1].
- Wir haben die Kontrollpunkte in regelmäßigen Abständen gespeichert und das Modell mit dem Mindestvalidierungsverlust ausgewählt.
6.4 Pytorch -Checkpoint -kompatibel mit Umarmungsface -Transformatoren machen
- Wir müssen den gespeicherten Pytorch -Checkpoint in eine andere Version konvertieren, die mit der Suggingface -Transformers -Bibliothek kompatibel ist.
- Wir gehen davon aus, dass Sie die Transformers Library im Verzeichnis für Pakete installiert haben. Verwenden Sie dann den folgenden Befehl.
python packages/transformers/src/transformers/convert_roberta_original_pytorch_checkpoint_to_pytorch.py --roberta_checkpoint_path best_ck_dir/ --pytorch_dump_folder_path ./
- Hier enthält BEST_CK_DIR den finetunierten XLM-R-Checkpoint, der als Modell.PT , dict.txt und surePiece.bpe.model bezeichnet wird. Letztere 2 Dateien sind sowohl für die vorhandenen als auch für die finanziellen Modelle gleich, auf die hier zugegriffen werden kann. pytorch_dump_folker_path bezieht sich auf das Verzeichnis, in dem die transformatoren kompatible Pytorch -Version gespeichert werden muss.
- Beachten Sie, dass die Transformers -Bibliothek einige Probleme mit der Datei konvert_roberta_original_pytorch_checkpoint_to_pytorch.py hatte, die wir behoben und dem Utils -Verzeichnis hinzugefügt haben. Ersetzen Sie diese Datei und bauen Sie die Bibliothek neu auf.
- (Optional) Wir können die HarmgingFace -Anleitungen direkt verwenden, um das Modell zu finanzieren, ohne zuerst die FairSeq -Bibliothek zu verwenden. Wir fanden diesen Ansatz aufgrund der schlechten Multi-GPU-Unterstützung durch das Suggingface extrem langsam. Sie implementierten Multithreading über Multiprozessierung, was zu einer unausgewogenen GPU -Verwendung führt. Fairseq hat ein eigenes Modul implementiert, das hier diskutiert wird.
- Verwenden Sie nach dem Finetuning einfach die endgültige Pytorch-Version, um die ursprünglichen vorgebildeten Modelle für das Training und die Bewertung der mit XLM-R-fusionierten Systeme zu ersetzen.
7. Skriptkonvertierung
- Wir haben einige Skriptkonvertierungsstrategien verwendet, bei denen wir versucht haben, die lexikalischen Ähnlichkeiten zwischen den zugehörigen Sprachen mithilfe eines gemeinsamen Skripts auszunutzen. Wir haben die indic NLP -Bibliothek verwendet, um dasselbe zu konvertieren.
- Während das mit XLM-R-fusionierte System die gleichen Eingabesätze im XLM-R sowie im NMT-Codher-Sätze verarbeitet, haben wir verschiedene Kombinationen der Skripte für diese Module ausprobiert. Zum Beispiel haben wir für das Gujarati-Hindi-Paar Gujarati-Skriptsätze an das XLM-R-Modul übergeben, aber Gujarati im Devanagari-Skript an den NMT-Coder, um die lexikalische Überlappung mit der Zielsprache zu maximieren.
- Die Sätze in den verschiedenen Skripten haben die gleiche semantische Bedeutung, so dass ihre aufmerksamkeitsbasierte Fusion möglich war. Weitere Informationen finden Sie in der These.
- Diese Funktionalität kann mit dem XLM-R-fusionierten System verwendet werden, indem die Quelldateien für den XLM-R geändert werden. Es kann durch die Verwendung dieses Skripts erfolgen, das diese Dateien in das Zielskript umwandelt.
- In ähnlicher Weise kann das Skript verwendet werden, um das Skript der Quelldateien zu konvertieren, die an den XLM-R sowie an den Standard-NMT -Coder übergeben werden sollen.
- Trainieren Sie dann die Baseline- und XLM-R-fusionierten NMT-Systeme wie vor der Verwendung der ersten Trainingsskripte.
- Bewerten Sie diese Systeme wie vor der Verwendung der ersten Bewertungsskripte. Wenn die Zielsprache in das Skript der Quellsprache konvertiert wird, muss sie als Nachbearbeitungsschritt in ihr anfängliches Skript umgewandelt werden. Dies kann durch die Verwendung der im Skript konvertierten Verzeichnis in den Verzeichnis von Basislinien und XLM-R-Fusionsfusionsverzeichnissen vorhandenen Bewertungsskripte erfolgen.
8. Syntaktische Analyse
Bitte machen Sie sich mit der Arbeit von [3] vertraut, deren Code hier verfügbar ist. Unsere Arbeit erweitert es, die Übertragung des syntaktischen Wissens in den mit XLM-R-fusionierten Systemen zu verfolgen.
8.1 Daten vorbereiten
- Verarbeitung des UD -Datensatzes (Universal Dependacies)
- Wir haben den Hindi -UD -Datensatz [5] [6] für die syntaktische Analyse verwendet.
- Verwenden Sie dieses Skript, um die Roh -UD -Zug- und Testdateien zu verarbeiten. Es wird den syntaktischen Kopf und die entsprechenden syntaktischen Beziehungen aus den UD -Dateien extrahieren.
- Verwenden Sie dann dieses Skript, um die obigen Dateien mit den Anweisungen hier in das JSON -Format zu konvertieren.
- Extrahieren Sie schließlich die rohen Sätze aus den obigen Dateien mit diesem Skript.
- Verarbeitung von Quelldateien für Fairseq -Inferenz
- Verwenden Sie die oben genannten Dateien mit den Rohessätzen als Quellentestdateien. Mit diesen Dateien bewerten wir unsere besten Basis- und XLM-R-Systemkontrollpunkte.
- Vorverarbeitete diese Dateien, wie in Schritt 3 (Vorverarbeitung) erwähnt und die Binarisierungsdateien für den Fairseq vorbereiten. Da wir hier keine Zieldaten haben, verwenden wir ein modifiziertes Vorverarbeitungsskript, um nur die Quell -Seitendateien zu verarbeiten.
8.2 Aufmerksamkeitskarten aus Basislinien- und XLM-R-fusionierten Systemen extrahieren
- Verwenden Sie die oben genannten binarischen Daten, um die Aufmerksamkeitskarten aus dem mit XLM-R-fusionierten System mithilfe des Evaluierungsskripts zu extrahieren. Verwenden Sie dieses Skript in ähnlicher Weise, um die Karten aus dem Basissystem zu extrahieren.
- Diese Skripte verwenden zwei verschiedene Systeme, die über das Basis-NMT-System und das XLM-R-staatliche NMT-System erstellt wurden, auf das hier bzw. hier zugegriffen werden kann.
- Diese Systeme extrahieren die Selbstbekämpfungskarten für alle Aufmerksamkeitsköpfe, die in allen Transformator-Encoder-Schichten vorhanden sind. Darüber hinaus extrahiert das über dem XLM-R-verwendete System auch die Bert-Attention-Karten, die sich aus der aufmerksamkeitsbasierten Fusion der XLM-R-Darstellungen und der NMT-Coder-Darstellungen ergeben.
- Verwenden Sie den zusätzlichen Parameter -Save_attn_Maps, um den Pfad zu geben, um die Aufmerksamkeitskarten zu speichern. Erstellen Sie die Ordner - Selbst- , Bert- und Batch_sences darin, um die jeweiligen Karten zu speichern. batch_sences speichert die entsprechenden Sätze in der Reihenfolge, in der die Aufmerksamkeitskarten extrahiert werden. Diese Datei kann verwendet werden, um die Reihenfolge der verarbeiteten Sätze zu überprüfen.
- Diese Karten werden in den Numpy -Arrays gespeichert, in denen eine einzelne Datei die Anzahl der Sätze enthält, die wie die Stapelgröße sind.
- Verwenden Sie dieses Skript, um die Aufmerksamkeitskarten weiter zu verarbeiten.
- Es erstellt die Gurkenobjekte mit den Aufmerksamkeitskarten und den JSON -Dateien.
- Dann wandelt es die Aufmerksamkeitskarten für die BPE -Ebene auf die Wortebene um. Weitere Informationen finden Sie in der These.
- Zum Testen unseres Codes können Sie unsere Pickle-Dateien sowohl für die hier verfügbaren Basislinien- als auch für XLM-R-Systeme verwenden. Laden Sie die komprimierte Datei an diesem Ort herunter und extrahieren Sie. Diese Pickle -Dateien funktionieren mit den vorverarbeiteten Hindi -UD -Daten, die bereits am genannten Ort vorhanden sind.
8.3 Aufmerksamkeitskarten und aufmerksamkeitsbasierte Probierungsklassifizierer visualisieren
- Führen Sie hier das syntaktische Analyse -Notebook aus. Point Train_path und Dev_Path in die obigen Zug- und Testen Sie Gurle -Dateien. Hier sind unsere Entwickler- und Testdateien gleich, da wir keinen Hyperparameter verwenden.
- Die Gewichte aus der Basislinie- und XLM-R-fusionierten Systeme wurden verwendet, um den korrekten syntaktischen Kopf in verschiedenen Schichten und Aufmerksamkeitsköpfen zu bestimmen.
- Es gibt einige qualitative Beispiele, bei denen ein syntaktischer Kopf erfolgreich vorhergesagt wurde.
- Schließlich gibt es einen endgültigen UAS -Score durch Training und Bewertung des aufmerksamkeitsbasierten Prüfungsklassifikators. Es erfordert eine gewichtete Kombination der Selbstbekämpfungsgewichte, die alle Schichten und Aufmerksamkeitsköpfe gegeben haben, um ein Gesamtmaß für das syntaktische Wissen zu ergeben.
9. Zusätzliche Informationen
- Lizenzen: Bitte beachten Sie, dass unsere Arbeit im Rahmen der MIT -Lizenz lizenziert ist. Wir verwenden jedoch einige andere Arbeiten und Datensätze mit eigenen Lizenzen. Insbesondere sind alle Systeme, die auf der Fairseq -Bibliothek basieren, ihre entsprechenden Lizenzen in ihren jeweiligen Verzeichnissen vor. Bitte überprüfen Sie die Lizenzen für den englisch-hindi-iit bombay parallelen Datensatz und den Datensatz des Hindi Universal Depecies, indem Sie die angegebenen Links in der LEADME-Datei verwenden. Überprüfen Sie in ähnlicher Weise die Lizenz für die Suggingface -Transformatoren -Bibliothek, da wir eine seiner Dateien geändert haben, wie im ReadMe erwähnt.
- Machen Sie ein Problem auf, wenn Sie Hilfe benötigen. Wenn Sie diese Arbeit nützlich finden, können Sie sie gerne verwenden und bitte auch meine These angeben.
10. Referenzen
[1] Conneau, Alexis et al. "Unüberwachungsübergreifendes landesweites Repräsentationslernen im Maßstab." Arxiv Preprint Arxiv: 1911.02116 (2019)
[2] Zhu, Jinhua et al. "Bert in die neuronale maschinelle Übersetzung einbeziehen." Internationale Konferenz über Lernrepräsentationen. 2019
[3] Clark, K., Khandelwal, U., Levy, O. & Manning, CD (2019, August). Was sieht Bert an? Eine Analyse der Aufmerksamkeit von Bert. In Proceedings of the 2019 ACL Workshop BlackboxNLP: Analyse und Interpretation neuronaler Netzwerke für NLP (S. 276-286).
[4] Anoop Kunchukuttan, Pratik Mehta, Pushpak Bhattacharyya. Der IIT Bombay English-Hindi Parallel Corpus. Sprachressourcen und Bewertungskonferenz. 2018.
[5] Riyaz Ahmad Bhat, Rajesh Bhatt, Annahita Farudi, Prescott Klassen, Bhuvana Narasimhan, Martha Palmer, Owen Rambow, Dipti Misra Sharma, Ashwini Vaidya, Sri Ramagurumurthy Vishnu sowie Fei xia. Das Hindi/Urdu Treebank -Projekt. Im Handbuch der sprachlichen Annotation (herausgegeben von Nancy Ide und James Pustejovsky), Springer Press. 2015.
[6] Martha Palmer, Rajesh Bhatt, Bhuvana Narasimhan, Owen Rambow, Dipti Misra Sharma, Fei Xia. Hindi-Syntax: Annotierende Abhängigkeit, lexikalische Prädikat-Argument-Struktur und Phrasenstruktur. In den Proceedings der 7. Internationalen Konferenz zur Verarbeitung natürlicher Sprache, ICON 2009, Hyderabad, Indien, 14.-17. Dezember 2009.