社交类网站中社交情绪的挖掘与判断
2019-11-04张浩洋夏伟贤熊聪聪赵丛
张浩洋 夏伟贤 熊聪聪 赵丛
摘 要:社交化媒体蕴含着大量的数据,通过分析数据,可以研究人们的消费习惯,使用用户导向型策略进行商业化运作获取直接的经济收益。社交情绪分析成为这一体系中最重要的技术之一,国外已经对在英文数据集上的情感分析进行过相关研究。该文利用中文数据、神经网络算法和相关的Web技术对此进行相关的研究,成功构建3个模型,实现了对任意输入中文句子的情感分析,并可在极短时间内对输入内容进行高精度的情感预测。
关键词:情感分析 自然语言处理 embedding RNN神经网络
中图分类号:G206 文献标识码:A 文章编号:1672-3791(2019)07(b)-0186-03
由于有大量用户生成内容,社交化媒体几乎已经成为“大数据”的代名词。挖掘这些丰富的数据可以探寻舆论、前沿和公众情绪的趋势。现如今,脸书、推特、微博、微信等一系列社交平台让人应接不暇,人们在社交媒体上花费的时间比历史上任何一个阶段都要多,社交媒体数据和社会热点、市场营销、品牌及商业的关系更加紧密。
1 研究背景
情感分析早在20世纪90年代末出现,随着机器学习中深度学习算法的应用和计算力的提升,快速高精度的情感分析研究近10年不断地突破。传统机器学习领域中也有以Native Bayes、Support Vector Machine(SVM)、最大熵等算法针对文本进行情感分析的实例。相比于丰富的英文数据集分析,中文数据进行情感分析的案例比较匮乏,研究文献较少。
2 分析方法建立
利用爬虫技术获取训练数据用word2vec时使用缓存技术大大提高训练性能,使用计算成本相对较低的GRU单元代替常用LSTM单元,使用BRNN解决深度网络记忆丢失的问题,使用Dense层加softmax的形式灵活调整输出。
2.1 数据采集和预处理
数据采集利用爬虫技术采集Web上现有的数据,并编写代理池,使用random-agent等中间件加快爬虫的抓取效率。
预处理指把这些数据变成简单可用的数据形式,用MongoDB进行数据的存取以及利用基本字符串的处理方法,把相应的编码进行简单的预处理,编写相关函数进行数据结构的变换。
2.2 数据分析算法
数据分析算法主要指,采用深度学习中word2vec(count bag of words)对得到的评论进行编码/词嵌入embedding,和使用bidirectional-rnn以及gate recurrent unit所构建的RNN进行情感分析的预测,为该项目最核心点。
2.2.1 神经网络部分架构
该架构主要分为编码网络(CBOW)和预测网络(BRNN-GRU),利用CBOW进行word embedding 并用word embedding vector对BRNN-GRU进行训练从而得到预测网络。
2.2.2 编码网络
编码网络采用word2vec中count bag of words(CBOW) 对分词进行编码。
训练word2vec需要很大量的corpus,故我们采用transfer_learning的技术,利用在大语料库下训练所得到的模型对中文分词进行编码。
2.2.3 CBOW的数模型结构
softmax(x)= (1)
(2)
(3)
这便是CBOW的前向传播过程。
其中(2)中代表projection的过程,为输入的各个进行过one-hot encoding后的向量,U为投影的矩阵,最后由softmax单元进行激活。
(4)
(5)
迭代使用(5)对投影矩阵U进行更新,直至U收敛,此时得到了完整CBOW模型。
由(5)所得的U矩阵就可以进行很好的词表示:
(6)
由(6)我們得到了词的词嵌入函数word_vector该函数可以用来对词进行embedding能得到很好的词表示。
2.2.4 适应神经网络的数据与处理
使用中文分词工具jieba进行分词,对评分进行one-hot encoding作为神经网络的输出标签。利用word2vec对已经分好词句子进行embedding,最终把这些数据一并缓存到磁盘得到sentence_matrix,此时得到的sentence_matrix则为神经网络的input。
2.2.5 预测网络(bidirectional gate recurrent neural network)
预测网络采用GRU单元作为核心的神经元,相比于更加常见的LSTM单元GRU有着计算简单的优点,却没有使得计算性能下降。
GRU单元的数学模型如下:
(8)
(9)
(10)
(11)
[A,B]代表对矩阵的拼接,*表示元素积,t为神经元所在网络的层数。
GRU单元有两个update和reset分别确定更新所占的权重以及重置所占的权重其计算分别对应(7)(8),其目的是为了控制神经网络的记忆时候传入更深层次的网络。迭代使用(7)~(10)就可构建初步的rnn网络的神经元,也是公式(11)所描述函数——GRU函数里面的参数同一RNN网络里面共享。
接下来使用bidiretional recurrent neural network的结构对GRU单元所构建的rnn再进行一遍结构复杂化可以更好地处理传统RNN记忆传递不到深层网络的问题。
BRNN的思路相当于训练两个神经网络,然后把同一批数据传播的方向进行逆序投入网络中训练,用两个网络在同一时间步上的两个输出对后续的状态进行预测。
下面是GRU-BRNN单元的具体数学模型:
設模型的RNN部分共有n层。
(12)
对(12)进行循环,t从0到n,把\tilde ct当成传入下一层。
(13)
对(13)进行循环,构建Dense层,调整数据流。
(14)
接下来使用Dense层和softmax单元,即迭代(13)进行输出数据的维度调整,对各个参数求梯度进行迭代更新直至算法收敛即可,根据输出数据的不同得到3个模型,即5-bigru、2-bigru、3-bigru。
3 结果和分析
3.1 训练结果以及在验证集上的测试
训练出3个可供预测的模型:5-bigru、2-bigru、3-bigru,分别对应5分类、2分类和3分类模型。
下面是3个模型在训练过程中loss和accuracy的变化的图像(见图1)。
5-bigru、3-bigru、2-bigru分别对应训练过程iter1、iter3、iter2(见图2)。
可以看出各个模型均呈现收敛趋势,arruracy表现以二分类的模型,2-bigru的表现最好,为85.4%的准确率;5-bigru的最次,为39.4%的准确率。三者在真实的语言环境下都得到了相当准确的预测。
5-bigru准确率相对低下却能做出合理预测的原因解释: 原因首先是数据集有5个档次“积极、不太积极、中性、不太消极、消极”,因为是客观数据“这电影还行”这样的评论可能给出“积极、中性、消极”的评价,都可以认为其合理。
改进方法就是把5个档次的评分变成2个档次或者3个档次“积极、消极”或者“积极、中性、消极”,这样一来准确性会有很大的提升,即2-bigru和3-bigru的准确率要高于5-bigru(见图3)。
从loss函数的变化可以看出算法基本已经在该数据集上收敛,这证明神经网络从数据集上学习到了部分数据的特征,可以进行合理的预测。而loss并没有降低到一个相对低的值,这可能是由于数据集存在扰动;其次算法本身虽然是逼近真实的解空间,但因为神经网络的结构限制,并不一定可以完美地贴合解空间,故认为这个loss函数的值处于一个合理的范围。
3.2 模型测试
利用训练好的模型,对微博的评论数据进行了小规模的预测,结果发现预测在合理范围的值高于验证集的理论准确率(见图4)。
上面给出使用微博数据和3-bigru进行情感分析预测的实际例子,其实际预测大于验证集的准确率,实用性的准确率比其理论准确率更高。其原因是自然语言本身存在一定的模糊性,相较于人工进行判别而言具有较低的错误率,其真实的预测情况要比在验证集上的效果更好。
4 结语
模型经测试已经得到了不错的准确度,未来还是有很大的改进空间,比如换更大的爬虫,获得更多的数据,使用更快的计算机器,更换attention-model算法,使用对应预测体系语料库从新训练word2vec等。并且文中用到的是jieba分词,没有进行优化,按照内容进行专门优化也是以后研究的方向。
参考文献
[1] Mikolov T,Chen K,Corrado G,et al.Efficient Estimation of Word Representations in Vector Space[J].Computer Science,2013(7).
[2] Le QV,Mikolov T.Distributed Representations of Sentences and Documents[Z].2014.
[3] Bojanowski P,Grave E,Joulin A,et al.Enriching Word Vectors with Subword Information[Z].2016.