基于语义情感分析的网络热点爬虫舆情分析系统

2020-10-09 11:01田煜
软件 2020年8期

摘  要: 网络热点作为在互联网上短期爆发、形成一定公众关注和讨论的社会事件,公众情感分析是进行测度舆情话题的有效手段。本文以某网络热点事件为例,使用Scrapy框架收集微博评论数据并保存至本地,利用jieba中文分词工具分别以TF-IDF和TextRank两种算法对文本数据进行处理并且对实验结果进行比较,利用SnowNLP类库进行情感分析,借助NLPIR分词系统进行依存句法分析与可视化,最后利用Wordcloud库生成词云以快速直观的获取主要信息,展现了热点话题事件中公众对于舆论的态度。本文为有效控制和应对网络热点事件、从不同维度处理分析事件和增强网络热点事件舆情管控等工作提供技术支撑。

关键词: 网络数据获取;舆情分析;语义情感;网络热点

中图分类号: TP391.1    文献标识码: A    DOI:10.3969/j.issn.1003-6970.2020.08.026

本文著录格式:田煜. 基于语义情感分析的网络热点爬虫舆情分析系统[J]. 软件,2020,41(08):89-93

【Abstract】: Network hot spots as a short-term burst on the Internet, become a public concern and discussion of the media. Public sentiment analysis is an effective method to measure public option topics. This paper takes an example to crawl weibo comments and save the data to the local collection thorough Pythons Scrapy crawler framework. Jieba Chinese word segmentation tools was used to process the text data with two algorithm, TF-IDF and TextRank, and the experimental results were compared. Then SnowNLP classlib was used for sentiment analysis, and NLPIR word segmentation system carried out dependency syntax analysis and visualization. Finally, wordcloud library was used to generate word clouds to get the main information quickly and directly, which shows the public's attitude towards public opinion in hot topic events. This paper provides technical support for effectively controlling and responding to network hot events, dealing with and analyzing events from different dimensions, and strengthening public opinion control of network hot events.

【Key words】: Network data acquisition; Public opinion analysis; Semantic emotion; Network hot spots

0  引言

中国互联网络信息中心(CNNIC)在2019年8月发布了第44次《中国互联网络发展状况统计报告》,报告显示,截止2019年6月,我国网民规模达8.54亿,较2018年底提升1.6%,其中手机网民所占的比例为99.1%,达8.47亿。微博是一种基于用户关系信息分享、传播以及获取的通过关注机制分享简短实时信息的广播式的社交网络平台。据微博发布的2019年第四季度及未经审计的财务报告显示,微博月活跃用户达到5.16亿。微博以其自身信息传播的快捷性和信息量的海量性、互动的及时性和共享性等原因,日益成为网络舆论发生群體极化现象的重要平台[1]。大数据时代的来临使得以微博为代表的自媒体取代传统媒体成为舆论的重要产生地[2]。网民通过发表言论所体现出的态度,呈现出一定的情感倾向,网民的情感表达和动员能力成为推动舆情发展演变的重要力量[3]。

依靠移动互联网组织起来的粉丝圈,不仅在演艺界存在影响,更是影响着整个社会文化环境,此种现象逐渐成为引发争议的焦点。在明星的影响力方面,微博是舆情导向的主战场。明星的言论会给粉丝以及其他普通网民群体的不同方面的影响,但粉丝群体行为极端化倾向明显,容易给网络环境造成消极影响。所以做好网络热点舆情分析至关重要。

本文主要分为数据采集与预处理、文本分类、情感分析与可视化、以某网络热点事件为例的舆情分析四个部分:第一节介绍了数据采集与预处理,利用基于Python的Scrapy框架实现网络爬虫爬取微博评论数据并保存至本地;第二节介绍了文本分类,采用TF-IDF方法和TextRank方法并且进行了结果的比较;第三节介绍了情感分析与可视化,利用SnowNLP库和NLPIR工具分别进行情感分析和依存句法分析,利用基于Python语言的Wordcloud库生成词云;第四节将上述方法用在以某网络热点事件为例的网络热点舆情分析系统中。对于热点事件的舆情预测预警、研判以及监管的系统自动化实现具有一定的参考价值,实现对微博舆情监管分析,为有效应对网络热点事件,从不同维度不同尺度分析处理事件,给网络热点舆情管控等工作提供技术支撑。本文所设计的舆情分析系统框架图如图1所示。

1  数据采集与预处理

1.1  数据采集

数据采集的主要工作是从网络数据系统中采集数据。采集数据则主要是通过读取器实现。读取器通过封装实现与互联网数据系统简捷便宜的连接,然后负责读取外部数据源并将外部数据转化成通用格式的数据[4]。

对新浪微博网站爬取的过程可以考虑两种方式:采用微博开放平台API接口获取数据或者使用编写的爬虫进行数据的爬取。由于微博开放平台API对于数据有访问次数的限制,所以制定合适的爬取策略十分重要。本文采用Scrapy开源框架进行数据获取。

Scrapy框架是一個基于Twsited的异步处理框架,是通过Python实现的爬虫框架,架构清晰,模块之间的耦合程度相对较低,而且可扩展性也比较强,能够给灵活完成各种需求[5]。Scrapy的组成框架如图2所示。

爬虫Spider的工作流程:首先解析第一个URL,获取它的请求,在其返回时检索回调函数;之后再回调函数中,对解析网页进行响应,返回项目对象和请求对象的迭代,请求中还将包含一个回调信息,由Scrapy下载;然后对其进行回调处理,在回调函数中,对网站内容进行解析,使用Xpath选择器生成解析后的数据项;最后,从爬虫返回的信息通常都进入到项目管道中[6]。

在对于微博网站爬取过程中,会出现验证身份的信息。常用的方法主要有:提交表单、带着Cookie进行请求,通过直接获得Ajax动态加载的数据接口进行数据提取,以及远程文档保存等[7]。本文所需数据量为一个月内,相较于超大数据挖掘,对于用户登录的需求并不明显,所以采用的是带Cookie的请求。

1.2  数据预处理

数据的预处理主要是对原始数据的清洗、抽取元数据,对于网络的文本信息预处理主要是文本的分词、去停用词(主要是一些标点、单字和一些没有具体意义的词,如:的、了等重复出现的词)、文本特征向量提取、词频统计、文本的模型化表示等操作[8]。不同的预处理方法会导致不同的分类性能[9]。数据预处理的主要目的在于:识别以及去除严重影响分析的言论以及对于舆情发展无用的言论,确保数据分析的效率和准确性。由于某些主流媒体导向性言论可能会对评论造成一定影响,对舆论本身正面和负面的明显态度对立严重,且时间间隔短导致的评论爬取数量少,为避免出现较大的判断误差另外,还需要取出无意义的词语比如语气助词,这样可以在避免出现较大误差的同时减少一部分运算量。

在网络热点事件分析中,数据预处理最主要的步骤是数据清洗。首先查找缺失值,在获取到第一份原始数据时,需要检查数据的完整性。对数据缺失值的查找和计算相应的比例利用Python实现。对于缺失值的处理有两种方式:直接将缺失值所在的行或者列删除;用其他数据的平均值,众数,或者上下值来填充这个数据表格中的缺失值。可以利用基于Python语言的Pandas工具进行数据清洗。Pandas是Python的一个数据分析包,提供强大的类库,通过清洗数据最后得到清晰明了的数据。Pandas有三种数据结构形式,分别是Series、DataFrame和索引对象,其中DataFrame是最常见的Pandas对象,它是一种表格型数据结构,类似于Excel,每一个值都有一个行索引和一个列索引,不同列的数据类型可以不一样。将爬取的网络热点事件评论数据Excel或者csv表格导入并转换为DataFrame对象,进行相关的操作,比如处理缺失数据、删除不完整行等。

2  文本分类

在文本分类阶段采用TF-IDF算法。TF-IDF是Term Frequency- inverse Document Frequency的缩写,它作为一种简单有效的词加权方法,在信息检索和数据挖掘领域得到了广泛的应用。若一个词条频繁出现于一个类的文档内,那么表示此词条可很好体现这个类的文本属性,对于此类词条,应赋予其较高权重,同时可将其当作此类文本的特征词,用来和其他类文档作鉴别[10]。

其中,d为阻尼系数,取值范围为0到1,代表从图中某一特定点指向其他任意点的概率,一般取值为0.85。使用TextRank算法计算图中各点的得分时,需要给图中的点指定任意的初值,并递归计算直到收敛,即图中任意一点的误差率小于给定的极限值时就可以达到收敛,一般该极限值取0.0001。

TF-IDF方法与TextRank方法各有优劣,体现在两个方面:从依赖语料方面,TF-IDF的IDF值依赖于语料环境,这给他带来了统计上的优势,即它能够预先知道一个词的重要程度,这是它优于TextRank的地方,而TextRank算法认为每个词的重要程度是一样的。从词语的互相关联性,TF-IDF是纯粹用词频的思想来计算一个词的得分最终提取关键词,而TextRank用到了词之间的关联性。分析网络热点事件需要将这两种算法结合起来,词频是重要的一方面,同时词之间的关联性也是需要考虑的方面。

3  情感分析与可视化

文本情感分析(也称意见挖掘)是指用自然语言处理、文本挖掘以及计算机语言学等方法来识别和提取原素材中的主观信息。文本情感分析是自然语言处理领域的一个重要的研究课题,也是网络监控领域的一个重要课题[12]。

从自然语言处理技术的角度来看,情感分析的任务是从评论的文本中提取出评论的实体,以及评论者对该实体所表达的情感倾向,情感分析在数据挖掘、web挖掘、文本挖掘和信息检索方面有广泛额研究。本文将对提取出的数据做出一分为二的极性分析:即“正向情感”和“反向情感”。

由于当前自然语言处理库基本都是针对英文的,而中文没有空格分割特征词,Python做中文文本挖掘较难,后续开发了一些针对中文处理的库,例如SnowNLP、jieba、BosonNLP等。SnowNLP是一个常用的Python文本分析库,是受到TextBlob启发而发明的。SnowNLP的基本模型是贝叶斯模型(Bayes),贝叶斯模型的训练过程实质上是在统计每一个特征出现的频次。

4  以某网络热点事件为例的舆情分析

4.1  数据采集流程

微博网站分为移动端和网页版,主要爬取移动版,域名为https://m.weibo.cn/。考虑到遇到crontab定时爬取时,带有一个cookie需要不定期更换,本文在采集时,先用requests库请求请求登录地址得到response对象后,调用cookie()方法得到的cookie请求url链接。

4.2  文本分类

jieba分词工具是基于python的第三方中文分词组件,用于自然語言处理,支持三种分词模式:精确模式、全模式、搜索引擎模式。jieba库中已经对TF-IDF进行了实现,并预先统计出了汉语中每个词的逆文档频率。其分词算法总体是:使用基于前缀词典的词图扫描,生成所有可能生成词所构成的有向无环图,再采用动态规划查找最大概率路径,找到基于词频的最大切分组合;对于未登录词,采用基于汉字成词能力的HMM模型(使用Viterbi算法)来预测分词[13]。

用jieba库进行词频统计,如图3所示。

再分别用analyse.extract_tage(text)和analyse.tex-trank(text)方法提取出两组不同的关键词。本文列出两种方法提取前20个关键词的结果和结合结果,如下表所示。

TF-IDF注重词频,词频和IDF的乘积越大越关键,TextRank注重词语之间的关联,和别的词关联性越大的词越重要。TextRank算法虽然考虑到了词之间的关系,但是仍然倾向于将频繁词作为关键词,由于涉及到构建词图及迭代计算,所以提取速度较慢。在网络舆情分析的场景下,更加注重结果的时效性和运算的效率。因此,在网络热点舆情分析上,TF-IDF算法更切合舆论范围。

4.3  情感分析与数据可视化

可视化图表是舆情分析的最重要的手段,能够将数据信息直观的展示出来,对数据的深度挖掘和信息直观感受起到至关重要的作用,将杂乱无章的数据进行可视化展示,能够更直观的反映数据间的关系,更好地了解数据间的比例关系及变化趋势,对研究对象做出合理的推断和预测[14]。

本文的情感分析利用基于Python语言的Snow-NLP类库进行情感倾向分析,借助NLPIR大数据搜索与挖掘共享平台进行依存句法分析,将分析结果以可视化图的方式展现。NLPIR汉语分词系统是由中科院张华平团队开发,支持多种编码、多种操作系统、多种开发语言的平台,其主要功能包括中英文分词、关键词提取、新词识别与自适应分词、情感分析等[15]。

4.3.1  情感分析

相关资料显示SnowNLP类库在购物类的评论的准确率较高,所以在进行情感分析前替换其自带语料库为网络热点所在领域的相关语料库。在网络热点舆论事件情感分析中,需要将数据训练情感分析的模型。准备正负样本,并分别保存,利用SnowNLP训练新的模型,保存新模型。在其核心代码中,classify函数和train函数是两个核心的函数。其中,train函数用于训练一个情感分类器,classify函数用于预测。这两个函数同时使用到了handle函数,handle函数的主要工作为:对输入文本分词和去掉停用词。在SnowNLP类库中,词性标注主要通过s.tags,计算情感分数为s.sentiments,s.summary()方法表示输出一个关键句子。为了更加直观的显示情感分析结果,将数据输入NLPIR平台生成可视化图如下图所示。

NLPIR平台进行情感分析的主要技术有两点:情感词的自动识别与权重自动计算,利用共现关系,采用Bootstrapping的策略,反复迭代,生成新的情感词及权重;情感判别的深度神经网络:基于深度神经网络对情感词进行扩展计算,综合为最终的结果。从情感分析图中可以得知,公众的负面情绪占主要部分。

4.3.2  依存句法分析

NLPIR提出使用Yamada算法的结构化转移依存句法分析模型,在Yamada算法的基础上,加入全局的训练以及预测,优化了特征集合。在该模型的精度(85.5%)接近于目前转移依存句法最好结果(86.0%),并且在所有精度85%以上的依存句法模型中,达到了最快的分析速度。基于词表的文本挖掘方法有较明显的缺点,只基于词表,相当于只应用词本身的意思,而不考虑词的多义性和其在句子中有上下文时的特定含义。这样就会使得结果混入较多噪声,准确率较低[16]。通过NLPIR对输入文件的分析,其依存句法可视图如图5所示。

参考Stanford Corenlp工具的词性分析表,在图5中出现的缩写符号和释义见表2。

4.3.3  词云图

“词云”顾名思义就是将网络文本中词频最高的词语通过突出的形式表现出来,是互联网媒体时代出现的新型展示方式[15]。“词云”就是对网络文本中出现频率较高的“关键词”予以视觉上的突出,形成“关键词云层”或“关键词渲染”,从而过滤掉大量的文本信息,使读者快速领略文本的主旨[17]。目前互联网上已经有很多在线词云工具,例如国外的WordArt、Wordle、WordItOut、Tagxedo、Tagul等。

本文利用Python中的wordcloud库生生词云。利用wordcloud制作词云时,一般经过三个步骤:一是使用wordcloud.WordCloud函数设置词云对象的有关属性(或者参数);二是利用wordcloud.generate(text)函数或wordcloud.generate_from_frequencies (frequen-cies[,…])函数生成词云,前者是根据文本生成词云,后者是根据词频生成词云;三是利用word?cloud. to_file(file_name)函数将词云输出到文件进行保存[18]。

5  总结与展望

网络平台担负传播和弘扬社会主义核心价值观的使命,引导追星群体树立正确的榜样观和追星观。目前数据挖掘和数据分析的技术越来越成熟,本文以某网络热点事件为例进行基于语义情感分析的网络热点舆情分析。首先使用Scrapy框架收集微博评论数据,在设计过程中增加了关键词匹配,令爬虫更加精确地搜索相关内容并爬取至本地,利用jieba分词功能分别以TF-IDF和TextRank两种算法对数据进行处理并且进行比较,并且将两种方法结合起来生成20个关键词,情感分析方面利用SnowNLP進行情感分析,借助NLPIR工具进行依存句法分析,最后利用基于Word-cloud库生成词云以快速直观的获取主要信息。通过本文的网络热点舆情分析,完善网络监督和举报机制,明确上网规范,各大社交网站平台落实好监督审核机制,调动广大网民积极抵制不良行为,构建和谐社会。本文设计的网络热点舆情分析方法具有一定的参考价值,在今后的研究及实践中,有助于为相关机构从数据中挖掘出更多有用的信息。

本文所设计的网络热点舆情分析系统涉及多方面的理论、方法和技术,本系统还有许多新的问题需要解决,需要在实际应用中不断积累和完善。在以下几个方面需要做进一步的研究和开发:扩大时间范围数据并划分为舆情发展的各个阶段,观察网络热点事件的阶段性变化和大众情感变化,实现更精确的提取关键词和情感分析的方法;考虑数据文本中的中性词语的不同情感倾向,使网络热点舆情分析的结果更完整和准确。

参考文献

[1] 唐笑. 网络舆论中群体极化现象的扩散及规制[D]. 山东师范大学, 2019.

[2] 张聪聪, 李思彤, 汤艺, 殷复莲. 基于数据挖掘的国际涉华舆情分析关键技术研究[J]. 软件, 2018, 39(12): 172-176.

[3] 郭子钰. 微博舆情的情感分析与社会动员[D]. 云南师范大学, 2019.

[4] 陈硒. 面向大数据处理的划分聚类新方法[J]. 数码世界, 2017(1): 107.

[5] 吴霖. 分布式微信公众平台爬虫系统的研究与应用[D]. 南华大学, 2015.

[6] 王海玲, 周志彬. 基于Scrapy框架的爬虫设计[J/OL]. 软件导刊: 1-5[2020-04-15]. http://kns.cnki.net/kcms/detail/42. 1671.TP.20200102.1625.034.html.

[7] 刘宇, 郑成焕. 基于Scrapy的深层网络爬虫研究[J]. 软件, 2017, 38(07): 111-114.

[8] 王书梦, 吴晓松. 大数据环境下基于MapReduce的网络舆情热点发现[J]. 软件, 2015, 36(07): 108-113.

[9] Changming Zhu, Daqi Gao. Influence of Data Prepro?ces-sing[J]. Journal of Computing Science and Engineering, 2016, 10(2).

[10] Lynnette Purda, David Skillicorn. Accounting Variables, De?ce?ption, and a Bag of Words: Assessing the Tools of Fraud De?tection[J]. Contemporary Accounting Research, 2015, 32(3).

[11] 李志强, 潘苏含, 戴娟, 胡佳佳. 一种改进的TextRank关键词提取算法[J/OL]. 计算机技术与发展, 2020(03): 1-5 [2020- 03-29]. http://kns.cnki.net/kcms/detail/61.1450.TP.20191205. 1104.002.html.

[12] FengXu, XuefenZhang, 2, et al. Investigation on the Chinese Text Sentiment Analysis Based on Convolutional Neural Networks in Deep Learning. 2019, 58(3): 697-709.

[13] 严明, 郑昌兴. Python环境下的文本分词与词云制作[J]. 现代计算机(专业版), 2018(34): 86-89.

[14] 徐会军, 卢靖煌. 基于大数据视角的微博舆情演化分析[J]. 电子技术与软件工程, 2019(23): 183-185.

[15] 齐小英. 基于NLPIR的人工智能新闻事件的语义智能分析[J]. 信息与电脑(理论版), 2019, 31(20): 104-107.

[16] 任彬, 车万翔, 刘挺. 基于依存句法分析的社会媒体文本挖掘方法——以饮食习惯特色分析为例[J]. 中文信息学报, 2014, 28(06): 208-215.

[17] 盛成成, 朱勇, 刘涛. 基于微博社交平台的舆情分析[J]. 智能计算机与应用, 2019, 9(01): 57-59+64.

[18] 严明, 郑昌兴. Python环境下的文本分词与词云制作[J]. 现代计算机(专业版), 2018(34): 86-89.