词嵌入与情绪识别

1. 引入

情绪识别是NLP中的比较重要的通用任务。
对于情绪识别来说,通常标注的数据量都会比较小,一般语料中也就一万到十万个单词。
这样小的语料,对于训练NLP模型来说,是一个难点。

下面给出两种方法,借助于词嵌入,我们都能在比较小的语料中,得到不错的模型。

2. 方法一:平均词向量

具体步骤:

  1. 获取各个单词的词向量

直接用句子中,每个单词的one-hot编码,乘以词嵌入矩阵,得到每个单词的词向量

  1. 将句子中各个单词词向量相加后取平均,得到一个新向量,用于表示该句子

  2. 用这个新的词向量,送到softmax,输出预测值

这个方法的优点

  • 适用于任何长度的句子,因为最终表示该句子的词向量,都是各个词平均后的向量,向量维度与句子长度无关

这个方法的缺点

  • 它不会考虑语序,比如下面的句子
    • completely lacking in good taste, good service, and good ambience.

这个句子本身是负面情绪,但应为句子中有3个good,平均后,词向量大概率表示正面情绪。这样的预测结果就不准。

如何解决这个问题呢?

3. 方法二:RNN

我们用RNN来保证模型能考虑到语序。

具体步骤:

  1. 获取各个单词的词向量

直接用句子中,每个单词的one-hot编码,乘以词嵌入矩阵,得到每个单词的词向量

  1. 将句子中各个单词词向量,直接送给RNN

  2. RNN使用多对一的结构,最后一位输出情绪值,这是many-to-one的RNN结构[2]

RNN结构能考虑到语序,解决了方法1的缺点。

4. 情绪数据集

常见的情绪识别数据集,是斯坦福开源的IMDB评论情绪数据集,可以在参考3中下载到。
这个数据集提供了25000个训练集样本,25000个测试集样本。各个集合中,各有12500句话属于正面情绪,另外12500句话属于负面情绪。

参考4中也给出了一个非常小的IMDB简化数据集,其中有500个正例样本,500个负例样本,用于做简单的测试。

5. 总结

情绪识别最大的难点,是通常情况下,训练集数据都比较小。
有了词嵌入,只需要中等规模的数据集,你也能训练出一个情绪识别模型。
这也是词嵌入对情绪识别的贡献。

参考

    1. AndrewNg的《序列模型》教程
    1. RNN的5种典型结构. https://blog.csdn.net/ybdesire/article/details/104095916
    1. https://ai.stanford.edu/~amaas/data/sentiment/
    1. https://github.com/arafato/rt-analytics/blob/master/ml/imdb_labelled.csv
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值