我知道在我的字典里有一个词“猫”和“猫”。 示例1:
model.wv.most_similar("cat")
这将返回[(0.83“猫”,…),(“野”,0.79…),…]。在结果的顶部没有(“cat”,1.0)。 示例2:
model.wv.most_similar("cats")
这将返回[(0.85“猫”,…),(“野”,0.77…),…]。在结果的顶部没有(“cats”,1.0)。 问:如果是的话,有没有一种方法可以让结果的顶部完全匹配?或与其他方法检查完全匹配…也许我有什么不明白的地方。无论如何,需要帮助。 问题来源StackOverflow 地址:/questions/59465645/fasttext-most-similar-doesnt-return-complete-match
请使用AnnoyIndexer
from gensim.models import Word2Vec, KeyedVectors from gensim.models.word2vec import Text8Corpus
params = { 'alpha': 0.05, 'size': 100, 'window': 5, 'iter': 5, 'min_count': 5, 'sample': 1e-4, 'sg': 1, 'hs': 0, 'negative': 5 } model = Word2Vec(Text8Corpus(text8_path), **params) print(model) from gensim.similarities.index import AnnoyIndexer
annoy_index = AnnoyIndexer(model, 100)
vector = model.wv["cats"]
approximate_neighbors = model.wv.most_similar([vector], topn=11, indexer=annoy_index)
print("Approximate Neighbors") for neighbor in approximate_neighbors: print(neighbor)
输出片段:
Approximate Neighbors
('cats', 1.0)
('wallabies', 0.6341749131679535)
('coyotes', 0.6311245858669281)
('kangaroos', 0.6296325325965881)
('felines', 0.6287126243114471)
('squirrels', 0.6270308494567871)
('dogs', 0.6266725659370422)
('leopards', 0.6130028069019318)
('omnivores', 0.6129975318908691)
('koalas', 0.612080842256546)
('microbats', 0.6070675551891327)
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。