如何将单词嵌入向量组合到一个向量中?

Ami*_*mir 6 nlp information-retrieval google-api-python-client word2vec word-embedding

我完全了解单词嵌入(skip-gram,CBOW)的含义和方法.我知道,谷歌有一个word2vector API,通过获取单词可以生成向量.但我的问题是这样的:我们有一个条款,包括主题,对象,动词......每个单词以前都是由Google API嵌入的,现在是"我们如何将这些向量组合在一起创建一个等于条款?" 例子:条款:V ="狗咬人"在谷歌嵌入后,我们有V1,V2,V3,每个人都映射到狗,咬人,男人.我们知道:V = V1 + V2 + V3我们如何提供V?如果你通过一个真实载体的例子来解释它,我将不胜感激.

Deb*_*sis 5

两种解决方案:

  1. 使用短语的组成词的向量加法 - 这通常效果很好,因为加法是对语义组成的良好估计。

  2. 使用段落向量,它能够将任意长度的单词序列编码为单个向量。


pol*_*m23 5

向量基本上只是数字列表。通过将每个列表中相同位置的数字加在一起来添加向量。这是一个例子:

a = [1, 2, 3]
b = [4, 5, 6]
c = a + b # vector addition
c is [(1+4), (2+5), (3+6)], or [5, 7, 9]
Run Code Online (Sandbox Code Playgroud)

该问题所示,在python中执行此操作的简单方法如下:

map(sum, zip(a, b))
Run Code Online (Sandbox Code Playgroud)

向量加法是线性代数的一部分。如果您不了解向量和矩阵的运算,那么很难理解围绕词向量的数学运算,因此,您可能通常希望学习更多有关线性代数的知识。

通常,将单词向量加在一起是一种近似句子向量的好方法,因为对于任何给定的单词集,都有明显的顺序。但是,您的Dog bites man和的示例Man bites dog显示了添加向量的弱点-结果不会根据单词顺序发生变化,因此即使两个句子的含义非常不同,这两个句子的结果也将相同。

有关获取受单词顺序影响的句子向量的方法,请查看doc2vec或刚刚发布的InferSent