核心问题:使用单词嵌入表示文本的正确方法?
我正在构建推文的情感分类应用程序。将推文分为负面、中立和正面。 我在 theano 之上使用 Keras 并使用单词嵌入(谷歌的 word2vec 或斯坦福 GloVe)来完成此操作。
为了表示推文文本,我做了如下操作:
- 使用预先训练的模型(例如 word2vec-twitter 模型)[M] 将单词映射到其嵌入。
- 使用文本中的单词查询M,得到对应的向量。因此,如果推文 (T) 是“Hello world”,并且 M 给出单词的向量 V1 和 V2 “你好”和“世界”。
- 推文 T 可以表示 (V) 为 V1+V2(添加向量)或 V1V2 (连接向量)[这是 2 种不同的策略] [连接意味着并置,因此如果 V1, V2 是 d 维向量,在我的示例中 T 是二维向量]
- 然后,推文 T 由向量 V 表示。
如果我遵循上述步骤,那么我的数据集只不过是向量(它们是词向量的总和或串联,具体取决于我使用的策略)。 我正在这个数据集上训练深度网络,例如 FFN、LSTM。但我的结果并不理想。
这是使用单词嵌入来表示文本的正确方法吗?还有哪些更好的方法?
您的反馈/批评将会有巨大的帮助。
最佳答案
我认为,为了您的目的,最好考虑另一种组合这些向量的方法。关于词嵌入的文献包含对此类组合的批评示例(一旦找到正确的引用文献,我将立即编辑答案)。
我建议您还考虑其他可能的方法,例如:
- 使用单个单词向量作为网络的输入(我不知道您的架构,但 LSTM 是循环的,因此它可以处理单词序列)。
- 使用完整段落嵌入(即 https://cs.stanford.edu/~quocle/paragraph_vector.pdf )
关于machine-learning - 我是否正确使用了词嵌入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35770737/