如何在gensim中找到最相似的数组

How to find most similar to an array in gensim

我知道 most_similar 方法在输入先前添加的字符串时有效,但是您如何 反向 搜索某个单词的 numpy 数组?

modelw2v = KeyedVectors.load_word2vec_format('GoogleNews-vectors-negative300.bin.gz',binary=True)
differenceArr = modelw2v["King"] - modelw2v["Queen"]


# This line does not work
modelw2v.most_similar(differenceArr) 

most_similar() 方法可以将向量作为搜索的起点,但您应该明确地将它们指定为提供给该方法的 positive 参数的列表的一个成员,以便它的逻辑处理更简单的来源(如字符串或字符串列表)不会混淆。

具体来说,这应该适用于您的其他代码:

model23v.most_similar(positive=[differenceArr,])

更一般地说,您可以向此方法的 positivenegative 参数提供向量列表(或用于查找向量的词键),该方法将组合它们(根据您可以在源代码中看到的确切逻辑)。因此,例如著名的 word2vec 示例...

wv('king') - wv('man') + wv('woman') = ?

...可以使用 most_similar() 方法来实现,而无需进行您自己的其他向量运算:

sims = modelw2v.most_similar(positive=['king', 'woman'], negative=['man'])