AttributeError: 无法在 <module 'gensim.models.word2vec' 上获取属性

问题描述

我在带有 M1 芯片的 macOS Big Sur 上使用 python 3.9.1。 并且,gensim 是 4.0.1

我尝试使用预训练的 Word2Vec 模型并运行以下代码

from gensim.models.word2vec import Word2Vec

model_path = '/path/to/word2vec.gensim.model'

model = Word2Vec.load(model_path)

但是,我收到以下错误

AttributeError                            Traceback (most recent call last)
<ipython-input-11-4c1c2f93fadb> in <module>
      1 from gensim.models.word2vec import Word2Vec
      2 
----> 3 model = Word2Vec.load(model_path)

~/opt/miniconda3/lib/python3.9/site-packages/gensim/models/word2vec.py in load(cls,rethrow,*args,**kwargs)
   1932                 "Try loading older model using gensim-3.8.3,then re-saving,to restore "
   1933                 "compatibility with current code.")
-> 1934             raise ae
   1935 
   1936     def _load_specials(self,**kwargs):

~/opt/miniconda3/lib/python3.9/site-packages/gensim/models/word2vec.py in load(cls,**kwargs)
   1920         """
   1921         try:
-> 1922             model = super(Word2Vec,cls).load(*args,**kwargs)
   1923             if not isinstance(model,Word2Vec):
   1924                 rethrow = True

~/opt/miniconda3/lib/python3.9/site-packages/gensim/utils.py in load(cls,fname,mmap)
    484         compress,subname = SaveLoad._adapt_by_suffix(fname)
    485 
--> 486         obj = unpickle(fname)
    487         obj._load_specials(fname,mmap,compress,subname)
    488         obj.add_lifecycle_event("loaded",fname=fname)

~/opt/miniconda3/lib/python3.9/site-packages/gensim/utils.py in unpickle(fname)
   1456     """
   1457     with open(fname,'rb') as f:
-> 1458         return _pickle.load(f,encoding='latin1')  # needed because loading from S3 doesn't support readline()
   1459 
   1460 

AttributeError: Can't get attribute 'Vocab' on <module 'gensim.models.word2vec' from '/Users//opt/miniconda3/lib/python3.9/site-packages/gensim/models/word2vec.py'>

这是我得到这个模型的链接 https://github.com/shiroyagicorp/japanese-word2vec-model-builder

提前致谢。

解决方法

问题在于引用的存储库在 incredibly old version of GenSim 上训练了一个模型,这使其与当前版本不兼容。

您可能会检查 lifecycle meta data 是否为您提供有关实际版本的任何指示,然后尝试从那里更新您的模型。 该文档还提供了一些关于 upgrading your older trained models 的提示,但即使是这些提示也相对薄弱,并且主要指向重新训练。同样,即使 migrating from GenSim 3.X to 4.X 也没有引用直接升级方法,但可以让您了解具体要注意哪些参数。

我的建议是尝试使用以前的任何 3.X 版本加载它,看看在那里加载它是否更成功。