Wie verwende ich Gensim doc2vec mit vortrainierten Wortvektoren?
Ich kam vor kurzem in die doc2vec neben Gensim. Wie kann ich die vor-geschult sind Wort-Vektoren (z.B. im word2vec original-website) mit doc2vec?
Oder ist doc2vec immer das Wort Vektoren aus dem gleichen Sätze verwendet er für die Absatz-Vektor-Ausbildung?
Dank.
InformationsquelleAutor der Frage Stergios | 2014-12-14
Du musst angemeldet sein, um einen Kommentar abzugeben.
Beachten Sie, dass die "DBOW" (
dm=0
) training-Modus nicht benötigen oder selbst erstellen Wort-Vektoren, die als Teil der Ausbildung. Es bloß lernt Dokument-Vektoren, die gut im Vorhersagen jedes Wort wiederum (ähnlich wie die word2vec skip-Gramm-Trainings-Modus).(Vor gensim 0.12.0, es war der parameter
train_words
erwähnt in einem anderen Kommentar, die Dokumentation, die vorgeschlagen wird co-train Worte. Aber ich glaube nicht, dass dies jemals wirklich gearbeitet. Ab gensim 0.12.0, gibt es den parameterdbow_words
", die zum überspringen-Gramm-Bahn-Worte gleichzeitig mit DBOW doc-Vektoren. Beachten Sie, dass dadurch die Ausbildung länger dauern – durch einen Faktor in Bezug aufwindow
. Also, wenn Sie nicht brauchen, Wort-Vektoren, können Sie immer noch lassen Sie diese aus.)In der "DM" - training-Methode (
dm=1
), Wort-Vektoren sind von Natur aus trainiert während des Prozesses, zusammen mit doc-Vektoren, und sind wahrscheinlich auch auf die Qualität der doc-Vektoren. Es ist theoretisch möglich, pre-initialisieren Sie die Wort-Vektoren aus der vorherigen Daten. Aber ich kenne keine starke theoretische oder experimentelle Grund, zuversichtlich zu sein, dies würde die Verbesserung der doc-Vektoren.Einer fragmentarischen experiment lief ich entlang dieser Linien vorgeschlagen, die doc-Vektor Ausbildung stieg aus, um einen schnelleren start, bessere prädiktive Qualitäten nach den ersten paar Durchgängen aber dieser Vorteil verblasst mit mehr geht. Ob Sie halten das Wort Vektoren Konstante oder lassen Sie sich weiter anpassen, mit der neuen Ausbildung ist wahrscheinlich auch ein wichtiger Aspekt... aber welche Wahl besser ist, hängt von Ihrer Ziele, Daten-set, und die Qualität/Relevanz der bereits bestehenden Wort-Vektoren.
(Sie wiederholen könnte mein experiment mit der
intersect_word2vec_format()
Methode zur Verfügung, im gensim 0.12.0, und versuchen, die verschiedenen Stufen der Herstellung-pre-loaded Vektoren beständig-zu-neuen-Ausbildung über diesyn0_lockf
Werte. Aber denken Sie daran, dies ist experimentelle Gebiet: basic doc2vec Ergebnisse stützen sich nicht auf, oder sogar unbedingt verbessern, wiederverwendet Wort-Vektoren.)InformationsquelleAutor der Antwort gojomo
Gut, ich bin vor kurzem mit Doc2Vec zu. Und ich dachte, der Verwendung von LDA-Ergebnis als word-Vektor und fixieren Sie diese word-Vektoren zu erhalten, ein Dokument-Vektor. Das Ergebnis ist nicht sehr interessant. Vielleicht ist es nur meine Daten, ist das nicht gut.
Der code ist unten. Doc2Vec speichert word Vektoren und Dokument-Vektoren zusammen im Wörterbuch doc2vecmodel.syn0. Sie können direkten ändern der Vektor-Werte. Das einzige problem könnte sein, dass Sie brauchen, um herauszufinden, welche Positionen in syn0 stellt die word oder das Dokument. Die Vektoren gespeichert sind, in zufälliger Reihenfolge im Wörterbuch syn0.
InformationsquelleAutor der Antwort STEVE Guo
Diese gegabelten version von gensim ermöglicht das einlegen von bereits ausgebildeten Wort-Vektoren für die Ausbildung doc2vec. Hier haben Sie ein Beispiel, wie man es benutzt. Das Wort Vektoren müssen in der C-word2vec tool-text-format: eine Zeile pro Wort Vektor, wo als erstes kommt ein string, der das Wort und dann durch Leerzeichen getrennte float-Werte, einer für jede dimension der Einbettung.
Diese Arbeit gehört zu einer Papierin dem Sie behaupten, dass die Verwendung von pre-geschult Wort Einbettungen tatsächlich hilft mit beim Aufbau der Dokument-Vektoren. Aber ich bin immer fast die gleichen Ergebnisse, egal, ich lade die vor-geschult sind, Einbettungen oder nicht.
Edit: tatsächlich gibt es eine Bemerkenswerte Differenz in meine Experimente. Wenn ich geladen, die pretrained Einbettungen, die ich ausgebildet doc2vec für die Hälfte der Iterationen zu erhalten fast die gleichen Ergebnisse (Ausbildung länger als produziert schlechtere Ergebnisse in meiner Aufgabe).
InformationsquelleAutor der Antwort Álvaro Marco
Radim gerade gebucht ein tutorial auf die doc2vec Funktionen von gensim (gestern, glaube ich - deine Frage ist aktuell!).
Gensim unterstützt das laden von pre-geschult Vektoren aus die C-Implementierungwie beschrieben in die gensim-Modelle.word2vec API-Dokumentation.
InformationsquelleAutor der Antwort AaronD