[PYTHON] Natürliche Sprache: BERT Part1 - Japanischer Wikipedia Corpus

Ziel

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.

  1. Laden Sie die japanische Wikipedia herunter und extrahieren Sie Textdaten
  2. Vorverarbeitung von Textdaten und Erstellung eines Satzstückmodells
  3. Erstellen eines Korpus vor dem Lernen

Einführung

Laden Sie die japanische Wikipedia herunter

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

Vorverarbeitung von Textdaten und Erstellung von Satzteilen

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.

Erstellen eines vorlernenden Korpus

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.

Implementierung

Ausführungsumgebung

Hardware-

・ CPU Intel (R) Core (TM) i7-7700 3,60 GHz

Software

・ Windows 10 Pro 1909 ・ Python 3.6.6 ・ Nltk 3.4.5 ・ Numpy 1.17.3 ・ Satzstück 0.1.91

Programm zum Ausführen

Das implementierte Programm wird auf [GitHub] veröffentlicht (https://github.com/sho-watari/NaturalLanguage/tree/master/BERT).

bert_corpus.py


Ergebnis

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.

Referenz

Japanische Wikipedia wikiextractor

  1. Taku Kudo and John Richardson. "SentencePiece: A simple and language independent subword tokenizer and detokenizer for Neural Text Processing", arXiv preprint arXiv:1808.06226, (2018).
  2. Jacob Devlin, Ming-Wei Chang, Kenton Lee, Kristina Toutanova. "BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding", arXiv preprint arXiv:1810.04805, (2018).
  3. Zhenzhong Lan, Mingda Chen, Sebastian Goodman, Kevin Gimpel, Piyush Sharma, and Radu Soricut. "ALBERT: A Lite BERT for self-supervised learning of language representations", arXiv preprint arXiv:1909.11942 (2019).

Recommended Posts

Natürliche Sprache: BERT Part1 - Japanischer Wikipedia Corpus
Natürliche Sprache: Doc2Vec Part1 --livedoor NEWS Corpus
Natürliche Sprache: BERT Part2 - Unüberwachte Vorschulung ALBERT
Natürliche Sprache: Maschinelle Übersetzung Teil 1 - Japanisch-Englisch Untertitel Corpus
[Verarbeitung natürlicher Sprache] Vorverarbeitung mit Japanisch
Natürliche Sprache: Word2Vec Part3 - CBOW-Modell
Natürliche Sprache: Doc2Vec Part2 --Dokumentklassifizierung
Natürliche Sprache: Word2Vec Part2 - Skip-Gramm-Modell
Natürliche Sprache: ChatBot Part1-Twitter API Corpus
Natürliche Sprache: GPT - Japanischer generativer Pretraining-Transformator
Natürliche Sprache: Maschinelle Übersetzung Teil 2 - Neuronaler maschineller Übersetzungstransformator
Python: Verarbeitung natürlicher Sprache
RNN_LSTM2 Verarbeitung natürlicher Sprache