GloVe Word Embeddings

Linguistische Regelmäßigkeiten

Lassen Sie uns nun untersuchen, wie GloVe embeddings funktioniert. Wie allgemein bekannt, erfassen word2vec-Wortvektoren viele sprachliche Gesetzmäßigkeiten. Um das kanonische Beispiel zu geben, nehmen wir Wortvektoren für die Wörter „Paris“, „Frankreich“ und „Deutschland“ und führen die folgende Operation aus:

\

der resultierende Vektor befindet sich in der Nähe des Vektors für „berlin“

Laden wir dieselben Wikipedia-Daten herunter, die von word2vec als Demo verwendet wurden:

Im nächsten Schritt erstellen wir ein Vokabular, eine Reihe von Wörtern, für die wir Wortvektoren lernen möchten. Beachten Sie, dass alle Funktionen von text2vec, die mit rohen Textdaten arbeiten (create_vocabulary, create_corpus, create_dtm, create_tcm) haben Sie eine Streaming-API und Sie sollten Token als erstes Argument für diese Funktionen durchlaufen.

Diese Worte sollten nicht ungewöhnlich sein. Zum Beispiel können wir keinen aussagekräftigen Wortvektor für ein Wort berechnen, das wir nur einmal im gesamten Korpus gesehen haben. Hier nehmen wir nur Wörter, die mindestens fünfmal vorkommen. text2vec bietet zusätzliche Optionen zum Filtern von Vokabeln (siehe ?prune_vocabulary).

Jetzt haben wir 71.290 Begriffe im Vokabular und sind bereit, eine Term-Co-Occurence-Matrix (TCM) zu erstellen.

Jetzt haben wir eine TCM-Matrix und können sie über den GloVe-Algorithmus faktorisieren.
text2vec verwendet einen parallelen stochastischen Gradientenabstiegsalgorithmus. Standardmäßig werden alle Kerne auf Ihrem Computer verwendet, Sie können jedoch die Anzahl der Kerne angeben, wenn Sie möchten.

Lassen Sie uns unser Modell anpassen. (Es kann einige Minuten dauern, bis es passt!)

## INFO epoch 1, loss 0.1755 ## INFO epoch 2, loss 0.1228 ## INFO epoch 3, loss 0.1085 ## INFO epoch 4, loss 0.1005 ## INFO epoch 5, loss 0.0954 ## INFO epoch 6, loss 0.0918 ## INFO epoch 7, loss 0.0890 ## INFO epoch 8, loss 0.0869 ## INFO epoch 9, loss 0.0851 ## INFO epoch 10, loss 0.0837
## 71290 50

Beachten Sie, dass das Modell zwei Sätze von Wortvektoren lernt – main und context . Im Wesentlichen sind sie gleich, da das Modell symmetrisch ist. Aus unserer Erfahrung führt das Erlernen von zwei Sätzen von Wortvektoren zu qualitativ hochwertigeren Einbettungen. Dieses Modell ist ein „Zerlegungs“ -Modell (erbt von mlapiDecomposition – generische Klasse von Modellen, die Eingabematrix in zwei niederrangige Matrizen zerlegen). Also auf Augenhöhe mit jedem anderen mlapiDecomposition Modell zweite Low-Rank-Matrix (Kontext Wortvektoren) ist in components Feld:

## 50 71290

Beachten Sie, dass wie bei allen Modellen, die von mlapiDecomposition erben, die transformierte Matrix nrow = nrow(input), ncol = rank und die zweite component Matrix nrow = rank, ncol = ncol(input) .

Während beide Wortvektormatrizen als Ergebnis verwendet werden können, ist es normalerweise besser (Idee aus dem Papier), eine Summe aus Haupt- und Kontextvektor zu mitteln oder zu nehmen:

Wir können die nächstgelegenen Wortvektoren für unser Beispiel Paris – Frankreich + Deutschland finden:

## paris berlin munich germany versailles ## 0.7724678 0.7156243 0.6962157 0.6381500 0.6170311

Sie können viel bessere Ergebnisse erzielen, indem Sie mit skip_grams_window und den Parametern der GloVe -Klasse experimentieren (einschließlich Wortvektorgröße und Anzahl der Iterationen). Weitere Details und groß angelegte Experimente zu Wikipedia-Daten finden Sie in diesem alten Beitrag auf meinem Blog.

You might also like

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.