Python Word2vec-获取相似度等级

Python Word2vec-获取相似度等级,python,python-3.x,nlp,gensim,word2vec,Python,Python 3.x,Nlp,Gensim,Word2vec,假设我得到了一个word2vec模型(由gensim提供),我想得到单词之间的等级相似性。 例如,假设我有一个单词“desk”,与“desk”最相似的单词是: 表0.64 主席:0.61 第0.59册 铅笔0.52 我想创建一个函数,以便: f(桌子、书)=3 因为书是与书桌最相似的第三个词。 它存在吗?最有效的方法是什么 您可以使用秩(entity1,entity2)获得距离-与索引相同 model.wv.rank(sample_word, most_similar_word) 此处不需要

假设我得到了一个word2vec模型(由gensim提供),我想得到单词之间的等级相似性。 例如,假设我有一个单词“desk”,与“desk”最相似的单词是:

  • 表0.64
  • 主席:0.61
  • 第0.59册
  • 铅笔0.52
  • 我想创建一个函数,以便:

    f(桌子、书)=3 因为书是与书桌最相似的第三个词。 它存在吗?最有效的方法是什么

    您可以使用
    秩(entity1,entity2)
    获得距离-与索引相同

    model.wv.rank(sample_word, most_similar_word)
    

    此处不需要下面给出的单独函数。为了获取信息而保存它

    假设您有一个元组列表中的单词及其向量,由
    model.wv.most\u相似(示例单词)
    返回,如图所示

    [('table', 0.64), ('chair', 0.61), ('book', 0.59), ('pencil', 0.52)]
    
    下面的函数接受样本字和最相似的字作为参数,并返回索引或秩(例如[2]),如果它出现在输出中

    def rank_of_most_similar_word(sample_word, most_similar_word):
        l = model.wv.most_similar(sample_word)
        return [x+1 for x, y in enumerate(l) if y[0] == most_similar_word]
    
    sample_word = 'desk'
    most_similar_word = 'book'
    rank_of_most_similar_word(sample_word, most_similar_word)
    

    注意:按照注释中的建议,在使用
    model.wv.most_-similable()
    时,使用
    topn=x
    获取前x个最相似的单词。

    调用
    most_-similable
    可能必须包括
    topn=len(model.wv.vocab)
    ,否则,列表中将找不到最相似的单词,您将返回一个空列表