Ich schaue mir das DeepDist
( Link ) Modul an und denke, es mit Gensim
s Doc2Vec
API zu kombinieren Absatzvektoren auf PySpark
. Der Link enthält tatsächlich das folgende saubere Beispiel für die Vorgehensweise für Gensim
s Word2Vec
model:
Nach meinem Verständnis verteilt DeepDist
die Arbeit des Gradientenabfalls in Chargen an die Arbeiter, und kombiniert sie und aktualisiert sie am Master. Wenn ich Word2Vec
durch Doc2Vec
ersetze, sollte es die Dokumentenvektoren geben, die mit den Wortvektoren trainiert werden.
Also habe ich mir den Quellcode von gensim.models.doc2vec
( link angesehen) ). In der Doc2Vec
-Modell-Instanz gibt es folgende Felder:
model.syn0
model.syn0_lockf
model.docvecs.doctag_syn0
model.docvecs.doctag_syn0_lockf
Vergleiche mit dem Quellcode von gensim.models.word2vec
( link ), Die folgenden Felder fehlen in Doc2Vec
model:
model.syn1
model.syn1neg
Ich denke, ich berühre die lockf
Vektoren nicht, weil sie nach dem Training verwendet zu werden scheinen, wenn neue Datenpunkte kommen. Daher sollte mein Code so etwas wie
Fehle ich etwas Wichtiges hier? Zum Beispiel:
model.syn1
überhaupt etwas ausmachen? Was meinen sie denn? model.*_lockf
die gesperrten Matrizen nach dem Training sind? lambda s: LabeledSentence(words=s[10:].split(),labels=s[:10]
verwende, um mein Dataset zu analysieren, vorausgesetzt, ich habe jedes Dokument in einer Zeile, dem eine 0-aufgefüllte 10-stellige ID vorangestellt ist? Jeder Vorschlag / Beitrag wird sehr geschätzt. Ich werde einen Blogbeitrag verfassen, um das Ergebnis zusammenzufassen, wobei die Autoren hier erwähnt werden, möglicherweise um anderen zu helfen Doc2Vec-Modelle auf skalierten verteilten Systemen zu trainieren, ohne viel Zeit damit zu verschwenden, das zu lösen, was ich gerade löse.
Danke
Tags und Links apache-spark pyspark word2vec gensim