发生在想通过model['XXX']
观察一下XXX的词向量的时候
-
原因一
最简单的原因就是这个词不在你做来做训练的语料库中
-
原因二
在定义模型时
model = word2vec.Word2Vec(sentences, min_count=5)
有一个
min_count
的属性,它的默认值是5,Word2Vec在训练时会忽略词频小于该属性值的词,可能你进行观察的这个词的词频太低,训练时没有被采用解决方法是降低该值的设定
-
原因三
model = word2vec.Word2Vec(sentences, min_count=5)
中的sentences默认是按这种格式
[['str1', 'str2'], ['str2', 'str4'], ... ]
进行处理的,你传入的可能是一个整体的1维的此列表,它把你的一个词当成了一个句子列表,再进行拆分,把每个字当成一个词进行训练,多个字的词就都不在vocabulary中了
解决方法是在嵌套一层,传入
[sentences]
这样一个二维的此列表。 -
参考文献
https://stackoverflow.com/questions/45420466/gensim-keyerror-word-not-in-vocabulary?answertab=votes#tab-top