[PYTHON] Natürliche Sprache: Doc2Vec Part2 --Dokumentklassifizierung

Ziel

Dies ist eine Fortsetzung der Dokumentklassifizierung mit dem Microsoft Cognitive Toolkit (CNTK).

In Teil 2 werden die in Teil 1 vorbereiteten Dokumentdaten verwendet, um Dokumente nach CNTK zu klassifizieren. Es wird davon ausgegangen, dass CNTK und NVIDIA GPU CUDA installiert sind.

Einführung

Natürliche Sprache: Doc2Vec Part1 --livedoor NEWS Corpus bereitete Trainingsdaten und Verifizierungsdaten vor.

In Teil 2 erstellen wir ein Doc2Vec-Modell und klassifizieren Sätze.

Doc2Vec Doc2Vec [1] [2] [3] ist eine Erweiterung von Word2Vec. Das diesmal implementierte Doc2Vec ist ein einfaches Modell, das die Ausgabe der eingebetteten Ebene aller in einem Dokument enthaltenen Wörter mittelt und klassifiziert, zu welcher Kategorie das Dokument gehört.

doc2vec.png

Einstellungen im Training

Der Anfangswert jedes Parameters verwendet die Standardeinstellung von CNTK. In den meisten Fällen hat es eine gleichmäßige Verteilung von Glorot [4].

Word2Vec hat Sampled Softmax [5] verwendet, um die Ausgabeebene zu beschleunigen, um Wörter vorherzusagen, aber dieses Dokument Da die Klassifizierung 9 Kategorien umfasst, habe ich die normale Softmax-Funktion und den Cross-Entropy-Fehler verwendet.

Adam [6] wurde als Optimierungsalgorithmus verwendet. Adams Lernrate beträgt 0,01, der Hyperparameter $ β_1 $ ist 0,9 und $ β_2 $ ist der Standardwert für CNTK.

Das Modelltraining lief 10 Epochen durch Mini-Batch-Training.

Implementierung

Ausführungsumgebung

Hardware-

・ CPU Intel (R) Core (TM) i7-6700K 4,00 GHz ・ GPU NVIDIA GeForce GTX 1060 6 GB

Software

・ Windows 10 Pro 1909 ・ CUDA 10.0 ・ CuDNN 7.6 ・ Python 3.6.6 ・ Cntk-gpu 2.7 ・ Pandas 0.25.0

Programm zum Ausführen

Das Schulungsprogramm ist auf [GitHub] verfügbar (https://github.com/sho-watari/NaturalLanguage/tree/master/Doc2Vec).

doc2vec_training.py


Ergebnis

Training loss and error

Die folgende Abbildung zeigt die Verlustfunktion und die Protokolle der falschen Erkennungsrate während des Trainings. Das Diagramm links zeigt die Verlustfunktion, das Diagramm rechts zeigt die Falscherkennungsrate, die horizontale Achse zeigt die Anzahl der Epochen und die vertikale Achse zeigt den Wert der Verlustfunktion bzw. die Falscherkennungsrate.

doc2vec_logging.png

Validation accuracy and confusion matrix

Die folgenden Ergebnisse wurden erhalten, wenn die Leistung unter Verwendung der Verifizierungsdaten bewertet wurde, die bei der Erstellung der Daten in Teil 1 getrennt wurden.

Accuracy 90.00%

Die folgende Abbildung zeigt die gemischte Matrix der Verifizierungsdaten. Die Spaltenrichtung repräsentiert die Vorhersage und die Zeilenrichtung repräsentiert die richtige Antwort.

doc2vec_matrix.png

Ausgewähltes Wort aufgrund der Rückausbreitung des Gradienten

Ich habe versucht herauszufinden, welche Wörter in einem Satz wichtig sind, wenn Dokumente mithilfe der Rückausbreitung von Verläufen klassifiziert werden.

dojujo-tsushin


1 alleinstehende Frau
2 erwachsene Mädchen
3 Saori Abe
4 Frau
5 nicht heiraten
6 Alter
7 ich
8 verheiratet
9 Werte
10 Exemplare

Worte über Frauen werden in Artikeln des deutschen Newsletters hervorgehoben.

it-life-hack


1 Smartphone
2 Dienstleistungen
3 Dienstleistungen
4 Apps
5 google
6 google
7 google
8 google
9 google
10 google

Wörter über IT werden im IT Life Hack-Artikel hervorgehoben.

sports-watch


1 Training
2 Anzahl Plätze
3 Vereine
4 Vereine
5 nach Hause
6 Oben
7 Vision
8 Yoshida
9 Yoshida
10 Yoshida

Der Artikel von Sports Watch betont Wörter über Sport.

Referenz

Natural Language : Doc2Vec Part1 - livedoor NEWS Corpus Natural Language : Word2Vec Part2 - Skip-gram model

  1. Quoc Le and Tomas Mikolov. "Distributed Representations of Sentences and Documents", International Conference on Machine Learning. 2014, pp 1188-1196.
  2. Andrew M. Dai, Christopher Olah, and Quoc V. Le. "Document Embedding with Paragraph Vectors", arXiv preprint arXiv:1507.07998 (2015).
  3. Jey Han Lau and Timothy Baldwin. "An Empirical Evaluation of doc2vec with Practical Insights into Document Embedding Generation", arXiv preprint arXiv:1607.05368 (2016).
  4. Xaiver Glorot and Yoshua Bengio. "Understanding the difficulty of training deep feedforward neural networks", Proceedings of the Thirteenth International Conference on Artificial Intelligence and Statistics. 2010, pp 249-256.
  5. Sebastien Jean, Kyunghyun Cho, Roland Memisevic, and Yoshua Bengio. "On Using Very Large Target Vocabulary for Neural Machine Translation", arXiv preprint arXiv:1412.2007 (2014).
  6. Diederik P. Kingma and Jimmy Lei Ba. "Adam: A method for stochastic optimization", arXiv preprint arXiv:1412.6980 (2014).

Recommended Posts

Natürliche Sprache: Doc2Vec Part2 --Dokumentklassifizierung
Natürliche Sprache: Doc2Vec Part1 --livedoor NEWS Corpus
Natürliche Sprache: Word2Vec Part3 - CBOW-Modell
Natürliche Sprache: Word2Vec Part2 - Skip-Gramm-Modell
Natürliche Sprache: Maschinelle Übersetzung Teil 2 - Neuronaler maschineller Übersetzungstransformator
Natürliche Sprache: BERT Part2 - Unüberwachte Vorschulung ALBERT
Lernen Sie die Grundlagen der Dokumentklassifizierung durch Verarbeitung natürlicher Sprache, Themenmodell
Natürliche Sprache: Maschinelle Übersetzung Teil 1 - Japanisch-Englisch Untertitel Corpus
Python: Verarbeitung natürlicher Sprache
RNN_LSTM2 Verarbeitung natürlicher Sprache
[Übung] Erstellen Sie eine Watson-App mit Python! # 3 [Klassifizierung der natürlichen Sprache]
Dokumentenklassifizierung mit Satzstück
Verarbeitung natürlicher Sprache 1 Morphologische Analyse
Python: Vektordarstellung in natürlicher Sprache
Verarbeitung natürlicher Sprache 2 Wortähnlichkeit