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?

InformationsquelleAutor Mark Amery | 2016-03-16
Schreibe einen Kommentar