我有一个二进制word2vec文件,正在使用gensim
加载它。
在gensim中有2个词之间可以获取similarity
的功能,而没有计算和返回差矢量的功能。
如何使用两个向量并在那里获得差值向量?
我也在尝试将这些差异向量用作文档分类中的功能。计算每个单词和每个类别之间的差异向量。这是正确的方法吗?
例如,如果类是sport
和politics
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
答案 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()
内部发生的单位标准化的顺序不同,结果可能与第一种方法略有不同。)