Implementiere word2vec in Keras

8

Ich möchte den word2vec Algorithmus in Keras implementieren, Ist das möglich? Wie kann ich das Modell anpassen? Sollte ich benutzerdefinierte Verlustfunktion verwenden?

    
András 25.10.2016, 15:35
quelle

1 Antwort

1
  

Ist das möglich?

Sie haben es bereits selbst beantwortet: ja. Zusätzlich zu word2veckeras , das gensim verwendet, gibt es hier noch ein CBOW-Implementierung , die keine zusätzlichen Abhängigkeiten hat (nur für den Fall, dass ich nicht mit diesem Repo verbunden bin). Sie können sie als Beispiele verwenden.

  

Wie kann ich das Modell anpassen?

Da die Trainingsdaten das große Korpus von Sätzen sind, ist model.fit_generator die am besten geeignete Methode, die "passt" Modell auf Daten, die Batch für Batch von einem Python-Generator generiert werden ". Der Generator läuft unbegrenzt und liefert (word, context, target) CBOW (oder SG) Tupel, aber Sie geben sample_per_epoch und nb_epoch manuell an, um das Training zu begrenzen. Auf diese Weise entkoppeln Sie die Satzanalyse (Tokenisierung, Wortindex-Tabelle, Gleitfenster usw.) und das aktuelle Keras-Modell sowie Speichern Sie eine Menge Ressourcen .

  

Sollte ich benutzerdefinierte Verlustfunktion verwenden?

CBOW minimiert den Abstand zwischen der vorhergesagten und der wahren Verteilung des Zentralworts, also macht categorical_crossentropy es in der einfachsten Form. Wenn Sie negative Sampling implementieren, ist das ein bisschen komplexer, aber viel mehr effizient, ändert sich die Verlustfunktion zu binary_crossentropy . Benutzerdefinierte Verlustfunktion ist nicht erforderlich.

Für alle, die sich für Details zu mathematischen und probabilistischen Modellen interessieren, empfehle ich die Klasse CS224D von Stanford. Hier finden Sie die Vorlesungsunterlagen zu word2vec, CBOW und Skip-Gram.

Eine weitere nützliche Referenz: Implementierung von word2vec in reinem numpy und c .

    
Maxim 09.10.2017, 13:02
quelle