14

我想知道 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'])               

结果:[('女王',0.50882536),...]

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

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

4

1 回答 1

17

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

仅对于 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)
于 2015-07-30T10:11:30.863 回答