2

核心问题:使用词嵌入表示文本的正确方法?

我正在为推文构建情感分类应用程序。将推文分类为 - 负面、中性和正面。我在 theano 之上使用 Keras 并使用词嵌入(谷歌的 word2vec 或 Stanfords GloVe)来执行此操作。

为了表示推文文本,我做了如下操作:

  1. 使用预训练模型(例如 word2vec-twitter 模型)[ M ] 将单词映射到它们的嵌入。
  2. 用文中的词查询M,得到对应的向量。因此,如果推文 ( T ) 是“Hello world”,并且M为“Hello”和“World”这两个词提供向量V1V2
  3. 然后推文T可以表示为 ( V ) V1 + V2(添加向量)或V1V2(连接向量)[这是 2 种不同的策略] [连接意味着并列,所以如果V1、V2是 d 维向量,在我的示例T是二维向量]
  4. 然后,推文T由向量V表示。

如果我遵循上述方法,那么我的数据集就是向量(取决于我使用的策略,它们是词向量的总和或串联)。我正在这个数据集上训练一个深度网络,比如 FFN、LSTM。但我的结果并不是很好。

这是使用词嵌入来表示文本的正确方法吗?还有什么更好的方法?

您的反馈/批评将大有帮助。

4

2 回答 2

1

我认为,出于您的目的,最好考虑另一种构成这些向量的方法。关于词嵌入的文献包含对这类组合的批评示例(我会在找到正确的参考文献后立即编辑答案)。

我建议您也考虑其他可能的方法,例如:

于 2016-03-03T15:47:44.837 回答
0

老实说,对它们求和没有任何意义,因为在对它们求和时,您会得到另一个向量,我认为它不代表“Hello World”的语义,或者可能确实如此,但对于较长的句子肯定不会成立一般来说

相反,最好将它们作为序列提供,因为它至少以有意义的方式保留序列,这似乎更适合您的问题。

例如 A 讨厌苹果 Vs Apple 讨厌 A 当你将它们作为序列输入 RNN 时,这种差异会被捕获,但它们的总和是相同的。我希望你明白我的意思!

于 2020-07-26T12:26:46.943 回答