【问题标题】:How to find most similar to an array in gensim如何在gensim中找到最相似的数组
【发布时间】:2020-07-10 05:29:48
【问题描述】:

我知道most_similar 方法在输入之前添加的字符串时有效,但是您如何reverse 搜索某个单词的 numpy 数组?

modelw2v = KeyedVectors.load_word2vec_format('GoogleNews-vectors-negative300.bin.gz',binary=True)
differenceArr = modelw2v["King"] - modelw2v["Queen"]


# This line does not work
modelw2v.most_similar(differenceArr) 

【问题讨论】:

    标签: python-3.x nlp gensim


    【解决方案1】:

    most_similar() 方法可以将向量作为搜索的起点,但您应该明确地将它们指定为提供给该方法的 positive 参数的列表的一个成员,以便其处理更简单起点的逻辑(例如字符串或字符串列表)不会混淆。

    具体来说,这应该适用于您的其他代码:

    model23v.most_similar(positive=[differenceArr,])
    

    更一般地,您可以向此方法的 positivenegative 参数提供向量列表(或用于查找向量的词键),并且该方法会将它们组合起来(根据您的确切逻辑可以在源代码中看到)。因此,例如著名的 word2vec 示例...

    wv('king') - wv('man') + wv('woman') = ?
    

    ...可以使用most_similar() 方法实现,而无需执行您自己的其他向量算术:

    sims = modelw2v.most_similar(positive=['king', 'woman'], negative=['man'])
    

    【讨论】:

      猜你喜欢
      • 2020-08-14
      • 2021-12-22
      • 2016-08-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-01
      • 2018-03-15
      • 2018-08-14
      相关资源
      最近更新 更多