无法在<module'gensim.models.keyedvectors'=“”>

时间:2018-10-07 07:28:41

标签: python nlp gensim word2vec

我训练并保存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'>

所以我想这可能是软件包版本问题?

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

谢谢!

2 个答案:

答案 0 :(得分:0)

感谢@oren_jsp answer提问。

fabs(x-y) > EPSILON

它解决了我的问题。

答案 1 :(得分:0)

我的情况是另一个问题。

我的代码如下:

# 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')