我有一个binary 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
我想计算diff vector
(sport - football) = [some vector] # this as a feature for classification
我如何使用两个向量并获得差异矢量?
您简单地减去两个向量的预言似乎是正确的(来源:https://blog.galvanize.com/add-and-subtract-words-like-vectors-with-with-word2vec-2/(。如果我记得Gensim使用TF,则可以使用TensorFlow减去这些单词向量。
,我也试图将这些差异向量作为文档分类中的功能。对每个单词和每个类之间的差异向量。这是正确的方法吗?
我不知道您的目标,但是我会考虑训练自己的神经网,以对单词/文档进行分类,我会研究新的软件包以帮助您。https://github.com/zalandoresearch/flair/issues/787
矢量本身通过普通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()
内发生的单位差正规化排序,结果可能与第一个方法略有不同。(