基于深度学习和知乎的情感分析系统

2019-12-06 08:48贾宏志徐亚峰
软件 2019年10期
关键词:情感分析深度学习

贾宏志 徐亚峰

摘  要: 随着互联网的发展,人们更愿意在网络上分享自己对热点事件的观点并发表自己的评论,这些评论通常包含了个人的情绪和情感倾向,所以对网络短评进行情感分析能高效、精准的挖掘人们的情感态度。本系统首先对知乎平台的网络短评进行定向抓取,然后进行数据清洗、分析出人们的情感取向,最后利用词云进行直观的展示。本系统的情感分析模块主要使用了Google的TensorFlow框架,并采用长短期记忆网络(LSTM)对已经标注好正负情感评论的语料进行训练,然后使用Python Scrapy框架对知乎热榜评论进行定向数据爬取,并做出情感预测,最后使用Tornado框架实现情感分析系统的Web图形化操作。利用本系统可以高效、精准的挖掘人们的情感态度,有助于舆情分析、用户分析等方面的应用。

关键词: 深度学习;情感分析;LSTM;定向爬取

中图分类号: TP311.52    文献标识码: A    DOI:10.3969/j.issn.1003-6970.2019.10.008

本文著录格式:贾宏志,徐亚峰. 基于深度学习和知乎的情感分析系统[J]. 软件,2019,40(10):3336

Emotional Analysis System Based on Deep Learning and Zhihu

JIA Hong-zhi, XU Ya-feng

(Xuzhou Institute of Technology, Xuzhou, Jiangsu 221000)

【Abstract】: With the development of the Internet, people are more willing to share their views on hot issues and make their own comments on the Internet, which usually contain personal emotions and emotional tendencies. Therefore, the emotional analysis of online short comments can effectively and accurately explore people's emotional attitudes. This system first grabs the network short comments on zhihu platform, then cleans the data, analyzes people's emotional orientation, and finally USES the word cloud to display intuitively. The emotional analysis module of this system mainly USES the Google TensorFlow framework, using both short-term and long-term memory network (LSTM) to have training corpus with the positive and negative emotional comments, and then use the Python Scrapy framework to zhihu crawl hot list of comments for directional data, and make emotional prediction, sentiment analysis is realized by using Tornado framework Web graphical operation of the system. This system can be used to effectively and accurately explore people's emotional attitude, which is conducive to the application of public opinion analysis, user analysis and other aspects.

【Key words】: Deep learning; Emotional analysis; LSTM; Directional crawling

0  引言

近年來,互联网发展越来越迅速。截至2017年12月,中国网民规模达7.72亿,手机网民规模达7.53亿,网民中使用手机上网人群的占比由2016年的95.1%提升至97.5%,网络成了人们交流的平台[1],越来越多的人喜欢在网上发表自己对热点事件的观点态度。因此,对网络评论的情感分析成为研究人们对待社会热点问题看法的有效途径之一。本系统则是一个基于深度学习和知乎的情感分析系统,其使用了Word2vec工具建立词向量,基于深度学习的LSTM(Long Short-Term Memory,长短期记忆网络)模型建立情感分析模型,利用Python scrapy框架对知乎热榜中的评论进行定向数据抓取,并使用Python的Tornado框架完成了系统的图形化操作。利用本系统,可以实现半自动化的定向的情感分析。

1  深度学习简介

深度学习(又称深层结构学习),这一定义最早由Hinton等人[2]在2006年提出,它是基于人工神经网络的更广泛的机器学习方法系列的一部分,是样本数据通过一定的训练方式获得含有多层级的深度网络结构的机器学习过程。最初,Hinton教授提出了两个主要观点,第一个观点是利用计算机模拟人脑神经元工作的特征,形成神经网络模型,这一模型可以有效的学习数据特征,进而能够进行分类,回归及可视化等工作;第二个观点是采用逐层训练的方式对神经网络输入参数进行训练,即采用无监督的学习方式让深度学习网络达到最佳效果[3]。到目前,深度学习在语音识别领域、图像识别领域、自然语言处理领域均有一定的发展。但是,相对于图像识别和语音识别而言,深度学习在自然语言处理方面的应用起步较晚。本文主要运用深度学习在自然语言处理领域的相关技术,并涉及到目前广泛应用的深度学习结构——LSTM。

3.2  基于keras、TensorFlow的情感分析模块的设计与实现

Tensorflow是由谷歌开发团队开发并在2015年开放源代码的符号数学系统,被广泛应用于各类机器学习算法的编程实现。keras则是基于TensorFlow、Theano以及CNTK后端,由Python编写开发的高层神经网络API,它具有高度模块化、极简和可扩充的特征,并支持CNN和RNN,且能在CPU和GPU中无缝切换。本系统的情感分析模块则是以keras作为应用环境设计并实现。

本文设计的情感分析模块主要分为两部分,第一部分是训练情感分析模型,第二部分是将抓取的评论预处理后通过训练的模型进行情感预测,其简要分析过程如图4所示。

根据图中所示,第一步是对语料库的预处理,因为是对网络短评进行情感分析,所以我选择了基于新浪微博评论的12万条已做好情感标注的样本作为训练的语料,0表示消极的情感态度,1表示积极的情感态度。分词使用了jieba分词的全模式分词,让词库的内容最大化、最精准化。为防止分词中含有特殊字符影响训练结果,使用正则表达式过滤掉特殊字符(数据中无用的符号、数据中的网址信息),最后使用了哈工大和百度的停用词列表将词表中的的语气助词、代词等无需使用的功能词去除。预处理后词表输出至文本文档中,每一句为一行。结果如图5所示。数据预处理后,开始使用Word2vec进行词向量构建。首先,设置好词向量维度为256以及相关参数,然后加载进我们处理后的数据,选择CBOW模式开始训练,训练好的数据保存为文本文档,其中包含了词语以及对应向量,接着利用keras中的Tokenizer类制作数据词典,并将词典数量设置为4000,即统计出词典中词频出现较高的前4000个单词。然后使用texts_to_sequences()函数将我们训练后的数据转换为数字列表,并采取截长补短的方式使每一个数字列表的长度均为20(数据内容一般是短评,所以其长度在20词左右),长度小于20的语句由0补全,长度超过20的语句其超出的部分将会被截取。这组列表将作为训练模型输入层的x轴,而y轴则是每条数据标注好的情感值列表。构建词向量后,利用keras相关模块创建一个训练模型。首先,向模型中加入一个输入维度为4000,输出维度为32的嵌入层(Embedding)用来降低LSTM模型输入的维度,接着加入输入维度为32的LSTM层,之后加入隐藏层和Dropout层避免过度拟合,获得最后的模型后,开始对模型进行训练。训练模型时,首先设置好x,y轴输入的列表,然后指定进行梯度下降时每个batch包含的样本数量为200,训练终止时的epoch值为60,最后指定训练集占比为0.2的数据作为验证集,来验证每批次训练的精确度。训练过程如下图6所示。

训练结束后,保存训练好的模型,该模型作为情感分析模型,利用scrapy框架爬取的数据进行预处理后制作成数字列表,然后使用该模型进行情感分析,最后即可得出情感值和分析结果。

3.3  基于Tornado框架的系统架构

Tornado全称Tornado Web Server,是一个用Python语言写成的Web服务器兼Web应用开发框架。Tornado以其轻量、异步非阻塞IO的处理方式和较为出色的抗负载能力受到大众的关注。图7是Tornado框架和其他Python框架性能对比。

本文设计的系统因含有大量的耗时操作(数据爬取、情感分析),所以优先选择可以较好的处理异步非阻塞系统的Tornado框架。在设计中,使用@run_on_executor 修饰耗时方法用来创建额外线程进行处理,使用@asynchronous与@coroutine修飾调用耗时方法的post方法,其中@asynchronous作用是保持长连接,而@coroutine使之修饰的方法完成后会自动调用finish。

4  结语

情感分析作为自然语言处理领域的热点方向之一,具有很高的社会意义,一个更精确、适用性更广的情感分析系统是分析公民情感态度、网络舆情的重要基础。政府也可以通过对网络舆情的分析更好的维护社会的平稳发展。本系统则是基于深度学习的半自动的网络评论情感分析系统,它使用了word2vec建立词向量,基于LSTM建立情感分析模型,并使用了Scrapy框架对知乎热榜的在线评论进行数据爬取。本系统使用Tornado框架将功能图形化展示,在使用方面做到了简单、便捷,其具有较好的实用性。未来可以进一步的建立对话题具有针对性的分析模型,使系统能更加精准的分析出评论中的情感倾向,可以在更广泛的范围内使用。

参考文献

[1]第41次《中国互联网络发展状况统计报告》发布[J]. 中国广播, 2018(03): 96.

[2]Geoffrey Hinton, Yoshua Bengio, Yann LeCun 等.

[3]Hinton Geoffrey E, Osindero Simon, Teh Yee-Whye. A fast learning algorithm for deep belief nets. [J]. Neural Computation, 2006, 18(7).

[4]方明之. 自然语言处理技术发展与未来[J]. 科技传播, 2019, 11(06): 143-144.

[5]朱磊. 基于word2vec词向量的文本分类研究[D]. 西南大学, 2017.

[6]gensim: models. word2vec–Deep learning with word2vec [EB/OL]. [2018-06-08]. https://radimrehurek.com/gensim/models/ word2vec.html.

[7]周练. Word2vec的工作原理及应用探究[J]. 科技情报开发与经济, 2015, 25(02): 145-148.

[8]伍行素, 陈锦回. 基于LSTM深度神经网络的情感分析方法[J]. 上饶师范学院学报, 2018, 38(06): 10-14.

[9]王晨超, 刘洋. 基于Doc2vec和深度神经网络的中文文本情感倾向研究[J]. 电子技术与软件工程, 2018(10): 154-157.

猜你喜欢
情感分析深度学习
基于双向循环神经网络的评价对象抽取研究
在线评论情感属性的动态变化
有体验的学习才是有意义的学习
MOOC与翻转课堂融合的深度学习场域建构
大数据技术在反恐怖主义中的应用展望