3

如果我有一句话,例如:“离开这里”,我想使用 word2vec 嵌入。代表它..我发现了三种不同的方法来做到这一点:

1- 对于每个单词,我们计算其嵌入向量的 AVG,因此每个单词都替换为单个值。

2- 与 1 相同,但使用嵌入向量值的标准差。

3-或通过添加嵌入。矢量原样。因此,如果我在上面的示例中使用 300 长度的嵌入向量 ..,我将在最后一个(300 * 4 个单词)长度为 1200 的向量作为表示句子的最终向量。

其中哪一个最合适..?具体来说,对于句子相似性应用..

4

1 回答 1

2

您描述选项(1)的方式听起来像是每个单词都变成了一个数字。那是行不通的。

经常使用的简单方法是将句子中单词的所有词向量平均在一起 - 所以使用 300 维词向量,你仍然会得到一个 300 维的句子平均向量。也许这就是您的选项(1)的意思。

(有时,在此操作之前,所有向量都被归一化为单位长度,但有时不是——因为非归一化的向量长度有时可以指示单词含义的强度。有时,单词向量由其他一些基于频率的指标加权它们的相对重要性,例如 TF/IDF。)

我从未见过您使用过您的选项(2),也不太明白您的意思或它可能如何工作。

您的选项 (3) 可以更好地描述为“连接词向量”。它根据句子中单词的数量给出不同大小的向量。单词位置的细微差异,例如比较“离开这里”和“离开这里”,会导致非常不同的向量,通常比较向量的方法(如余弦相似度)不会检测为“接近”一点也不。所以它没有意义,我还没有看到它使用过。

所以,只有你的选项(1),正确地实现到(加权)平均词向量,是句子相似性的一个很好的基线。

但是,它仍然相当基本,还有许多其他方法可以使用文本向量来比较句子。这里仅仅是少数:

与 word2vec 本身密切相关的一种算法称为“段落向量”,通常称为Doc2Vec. 它使用非常类似于 word2vec 的过程来训练全范围文本的向量(无论它们是短语、句子、段落还是文档),其工作方式类似于在全文上的“浮动文档 ID 词”。有时它比仅仅平均词向量提供了一个好处,并且在某些模式下可以产生也可以相互比较的文档向量和词向量。

如果您的兴趣不仅仅是成对的句子相似性,而是某种下游分类任务,那么 Facebook 对 word2vec 的“FastText”改进有一种分类模式,在这种模式下,词向量不仅可以预测相邻词,而且可以很好地预测在预测已知文本类时,只需将它们简单地相加/平均。(由此类分类向量构造的文本向量也可能擅长相似性,这取决于训练类捕捉文本之间显着对比的能力。)

仅使用词向量计算成对相似度的另一种方法是“Word Mover 的距离”。它不是将文本的所有词向量平均为一个文本向量,而是将每个词向量视为一种“意义堆”。与另一个句子相比,它计算了将所有“堆”从一个句子移动到另一个句子的配置的最小路由工作(沿着许多潜在的单词到单词路径的距离)。计算起来可能很昂贵,但通常比简单的词向量平均实现的简单单向量摘要更好地表示句子对比。

于 2018-04-04T22:22:07.163 回答