Machine learning 我是否正确使用单词嵌入?

Machine learning 我是否正确使用单词嵌入?,machine-learning,nlp,word2vec,word-embedding,Machine Learning,Nlp,Word2vec,Word Embedding,核心问题:使用单词嵌入表示文本的正确方法? 我正在为推特构建情感分类应用程序。将推文分为负面、中性和正面。 我在theano上使用Keras并使用单词嵌入(google的word2vec或Stanfords手套) 为了表示tweet文本,我做了如下工作: 使用预先训练好的模型(如word2vec twitter模型)[M]将单词映射到其嵌入项 使用文本中的单词查询M以获得相应的向量。因此,如果tweet(T)是“Hello world”,而M则为单词“Hello”和“world”提供向量V1和V

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

我正在为推特构建情感分类应用程序。将推文分为负面、中性和正面。 我在theano上使用Keras并使用单词嵌入(google的word2vec或Stanfords手套)

为了表示tweet文本,我做了如下工作:

  • 使用预先训练好的模型(如word2vec twitter模型)[M]将单词映射到其嵌入项
  • 使用文本中的单词查询M以获得相应的向量。因此,如果tweet(T)是“Hello world”,而M则为单词“Hello”和“world”提供向量V1V2
  • tweetT可以用V1+V2(添加向量)或V1V2(合并向量)[这是两种不同的策略][串联意味着并置,因此如果V1,V2是d维向量,在我的示例中T是2d维向量]
  • 然后,tweetT由向量V表示
  • 如果我遵循上面的步骤,那么我的数据集就是向量(根据我使用的策略,向量是单词向量的总和或串联)。 我正在这个数据集上训练一个像FFN、LSTM这样的deepnet。但是我的结果并不是很好

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


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

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

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

    • 使用单个单词向量作为网络的输入(我不知道您的体系结构,但LSTM是循环的,因此它可以处理单词序列)
    • 使用完整的段落嵌入(即)

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

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

    e、 当你们把它们作为序列输入RNN时,这个差异会被捕捉到,但它们的总和是一样的。
    我希望你明白我的意思!

    当你说使用单词向量作为网络输入时,我会先输入V1,然后输入v2,但标签是整个句子。这与连接V1 v2有什么不同?这取决于连接的意思。看看这个:。如果你的意思是用V1代替x(t-1)V2代替x_t,这是正确的方法(并且只有RNN作为LSTM允许)。我所看到的段落嵌入对于短文本段(如tweets)效果不佳。@Lemm-Ras:我所说的连接是指并置,所以如果V1、V2是d维向量,在我的示例中,t是2d维vector@viksit:你能指出一些书面材料吗/分析如果有任何结果导致你提到的结论,你可能会对张和华莱士的论文感兴趣,这篇论文研究了卷积神经网络结合单词嵌入来对句子进行分类。