[PYTHON] Eine grobe Einführung in die neuronale maschinelle Übersetzungsbibliothek

Einführung

Die englisch-japanische Übersetzung wird zu WMT, dem weltweit größten Workshop zur maschinellen Übersetzungsforschung, hinzugefügt. Ab 2020 wird DeepL Japanisch unterstützen, und die Aufmerksamkeit für die maschinelle japanische Übersetzung nimmt zu. Unter solchen Umständen kann es Personen geben, die das maschinelle Übersetzungsmodell ausprobieren oder lernen möchten. Ich bin auch ein Amateur auf diesem Gebiet, aber ich möchte es vielleicht in Zukunft verwenden. Ich habe selbst recherchiert, welche Art von maschineller Übersetzungsbibliothek derzeit in meiner Forschung verwendet wird. Ich habe nur Fairseq und das alte OpenNMT verwendet.

Welche Art von Bibliothek wird verwendet?

Laut Findings von WMT2019, einem Wettbewerb für maschinelle Übersetzung --Marian über 30%

Marian NMT Marian ist ein Framework, das vom Microsoft-Übersetzungsteam entwickelt wurde. Da es in C ++ geschrieben ist, ist es sehr schnell. In Bezug auf die Genauigkeit hat WMT2019 eine nachgewiesene Erfolgsbilanz, dass das System des Microsoft-Teams, das Marian verwendet, in verschiedenen Sprachpaaren einen hohen Rang einnimmt.

Soweit das Beispiel zu sehen ist, scheint die Verwendung ein Lernfluss zu sein, indem eine Vokabeldatei mit Marians Befehl aus dem tokenisierten Korpus erstellt wird.

Um die GPU-Version zu installieren, bereiten Sie CMake 3.5.1, GCC / G ++ 5.4, Boost 1.65.1, CUDA 9.0 oder neuer vor und erstellen Sie sie (ich habe sie erstellt, ohne etwas zu wissen, als ich jung war). Ich habe wegen Moos aufgegeben).

Leider habe ich bisher keinen japanischen Artikel über die Installation und Verwendung von Marian gefunden. Lesen Sie englische Dokumente und Tutorials.

Fairseq Fairseq ist ein Toolkit, das von Facebook AI entwickelt wurde. Es wurde in Pytorch geschrieben und ist so konzipiert, dass es leicht zu erweitern ist. Es hat den Eindruck, dass es ständig aktualisiert wird. In Bezug auf die Genauigkeit hat das Facebook-Team bei der WMT 2019 hervorragende Ergebnisse erzielt. Die Geschwindigkeit ist schneller, wenn Sie den FP16-Modus verwenden (anfangs war er schneller als Marian, aber ich glaube, ich habe irgendwo gesehen, dass das Update Marian schneller gemacht hat).

Verwenden Sie dazu ein spezielles Vorverarbeitungsskript, um den Korpus und das Vokabular vor dem Training zu binarisieren. Zum Zeitpunkt der Inferenz kann die Testanweisung unverändert eingegeben werden, ohne binärisiert zu werden. Eine meiner persönlichen Dankbarkeit ist, dass die binären Trainingsdaten und die Prüfpunktdatei des trainierten Modells nicht durch den Fairseq-Befehl überschrieben werden können (er stoppt mit einem Assersionsfehler). .. Es gibt viele Dinge, die ich über Fairseq schreiben kann, aber ich kann einen Artikel für sich selbst schreiben, und es gibt andere japanische Artikel, daher werde ich diese Ebene in diesem Artikel nur erwähnen. Es gibt auch ein offizielles Beispiel und es ist sehr einfach zu bedienen.

Die Installation ist fast in Ordnung, solange PyTorch funktioniert. Befolgen Sie für PyTorch die Installationsmethode gemäß Betriebssystem, Paket und CUDA-Version unter Offiziell.

OpenNMT OpenNMT ist ein Tool, das von der Harvard NLP Group und SYSTRAN entwickelt wurde. Es ist das älteste der heute vorgestellten. Früher gab es eine Lua-Version, aber es scheint, dass sie endete, als die Wartung der Fackel abgeschlossen war. Derzeit werden die PyTorch-Version (OpenNMT-py) und die TensorFlow-Version (OpenNMT-tf) weiterentwickelt. Die verfügbaren Funktionen der beiden sind sehr unterschiedlich. Neben maschineller Übersetzung und Sprachmodellierung sind auch Bild-zu-Text, Sprache-zu-Text, Zusammenfassung, Serienklassifizierung und Serien-Tagging möglich.

Es wird normalerweise als Lernprozess mit einer speziellen Vorverarbeitung verwendet.

In der Vergangenheit, als ich OpenNMT-py verwendete, litt ich zum Zeitpunkt der Installation unter der Version von torchtext. Das beste Modell für die Validierung wird nicht automatisch gespeichert. Wählen Sie das Modell daher aus, indem Sie das Lernprotokoll zum Zeitpunkt der Inferenz anzeigen. Ich war unzufrieden mit der Notwendigkeit und wusste nicht, welche Optionen und hohen Paras genau sein würden. Ich weiß nicht, was jetzt los ist. Es gibt so viele japanische Artikel, dass Sie vielleicht darauf verweisen möchten.

Tensor2Tensor T2T ist eine Deep Learning- und Datensatzbibliothek, die vom Google Brain-Team entwickelt wurde. Geschrieben in TensorFlow. Die anderen in diesem Artikel vorgestellten Bibliotheken haben maschinelle Übersetzung als Hauptfunktion, können jedoch Deep-Learning-Modelle für verschiedene Aufgaben wie Bildklassifizierung und Bilderzeugung verwenden.

Die grobe Verwendung besteht darin, einen Datengenerierungsbefehl auszuführen, um zu lernen und zu schließen, aber es gibt eine Option namens "--problem". Dies ist eine Option, um das zu verwendende Dataset anzugeben, anstatt nur die Aufgabe anzugeben. Daher ist es sehr einfach, mit dem vorhandenen Benchmark-Datensatz zu experimentieren. Wenn Sie jedoch den von Ihnen selbst erstellten Datensatz verwenden, müssen Sie eine Klasse definieren, die die Klasse "Problem" erbt. Es ist schön, dass diese Spezifikation das Modell und die Daten (und die Vorverarbeitungsmethode) explizit verknüpft, aber ich denke, andere Bibliotheken sind hinsichtlich der Benutzerfreundlichkeit überlegen.

Es gibt japanische Artikel und ein offizielles Jupyter-Notizbuch, daher habe ich den Eindruck, dass die Beispiele umfangreich sind. Außerdem kann TensorFlow Serving verwendet werden. Daher frage ich mich, ob dies bei Verwendung eines Deep-Learning-Modells in der Produktion der Fall sein wird.

Sockeye Seq2Seq-Framework mit Apache MXNet (Incubating). Die Verwendung scheint OpenNMT ähnlich zu sein.

Ich konnte die Funktionen dieser Bibliothek nicht verstehen, wenn ich sie mir ansah ... Es tut mir leid, dass sie wie ein Blog aussieht ...

Ende

Ich denke, es ist besser, es von oben zu versuchen.

Recommended Posts

Eine grobe Einführung in die neuronale maschinelle Übersetzungsbibliothek
Einführung in die Bibliothek für maschinelles Lernen SHOGUN
Einführung in das maschinelle Lernen
Kostenlose Version von DataRobot! ?? Einführung in "PyCaret", eine Bibliothek, die maschinelles Lernen automatisiert
Einführung in die maschinelle Übersetzungsarchitektur der Universität Cambridge mit der Slack Translation App Kiara
Ich habe versucht, die Lernfunktion im neuronalen Netzwerk sorgfältig zu verstehen, ohne die Bibliothek für maschinelles Lernen zu verwenden (erste Hälfte).
[Einführung in Python] Grundlegende Verwendung der Bibliothek matplotlib
Einführung in das maschinelle Lernen mit Simple Perceptron
Eine Einführung in das maschinelle Lernen
Eine super Einführung in Linux
Super Einführung in das maschinelle Lernen
Ein Memorandum zur Registrierung der in Hy in PyPI geschriebenen Bibliothek
Wie erstelle ich eine japanisch-englische Übersetzung?
Eine Geschichte, die mit der Installation der maschinellen Lernbibliothek JAX zusammenhängt
Einführung in das maschinelle Lernen Schreiben von Notizen
Einführung in die Python Numerical Calculation Library NumPy
[Einführung in Python] So teilen Sie eine Zeichenfolge mit der Funktion split
Vor der Einführung in das maschinelle Lernen. ~ Techniken, die für anderes maschinelles Lernen als maschinelles Lernen erforderlich sind ~
Ich habe eine Python-Bibliothek erstellt, um die API von LINE WORKS aufzurufen
[Einführung in StyleGAN] Ich habe mit "The Life of a Man" ♬ gespielt
[Einführung in Python] Wie verwende ich den Operator in in der for-Anweisung?
Eine leichte Einführung in die Objekterkennung
Ich habe versucht, die Lernfunktion im neuronalen Netzwerk sorgfältig zu verstehen, ohne die Bibliothek für maschinelles Lernen zu verwenden (zweite Hälfte).
[Einführung in Python] Was ist der Unterschied zwischen einer Liste und einem Taple?
[Einführung in die Udemy Python3 + -Anwendung] 47. Verarbeiten Sie das Wörterbuch mit einer for-Anweisung
[Einführung in das maschinelle Lernen] Bis Sie den Beispielcode mit Chainer ausführen
Verschiedene Methoden zum numerischen Erstellen der Umkehrfunktion einer bestimmten Funktion Einführung
[Einführung in Python] So sortieren Sie den Inhalt einer Liste effizient mit Listensortierung
Verwendung der Bibliothek "torchdiffeq", die den ODE-Block von Neural ODE implementiert
Lassen Sie uns die kostenlose "Einführung in Python für maschinelles Lernen" bis zum 27. April online stellen
[Einführung in Python] So schreiben Sie eine Zeichenfolge mit der Formatierungsfunktion
Ich habe eine Bibliothek konoha gemacht, die den Tokenizer auf ein schönes Gefühl umstellt
Ich habe versucht, das Modell mit der Low-Code-Bibliothek für maschinelles Lernen "PyCaret" zu visualisieren.
Was ist eine C-Sprachbibliothek? Welche Informationen sind für die Öffentlichkeit zugänglich?
Einführung in das maschinelle Lernen: Funktionsweise des Modells
So erstellen Sie eine Sphinx-Übersetzungsumgebung
Notieren Sie die Schritte zum Verständnis des maschinellen Lernens
Geben Sie der Registerkarte ipywidgets einen Titel
Python Bit Arithmetic Super Einführung
Eine Einführung in OpenCV für maschinelles Lernen
Rekursives neuronales Netzwerk: Eine Einführung in RNN
Wahrscheinlich die einfachste Einführung in TensorFlow
Natürliche Sprache: Maschinelle Übersetzung Teil 2 - Neuronaler maschineller Übersetzungstransformator
Eine Einführung in Python für maschinelles Lernen
Einführung in das maschinelle Lernen - Hard Margin SVM Edition-
Versuchen wir die neuronale maschinelle Übersetzung mit Transformer
Eine Einführung in die Objektorientierung - Geben Sie einem Objekt ein Kind.
Einführung in die KI-Erstellung mit Python! Teil 2 Ich habe versucht, den Hauspreis in Boston mit einem neuronalen Netz vorherzusagen
9 Schritte, um in kürzester Zeit Experte für maschinelles Lernen zu werden [Völlig kostenlos]
[Einführung in Python] So erhalten Sie den Datenindex mit der for-Anweisung
So berechnen Sie die Volatilität einer Marke
[Python] Einfache Einführung in das maschinelle Lernen mit Python (SVM)
Verwendung der C-Bibliothek in Python
[Super Einführung in das maschinelle Lernen] Lernen Sie Pytorch-Tutorials
Einführung in Python Bereiten wir die Entwicklungsumgebung vor
Visualisieren Sie die innere Schicht des neuronalen Netzwerks