我不确定我应该如何使用 gensim 的 Word2Vec 的 most_similar 方法。假设您想测试经过验证的例子:男人代表国王,女人代表 X;找到 X。我认为这就是你可以用这种方法做的事情,但从我得到的结果来看,我认为这不是真的。文档中写道:找到前 N 个最相似的词。正面词对相似度有正面贡献,负面词对相似度有负面影响。该方法计算给定词的投影权重向量的简单平均值与模型中每个词的向量之间的余弦相似度。该方法对应于原始 word2vec 实现中的词类比和距离脚本。我假设,然后,most_similar取正例和反例,并尝试在向量空间中找到尽可能接近正向量并尽可能远离负向量的点。那是对的吗?另外,有没有一种方法可以让我们将两点之间的关系映射到另一个点并得到结果(参见 man-king woman-X 示例)?
1 回答

茅侃侃
TA贡献1842条经验 获得超21个赞
您可以准确查看most_similar()
其源代码中的内容:
https://github.com/RaRe-Technologies/gensim/blob/develop/gensim/models/keyedvectors.py#L485
它不是“在向量空间中找到尽可能接近正向量并尽可能远离负向量的点”。相反,如原始 word2vec 论文中所述,它执行向量算术:添加正向量,减去负向量,然后从该结果位置,列出最接近该角度的已知向量。
这足以man : king :: woman :: ?
通过如下调用来解决-style 类比:
sims = wordvecs.most_similar(positive=['king', 'woman'], negative=['man'])
(您可以将其视为,“从'king'-vector 开始,添加'woman'-vector,减去'man'-vector,从您结束的位置开始,报告最接近该点的排名词向量(同时省略3 个查询向量中的任何一个)。”)
添加回答
举报
0/150
提交
取消