我已经检查了上一篇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 ...........................................................
答案 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]