设置word2vec - KeyError:“单词'单词'不在词汇表中”

时间:2015-07-20 00:30:45

标签: python character-encoding gensim word2vec

我尝试使用word2vec,但在尝试对任何单词执行任何操作时都会出错。这似乎是一个编码问题,这就是我所做的:

Init word2vec:

import gensim, logging
logging.basicConfig(format='%(asctime)s : %(levelname)s : %(message)s', level=logging.INFO)

model = gensim.models.Word2Vec.load_word2vec_format('freebase-vectors-skipgram1000/knowledge-vectors-skipgram1000.bin', binary=True)
model.init_sims(replace=True)

测试一下:

print(model)  
# prints: Word2Vec(vocab=1422903, size=1000, alpha=0.025)

print(model.index2word[0])  
# prints: u'/m/0dgps15'
# I would expect a readable word, how to fix that?

错误:

print(model.similarity('word', 'sound'))
# An error happen: KeyError: 'word'

我还尝试使用binary=False加载模型,但这会在加载时出错。

1 个答案:

答案 0 :(得分:3)

word2vec使用没有任何问题。文件格式为二进制(可以使用this nice utility转换为文本。)

您已经下载了经过预先培训的"实体"矢量文件。我建议您使用Google News中的单词或短语向量(也可在word2vec网站上找到)。

[1] import gensim
[2] model = gensim.models.Word2Vec.load_word2vec_format('GoogleNews-vectors-negative300.bin', binary=True)
[3] print(model.similarity('word', 'sound'))
0.152615140536