词嵌入关系

Word Embedding Relations

我想详细了解我可以对词嵌入向量执行的代数函数。我知道通过余弦相似度我可以获得最相似的词。但是我需要再做一层推理,得到下面的关系:

X1 和 X2 的关系就像 X3 和 X4 的关系。

举个例子,我可以说公主与王子的关系就像女人与男人一样。我有 X1 到 X3,我的问题是我如何有效地计算出 X4 可以是什么。我尝试对向量的绝对差进行余弦运算,但它不起作用。

您可以查看原始 Google 发布的 word2vec 代码如何解决其 word-analogy.c 代码中的类比问题:

https://github.com/tmikolov/word2vec/blob/master/word-analogy.c

如果您更熟悉 Python,您可以通过阅读来自 questions-words.txt 文件(在原始 Google word2vec 包中提供),然后使用 bc 作为正(添加)示例,并使用 a 作为反示例(减去),然后在结果向量附近找到单词:

https://github.com/RaRe-Technologies/gensim/blob/5f630816f8cde46c8408244fb9d3bdf7359ae4c2/gensim/models/keyedvectors.py#L697

使用的 most_similar() 函数的操作,在返回最接近的向量列表之前接受多个 positivenegative 示例,见:

https://github.com/RaRe-Technologies/gensim/blob/5f630816f8cde46c8408244fb9d3bdf7359ae4c2/gensim/models/keyedvectors.py#L290