属性错误: 'Word2Vec'对象没有属性'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_path=Trueapi.load()调用可能返回KeyedVectors的实例,这是一个向量集。这与完整的Word2Vec模型不同,但仍然支持.most_similar()方法。但是,如果您只是对返回的路径或返回的模型进行print()处理,那么它将不会在model变量中用于稍后的.most_similar()操作。

所以你可能想:

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

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

如果你的model变量实际上包含了一个完整的Word2Vec模型,来自一些未显示的其他代码,那么它也将在其.wv中包含一组向量(对于w)奥德-v载体)属性:

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

最新更新