如何在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,])
更一般地说,您可以向此方法的 positive
和 negative
参数提供向量列表(或用于查找向量的词键),该方法将组合它们(根据您可以在源代码中看到的确切逻辑)。因此,例如著名的 word2vec 示例...
wv('king') - wv('man') + wv('woman') = ?
...可以使用 most_similar()
方法来实现,而无需进行您自己的其他向量运算:
sims = modelw2v.most_similar(positive=['king', 'woman'], negative=['man'])
我知道 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,])
更一般地说,您可以向此方法的 positive
和 negative
参数提供向量列表(或用于查找向量的词键),该方法将组合它们(根据您可以在源代码中看到的确切逻辑)。因此,例如著名的 word2vec 示例...
wv('king') - wv('man') + wv('woman') = ?
...可以使用 most_similar()
方法来实现,而无需进行您自己的其他向量运算:
sims = modelw2v.most_similar(positive=['king', 'woman'], negative=['man'])