Как я могу получить векторы для слов, которых не было в словаре word2vec? - PullRequest
0 голосов
/ 04 июля 2018

Я проверил предыдущее сообщение ссылка , но в моем случае это не работает: -

У меня есть предварительно обученная модель word2vec:

import gensim    
model = Word2Vec.load('w2v_model')

Теперь у меня есть датафрейм для панд с ключевыми словами:

keyword
corruption
people
budget
cambodia
.......
......

Все, что я хочу добавить векторы для каждого ключевого слова в соответствующих столбцах, но когда я использую model['cambodia'], это выдает ошибку как KeyError: "word 'cambodia' not in vocabulary"

поэтому я обновил ключевое слово следующим образом:

model.train(['cambodia'])

Но это не сработает для меня, когда я использую model['cambodia']

все равно выдает ошибку как KeyError: "word 'cambodia' not in vocabulary". Как обновить новые слова в словарь word2vec, чтобы я мог получить его векторы? Ожидаемый результат будет: -

keyword    V1         V2          V3         V4            V5         V6   
corruption 0.07397  0.290874    -0.170812   0.085428    -0.148551   0.38846 
people      ..............................................................
budget      ...........................................................

Ответы [ 2 ]

0 голосов
/ 26 июля 2018

Вы можете инициализировать первый вектор как [0,0, ... 0]. И слово, которого нет в словаре, может быть установлено на 0.

keyword    V1         V2          V3         V4            V5         V6  
0          0          0           0           0           0           0
1       0.07397  0.290874    -0.170812   0.085428    -0.148551   0.38846 
2      ..............................................................
3      ...........................................................

Вы можете использовать две подсказки для решения проблемы.

word2id['corruption']=1 
vec['corruption']=[0.07397 0.290874 -0.170812 0.085428 -0.148551 0.38846]
 ...
word2id['cambodia']=0 
vec['cambodia']=[0 0 0 0 0 0]
0 голосов
/ 26 июля 2018

Вы можете инициализировать первый вектор как [0,0,...0]. И слово, которого нет в словаре, может быть установлено на 0.

 keyword    V1         V2         V3         V4           V5         V6  
    0       0          0          0          0            0          0
    1       0.07397  0.290874    -0.170812   0.085428    -0.148551   0.38846 
    2       ..............................................................
    3       ..............................................................

word2id['corruption']=1
vec['corruption']=[0.07397  0.290874    -0.170812   0.085428    -0.148551   0.38846]
...
word2id['cambodia']=0
vec['cambodia']=[0           0          0           0             0           0]
...