如何计算word2vec中的差异向量
Posted
技术标签:
【中文标题】如何计算word2vec中的差异向量【英文标题】:How to calculate difference vector in word2vec 【发布时间】:2019-11-14 09:16:21 【问题描述】:我有一个二进制 word2vec 文件,我正在使用 gensim
来加载它。
虽然 gensim 中有两个词之间的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
【问题讨论】:
【参考方案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()
内部发生的一些不同的单位归一化顺序,结果可能与第一种方法略有不同。)
【讨论】:
以上是关于如何计算word2vec中的差异向量的主要内容,如果未能解决你的问题,请参考以下文章
深度学习-nlp系列:Word2Vec 字&词向量的训练和使用
python gensim使用word2vec词向量处理英文语料