AttributeError:无法在 <module 'gensim.models.word2vec' 上获取属性 'Vocab'
Posted
技术标签:
【中文标题】AttributeError:无法在 <module \'gensim.models.word2vec\' 上获取属性 \'Vocab\'【英文标题】:AttributeError: Can't get attribute 'Vocab' on <module 'gensim.models.word2vec'AttributeError:无法在 <module 'gensim.models.word2vec' 上获取属性 'Vocab' 【发布时间】:2021-04-05 11:41:46 【问题描述】:我的问题类似于this 问题。我尝试了在该问题上发布的两种解决方案,但我仍然收到属性“Vocab”在 gensim.models.word2vec 模块中不可用的错误。
我使用这个属性的部分代码在这里
# if word in model.keys(): #use model.vocab for w2v model and model.keys() for Glove dicts
if word in self.w2v_model.wv.vocab:
vector = self.w2v_model.wv[word]
else:
vector = [0] * 100
【问题讨论】:
【参考方案1】:pip install gensim==3.8.1
工作 - 问题出在特定的 Gensim 软件包版本上。
【讨论】:
【参考方案2】:Gensim 4.0.0 进行了许多修复和性能改进,还更改了一些属性/方法名称,以实现简单性和长期一致性。项目 wiki 页面有一个指南来调整旧代码以匹配新 API:
https://github.com/RaRe-Technologies/gensim/wiki/Migrating-from-Gensim-3.x-to-4
但是,您的代码根本不需要使用.vocab
。词向量集w2v_model.wv
可以回答一个键是否已经是in
本身。因此,以下代码应该在 4.0 之前和 4.0 及更高版本中都可以使用:
if word in self.w2v_model.wv:
vector = self.w2v_model.wv[word]
else:
vector = [0] * 100
(另外,如果您确实选择继续使用较旧的 Gensim 来推迟任何其他代码更改,最好使用 3.8.3
,这是 2020 年 5 月发布的 3.x
系列中的最后一个,而不是old/buggier 3.8.1
,于 2019 年 9 月发布。但在 gensim-4.0.0
及更高版本中,一些与 word2vec 相关的关键字操作会更快且使用更少的内存,因此应尽可能避免回滚。)
【讨论】:
以上是关于AttributeError:无法在 <module 'gensim.models.word2vec' 上获取属性 'Vocab'的主要内容,如果未能解决你的问题,请参考以下文章
AttributeError:“NoneType”对象没有“保存”属性
AttributeError:“str”对象在 pytorch 中没有属性“dim”
Python BeautifulSoup XML,AttributeError:无法设置属性,如何设置为文本属性?
无法写入 excel AttributeError:“工作表”对象没有属性“写入”
Jupiter 页面环境下使用pip无法安装(AttributeError: module 'pip' has no attribute 'main')
无法导入freegames python包:AttributeError:模块'collections'没有属性'Sequence'