【问题标题】:Am I using word-embeddings correctly?我是否正确使用了词嵌入?
【发布时间】:2016-06-16 16:39:27
【问题描述】:

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

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

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

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

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

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

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

【问题讨论】:

  • 您可能对 Zhang 和 Wallace 的 this 论文感兴趣,该论文研究了使用卷积神经网络与词嵌入相结合来对句子进行分类。

标签: machine-learning nlp word2vec word-embedding


【解决方案1】:

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

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

【讨论】:

  • 当您说使用单个词向量作为网络的输入时,我先输入 V1,然后输入 v2,但标签是针对整个句子的。这与连接 V1 V2 有什么不同?
  • 这取决于您对连接的含义。看看这个:wildml.com/2015/09/…。如果您的意思是使用 V1 代替 x_(t-1) 和 V2 代替 x_t,这是正确的做法(并且只有 RNN 作为 LSTM 允许这样做)。
  • 我所见的段落嵌入不适用于推文等短文本。
  • @Lemm Ras: 串联是指并列,所以如果 V1, V2 是 d 维向量,在我的示例中 T 是 2d 维向量
  • @viksit:如果有任何文章得出你提到的结论,你能否指出一些文章/分析
【解决方案2】:

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

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

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

【讨论】:

    猜你喜欢
    • 2011-07-14
    • 2014-07-19
    • 2017-06-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-03
    • 2010-10-17
    相关资源
    最近更新 更多