【问题标题】:How to calculate difference vector in word2vec如何计算word2vec中的差异向量
【发布时间】:2019-11-14 09:16:21
【问题描述】:

我有一个二进制 word2vec 文件,我正在使用 gensim 来加载它。

虽然 gensim 中有两个词之间的similarity 函数,但没有计算和返回差向量的函数。

如何使用两个向量并获得差异向量?

而且我也在尝试将这些差异向量用作文档分类中的特征。计算每个单词和每个类之间的差异向量。这是正确的方法吗?

例如,如果类是 sportpolitics

sport = [0.4,0.456,45,...] #wordvector of class
politics = [0.23,0.56...] #wordvector of class

我的话是football

football = [0.2,0.6,0.45,...] #wordvector of football

我要计算差异向量

(sport - football) = [some vector] # this as a feature for classification

【问题讨论】:

    标签: python gensim word2vec calculation document-classification


    【解决方案1】:

    如何使用两个向量并获得差异向量?

    您对简单地减去两个向量的预感似乎是正确的(来源:https://blog.galvanize.com/add-and-subtract-words-like-vectors-with-word2vec-2/)。如果我没记错的话,您可以使用 tensorflow 减去这些词向量 gensim 使用 tf.

    而且我也在尝试将这些差异向量用作文档分类中的特征。计算每个单词和每个类之间的差异向量。这是正确的方法吗?

    我不知道你的目标,但我会考虑训练你自己的神经网络,对单词/文档进行分类,我会看看新的包天赋来帮助你。 https://github.com/zalandoresearch/flair/issues/787

    【讨论】:

      【解决方案2】:

      向量本身支持通过普通的 Python - 运算符进行减法运算,因此如果您加载的词向量在变量 wv 中,那么它真的很简单:

      diff_vector = wv['sport'] - wv['football']
      

      然后您可以尝试通过以下方式找到最接近新向量的其他向量:

      wv.most_similar(positive=[diff_vector])
      

      因为类比求解的常见情况需要正负向量的混合,most_similar() 方法甚至可以让您提供负例,因此您也可以在单个中完成差异和最相似步骤:

      wv.most_similar(positive=['sport'], negative=['football')
      

      (由于most_similar() 内部发生的一些不同的单位归一化顺序,结果可能与第一种方法略有不同。)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-05-12
        • 2018-07-04
        • 2014-08-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多