问题描述
使用Gensim软件包,我在要使用的语料库上训练了word2vec模型,如下所示:
$match
使用Numpy,我初始化了一个具有相同尺寸的随机数组:
word2vec = Word2Vec(all_words,min_count = 3,size = 512,sg = 1)
现在,我想从word2vec中找到与我初始化的随机向量最相似的词。
对于word2vec中的单词,您可以运行:
vector = (rand(512)-0.5) *20
输出是包含最相似单词及其对应距离的列表。
我想为我的初始化数组获得类似的输出。
但是,当我跑步时:
word2vec.most_similar('word')
我收到以下错误:
word2vec.most_similar(vector)
我该怎么做才能克服此错误并找到与数组最相似的词?
我已经检查了this和this页面。但是,我不清楚如何用这些建议解决问题。
解决方法
您正在尝试查看浮点数是否类似于字符串,并且不起作用(cannot unpack non-iterable numpy.float64 object
)。
您需要做的是正确生成随机字符串,而不是随机浮点数。完成此操作后,您的代码即可使用。另请参阅说明list of str
(https://radimrehurek.com/gensim/models/keyedvectors.html#gensim.models.keyedvectors.WordEmbeddingsKeyedVectors.most_similar)
Gensim的KeyedVectors
接口.most_similar()
方法可以以原始向量为目标,但是为了使其当前(至少通过gensim-3.8.3
)自变量类型-detection,以确保不会将单个向量误认为一个键列表,您需要将其明确提供为名为positive
参数的项列表的一个成员。
具体地说,这应该可以工作:
similars = word2vec.wv.most_similar(positive=[vector,])