2016-03-16 3 views
6

Я использую Word2vec через gensim с предвзятыми векторами Google, обученными в Новостях Google. Я заметил, что слово векторы я могу получить доступ, делая прямые поиски индекса на Word2Vec объекта не являются единичными векторами:Какое значение имеет длина вектора Word2vec?

>>> 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 

Однако в методе most_similar эти векторы не-единицы не используются; вместо этого, нормированные варианты используются с незарегистрированной .syn0norm собственности, которая содержит только единичные векторы:

>>> w2v.init_sims() 
>>> unit_king_vector = w2v.syn0norm[w2v.vocab['king'].index] 
>>> numpy.linalg.norm(unit_king_vector) 
0.99999994 

Чем больше вектор просто масштабируется до версии орта:

>>> 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) 

Учитывая, что слово сходство сравнения в Word2Vec сделаны на cosine similarity, для меня не очевидно, что означают длины ненормированных векторов, хотя я предполагаю, что они означают что-то, так как gensim предоставляет их мне, а не только разоблачает единичные векторы в .syn0norm ,

Как формируются длины этих ненормированных векторов Word2vec и каково их значение? Для каких расчетов имеет смысл использовать нормированные векторы, и когда следует использовать ненормированные?

+0

Связанный: [Должен ли я нормализовать векторы слова word2vec перед их использованием?] (Http://stats.stackexchange.com/q/177905/12359) –

ответ

3

Приносим извинения за то, что вы были подробными.

Объективная функция моделей встраивания слов заключается в том, чтобы максимизировать лог-правдоподобие данных по модели. В word2vec это достигается путем минимизации dot product (нормализованного с softmax) прогнозируемого вектора (с использованием контекста) и фактического вектора (текущего представления) слова с учетом контекста слова.

Обратите внимание, что задача, для которой обучаются векторы вектора, - это либо предсказать контекстное заданное слово, либо слово, заданное контекстом (skip-gram vs cbow). Длина слова-векторов не имеет значения как такового, но сами векторы имеют интересные свойства/приложения.

Чтобы найти похожие слова, вы найдете слова с максимальной косинус сходства (что эквивалентно нахождению слов с минимальным расстоянием евклидовой после блока нормализации векторов, проверить link), который most_similar функция делает.

Чтобы найти аналоги, мы можем просто использовать вектор разности (или направления) между необработанными векторными представлениями векторов-слов.Например,

  • v ('Paris') - v ('Франция') ~ v ('Рим') - v ('Италия') `
  • v ('хорошо') - v (» плохие ') ~ V (счастливый) - v (' грустная ")

В gensim,

model = gensim.models.Word2Vec.load_word2vec_format('GoogleNews-vectors-negative300.bin', binary=True) 

model.most_similar(positive=['good', 'sad'], negative=['bad']) 
[(u'wonderful', 0.6414928436279297), 
(u'happy', 0.6154338121414185), 
(u'great', 0.5803680419921875), 
(u'nice', 0.5683973431587219), 
(u'saddening', 0.5588893294334412), 
(u'bittersweet', 0.5544661283493042), 
(u'glad', 0.5512036681175232), 
(u'fantastic', 0.5471092462539673), 
(u'proud', 0.530515193939209), 
(u'saddened', 0.5293528437614441)] 

Ссылки:

  1. GloVe: глобальные векторы для слова Представление
  2. word2vec параметров обучения Разъяснения - paper
  3. Лингвистические Закономерности в непрерывном пространстве Слово Представления - paper
  4. Word2Vec

Копирование ответ на родственный (пока без ответа question)

Смежные вопросы