Gensim Doc2VecKeyedVectors 调用similar_by_vector() 会导致“需要解包的值太多”

问题描述 投票:0回答:1

我使用 Gensim 4.0 将向量存储在 Doc2VecKeyedVectors 中以执行相似性查找,但出现错误。

这是一些示例代码:

model = <load a Doc2Vec model>
corpus = <load an object which returns key/words pairs>

kv = Doc2VecKeyedVectors(vector_size=50)
for key, words in corpus:
    vector = model.infer_vector(words)
    kv.add_vector(key, vector)

test_words = ['word1', 'word2', ...]
vector = model.infer_vector(test_words)
sims = kv.similar_by_vector(vector, topn=200)

在most_similar()方法中keyedvectors.py的第758行调用similar_by_vector()会抛出“ValueError:太多值无法解包(预期为2)”。

我浏览了源代码,看起来它期望密钥与向量一起传入,根据方法签名,这似乎很奇怪。

关于我做错了什么有什么想法吗?

gensim doc2vec
1个回答
0
投票

我发现了问题所在。我给出的代码示例忽略了这样一个事实:对 infer_vector() 的调用实际上是对远程服务器的调用,该服务器返回浮点数列表,而不是 ndarray。好吧,在调用 simple_by_vector() 之前我从未将其转换回 ndarray,这就是问题的原因。

© www.soinside.com 2019 - 2024. All rights reserved.