AttributeError: 'Word2Vec' object has no attribute 'most_similar' (Word2Vec)

AttributeError: 'Word2Vec' object has no attribute 'most_similar' (Word2Vec)

我正在使用 Word2Vec 并使用经过 wiki 训练的模型来给出最相似的词。我之前 运行 这个并且它有效但现在即使在重新运行整个程序之后它也会给我这个错误。我试图起飞 return_path=True 但我仍然遇到同样的错误

print(api.load('glove-wiki-gigaword-50', return_path=True))
model.most_similar("glass")

#错误:

/Users/me/gensim-data/glove-wiki-gigaword-50/glove-wiki-gigaword-50.gz
---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-153-3bf32168d154> in <module>
      1 print(api.load('glove-wiki-gigaword-50', return_path=True))
----> 2 model.most_similar("glass") 

AttributeError: 'Word2Vec' object has no attribute 'most_similar'

#型号 这是我用的模型

    print(
        '%s (%d records): %s' % (
            model_name,
            model_data.get('num_records', -1),
            model_data['description'][:40] + '...',
        )
    )

编辑:这是我的 gensim 下载和输出

!python -m pip install -U gensim

输出:

要求已满足:gensim in ./opt/anaconda3/lib/python3.8/site-packages (4.0.1)

要求已经满足:numpy>=1.11.3 in ./opt/anaconda3/lib/python3.8/site-packages (from gensim) (1.20.1)

要求已满足:smart-open>=1.8.1 in ./opt/anaconda3/lib/python3.8/site-packages (from gensim) (5.1.0)

要求已经满足:scipy>=0.18.1 in ./opt/anaconda3/lib/python3.8/site-packages (from gensim) (1.6.2)

您可能正在寻找 <MODEL>.wv.most_similar,所以请尝试:

model.wv.most_similar("glass") 

您显示的代码...

print(api.load('glove-wiki-gigaword-50', return_path=True))
model.most_similar("glass")

...不向 model 分配任何内容。 (之前分配了吗?)

并且,使用 return_path=True 意味着 api.load() 将仅 return 数据文件的字符串路径。只有当您打算使用该字符串然后自己将数据加载到模型中时,这才会很有趣。

没有 return_path=Trueapi.load() 调用可能 return 是 KeyedVectors 的一个实例,它是一组向量。这与完整的 Word2Vec 模型不同,但仍支持 .most_similar() 方法。但是,如果您只是 print()ing 那个 returned 路径或 returned 模型,它不会出现在 model 变量中供您以后 .most_similar() 运算.

所以你可能想要:

kv_model = api.load('glove-wiki-gigaword-50')
similars = kv_model.most_similar('glass')
print(similars)

(就个人而言,我不喜欢新下载代码的不透明魔法,& 运行,api.load() 确实如此。我认为 下载自己从已知来源 获取原始数据文件,这样您就可以知道哪些文件到达了您自己机器上的哪些目录。然后使用特定于数据集的加载方法加载该数据,以便您了解哪些库方法适用于哪些类型的文件。)

如果您的 model 变量实际上包含一个完整的 Word2Vec 模型,来自一些未显示的其他代码,那么它还将 包含 一组.wv 中的向量(对于 word-v 向量)属性:

similars = model.wv.most_similar('glass')
print(similars)