Gensim Word2Vec缺少输入单词的向量

时间:2019-05-29 22:17:36

标签: gensim word2vec

我训练的Gensim Word2Vec缺少某些单词的向量。也就是说,尽管我输入了“ yuval”一词,但是该模型缺少向量。是什么原因?

2 个答案:

答案 0 :(得分:1)

您要么没有提供'yuval'作为具有正确格式的语料的令牌,要么出现的次数低于模型的min_count。 (对于Word2Vec模型来说,丢弃低频单词通常是有用的 -如果只有几个单词的例子,更多的数据不会自动变得更好。)

仔细检查'yuval'是否出现在语料库中,检查次数,以及是否足以使单词幸存下来min_count

答案 1 :(得分:1)

为扩展@gojomo的答案,训练期间的Word2Vec模型被告知丢弃min_count以下的令牌,因为它们被认为是无用的,这意味着无法推断有用的上下文

这意味着,这些标记将没有矢量。

要对此进行检查,请加载模型,并检查词汇表是否包含您感兴趣的令牌:

>>> import gensim
>>> model = gensim.models.KeyedVectors.load(...)
>>> 'car' in model
True
>>> 'yuval' in model
False

由于'yuval'不在词汇表中,因此无法使用in运算符找到它,并且如果使用该键将抛出关键错误。

>>> model['car']
...
...
<numpy array>
>>> model['yuval']
...
...
KeyError: "word 'yuval' not in vocabulary"

如果您真的希望该单词出现在词汇表中,您也可以随时将它们打印出来:

>>> for token in model.wv.vocab.keys():
...     print(token)
...