语义相似度



我想知道gensim word2vec的两个相似性度量:mostrongimilar()和mostrongimilar_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'])               

Result: [('queen', 0.50882536),…]

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

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

从Levy和Goldberg的论文中,如果你试图找到类比(或组合/比较两个以上的词向量),第一种方法(3CosAdd或eq.3的论文)比第二种方法(3CosMul或eq.4的论文)更容易被1个比较所支配。

对于两个词向量之间的语义相似性,此方法不适用。

示例,使用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)

最新更新