如何获取word2vec词汇表中不存在的单词的向量?

时间:2018-07-04 07:49:20

标签: python-3.x pandas word2vec gensim text-classification

我已经检查了上一篇link,但似乎不适用于我的情况:-

我已经预先训练了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 :(得分:0)

您可以将第一个向量初始化为[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]

答案 1 :(得分:0)

您可以将第一个向量初始化为[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]