【问题标题】:Can't get attribute 'Word2VecKeyedVectors' on <module 'gensim.models.keyedvectors' >无法在 <module 'gensim.models.keyedvectors' > 上获取属性 'Word2VecKeyedVectors'
【发布时间】:2018-10-07 07:28:40
【问题描述】:

我训练并保存了一个 gensim word2vec 模型:

W2V_MODEL_FN = r"C:\Users\models\w2v.model"

model = Word2Vec(X, size=150, window=3, min_count=2, workers=10)
model.train(X, total_examples=len(X), epochs=50)
model.save(W2V_MODEL_FN)

然后:

w2v_model = Word2Vec.load(W2V_MODEL_FN)

在一个环境中它可以完美运行,但在另一个环境中我得到了错误:

{AttributeError}无法获取模块上的属性“Word2VecKeyedVectors” 'gensim.models.keyedvectors' 来自 'C:\Users\Anaconda3_New\envs\ISP_env\lib\site-packages\gensim\models\keyedvectors.py'>

所以我猜可能是包版本问题?

但我不知道它是什么。 有什么想法吗?

谢谢!

【问题讨论】:

  • 升级到gensim 3.4解决
  • 你可以把它写成答案。

标签: python nlp gensim word2vec


【解决方案1】:

感谢@oren_jsp answer 提出问题。

pip3 install --upgrade gensim --user

它解决了我的问题。

【讨论】:

    【解决方案2】:

    我的情况是另一个问题。

    我的代码如下所示:

    # main.py
    from enum import IntEnum
    from gensim.models import Word2Vec
    
    
    class GensimTrainingAlgo(IntEnum):
        SG = 1
        CBOW = 0
    
    
    model = Word2Vec(X, size=150, window=3, min_count=2, workers=10, sg=GensimTrainingAlgo.SG)
    model.save('/tmp/path')
    

    原来我是在掰泡菜。如果您希望能够保存/加载一个函数,它必须是可腌制的。这意味着它必须是named and importable

    我通过确保在 main.py 文件之外定义枚举来修复它。

    # utils.py
    from enum import IntEnum
    
    
    class GensimTrainingAlgo(IntEnum):
        SG = 1
        CBOW = 0
    
    # main.py
    from gensim.models import Word2Vec
    
    model = Word2Vec(X, size=150, window=3, min_count=2, workers=10, sg=GensimTrainingAlgo.SG)
    model.save('/tmp/path')
    

    【讨论】:

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