将 freebase 与 word2vec 一起使用时无法找到单词

Unable to find words when using freebase with word2vec

我正在尝试将 freebase 与 gensim 的 word2vec 一起使用,以使用以下代码查找两个词的向量之间的相似度得分。

model = gensim.models.Word2Vec()
model = models.Word2Vec.load_word2vec_format('freebase-vectors-skipgram1000-en.bin.gz', binary=True)

基于 freebase 创建模型后,我的代码出现任何单词的关键错误。

model.similarity('microsoft', 'apple')

这是给我 KeyError: 'microsoft'

但是当我使用 googlenews 而不是 freebase 时它工作正常。知道为什么吗?

model.similarity('/en/microsoft', '/en/apple')

该特定模型将 Freebase /en ID 作为单词的标签。还有另一个版本使用 MID(即 /m ID)。您可以使用 Freebase API 或数据转储找到与 word/entity 关联的英文(或任何其他语言)标签(您不能只在单词前面加上“/en/”作为你可能会从@scottyli 的回答中猜到。

您可能还想看看这个问题和答案:Using freebase vectors with gensim