基于Python-Snownlp的新闻评论数据分析
2018-09-29赵志升靳晓松温童童梁俊花
赵志升 靳晓松 温童童 梁俊花
摘 要 网上热点新闻的评论不仅反映了民众对社会热点事件的关注程度,也反映了公众所表现出的各类情感价值和思想动态。基于Python-Snownlp经过数据采集,数据预处理,建立向量模型,数据挖掘与分析对新闻评论中用户观点与情绪进行研究,有效實现舆情分析和监控。
关键词 Python Snownlp;网络爬虫;聚类分析;情感分析
中图分类号 G2 文献标识码 A 文章编号 1674-6708(2018)219-0104-02
步入“互联网+”与大数据时代,网络媒体已经成为舆论新格局的重要组成部分,人们更倾向于通过互联网关注社会中的热点问题,并通过网络媒体来发表个人意见和看法。
文章从凤凰新闻、新浪新闻、环球网网页入手,使用Python的Scrapy框架来访问网页URL,解析页面评论信息,将抓取的评论信息存储到Mysql数据库中。抽取数据并进行预处理清洗,调用Python开源的分词模块jieba分词对文本进行分词,去除停用词、敏感词,建立相应的语料库。使用TF-IDF算法将语料库中的词语转化成词矩阵模型,使用K-Means算法对评论数据进行聚类分析挖掘,采用Python专为中文文本设计的Snownlp模块对数据进行情感分析。
1 数据采集
采用网络爬虫技术进行数据获取,选取了影响比较大的“造谣伊利董事长失联事件”这一热点事件的新闻评论作为数据集,使用网络爬虫技术从Web端抓取新闻评论数据集。首先,通过访问URL地址获取Web服务器端返回得数据,并解析数据抓取资源。请求模块是向网页URL发送请求,并获取网页源代码。解析模块是对网页源代码的解析,去除源代码中的JS脚本标签,CSS代码、HTML标签等内容,并将解析后的数据下载下来。资源库则是用来存放从网络上抓取下来的数据资源。并进行JS拼接,使用Scrapy模块进行解析,Scrapy模块是Python开发的一个快速、高层次的屏幕抓取和Web抓取框架,用于抓取Web站点并从页面中提取结构化的数据。
Scrapy使用了Twisted异步网络库来处理网络通讯,架构清晰,并且包含了各种中间件接口。引擎(Scrapy Engine),用来处理整个系统的数据流处理,触发事务。然后存储到Mysql数据库。
2 数据预处理
从网页采集下来的文本数据,存在较多的脏数据,需要进行一系列的数据预处理,主要工作有数据清洗、中文分词、去除停用词等。从腾讯新闻网抓取的新闻评论数据存在较多的干扰信息,比如重复冗余评论,存在HTML标签的评论,带有表情的评论等。从Web采集下来的新闻评论数据并不干净,使用Python正则表达式的方法re.sub()匹配去除,通过正则表达式查找匹配HTML标签,并将HTML标签替换成空字符串。
中文分词是中文文本挖掘和信息处理的基础环节,“结巴”分词是Python社区开源的分词项目。经过它分词后的数据还有很多干扰项,在中文文本中,会存在着这样一些词汇,使用频率虽然极高,但是本身却没有意义如:“在”“的”“万一”等以一些中文标点符号和键盘符号如:“?”“!”等,这些词汇本身没有什么实际意义,使文本的相似度增加,也增加了文本挖掘的难度。本文从网络上搜集了2 630个常用的停用词,将其加载到“结巴”分词的停用词库中,在分词时过滤掉评论数据中的停用词,排除语料库中的干扰项,同时也能够提高中文分词的准确性。
3 评论数据挖掘分析
将评论数据转化为向量模型,然后从聚类分析,情感分析和可视化分析3个方面对评论数据进行分析和挖掘。
文章使用向量空间模型来描述文本的特征。过滤了停用词后的中文分词词汇作为新闻评论的特征项词汇,使用TF-IDF算法对特征词进行权重计算,TF为“词频”,IDF为“逆文档频率”,这个值相乘,就得到了一个词的TF-IDF值。TF-IDF值反映了一个词在文本中的重要性。评论数据经过数据清洗,中文分词,过滤停用词、处理后,使用Python中sklearn模块的TfidfTransformer、CountVectorizer方法计算TF-IDF权重,转化为向量空间模型。之后就对数据进行分析与挖掘。
评论数据属于非结构化数据,数据本身是不带有属性和标签的,因此选择采用K-Means聚类算法进行聚类分析,K-means算法属于无监督学习,初始k的选取至关重要。
使用肘部法则解决此问题,肘部法则会将不同k值的成本函数画出来,当k值增大时,平均畸变程度的改善效果会不断降低。k值增大过程中,会存在一个点,在这个点之前畸变程度的改善效果下降幅度最大,在这个点之后,畸变程度的改善效果下降趋于平稳,这个点对应的k值就是肘部。对有关“造谣伊利董事长‘失联”的53 982条新闻评论做了聚类分析,通过分析以及观察数据,最后得出了7种网民的观点,7种观点如下:
1)聚类类别1,评论条数6 774,百分比12.55%,说明:希望造谣者得到严惩。
2)聚类类别2,评论条数4 159,百分比7.70%,说明:呼吁不信谣,不传谣。
3)聚类类别3,评论条数7 524,百分比13.94%,说明:支持出台网络监管政策,创造良好的网络环境。
4)聚类类别4,评论条数4 817,百分比8.92%,说明:部分媒体为了吸引眼球,不计后果。
5)聚类类别5,评论条数5 276,百分比9.77%,说明:大家对信息要有辨别真假的能力,不要被利用。
6)聚类类别6,评论条数22 731,百分比42.11%,说明:刘成昆之流通过小说映射诽谤伊利,造成社会影响。
7)聚类类别7,评论条数2 701,百分比5.00%,说明:该事件对伊利经营造成损失,股价受到波动;总评论条数53 982。通过聚类分析,大多数网民对“造谣伊利董事长‘失联”事件的持积极态度,其中约56%的网民认为该造谣者和部分媒体为了流量,不计后果,对受害者和社会都产生了很大影响,约13%的网民希望造谣者能够得到法律严惩,7.7%的网友呼吁大家不信谣不传谣,9.7%的网民认为民众要能辨别真假信息,不要被牵鼻子带着走,同时还有约14%的网民希望能出台网络管理政策,给大家良好的网络环境。
为了更好地显示分析结果,调用百度API和Python的Wordcould模块来采用分析词云可视化图与热力图可视化方法去侧面分析评论。关键词统计、词云可视化可以反映出网民们最关心的是哪些方面,词云可视化得知,对这一事件,网民们提到更多的是“谣言”“网络”“法治”“媒体”等这类词汇,说明网民们对造谣者和部分媒体人的谴责,对谣言的抵制,对良好网络环境的期盼。
而热力图来展现网民们对新闻关注的地域性分布。能反映出哪些地点的网民对这一新闻事件比较关心。热力图分析得知,关注这一热点新闻的网民主要聚集中东部尤其是华北平原地区,因为网络的普及,网络热点事件的传播也越来越迅速,人们对热点事件的参与度也越来越高,同时内蒙古地区也有一部分网友,说明对网民对本地的产业的关注度也在逐步提高。
4 结论
文章使用数据挖掘技术对“造谣伊利董事长失联”这一热点新闻评论做了分析。首先使用Python网络爬虫技术从新闻评论页面抓取网民们的评论数据,对数据进行清洗和中文分词,去除数据中停用词,使用TF-IDF方法对预处理后的数据建立向量模型,使用聚类算法来对数据进行聚类。
通过聚类分析后知大多数网民认为该事件对伊利、网络环境和社会造成了很大影响,希望诽谤者得到严惩。采用Python专为中文文本设计的Snownlp模块对数据进行情感分析网民情绪,可以看出大多数网民这一事件持积极态度。词云图分析可知,网民对网络环境的美好期盼。热力图分析可知,中东部地区和产源地的人们更关注新闻事件的发展。
参考文献
[1]耿大伟.基于Python技术的校园网搜索引擎的设计与实现[D].秦皇岛:燕山大学,2015.
[2]栾文娟.BBS准实时舆情监测技术研究与实现[D].武汉:华中科技大学,2012.
[3]张立.基于新闻评论数据的Kmeans聚类算法的研究[D].太原:太原理工大学,2010.
[4]李朋.面向网络评论性短文本的中文情感分析方法研究[D].重庆:重庆理工大学,2016.
[5]张莹.在线新闻评论的情感分析研究[D].天津:南开大学,2013.