word2vec - 什么是最好的?添加,连接或平均单词向量?

问题描述 投票:6回答:3

我正在研究一种复发语言模型。要学习可用于初始化我的语言模型的单词嵌入,我使用的是gensim的word2vec模型。训练之后,word2vec模型为词汇表中的每个单词保存两个向量:单词嵌入(输入/隐藏矩阵的行)和上下文嵌入(隐藏/输出矩阵的列)。

this post所述,至少有三种常用方法可以将这两种嵌入向量组合在一起:

  1. 总结每个单词的上下文和单词向量
  2. 求和和求平均值
  3. 连接上下文和单词向量

但是,我找不到关于最佳策略的适当论文或报告。所以我的问题是:

  1. 是否对向量求和,平均或连接有共同的解决方案吗?
  2. 或者最好的方法完全取决于相关任务?如果是这样,什么策略最适合单词级语言模型?
  3. 为什么要结合载体?为什么不对每个单词使用“原始”单词嵌入,即包含在输入和隐藏神经元之间的权重矩阵中的单词嵌入。

相关(但未答复)的问题:

python word2vec gensim word-embedding language-model
3个回答
3
投票

我在斯坦福大学的讲座“自然语言处理的深度学习”(第2讲,2016年3月)中找到了答案。它是可用的here。在第46分钟,理查德·索彻表示,通常的方法是平均两个单词向量。


0
投票

您应该至少阅读一次this研究工作,以获得使用不同代数运算符组合单词嵌入的整体想法。这是我的研究。

在本文中,您还可以看到组合单词向量的其他方法。

简而言之,L1归一化的平均单词向量和单词的总和是良好的表示。


-1
投票

我以为我试图根据评论回答。

您链接的问题是:“WordVectors如何连接单词向量以形成句子向量”

单词向量可以单独进行比较。但通常人们希望将句子,段落或文档放在上下文中 - 即一组单词。然后问题是如何将它们组合到单个向量中(gensim为该用例提供了doc2vec)。

这似乎不适用于您的情况,我只会使用给定的单词向量。您可以调整嵌入大小,训练数据和其他算法等参数。您甚至可以组合来自不同算法的矢量来创建一种“整体矢量”(例如,带有GloVe的word2vec)。但它可能效率不高。

有时在语言中,相同的单词具有不同的含义,具体取决于句子中单词的类型或单词的组合。例如“游戏”与“公平游戏”有着不同的含义。 Sense2Vec提供了为这些复合词生成单词向量的建议:https://explosion.ai/blog/sense2vec-with-spacy(当然,在这种情况下,你已经需要了解句子结构的东西,比如SpaCy)

© www.soinside.com 2019 - 2024. All rights reserved.