Wir haben BERT mit dem Microsoft Cognitive Toolkit (CNTK) zusammengefasst.
Teil 1 bereitet sich auf BERT vor.
Ich werde sie in der folgenden Reihenfolge vorstellen.
Dieses Mal werden wir die japanische Wikipedia als japanischen Korpus verwenden.
Japanische Version von Wikipedia
Laden Sie jawiki-latest-pages-articles-multistream.xml.bz2 über den obigen Link herunter. Verwenden Sie dann wikiextractor, um die Auszeichnungssprache zu entfernen.
$ python ./wikiextractor-master/WikiExtractor.py ./jawiki/jawiki-latest-pages-articles-multistream.xml.bz2 -o ./jawiki -b 500M
Die Struktur des Verzeichnisses ist diesmal wie folgt.
BERT |―jawiki jawiki-latest-pages-articles-multistream.xml.bz2 |―wikiextractor-master WikiExtractor.py ... bert_corpus.py Doc2Vec NMTT STSA Word2Vec
Zusätzlich zu der bisher implementierten Vorverarbeitung wurde eine Vorverarbeitung wie die Normalisierung der Notation von Schlüsselklammern und Satzzeichen sowie das Löschen von Leerzeichen zwischen Kana-Kanji-Zeichen ausgeführt.
Erstellen Sie für die Wortteilung ein Unterwortmodell mit dem Satzstück [1]. Außerdem werden \ [CLS], \ [SEP], \ [MASKE] als spezielle Wörter definiert.
Beim Vorlernen von BERT [2] wird das Sprachmodell als unbeaufsichtigtes Lernen trainiert, indem die im Korpus enthaltenen Sätze maskiert werden. Erstellen Sie daher dafür Trainingsdaten.
Im Modell der maskierten Sprache haben wir beschlossen, 15% der Wortsequenz zu ersetzen, mit einer Wahrscheinlichkeit von 80%, sie als spezielles Wort zu belassen \ [MASKE], einer Wahrscheinlichkeit von 10% für ein zufälliges Wort und einer Wahrscheinlichkeit von 10%, es so zu belassen, wie es ist. Stellen.
Auch dieses Mal verwenden wir die Satzordnungsvorhersage [3] anstelle der Vorhersage des nächsten Satzes.
・ CPU Intel (R) Core (TM) i7-7700 3,60 GHz
・ Windows 10 Pro 1909 ・ Python 3.6.6 ・ Nltk 3.4.5 ・ Numpy 1.17.3 ・ Satzstück 0.1.91
Das implementierte Programm wird auf [GitHub] veröffentlicht (https://github.com/sho-watari/NaturalLanguage/tree/master/BERT).
bert_corpus.py
Wenn das Programm ausgeführt wird, wird in jede Zeile ein vorverarbeiteter Satz geschrieben und ein japanischer Korpus erstellt, wobei jedes Thema durch Leerzeilen getrennt ist.
Das Satzstückmodell wird dann trainiert, um jawiki.model und jawiki.vocab zu erstellen.
Schließlich wird eine Textdatei erstellt, die vom CTFDeserializer zum Vorlernen gelesen werden kann.
Jetzt, da Sie bereit sind zu trainieren, wird Teil 2 CNTK verwenden, um Japanisch ohne Lehrer vorab zu lernen.
Japanische Wikipedia wikiextractor
Recommended Posts