了解gensim word2vec的most_like

时间:2019-02-07 18:48:10

标签: python python-3.x nlp gensim word2vec

我不确定应该如何使用gensim的Word2Vec的most_like方法。假设您要测试以下经验证的示例:男人代表国王,女人代表X ;找到X。我认为这是您可以使用此方法执行的操作,但是从结果中得知,我认为那不是真的。

The documentation读为:

  

找到前N个最相似的词。积极的话语贡献   积极地趋向相似性,否定性词消极。

     

此方法计算出一个简单均值之间的余弦相似度   给定单词的投影权重向量以及每个单词的向量   模型中的单词。该方法对应于词类比和   word2vec原始实现中的距离脚本。

然后,我假设most_similar采取了正例和负例,并试图在向量空间中找到尽可能靠近正向量且离负向量尽可能远的点。那些。正确吗?

另外,有没有一种方法可以让我们将两个点之间的关系映射到另一个点并获得结果(请参见man-king woman-X示例)?

1 个答案:

答案 0 :(得分:0)

您可以确切地查看most_similar()在其源代码中的作用:

https://github.com/RaRe-Technologies/gensim/blob/develop/gensim/models/keyedvectors.py#L485

“在向量空间中找到的点离正向量越近越好”。相反,如原始word2vec论文中所述,它执行矢量算术:将正矢量相加,然后将负矢量相减,然后从该结果位置列出最接近该角度的已知矢量。

通过像这样的调用就足以解决man : king :: woman :: ?风格的类比:

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

(您可以将其视为“从'国王'矢量开始,添加'女人'矢量,减去'男人'矢量,从结束处开始,报告最接近该点的排名单词矢量。 “)