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
.
Tags und Links deep-learning nlp keras word2vec theano