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'