【问题标题】: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  

【问题讨论】:

    标签: python-3.x error-handling gensim attribution


    【解决方案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 相关的关键字操作会更快且使用更少的内存,因此应尽可能避免回滚。)

      【讨论】:

        猜你喜欢
        • 2021-10-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-08-09
        • 2023-02-10
        • 2022-06-20
        • 1970-01-01
        • 2022-12-07
        相关资源
        最近更新 更多