Welche Bedeutung hat die Länge einer Word2vec Vektor haben?
Ich bin mit Word2vec durch gensim mit Google pretrained Vektoren trainiert auf Google News. Ich habe bemerkt, dass das Wort-Vektoren, auf die ich zugreifen kann, indem man direkte index-lookups auf die Word2Vec
Objekt sind keine einheitsvektoren:
>>> import numpy
>>> from gensim.models import Word2Vec
>>> w2v = Word2Vec.load_word2vec_format('GoogleNews-vectors-negative300.bin', binary=True)
>>> king_vector = w2v['king']
>>> numpy.linalg.norm(king_vector)
2.9022589
Jedoch in der most_similar
Methode, diese nicht-einheitsvektoren sind nicht verwendet; stattdessen werden normierte Versionen sind von undokumentierten .syn0norm
Eigenschaft, die enthält nur die einheitsvektoren:
>>> w2v.init_sims()
>>> unit_king_vector = w2v.syn0norm[w2v.vocab['king'].index]
>>> numpy.linalg.norm(unit_king_vector)
0.99999994
Den größeren Vektor ist nur eine abgespeckte version der Einheitsvektor:
>>> king_vector - numpy.linalg.norm(king_vector) * unit_king_vector
array([ 0.00000000e+00, -1.86264515e-09, 0.00000000e+00,
0.00000000e+00, -1.86264515e-09, 0.00000000e+00,
-7.45058060e-09, 0.00000000e+00, 3.72529030e-09,
0.00000000e+00, 0.00000000e+00, 0.00000000e+00,
0.00000000e+00, 0.00000000e+00, 0.00000000e+00,
0.00000000e+00, 0.00000000e+00, 0.00000000e+00,
0.00000000e+00, 0.00000000e+00, 0.00000000e+00,
... (some lines omitted) ...
-1.86264515e-09, -3.72529030e-09, 0.00000000e+00,
0.00000000e+00, 0.00000000e+00, 0.00000000e+00,
0.00000000e+00, 0.00000000e+00, 0.00000000e+00,
0.00000000e+00, 0.00000000e+00, 0.00000000e+00], dtype=float32)
Gegeben, das Wort ähnlichkeit Vergleiche in Word2Vec getan werden,Kosinus-ähnlichkeit, es ist mir nicht klar, was die Längen der nicht-normalisierte Vektoren bedeuten - obwohl ich nehme an, Sie bedeuten etwas, da gensim macht Sie auf mich eher, als dass nur die einheitsvektoren in .syn0norm
.
Wie sind die Längen dieser nicht-normierte Word2vec Vektoren erzeugt, und was ist Ihre Bedeutung? Für welche Berechnungen macht es Sinn, verwenden Sie die normierten Vektoren, und Wann sollte ich die nicht-normalisiert sein?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich denke, die Antwort, die Sie suchen, ist beschrieben im Jahr 2015 Papier Mess-Wort Bedeutung
mit
Verteilte Repräsentationen der Wörter Adriaan Schakel und Benjamin Wilson. Die wichtigsten Punkte:
Werde ich entschuldige mich für die ausführliche im Voraus.
Ziel-Funktion von word einbetten von Modellen ist zu maximieren, um die Daten-log-likelihood-Modell unter. In word2vec, dies wird erreicht durch die Minimierung der
dot product
(normalisiert mitsoftmax
) der vorhergesagten Vektor (mit Kontext) und dem tatsächlichen Vektor (aktuelle Darstellung) ein Wort gegeben, das Wort Kontext.Beachten Sie, dass die Aufgabe, für die Wort-Vektoren ausgebildet ist entweder zur Vorhersage der Kontext gegebene Wort, oder ein Wort gegebenen Kontext (
skip-gram
vscbow
). Länge der Wort-Vektoren keine Bedeutung hat als solche, sondern die Vektoren selbst gefunden zu haben interessante Eigenschaften/Anwendungen.Zu finden ähnliche Wörter, finden Sie Wörter mit maximal Kosinus-ähnlichkeit (entspricht der Suche nach Wörtern mit minimalem euklidischen Abstand nach der Einheit der Normalisierung der Vektoren, überprüfen link), die
most_similar
Funktion tut.Zu finden, Analogien, können wir einfach die Differenz (oder die Richtung) Vektor zwischen vektorbasierte Darstellungen von Wort-Vektoren. Zum Beispiel,
In
gensim
,Referenzen:
Kopieren die Antwort auf die damit verbundenen (noch unbeantwortet Frage)