Python 属性错误:Can';无法在<;模块';gensim.models.word2vec';

Python 属性错误:Can';无法在<;模块';gensim.models.word2vec';,python,nlp,gensim,word2vec,Python,Nlp,Gensim,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

我在带有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, *args, **kwargs):

~/opt/miniconda3/lib/python3.9/site-packages/gensim/models/word2vec.py in load(cls, rethrow, *args, **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'>

AttributeError回溯(最近一次调用)
在里面
1从gensim.models.word2vec导入word2vec
2.
---->3模型=Word2Vec.load(模型路径)
加载中的~/opt/miniconda3/lib/python3.9/site-packages/gensim/models/word2vec.py(cls、rethrow、*args、**kwargs)
1932“尝试使用gensim-3.8.3加载旧型号,然后重新保存以恢复”
1933“与当前代码的兼容性”。)
->1934年
1935
1936 def装载特殊物品(自身、*ARG、**kwargs):
加载中的~/opt/miniconda3/lib/python3.9/site-packages/gensim/models/word2vec.py(cls、rethrow、*args、**kwargs)
1920         """
1921尝试:
->1922型号=超级(Word2Vec,cls)。加载(*args,**kwargs)
1923如果不存在(型号,Word2Vec):
1924 rethrow=真
加载中的~/opt/miniconda3/lib/python3.9/site-packages/gensim/utils.py(cls、fname、mmap)
484压缩,子名称=保存加载。_通过_后缀(fname)进行调整
485
-->486 obj=取消勾选(fname)
487对象加载特殊项(fname、mmap、compress、subname)
488对象添加生命周期事件(“已加载”,fname=fname)
unpickle中的~/opt/miniconda3/lib/python3.9/site-packages/gensim/utils.py(fname)
1456     """
1457,开放式(fname,'rb')为f:
->1458需要返回_pickle.load(f,encoding='latin1')#,因为从S3加载不支持readline()
1459
1460
AttributeError:无法在上获取属性“Vocab”
这是我得到这个模型的链接


提前感谢。

问题是引用的存储库在上训练了一个模型,这使得它与当前版本不兼容

您可以检查是否提供了实际版本的任何指示,然后尝试从那里更新您的模型。 文档中还提供了一些技巧,但即使是那些技巧也相对薄弱,主要指向重新培训。类似地,即使没有引用直接升级方法,也可以让您了解具体需要注意哪些参数


我的建议是尝试将其与以前的3.X版本一起加载,看看是否在那里加载更成功。

问题是引用的存储库在上训练了一个模型,这使得它与当前版本不兼容

您可以检查是否提供了实际版本的任何指示,然后尝试从那里更新您的模型。 文档中还提供了一些技巧,但即使是那些技巧也相对薄弱,主要指向重新培训。类似地,即使没有引用直接升级方法,也可以让您了解具体需要注意哪些参数


我的建议是尝试将其与以前的任何3.X版本一起加载,看看是否在那里加载更成功。

事实上,最新版本的Gensim(2021年的4.0+)只希望确保加载Gensim 3.8.X模型时的向后兼容性。(它可能适用于较旧的版本,在加载某些Gensim-3.8.x模型时可能会出现错误,但这是兼容性目标。)查看该存储库,其自述文件最后一次更新于2017年2月20日,这意味着它的代码(链接的预训练模型)可能基于与版本
0.13.4.1
(2017年1月发布)或
1.0.0RC2
(2017年2月16日发布)。因此,如果加载精确的旧型号很重要,则加载
gensim-3.8.3
,然后如果从中重新保存,加载
gensim-4.0.x
。其他选项包括:(1)联系创建者请求更新(使用最新的gensim和最新的培训数据)(2)训练你自己的模型;或(3)参考最近日文单词向量模型的其他来源。例如,的FastText向量应该可以在当前的Gensim中加载(并且训练的数据不仅仅是维基百科)。那些完整的
.bin
模型应该可以通过Gensim的
FastText
类和
.load\u facebook\u model()
加载,或者可以通过Gensim的
键向量
类和
单独加载
.vec
全文向量。load\u word2vec\u format()
。非常感谢@Denninger和@gojomo!事实上,Gensim的最新版本(2021年的4.0+版本)只希望在加载Gensim 3.8.x模型时确保向后兼容性。(这可能适用于较旧的版本,在加载某些Gensim-3.8.x模型时可能会出现错误,但这是兼容性目标。)查看该存储库,其自述文件最后一次更新于2017年2月20日,这意味着其代码(链接的预训练模型)可能基于Gensim版本,可能与2017年1月发布的版本
0.13.4.1
1.0.0RC2
(2017-02-16发布)一样旧。因此,是的,如果加载精确的旧模型很重要,它将加载
gensim-3.8.3
,然后如果从中重新保存,则加载
gensim-4.0.x
。其他选项包括:(1)联系创建者请求更新(使用最新的gensim和最新的培训数据);(2)培训您自己的模型;或(3)查阅最近日文单词向量模型的其他来源。例如,处的FastText向量应可在当前Gensim中加载(并接受了更多数据的培训,而不仅仅是Wikipedia)。那些完整的
.bin
模型应可由Gensim的
FastText
类和
加载
,或
.vec
全文向量,可与Gensim的
KeyedVectors
类一起加载。加载word2vec\u format()。非常感谢@Denninger和@gojomo!