导读
本次分享的是关于文本分析中的情感预测分析和主题分析的一个小科研项目,数据爬取自Twitter,主要内容分为3部分:
1.情感预测机器学习模型选择及建立
2.情感预测深度学习模型LSTM的介绍和建立
3.主题分析模型简介
01
# 情感预测机器学习模型选择及建立
情感预测分析主要内容是爬取Twitter用户在election2016这个话题下对Trump和Hillary的讨论,通过人工标注一部分推文的情感标签(即对某位候选人持支持、中立或不支持态度),并将其作为训练数据,用不同算法模型来学习并预测其余未标注推文数据集的标签。
最终情感预测的结果可以用来展示和预测不同地区的选民对某位候选人的情感偏向,也可以用来在未来大选期间通过选民推文内容预测某位候选人情感偏向。
1.数据说明及处理
首先通过一些文本处理清洗操作,包括选取重要的数据项、去掉不必要的标点符号、数字和停词以及词根处理等,将每条Twitter数据处理为这条Twitter中对情感预测重要的词汇集合。下图为一部分数据处理操作。
数据整理结束后,用词云可视化展示了在这两个数据集中词频较高的词汇。
2.机器学习模型的选择和建立
算法模型训练前先选择TDIDF算法进行了词向量的转化,机器学习模型选择了3个基于不同算法逻辑的模型,分别是逻辑回归、朴素贝叶斯和随机森林。下面展示的分别是部分词向量处理过程和模型训练过程。
下图展示了3个机器学习模型训练的结果。
逻辑回归相较于其他两个模型表现稍好一点,两个数据集的平均准确率在69%左右。
02
情感预测深度学习模型LSTM的介绍和建立
1.LSTM模型的简介
长短期记忆网络(LSTM,Long Short-Term Memory)是基于循环神经网络(Recurrent Neural Network, RNN)的。下图展示的是RNN的网络结构。
简单的理解RNN就是每上一层的隐藏层的信息会传到下一层的隐藏层中,从而达到了文本分析中前后语境影响的效果。
LSTM模型基于RNN模型进行了进一步的改良,主要是为了解决RNN的梯度消失问题。下图简单展示了LSTM的结构。
LSTM在RNN的基础上加了3个门,分别是输入门、遗忘门和输出门。也就是增加了3组不同的参数和sigmoid函数。
2.LSTM模型的建立
下图展示的是项目中建立的深度学习网络结构。
在添加LSTM网络层之前,先进行了word2vec embedding的训练,将每个词转化为32维的词向量,word2vec embedding的训练可以将词性、词义和前后语境等信息训练在词向量中,这样可以提高我们之后网络训练的效率,也可以减少训练所需数据量。
LSTM网络选择了包含120个神经元的1层隐藏层结构,之后连接10个神经元的全连接神经网络结构,激活函数选择的relu函数。下图展示的是relu函数图。
Relu函数做为激活函数比sigmoid函数有几点优势,一方面relu函数可以在一定程度上缓解梯度消失问题;另一方面函数求导计算更为简单,也就使网络训练过程中反向传播计算效率提高;并且relu函数在一些情况下可以起到dropout的效果,保证网络稀疏性,缓解过拟合问题。
最后一层网络结构选择的是3个神经元的全连接神经网络结构,激活函数用的softmax。
3.LSTM模型的结果和优化
下图展示的是一个数据集LSTM模型训练的结果。
通过结果展示可以看到随着训练epoch的增加,损失(模型预测值和实际值之间的差异)越来越小,准确率越来越高。最终训练集的平均准确率达到90.7%,测试集的平均准确率达到74.9%。可以看到LSTM的结果还是明显优于之前的机器学习模型,但是可能出现了一点过拟合的问题,训练集的结果明显好于测试集。下图展示的是随着训练epoch的增加,训练集和验证集准确率的走势。
从图中可以看到当训练epoch数到18、19左右时,训练集的准确率还在上升,但是验证集的准确率却开始下降,说明这时候模型可能开始有过拟合的倾向。为了缓解这个问题,用了下图展示的modelcheckpoint方法,将验证集准确率最高的参数作为我最优模型的参数进行数据训练和学习,最终结果有小幅度优化。
鉴于不断调整网络结构和不断进行调优尝试后结果仍没有明显变好的情况,考虑到是项目数据量较小的原因。由于Twitter API对于爬取数据的限制和人工标注大量耗费时间和人力的原因,项目数据量较小。而LSTM做为深度学习模型,需要大量数据训练才会得到更好的结果,所以数据量小也可能是影响最终模型效果的一个原因。
下图展示的是基于LSTM模型的预测结果,不同地区选民对Trump的情感偏向。
03
主题分析模型简介
主题分析的数据集来自kaggle上整理的大选期间两位候选人所发的推文数据。因为LDA算法对推文这种较短文本做主题分析效果差的原因,项目参考了一篇科研文章做出了优化。首先根据LSI的计算结果,将每条推文对所有主题的相似度作为特征,做一个Kmeans聚类,并将属于同一个聚类的tweet拼接起来后再进行LDA主题分析,下图展示了Trump数据集的主题分析结果。
图中可以看到Trump数据集训练除了9个主题,每个主题展示了相应的前5个关键词,优化后的结果有了明显的主题区分和提取效果。
本次分享就到这里啦,谢谢大家~
主题分析参考文章
https://blog.csdn.net/Aaronji1222/article/details/78153269
更多交流:请关注公众号【通信大数据分析及应用】