开发者社区> 问答> 正文

FastText most_similar不返回完全匹配

我知道在我的字典里有一个词“猫”和“猫”。 示例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

展开
收起
kun坤 2019-12-25 16:09:37 782 0
1 条回答
写回答
取消 提交回答
  • 请使用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)
    
    
    2019-12-25 17:05:31
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
Semantic Search 立即下载
Investigation of Transformer based Spelling Correction Model for CTC-based End-to-End Mandarin Speech Recognition 立即下载
Constrained Output Embeddings for End-to-End Code-Switching Speech Recognition with Only Monolingual Data 立即下载