[英]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
属性中的单词相同的顺序。)
然后,您可以使用诸如numpy
的argwhere
类的功能过滤那些高于您的首选阈值的相似性,并仅返回那些索引/单词。
例如:
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.