You need to enable JavaScript to run this app. Gensim升级后Word2Vec出现int无index及syn0不存在属性报错求助
优惠活动
大模型
产品
解决方案
定价
更多

Gensim升级后Word2Vec出现int无index及syn0不存在属性报错求助

Gensim 4.x Word2Vec两处AttributeError报错解决方案

报错原因排查

第一处报错

  • Gensim 3.x版本中wv.vocab返回字典的值为Vocab对象,可通过.index属性获取对应词的整数索引
  • Gensim 4.x版本替换wv.vocab为wv.key_to_index,该字典的值直接为int类型的索引值,无index属性,你修改后的列表推导式写法是正确的

第二处报错

  • Gensim 4.x版本移除了KeyedVectors对象的syn0属性,原存储词向量的syn0已重命名为vectors

修复后完整可用代码

# 此处为你已经修正的第一部分代码
word_vec_unpack = [(word, index) for word, index in \
                   word_vec.wv.key_to_index.items()]
tokens, indexes = zip(*word_vec_unpack)

# 仅修改syn0为vectors即可解决第二处报错
word_vec_df = pd.DataFrame(word_vec.wv.vectors[indexes, :], index=tokens)

tokenized_array = np.array(tokenized)
model_array = np.array([word_vec_df.loc[doc].mean(axis=0) for doc in tokenized_array])
model_df = pd.DataFrame(model_array)
model_df["label"] = df_final["Classification"]

display(model_df.head())

可选优化

不需要单独遍历key_to_index生成索引列表,可直接用word_vec.wv.vectors获取所有词向量,word_vec.wv.index_to_key获取按索引排序的词列表,代码可简化为:

word_vec_df = pd.DataFrame(word_vec.wv.vectors, index=word_vec.wv.index_to_key)

内容的提问来源于stack exchange,提问作者yinky

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.22 02:15:04