NLP中实现Word2Vec模型时出现KeyError错误该如何解决?
错误原因
你触发报错的核心原因是遍历Gensim Word2Vec词向量对象的写法错误:
Gensim的KeyedVectors(也就是w2v_model.wv对应的类)不支持直接用list()强制转换,直接迭代该对象时,它会把迭代的整数索引当成词汇的key去查询词向量,你的词表里根本不存在141101这个数字字符串组成的词汇,自然抛出KeyError。
解决方案
1. 正确获取词表长度
不需要转list,直接调用len()即可:
print(len(w2v_model.wv))
2. 正确获取所有词汇列表
Gensim 4.x及以上版本使用index_to_key属性获取所有词汇的有序列表:
all_words = w2v_model.wv.index_to_key
如果是3.x旧版本,替换为all_words = w2v_model.wv.index2word即可。
3. 遍历所有词向量的正确写法
for word in w2v_model.wv.index_to_key: # 拿到单个词的向量 vec = w2v_model.wv[word] # 后续处理逻辑
补充检查(可选)
你的预处理逻辑里设置了if(cleaned_words.isalpha()),只有纯字母的词才会进入训练语料,如果你需要保留数字类的词汇,可以删掉这个判断,避免有效信息丢失。
内容的提问来源于stack exchange,提问作者Rishabh Talwar
相关产品推荐
相关产品推荐

