Passende Worte und Vektoren im gensim Word2Vec Modell

Hatte ich die gensim Word2Vec Umsetzung berechnen Sie einige word-Einbettungen für mich. Alles ging ganz fantastisch, wie weit ich es sagen kann; jetzt bin ich clustering von Wort-Vektoren erstellt, in der Hoffnung zu Holen einige der semantischen Gruppierungen.

Als nächsten Schritt möchte ich auf die Worte (anstatt der Vektoren), die in jedem cluster. I. e. wenn ich den Vektor von Einbettungen [x, y, z] ich möchte, um herauszufinden, die tatsächliche Wort dieser Vektor repräsentiert. Ich kann die Wörter/Vokabeln Elemente durch Aufruf model.vocab und das Wort Vektoren durch model.syn0. Aber ich konnte nicht finden, eine Stelle, wo diese sind explizit aufeinander abgestimmt sind.

Diese war komplizierter, als ich es erwartet hatte und ich das Gefühl habe, ich könnte fehlt der offensichtliche Weg, es zu tun. Jede Hilfe ist willkommen!

Problem:

Match Worten zum einbetten von Vektoren erstellt von Word2Vec () -- wie mache ich es?

Mein Ansatz:

Nach der Erstellung des Modells (code unten*), würde ich nun gerne entsprechen die Indizes zugewiesen, um jedes Wort (während der build_vocab() phase), um die Vektor-matrix ausgegeben, da model.syn0.
So

for i in range (0, newmod.syn0.shape[0]): #iterate over all words in model
    print i
    word= [k for k in newmod.vocab if newmod.vocab[k].__dict__['index']==i] #get the word out of the internal dicationary by its index
    wordvector= newmod.syn0[i] #get the vector with the corresponding index
    print wordvector == newmod[word] #testing: compare result of looking up the word in the model -- this prints True
  • Gibt es einen besseren Weg, dies zu tun, z.B. durch die Fütterung der Vektor in das Modell entspricht dem Wort?
  • Tut dies sogar mir die richtigen Ergebnisse?

*Mein code zum erstellen des word-Vektoren:

model = Word2Vec(size=1000, min_count=5, workers=4, sg=1)

model.build_vocab(sentencefeeder(folderlist)) #sentencefeeder puts out sentences as lists of strings

model.save("newmodel")

Fand ich diese Frage, die ist ähnlich, hat aber nicht wirklich beantwortet worden.

InformationsquelleAutor patrick | 2016-07-29

Schreibe einen Kommentar