1

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

初始化 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,但这在加载时出错。

4

1 回答 1

3

您的 word2vec 使用没有任何问题。文件格式是二进制的(可以使用这个不错的实用程序将其转换为文本)。

您已经下载了预训练的“实体”矢量文件。我建议您使用来自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
于 2015-07-24T21:38:35.553 回答