代码之家  ›  专栏  ›  技术社区  ›  Bram Vanroy

了解gensim word2vec的最相似之处

  •  0
  • Bram Vanroy  · 技术社区  · 6 年前

    我不确定该如何使用Gensim的word2vec中最相似的方法。假设您想测试以下经过考验的真实例子: 男人站在国王面前,女人站在X面前。 找到x。我认为这就是你可以用这个方法做的,但从我得到的结果来看,我不认为这是真的。

    The documentation 阅读:

    找到最相似的前n个单词。积极的词有助于 相似度为正,否定词为负。

    该方法计算了 给定词的投影权重向量和每个词的向量 模型中的单词。该方法对应于单词类比和 原始word2vec实现中的距离脚本。

    那么,我想 most_similar 取正例和负例,试图在向量空间中找到尽可能靠近正矢量和尽可能远离负矢量的点。对吗?

    此外,是否有一种方法可以让我们将两个点之间的关系映射到另一个点并得到结果(参见“男人王女人X”示例)?

    1 回复  |  直到 6 年前
        1
  •  0
  •   gojomo    6 年前

    你可以确切地看到 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'])
    

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