基于R语言的数据挖掘技术以及针对新浪舆情在公安情报中的应用

2019-09-19 13:40程政阳王家航邱明月
科技传播 2019年16期
关键词:语料库分值舆情

程政阳,王家航,邱明月

1 概述

1.1 发展现状和研究工具介绍

1.1.1 新浪微博发展现状

中国互联网络信息中心(CNNIC)发布第43 次《中国互联网络发展状况统计报告》。报告显示,截至2018 年12 月,我国网民规模为8.29 亿,互联网普及率达59.6%①。经过许多年的发展,微博平台上有大量的用户,几乎涵盖了整个中国网民的群体,许多舆情事件的首曝地都是在微博平台上。因此针对新浪微博上的新浪舆情进行研究有很大的实用性,研究的成果即情报产品也能为公安部门进行决策提供参考。

1.1.2 研究工具介绍

R 是用于统计分析和绘图的语言和操作环境。R是属于GNU 系统的免费、免费和开源软件。它是统计计算和统计制图的极好工具。R 语言是S 语言的一个分支,广泛应用于统计学领域,大约在1980 年诞生。可以认为R 是S 语言的一个实现。S 语言是美国电话电报公司贝尔实验室为数据勘探、统计分析和绘图而开发的一种解释性语言。S 语言的原始实现版本主要是S-PLUS。S-PLUS 是一个基于S 语言的商业软件,由Mathsoft 统计科学部进一步改进。后来,新西兰奥克兰大学的罗伯特·绅士和罗斯·伊哈卡以及其他志愿者开发了一个R 系统。R 开发核心团队负责开发。R 可以看作是由美国电话电报公司贝尔实验室的里克·贝克尔、约翰·钱伯斯和艾伦·威尔克斯开发的S 语言的一种实现。当然,S语言也是S-PLUS 的基础。所以,它们在程序语法上几乎是相同的,也许只是在功能上略有不同。程序可以很容易地移植到一个程序中,其中许多程序只需稍加修改就可以应用到R 中。

1.2 研究方法

本文采用的研究方法主要是文本情感分析和聚类分析的方法,旨在通过文本情感分析分析微博评论的情感分值,判断舆情事件整体的情感方向,为下一步制定舆情引导策略提供参考依据,另外通过聚类分析可以清楚地划分微博评论的类别,紧接着可以进行观点提取,通过这样的手段可以了解到舆情事件中网民的观点分布,从中提取对公安情报工作有价值的信息,为公安部门服务。

2 微博评论数据的获取与处理

微博是一个用户量十分庞大的平台,每年发生的涉警舆情事件有很多,对于微博中所有舆情事件进行研究显然不现实。在《2018 年度中国互联网舆论分析报告》中,2018 年度互联网舆情事件共有20 起,其中涉警舆情事件有7 起,如表1 所示,且热度都比较高,所以从新浪涉警舆情入手研究涉警舆情比较容易。而在研究新浪舆情时,微博评论最能够反应社情民意。

综上所述,基于新浪微博的分析需要,参考舆情事件的热门程度和发生时间等因素,笔者选取了2019 年3 月24 日发生的热点舆情事件“常德滴滴司机遇害事件”作为此次微博评论获取的对象,爬取的对象为澎湃新闻在2019 年4 月29 日发出的微博“常德杀害滴滴司机大学生被诊断患抑郁症,有限定刑事责任能力”下方的评论4000 条作为下文分析的数据来源,以便进行接下来的数据分析。

表1 2018年度中国互联网舆论分析报告

2.1 事件概述

根据常德市公安局鼎城区分局通报,2019 年3 月23 日深夜,犯罪嫌疑人杨某淇(男,现年19岁,武陵区人)搭乘网约车从武陵区前往江南城区。3 月24 日0 时左右,在江南城区大湖路常南汽车总站附近下车时,坐在后排的杨某淇乘司机陈某不备,朝陈某连捅数刀,致陈某死亡。杨某淇事后到公安机关投案自首,据杨某淇供述,其因悲观厌世早有轻生念头,当晚因精神崩溃无故将司机陈某杀害。

4 月29 日下午,被害司机家属向澎湃新闻出示了嫌犯杨某淇的精神鉴定意见书,该鉴定意见书显示,杨某淇诊断为抑郁症,在本案中实施危害时有限定(部分)刑事责任能力。当天下午,澎湃新闻从常德市鼎城区公安局证实了该份鉴定意见书的真实性。29 日,受害者家属表示已经向公安部门提出重新鉴定申请,不认可嫌犯有“作案时有限定(部分)刑事责任能力”的鉴定结论。

本次的舆情事件始发于3 月23 日,这次事件带着“警察”“滴滴出行”“网约车”“司机死亡”这些敏感的标签而且事件发生的场所是在2018 年中频繁出事的网约车上,所以事件肇始时就有很多人在关注着,在4 月29 日下午18 时55 分澎湃新闻在新浪微博客户端发表“常德杀害滴滴司机大学生被诊断患抑郁症,有限定刑事责任能力”的微博后引起网友热议,评论上万。

2.2 数据抓取与数据预处理

笔者是通过微博评论研究与舆情事件中情感变化趋势,所以微博评论的数据就很重要。因此,本文的数据爬取也从微博评论下手,在网页上爬取数据的手段和方式有许多种,本文选择的是通过R 语言爬取。爬取原理如图1 所示。

图1 爬取原理

在正式爬取数据之前要做一些准备,首先,要安装几个需要的程序包“RCurl”“jsonlite”“stri ngr”“xlsx”“XML”“plyr”“reshape”,安装的代码是install.packages()。在安装完这些程序包之后需要将其在r 语言中加载才能进行使用,加载的代码是library()。在完成这些准备工作之后就可以进行爬取了。

爬取数据的第一步是测试我们所要爬取微博评论链接的url,我们爬取的微博是澎湃新闻的微博账号下关于常德滴滴司机事件的微博。之后为了数据能够顺利爬取,要将爬虫程序伪装成一个浏览器,而实现这一手段的就是伪装程序的报头。

第二步就可以开始爬取数据了,爬取数据的代码是webpage<-getURL(url,httpheader=myHttphea der),这一步爬取的数据格式是JSON 格式的,不是我们需要的结果,这个时候就需要使用之前加载的jsonlite 程序包中的fromJSON 函数来进行解析,解析的代码是temple<-fromJSON(webpage)。这样就可以初步的将微博评论的数据爬取了下来,爬取的数据包含评论的id、评论发表的事件、评论来源、用户ID 和评论内容等。但是,我们最需要分析的数据----微博评论的格式依旧存在瑕疵,这样的情况主要有两个问题:1)评论中使用微博表情,以<span class…………</span>的形式呈现出来;2)还有一些杂乱的数据,以<a …………</a>的形式呈现出来。因此,需要之前加载的字符串处理包并借助正则表达式,再使用str_replace_all 函数把它替换掉。现在就数据就处理完毕了。但是爬取的数据仅仅是一页10 条的微博,为了爬取更多的微博评论就需要搜集更多的微博ID 并加入循环结构。这样就完成了数据的爬取,爬取之后的数据删除掉一些分析所不需要的列,最终的结果是一个包含博主id、博主昵称、评论内容、点赞数、回复数、发布时间,行数为4 000 行的数据。如图2 数据预览所示。

图2 数据预览

3 实证分析

在对爬取下来的数据进行预处理之后,就可以对数据进行分析处理。但是所需要处理的数据大部分是文本型的数据,对于文本型数据直接进行处理比较困难。所以,笔者选择对文本型数据进行一些先期处理,提取其中的情感态度,将微博评论的情感态度用具体的数值表现出来,之后再对这些数值进行进一步的分析处理。

3.1 文本情感分析

笔者所采用的方法是基于语料库的分析方法,语料库需要大量的数据去进行训练,才能产生比较好的效果,而本文所采集的4 000 条数据对于训练一个效果较好的模型来较少,所以,本文选择使用开源的语料库来进行处理分析,即使用R 的Snowballc 程序包来实现。Snowballc 程序包是一个R 写的类库,可以用于处理中文文本,此程序包中所有的算法都是自己实现的,并且自带训练好的语料库,可以直接使用。除此之外,要注意的是此程序包自带的语料库即训练好的模型与本文所采集的数据所要适用的模型有一些出入,需要对模型进行一些调整。

在正式的情感分值计算之前要对微博评论数据进行分词处理,分词处理选择的是逆向匹配法。逆向匹配法是将微博评论输入到R 语言中作为一个完整的字符串,将字符串的第一个字与情感词语料库进行对比,如果没有这一个字,就将这个字删除,进行第一个词的对比,直到字符串结束。举个例子,以“这个东西很不错”输入到程序之后,“这”字先与语料库进行对比,没有匹配的字符之后,就将这个词进行删除,进行下一个词的对比,直到比对到“不”字之后,可以与语料库中某个词进行对比了,然后比对到“错”字,这个字符串比对结束,就保留了“不错”这个词作为结果。在这个过程需要使用循环结构。循环结构的原理是事先将字符串的字符数量导入到R 语言中并赋值给一个变量y,同时设置一个变量x 并且给这个变量赋值为0,然后对数据进行处理,每处理一个字就给变量x加上1,并与变量y进行对比,如果x小于y就继续运行程序,否则就终止程序。

对于文本情感分析我们选择使用“readxl”“Sn owballc”“Rwordseg”“stringr”这4 个程序包来完成,首先要将四个程序包加载,加载使用的函数是library(),在加载完成之后,读取数据和情感词典就可以将处理好数据导入到R 语言中进行处理。

这里处理的原理是将分词完毕的数据与R 语言中的语料库进行对比,如果出现了一个积极情感性质的词语就记1 分,如果出现一个消极情感性质的词语就记-1 分,最终将得到的分值进行汇总计算,得出该微博评论总的情感分值。因为要处理的数据总共有4000 条,所以这里要使用循环结构。循环结构的原理是事先将数据的总行数导入到R 语言中并赋值给一个变量y,同时设置一个变量x 并且给这个变量赋值为0,然后对数据进行处理,每处理一条数据就给变量x 加上1,并与变量y 进行对比,如果x 小于y 就继续运行程序,否则就终止程序。

将整个数据分为消极类和特别消极类,4 000条数据每条数据的分值在-94~1 之间分布。一条数据的分值越小,该数据是消极的概率就越大,反之,一条数据的分值越大接近正数,该数据是积极的概率就越大。分析的结果如图3 情感分析数据展示。

图3 情感分析数据展示

3.2 聚类分析

正式运行K-means 模型进行运算时,本文将点赞数、回复数和情感分析的分值导入到模型中进行运算,最终得到的结果如图4 聚类分析模型概览。可以看到模型将数据分为了3 类,模型训练的质量也比较好,在模型训练中最重要的变量是情感分析的分值。

图5 模型详细数据是模型的详细数据,其中占据模型绝大部分数据是聚类1(2840 条数据,占71.7%)和聚类2(913 条数据,占23.0%)。可以看到聚类1 情感分析的平均分值是-8.51,聚类2 情感分析的平均分值是-28.04,分值的差距较大,结合上文可以将聚类1 分为较为积极性质的评论,将聚类2 和3 分为消极性质的评论。

图4 聚类分析模型概览

图5 模型详细数据

4 结语

根据以上模型分析的结果我们可以得出以下的结论,本次涉警舆情事件中,舆论情感方向是负面情感占绝大多数,但是这些负面的情感并不是针对公安部门的。根据词频分析和词云的结果来说,网民评论大多是针对嫌疑人的谴责和嫌疑人想用自己患有抑郁症为自己罪行开脱这一行为的不满。

从微博评论的角度入手分析涉警舆情事件中人民群众的情感趋势是本文的研究角度,传统的涉警舆情分析更多地从舆情声量的趋势入手,分析其传播途径、首曝平台和人民群众的主要观点而对微博中大量的评论数据仅停留于简单的应用。笔者认为,应对微博评论这种数据量大的文本型数据,利用人工处理比较困难,直接运用一些数理统计的模型对数据进行处理也不现实。所以,本文使用R 语言对这些数据进行文本情感分析,将文本型数据转化为笔者熟悉的数值型数据进行处理。而面对数值型数据,存在很多成熟的、效果良好的数理统计模型可以分析处理。

本文对涉警舆情的情感趋势进行分析发现在一起涉警舆情事件人们的情感趋势在事件发展初期都倾向于两极分化,即积极情感和消极情感的评论占大多数。在事件发展的中期,如果出现负面的新闻事件或公告,会导致舆情整体的情感倾向趋向于负面。如果出现中性的新闻事件或公告,会导致舆情整体的情感倾向趋向于中性。这是本文的研究发现。

注释

①CNNIC:2019年第43次中国互联网络发展状况统计报告[EB/OL].http://www.199it.com/archives/839412.html,2019-2-28.

猜你喜欢
语料库分值舆情
一起来看看交通违法记分分值有什么变化
《语料库翻译文体学》评介
按病种(病组)分值结算:现状、做法和评价
舆情
舆情
舆情
基于JAVAEE的维吾尔中介语语料库开发与实现
宿迁城镇居民医保按病种分值结算初探
微博的舆情控制与言论自由
语料库语言学未来发展趋势