【问题标题】:Gensim Word2vec : Semantic SimilarityGensim Word2vec:语义相似度
【发布时间】:2015-10-10 01:43:08
【问题描述】:

我想知道 gensim word2vec 的两个相似度度量之间的区别:most_similar() 和 most_similar_cosmul()。我知道第一个使用词向量的余弦相似度,而另一个使用 Omer Levy 和 Yoav Goldberg 提出的乘法组合目标。我想知道它如何影响结果?哪一个给出语义相似性?等等。 例如:

model = Word2Vec(sentences, size=100, window=5, min_count=5, workers=4)
model.most_similar(positive=['woman', 'king'], negative=['man'])               

结果:[('queen', 0.50882536), ...]

model.most_similar_cosmul(positive=['baghdad', 'england'], negative=['london'])

结果:[(u'iraq', 0.8488819003105164), ...]

【问题讨论】:

    标签: python semantics similarity gensim word2vec


    【解决方案1】:

    从 Levy 和 Goldberg 的论文中,如果您试图找到类比(或组合/比较超过 2 个词向量),第一种方法(3CosAdd 或论文的 eq.3)更与第二种方法(3CosMul 或纸的 eq.4)相比,容易受到 1 次比较的支配。

    仅针对2个词向量之间的语义相似度,此方法不适用。

    例如,使用Google News Vectors -

    model.similarity('Mosul','England')
    0.10051745730111421
    
    model.similarity('Iraq','England')
    0.14772211471143404
    
    model.similarity('Mosul','Baghdad')
    0.83855779792754492
    
    model.similarity('Iraq','Baghdad')
    0.67975755642668911
    

    现在伊拉克比摩苏尔更靠近英格兰(两者都是国家),但相似度值很小 ~ 0.1。

    另一方面,摩苏尔与巴格达的相似度高于伊拉克(地理/文化方面),相似度值更高,约为 0.7

    现在,打个比方(英格兰 - 伦敦 + 巴格达 = X)-

    3CosAdd 是一个线性和,允许一个大的相似项支配表达式。它忽略了每个术语反映相似性的不同方面, 并且不同的方面有不同的尺度。

    3CosMul,另一方面 - 放大小数量之间的差异并减少大数量之间的差异。

    model.most_similar(positive=['Baghdad', 'England'], negative=['London'])
    (u'Mosul', 0.5630180835723877)
    (u'Iraq', 0.5184929370880127)
    
    model.most_similar_cosmul(positive=['Baghdad', 'England'], negative=['London'])
    (u'Mosul', 0.8537653088569641)
    (u'Iraq', 0.8507866263389587)
    

    【讨论】:

      猜你喜欢
      • 2019-07-02
      • 2018-08-06
      • 1970-01-01
      • 2017-07-11
      • 2023-03-19
      • 2018-08-30
      • 2018-08-29
      • 1970-01-01
      • 2021-12-22
      相关资源
      最近更新 更多