Doc2Vec und PySpark: Gensim Doc2vec über DeepDist

9

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:

%Vor%

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:

  1. model.syn0
  2. model.syn0_lockf
  3. model.docvecs.doctag_syn0
  4. model.docvecs.doctag_syn0_lockf

Vergleiche mit dem Quellcode von gensim.models.word2vec ( link ), Die folgenden Felder fehlen in Doc2Vec model:

  1. model.syn1
  2. 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

sein %Vor%

Fehle ich etwas Wichtiges hier? Zum Beispiel:

  1. Sollte mir model.syn1 überhaupt etwas ausmachen? Was meinen sie denn?
  2. Habe ich Recht, dass model.*_lockf die gesperrten Matrizen nach dem Training sind?
  3. Ist es in Ordnung, dass ich 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

    
Mai 25.02.2016, 00:40
quelle

0 Antworten