我正在使用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=True
的api.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)