bee*_*502 11 python similarity gensim word2vec semantics
我想知道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'])
Run Code Online (Sandbox Code Playgroud)
结果:[('queen',0.50882536),...]
model.most_similar_cosmul(positive=['baghdad', 'england'], negative=['london'])
Run Code Online (Sandbox Code Playgroud)
结果:[(u'iraq',0.8488819003105164),...]
kam*_*pta 13
从Levy和Goldberg的论文中,如果你试图找到类比(或者组合/比较超过2个单词向量),第一种方法(纸张的 3或3或3)可能更容易受到1对比的支配.第二种方法(3CosMul或eq.4的论文).
仅针对2个单词向量之间的语义相似性,此方法不适用.
例如,使用谷歌新闻矢量 -
model.similarity('Mosul','England')
0.10051745730111421
model.similarity('Iraq','England')
0.14772211471143404
model.similarity('Mosul','Baghdad')
0.83855779792754492
model.similarity('Iraq','Baghdad')
0.67975755642668911
Run Code Online (Sandbox Code Playgroud)
现在伊拉克比摩苏尔更接近英格兰(两国都是国家),但相似值小〜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)
Run Code Online (Sandbox Code Playgroud)