1、本栏目责任编辑:王 力数据库与大数据技术Computer Knowledge and Technology电脑知识与技术第19卷第18期(2023年6月)第19卷第18期(2023年6月)E-mail:http:/Tel:+86-551-65690963 65690964ISSN 1009-3044Computer Knowledge and Technology 电脑知识与技术Vol.19,No.18,June 2023大数据下的网络评论情感分析研究与实现贺海玉(大众报业集团信息技术部,山东 济南 250014)摘要:随着大数据和移动互联网技术的快速发展,网民可以通过各种网络社交公共平台对社
2、会事件公开发表自己的评论,对网民的网络评论进行情感分析,可以及时了解网民对网络新闻的评价,并把握网络舆情的走向。文章通过Python语言编写爬虫程序对网络评论数据进行采集,然后运用SnowNLP库对网络评论数据进行情感分析,最终给出网络评论情感的正负面可视化评价结果,让舆论决策在大数据下有据可依。关键词:网络爬虫;SnowNLP;情感分析;数据可视化中图分类号:TP311 文献标识码:A文章编号:1009-3044(2023)18-0064-03开放科学(资源服务)标识码(OSID):0 引言截至2022年6月(中国互联网络发展状况统计报告 第50次统计),中国网络新闻用户规模达10.51亿,
3、较 2021 年 12 月增长 1 919 万,互联网普及率达74.7%1。同时伴随着“互联网+”和大数据技术的迅猛发展,促使各种网络社交平台快速崛起,大多数网民在网络社交平台上浏览新闻的同时,通过发表网络评论来表达个人的意见看法和情感表达,这些由网民发表的评论通常都包含着许多个人情感信息、立场倾向。尤其是一些网民发布虚假消息,以讹传讹、混淆是非真相,更会扰乱社会稳定,损害政府公信力。因此对网民评论信息进行收集并加以分析,可以初步了解网民对社会热点事件的观点和看法,从而进一步准确把握网络舆情的走向2。1 网络评论情感分析方法情感分析(又称观点挖掘)是指以提取、分析、处理、归纳、推理文本中的主观
4、信息(如观点、情感、态度、评价、情绪等)3为主要任务,运用自然语言处理、文本挖掘、计算机语言学等手段来识别和提取文本中原有的主观信息。目前网络评论情感分析主要有以下几种方法:基于情感词典的情感分析、基于机器学习的情感分析和基于深度学习的情感分析方法。1.1 基于情感词典的方法基于情感词典的情感分析主要是利用事先准备好的情感词库,对输入的文字进行去重、分词等预处理,计算出每个词对应的情感倾向度的权值,再将所有的情感词提取出来,根据句子的特点,最终判断出该段文字的情感偏激程度,从而计算出最终的情感分值。这种方法在情感词汇覆盖面高、准确率高的情况下,能够准确地反映出文本的非结构化特点,易于分析理解,
5、情感归类效果也相对准确。但这种方法还是有一定的缺点,因为以情感词典为基础的情感分类法主要依赖于情感词典的构建,而现有的情感词典大多是人工构建的,但由于现阶段网络发展迅猛,信息更新速度加快,导致网络生词越来越多,再用原来的情感词典进行情感分析就会产生辨识不准确的效果。因此,需要不断地更新和扩充情感辞典,才能满足情感分析的需求,而采用人工的方式扩充情感辞典需要大量的时间和资源来完成。1.2 基于机器学习的方法基于机器学习的情感分析法是指利用机器学习算法,通过大量有标记或无标记的语料,对特征进行提取,最后再对结果进行情感分析和输出。以机器学习为基础的情感分析方法,分为有督导、半督导、无督导三种。在有
6、监督的方法中,不同的情感类别可以分类给定具有情感极性的样本集。有监督的方法更依赖于数据样本,花费更多的时间对数据样本进行人工标记和处理,常见的监督方法有:KNN、SimpleBayes、SVM。在半监督方法中,通过对未标记的文本进行特征提取来有效改善文本情感分类结果,该方法可以有效解决带有标记的数据集稀缺的问题。无监督学习无须人工标注数据训练模型是一种降低标注成本的解决方案,但由于完全依赖算法学习的结果,因此往往效果不佳,难以达到实际要求。基于传统机器学习的情感分类法主要在于情感特征的提取和分类器的组合选择,不同分类器的组合选择对情感分析的结果有一定的影响,这种方法往往不能充分利用上下文文本的
7、语境信息,在情感分析文本内容时往往存在忽视上下文语义的问题,所以它的分类准确性受到一定的影响。收稿日期:2022-11-21作者简介:贺海玉,高级工程师,硕士,研究领域为新媒体大数据技术及分析,网络舆情。64DOI:10.14004/ki.ckt.2023.0852数据库与大数据技术本栏目责任编辑:王 力Computer Knowledge and Technology电脑知识与技术第19卷第18期(2023年6月)第19卷第18期(2023年6月)1.3 基于深度学习的方法基于深度学习的情感分析方法是利用神经网络进行的,典型的神经网络学习方法有:卷积神经网络(CNN)、递归神经网络(RNN)
8、、长、短时间记忆(LSTM)网络等。通过对基于情感词典和基于机器学习的情感分析方法的比较,采用深度学习的情感分析方法,在文本特征学习方面具有显著优势,可以主动学习特征,主动保留文本中的词语信息,能更好地提取对应词语的语义信息,从而有效地实现对文本的情感归类。但基于深度学习的方法需要大量的数据支持,不适合小规模的数据集,而且算法训练的时间取决于神经网络的深度和复杂度,一般需要较长的时间,同时对于研究人员来说,神经网络的内部结构、理论知识和网络结构的学习也是一项挑战4。2 网络评论情感分析流程在大量的网络社交平台中,因微博社交平台因拥有大量用户、媒体、官微以及各领域大V,可以对某一社会热点事件表达
9、各种态度和观点,使之成为网络舆情的主战场。有鉴于此,本文通过爬取微博用户的网络评论信息,并进行情感分析,可有效把握网民对新闻舆情的全面性倾向,为网络舆情管理提供帮助,从而更好地了解网民对公共社会事件(如新政策、社会热点事件)的情感和态度。网络评论情感分析流程可分为三个步骤:第一步,通过Python语言编写爬虫程序对大量的网络评论数据进行采集并进行数据预处理;第二步,通过Python的第三方SnowNLP库对收集到的数据进行情感分析,得出相应数值;第三步,对情感分析数值进行加权处理,获得网络评论情感的正负面评价,并将评论结果进行可视化呈现5,如图1所示。图1 微博情感分析流程图2.1 数据采集对
10、微博网络评论数据的采集是通过编写网络爬虫程序进行的。该网络爬虫程序是在Window7操作系统中,利用Anaconda3集成开发环境,通过Python语言进行开发的。其Python作为一种开源软件,为编译爬虫程序提供了大量的完善的基础代码库以及功能强大的第三方资源库,使得系统开发更为简单便捷。在编写的微博网络爬虫程序引入了Python语言的Requests、lxml、BeautifulSoup、jieba、csv、snowNLP等第三方资源库。在进行微博评论数据的采集过程中,以“#维护领土完整是14亿多中国人民的意志#”这条热点微博为例进行新闻评论数据的采集。该爬虫程序首先以要访问的微博评论页面
11、 URL 为入口,通过 Requests库模拟浏览器向微博服务器发送请求获取微博响应数据;然后通过lxml库将获取的响应数据进行数据格式转换,再经BeautifulSoup库进行数据解析和提取,获得微博的网络评论数据,包括评论内容,评论时间,评论点赞数,评论回复数以及评论者信息等数据;最后将爬取到的多条网络评论数据以.csv格式保存下来,用于后续的情感分析,如图2所示。2.2 数据清洗一般网络爬虫程序采集下来的网络评论数据,存在较多的脏数据,为了避免数据不够规范导致结果出错,需要进行数据清洗、中文分词、去除停用词等一系列的数据预处理操作。例如我们初次爬取下来的微博评论数据就存在较多的干扰信息,
12、如重复冗余评论,带有HTML标签和带有emotion(表情)的评论以及空格等。对带有HTML标签和表情的评论以及空格可使用Python正则表达式的方法re.sub()匹配去除,通过正则表达式查找到匹配的内容并将其替换成空字符串。对重复冗余的文本数据则是使用drop_duplicates()方法将网络评论数据中重复的部分过滤掉,从而起到去除无用的、重复的网络评论目的。然后对处理好后的网络评论数据再进行中文分词,中文分词是中文文本挖掘和信息处理的基础环节,而Python第三方的jieba分词库是当前效果较好的一种中文分词器,支持中文简体、中文繁体分词,同时还支持自定义词库,因此使用jieba分词库
13、的cut()方法的精准模式对网络评论数据进行切句、分词。经过分词后的数据还有很多干扰项,在评论数据中还会存在着频率出现极高一些词汇,如:“在”“的”“万一”“?”“!”等,以及一些中文标点符号,这些词汇本身没有什么实际意义。因此,我们选用哈工大停用词表并将其加载到jieba分词库的停用词库中,将没有具体意义的词删去,为下一步情感分析做好数据准备。2.3 情感分析对清洗过的微博评论数据进行情感分析时,主要是通过 SonwNLP 库来实现的。SnowNLP 是一个 Python写的自然语言处理库,主要可以实现中文分词、词性标注、情感分析、文本分类、转换拼音、繁体转简体、提取文本关键词、提取摘要、分
14、隔句子和文本相似等功能。它是一个可读性很好的中文文本处理库,简单易懂,易于实现。SnowNLP库不需要NLTK,本身就可以实现所有的算法,并且它自带语料库和情感字典,不需要下载大量的情感词库和构建各种情感词库,有一定的准确率。SnowNLP情感分析基本原理如下:假设情感分析的分类有正面评价c1和负面评价c2两类,且每一条评论中有w1,w2,.,wn共n个相互独立的文本空间,通过朴素贝叶斯公式分别计算出属于正面评价P(c1|w1,.,wn)和负面评价P(c2|w1,.,wn)的条件概率,其计算公式可表示为:P(ci|w1,.,wn)=P(w1,.,wn|ci)P(ci)P(w1,.,wn)并根据
15、全概率公式P(B)=P(B|A)P(A)+P(B)|A)P(A),可将P(w1,.,wn)可表示为:65本栏目责任编辑:王 力数据库与大数据技术Computer Knowledge and Technology电脑知识与技术第19卷第18期(2023年6月)第19卷第18期(2023年6月)P(w1,.,wn)=P(w1,.,wn|c1)P(c1)+P(w1,.,wn|c2)P(c2)进而可将公式转换为:P(ci|w1,.,wn)=P(w1,.,wn|ci)P(ci)P(w1,.,wn|c1)P(c1)+P(w1,.,wn|c2)P(c2)该式即为SnowNLP在情感分析过程中使用的计算算法6
16、。然后通过 SnowNLP 库的 sentiment()方法对文本进行情感分析,就能够获取每条评论的对应情感分值(emotion)和情感倾向类型(tpye,其中pos为正面,neg为负面),如图3所示。2.4 数据可视化呈现对微博评论数据进行SnowNLP情感分析得到每条评论数据的情感值,其情感值的范围在 0 到 1 之间,当情感值越接近1表示正面情绪,当情感值越接近0表示负面情绪,通过导入Python的第三方matlibploth绘图库绘制情感分析直方图,如图4所示。由情感直方图可见,评论内容两极分化较为严重,在整个评论条数中大约有1100多条评论情感值在0.8,1区间内,大约有400多条评论情感值是在0,0.2区间内,但从整体来看,对该条微博的整体情感评价还是趋于正面情绪的。同时还可以通过设定正负评价阀值,统计出该条微博中正面评价和负面评价的条目数。通常将正负评论阀值设定为 0.5,当评论的情感分析值大于 0.5时,则统归为正面评价,当评论的情感分析值小于0.5时,则统归为负面评价,最终根据获得的正负面评论条数绘制正负评价占比图,如图5所示。从此图可以直观地看到正面评价占比为71.