【发布时间】:2020-04-10 10:42:38
【问题描述】:
我正在研究循环语言模型。为了学习可用于初始化我的语言模型的词嵌入,我使用了 gensim 的 word2vec 模型。 训练后,word2vec 模型为词汇表中的每个单词保存两个向量:单词嵌入(输入/隐藏矩阵的行)和上下文嵌入(隐藏/输出矩阵的列)。
正如this post 中所述,至少有三种常用方法可以组合这两个嵌入向量:
- 对每个词的上下文和词向量求和
- 求和和平均
- 连接上下文和词向量
但是,我找不到有关最佳策略的适当论文或报告。所以我的问题是:
- 是否存在对向量求和、平均或连接的通用解决方案?
- 或者最好的方法是否完全取决于相关任务?如果是,哪种策略最适合词级语言模型?
- 为什么要结合向量呢?为什么不对每个词使用“原始”词嵌入,即包含在输入和隐藏神经元之间的权重矩阵中的词嵌入。
相关(但未回答)的问题:
【问题讨论】:
-
您可能想要添加您正在尝试做的事情,例如构建一个句子或段落级别的向量。 (例如 Gensim 为此提供了 doc2vec)
-
我想用 gensim 生成的词嵌入初始化我的循环语言模型。所以我的目标是为我的词汇表中的每个单词学习嵌入。在训练 word2vec 模型后,我可以使用原始嵌入或进一步修改它们(如帖子中所述)。我想知道哪种策略产生“最佳”词嵌入
-
在您链接的第一篇文章中,问题是关于创建句子向量。即将单词向量组合成一个表示句子(或段落)的向量。这就是关于如何组合向量的问题似乎最相关的地方。这是你想做的吗?
-
不确定我是否理解您的问题。我正在构建一个语言模型,该模型以连续单词为输入,并经过训练以预测句子中的下一个单词。每个输入词都映射到一个嵌入。我使用 gensim 来学习这些词嵌入。我的目标是获得最好的词嵌入。
-
好的,那么听起来您并没有尝试这样做。据我所知,您提到的向量组合用于从多个向量中创建一个向量。不是为了改进词向量本身。但也许其他人知道得更好。为了获得更好的向量,您显然可以查看训练数据、嵌入的大小或 GloVe 等替代方法。还包括句子中单词的类型可能会改善向量(参见 Sense2Vec)。
标签: python word2vec gensim word-embedding language-model