Sprachmodell
Die Sprachmodellierung ist eine Aufgabe, die Sequenzen von Wörtern oder verschiedenen sprachlichen Einheiten Wahrscheinlichkeiten zuweist (z. B. Zeichen, Subword, Satz usw.). Die Sprachmodellierung ist eines der wichtigsten Probleme in der modernen natürlichen Sprachverarbeitung (NLP) und wird in vielen NLP-Anwendungen verwendet (z. In den letzten Jahren haben neuronale Ansätze bessere Ergebnisse erzielt als herkömmliche statistische Ansätze bei vielen Langusemodell -Benchmarks. Darüber hinaus hat jüngste Arbeiten gezeigt, dass Sprachmodell-Voraussetzungen viele NLP-Aufgaben auf unterschiedliche Weise verbessern können, einschließlich featurbasierter Strategien (z. B. Elmo usw.) und Feinabstimmungsstrategien (z. B. OpenAI GPT, Bert usw.) oder sogar in Null-Shot-Einstellung (z. B. OpenAI GPT-2 usw.).

Abbildung 1: Ein Beispiel für die automatische Vervollständigung durch Sprachmodellierung
Einstellung
- Python 3.6.6
- Tensorflow 1.12
- Numpy 1.15.4
- NLTK 3.3
Datensatz
- Wikipedia Corpus enthält etwa 2 Milliarden Textwörter aus einer Müllkippe der Wikipedia aus dem Jahr 2014 (etwa 4,4 Millionen Seiten). Soweit wir wissen, sind unsere Wikipedia-Volltextdaten die einzige Version, die aus einer kürzlich durchgeführten Kopie von Wikipedia verfügbar ist.
- BooksCorpus: Bücher sind eine reichhaltige Quelle für feinkörnige Informationen, wie ein Charakter, ein Objekt oder eine Szene aussieht, sowie eine hochrangige Semantik, wie jemand denkt, das Gefühl und wie sich diese Zustände durch eine Geschichte entwickeln. Diese Arbeit zielt darauf ab, Bücher an ihren Filmveröffentlichungen auszurichten, um umfangreiche beschreibende Erklärungen für visuelle Inhalte zu liefern, die semantisch weit über die in aktuellen Datensätzen verfügbaren Bildunterschriften hinausgehen.
- Eine Milliarde -Wort -Benchmark ist darauf abzielt, ein Standard -Trainings- und Test -Setup für Sprachmodellierungsexperimente zur Verfügung zu stellen. Dieser Benchmark enthält fast eine Milliarde Wörter von Trainingsdaten, und es soll Forscher dabei helfen, ihre Sprachmodellierungstechniken schnell zu bewerten und die Beiträge in Kombination mit anderen fortschrittlichen Techniken leicht zu vergleichen.
- Handschuh ist ein unbeaufsichtigter Lernalgorithmus zum Erhalten von Vektordarstellungen für Wörter. Das Training erfolgt an aggregierten globalen Co-Coccurrence-Statistiken aus einem Korpus, und die daraus resultierenden Darstellungen zeigen interessante lineare Unterstrukturen des Wortvektorraums.
Verwendung
# convert raw data
python preprocess/convert_data.py --dataset wikipedia --input_dir data/wikipedia/raw --output_dir data/wikipedia/processed --min_seq_len 0 --max_seq_len 512
# prepare vocab & embed files
python prepare_resource.py
--input_dir data/wikipedia/processed --max_word_size 512 --max_char_size 16
--full_embedding_file data/glove/glove.840B.300d.txt --word_embedding_file data/wikipedia/resource/lm.word.embed --word_embed_dim 300
--word_vocab_file data/wikipedia/resource/lm.word.vocab --word_vocab_size 100000
--char_vocab_file data/wikipedia/resource/lm.char.vocab --char_vocab_size 1000
# run experiment in train + eval mode
python language_model_run.py --mode train_eval --config config/config_lm_template.xxx.json
# run experiment in train only mode
python language_model_run.py --mode train --config config/config_lm_template.xxx.json
# run experiment in eval only mode
python language_model_run.py --mode eval --config config/config_lm_template.xxx.json
# encode text as ELMo vector
python language_model_run.py --mode encode --config config/config_lm_template.xxx.json
# random search hyper-parameters
python hparam_search.py --base-config config/config_lm_template.xxx.json --search-config config/config_search_template.xxx.json --num-group 10 --random-seed 100 --output-dir config/search
- Zusammenfassung visualisieren
# visualize summary via tensorboard
tensorboard --logdir=output
Modell
Bidirektionales Sprachmodell (BILM)
Bei einer Sequenz berechnet das bidirektionale Sprachmodell die Wahrscheinlichkeit der Sequenz vorwärts,

Dann läuft es in umgekehrter Reihenfolge über die Sequenz, um die Wahrscheinlichkeit der Sequenz zu berechnen.

Die Sequenz durchläuft zuerst eine gemeinsame Einbettungsschicht und wird dann durch mehrschichtige RNN (z. B. LSTM, Gru usw.) in beide Richtungen modelliert, und schließlich wird die Normalisierung der Softmax-Normalisierung angewendet, um Wahrscheinlichkeiten zu erhalten.

Abbildung 2: Bidirektionale Sprachmodellarchitektur (Quelle: Verallgemeinerte Sprachmodelle)
Das Modell wird trainiert, indem die negative Log -Wahrscheinlichkeit der Vorwärts- und Rückwärtsrichtungen gemeinsam minimiert wird.

Referenz
- Matthew E. Peters, Mark Neumann, Mohit Iyyer, Matthew Gardner, Christopher T Clark, Kenton Lee und Luke S. Zettlemoyer. Tiefe kontextualisierte Wortdarstellungen [2018]
- Alec Radford, Karthik Narasimhan, Tim Salimans und Ilya Sutskever. Verbesserung des Sprachverständnisses durch generatives Vorverbrauch [2018]
- Jacob Devlin, Ming-Wei Chang, Kenton Lee und Kristina Toutanova. Bert: Vorausbildung von tiefen bidirektionalen Transformatoren für das Sprachverständnis [2018]
- Alec Radford, Jeffrey Wu, Rewon Child, David Luan, Dario Amodei und Ilya Sutskever. Sprachmodelle sind unbeaufsichtigte Multitasking -Lernende [2019]