如何在word2vec中计算差异向量

时间:2019-07-03 16:09:41

标签: python gensim word2vec calculation document-classification

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

在gensim中有2个词之间可以获取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

2 个答案:

答案 0 :(得分:0)

  

如何使用两个向量并在那里获得差值向量?

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

  

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

我不知道您的目标,但我会研究训练您自己的神经网络,以对单词/文档进行分类,我会研究新的软件包来帮助您。 https://github.com/zalandoresearch/flair/issues/787

答案 1 :(得分:0)

向量本身支持通过常规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()内部发生的单位标准化的顺序不同,结果可能与第一种方法略有不同。)