构建Word2Vec模型报错TypeError: 'Word2Vec' object is not subscriptable
报错原因
你遇到的'Word2Vec' object is not subscriptable报错是gensim库版本迭代导致的API变动问题:
- Gensim 3.x及更早版本支持直接对
Word2Vec实例用下标[word]的方式获取对应词的向量 - Gensim 4.x及之后版本将词向量相关的操作全部迁移到了
Word2Vec实例的wv属性下,不再允许直接对Word2Vec实例做下标取值操作。
修复方案
方案1(推荐,适配新版本API)
修改你word_vector函数里报错的第6行代码即可:
# 把原来的 vec += model_w2v[word].reshape((1, size)) # 替换为 vec += model_w2v.wv[word].reshape((1, size))
如果你代码里还有其他地方需要判断词是否在词表,也需要对应修改:
# 旧版判断逻辑 if word in model_w2v: # 新版判断逻辑 if word in model_w2v.wv:
方案2(兼容旧代码,降级gensim版本)
如果不想改动现有代码,可以将gensim降级到3.x的最终稳定版:
pip install gensim==3.8.3
内容的提问来源于stack exchange,提问作者Nishant Kashyap
相关产品推荐
相关产品推荐

