KeyError:当我使用gensim.Word2Vec处理中文令牌

时间:2018-05-03 04:19:39

标签: python nlp word2vec gensim keyerror

像这样的代码:

train_corpus = "sentence_all.txt"
sentences = LineSentence(train_corpus)
model = Word2Vec(sentences, size=vector_size,  window=window_size, min_count=min_count, workers=worker_count, iter=train_epoch)
print(model['一九九八年新年'])

语料库文件已被gensim中的LineSentence作为令牌列表处理,如下所示:

['本报', '讯', '河北邢台中桥商场', '以', '诚', '待客', ',', '以', '真品', '赢', '来', '回头客', '。', '1997年', ',', '商场', '利税', '比', '上年', '翻', '了', '一番', '多', ',', '员工', '人均', '年', '销售额', '达', '22.1万', '元', '。']
['中桥商场', '虽', '地处', '邢台市', ',', '但', '为了', '扩大', '销售', '半径', ',', '他们', '投资', '近', '万', '元', ',', '向', '邢台市', '19', '个', '县', '、', '市', '、', '区', '部分', '顾客', '赠阅', '《', '公关', '世界', '》', '及', '《', '中国', '质量', '万', '里', '行', '》', '杂志', ',', '扩大', '了', '商店', '的', '影响', '。']

然后得到错误:

KeyError: "word '一九九八年新年' not in vocabulary"

但只有少数令牌不在词汇表中,其他人可以得到他们的单词矢量,然后我不知道原因。

2 个答案:

答案 0 :(得分:0)

gensim.models.Word2Vec(sen, size=100, workers=4, min_count=1)

set min_count=1

min_count表示忽略所有总频率低于此频率的单词。

答案 1 :(得分:0)

您面临的问题是因为您要获取的单词的嵌入不存在。您不能查询不在训练中输入到模型的单词词典中的单词。

我希望这能回答您的问题。