繁体   English   中英

Gensim在半径为r的球中找到向量/单词

[英]Gensim find vectors/words in ball of radius r

我想将单词“ book”(例如)获取其矢量表示形式,将其称为v_1,并找到矢量表示位于v_1半径r的球内的所有单词,即|| v_1-v_i || <= r,对于某些实数数字r

我知道gensim具有most_similar函数,该函数可以声明要返回的顶级向量的数量,但这并不是我所需要的。 我当然可以使用蛮力搜索并得到答案,但这会很慢。

如果使用topn=0调用most_similar() ,它将返回原始未排序的余弦相似度到模型已知的所有其他词。 (这些相似性不会与单词中的元组相似,而只是与index2entity属性中的单词相同的顺序。)

然后,您可以使用诸如numpyargwhere类的功能过滤那些高于您的首选阈值的相似性,并仅返回那些索引/单词。

例如:

target_word = 'apple'
threshold = 0.9
all_sims = wv.most_similar(target_word, topn=0)
satisfactory_indexes = np.argwhere(all_sims > threshold)
satisfactory_words = [wv.index2entity[i] for i in satisfactory_indexes]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM