我是否正确使用了字嵌入?

时间:2016-03-03 11:18:37

标签: machine-learning nlp word2vec word-embedding

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

我正在为推文构建情绪分类应用程序。将推文分类为 - 消极,中立和积极。 我在theano上使用Keras并使用word-embeddings(google的word2vec或Stanfords GloVe)。

要表示推文文字我做了如下:

  1. 使用预先训练的模型(例如word2vec-twitter模型)[ M ]将单词映射到它们的嵌入。
  2. 使用文字中的字词查询 M 以获取相应的向量。因此,如果推文( T )为“Hello world”且 M 为单词提供 V1 V2 的向量'你好'和'世界'。
  3. 然后可以将推文 T 表示为 V ,为 V1 + V2 (添加向量)或 V1V2 (concatinate矢量)[这是两种不同的策略] [连接意味着并置,所以如果 V1,V2 是d维向量,在我的例子中 T 是二维尺寸矢量]
  4. 然后,推文 T 由向量 V 表示。
  5. 如果我按照上面的说法进行操作,那么我的数据集就是矢量(它们是字向量的总和或串联,取决于我使用的策略)。 我正在训练这个数据集上的FFN,LSTM等深度网络。但我的结果并不是很好。

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

    您的反馈/批评将会给予极大的帮助。

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

说实话,对它们求和没有任何意义,因为在求和时会得到另一个矢量,我认为它不代表“ Hello World”的语义,或者也许可以,但是肯定不能成立一般来说更长的句子

相反,最好按顺序输入它们,因为这样至少可以有意义的方式保留序列,这似乎更适合您的问题。

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