智能时代的网络舆情分析技术应用

2024-01-12 05:40周洪斌贾苏许礼捷
微型电脑应用 2023年12期
关键词:爬虫分词云图

周洪斌, 贾苏, 许礼捷

(沙洲职业工学院, 数字化与微电子学院, 江苏, 张家港 215600)

0 引言

数字时代,网络是舆情传播的主要途径之一,并且网络舆情具有集中式、爆发式的特点,因此对网络舆情进行及时有效的分析是当今社会治理必须面对的问题[1-2]。随着网络爬虫、中文分词以及文本情感分析等智能技术的日趋成熟,能够在极短的时间内准确呈现网络舆情文本信息中的核心内容,有效应对网络舆情信息具有的数据量大、动态性、价值密度低等特性,为互联网舆情数据的高效收集、分析提供了全新的方式、方法,可以实现网络舆情分析的自动化、智能化,有助于做好网络舆论引导,传播正能量。

1 网络舆情分析常用技术

1.1 爬虫技术

爬虫技术来源于网络搜索引擎,目前应用非常广泛,通过对特定网站中的页面信息进行爬取、分析,可以给出舆情态势的综合研判。Python程序设计语言在人工智能时代被广泛应用,目前大量的网络爬虫程序采用Python语言开发。基于Python的爬虫技术通常会用到requests库、BeautifulSoup库[3],对应的基本使用方法如下。

(1) 通过requests.get()方法模拟HTTP GET方法发出请求到服务器,然后通过text属性获得服务器响应返回的网页内容(源代码)。具体代码如下:

res = requests.get(url)

html = res.text

(2) 使用BeautifulSoup进行网页解析,调用BeautifulSoup对象的select()等方法抓取指定数据。具体代码如下:

soup = BeautifulSoup(html.encode('utf-8'),"lxml")

data=soup.select(“html head title”)

当要爬取动态页面时,普通的requests无法实现,需要用到selenium。selenium是一个自动化测试工具,能够驱动浏览器模拟人的操作,如鼠标单击、键盘输入等。selenium的使用方法如下:

(1) 根据浏览器的型号和版本下载对应的驱动程序,如谷歌浏览器的驱动程序为ChromeDriver,再根据具体的版本号下载匹配的驱动程序。

(2) 启动浏览器,访问对应的页面,获得页面代码:

driver = webdriver.Chrome()

driver.get(url)

data= driver.page_source

在使用爬虫技术获取页面数据的同时,也要遵循行业规范,即Robots协议[4]。网站通过Robots协议告诉爬虫哪些页面可以爬取,哪些页面不能爬取。在网站首页的地址后面添加“/robots.txt”,可以查看该robots.txt文件的内容,robots.txt文件主要包括User-Agent、Allow 和Disallow等3部分内容。其中:User-Agent用于指明允许的爬虫标识,如果是“*”则表明允许所有的爬虫访问该网站;Allow表示允许爬虫访问的目录或页面;Disallow表示不允许爬虫访问的目录或页面。但根据Robots协议的默认规则,如果一个目录没有显示为Disallow,则是允许访问的。

1.2 中文分词技术

中文分词是中文信息处理的基础,通过分词将汉字序列分成一个个单独的词,为观点抽取等进一步的自然语言处理作准备[5]。近年来,jieba中文分词工具得到了较为广泛的应用,jieba的3种分词模式如表1所示。

表1 Jieba分词模式

以语句“张家港是全国文明城市”为例,通过jieba的3种分词模式得到的运行结果为:精确模式输出['张家港', '是', '全国','文明城市'];全模式输出['张家', '张家港', '是', '全国', '国文', '文明', '文明城市', '城市'];搜索引擎模式输出['张家', '张家港', '是', '全国', '文明', '城市', '文明城市']。

1.3 文本词云

在jieba分词的基础上可以制作词云图[6],实现文本分析的可视化,可以更加直观和艺术地展示文本。词云是将文本中出现频率较高的词予以视觉上的突出,使得浏览者一眼就能领略文本的主旨。词云图一般使用字体的大小来反应词语出现的频率,频率越高的词在词云图中的字体就越大。

Python语言可以通过WordCloud库来制作词云图。WordCloud是一个实现词云展示的第三方库,其可以设定词云的形状、大小和颜色。生成指定字体和背景色的词云图的代码如下:

wordcloud=WordCloud(font_path="simhei.ttf",background_color="white").generate(text)

然后,可以通过matplotlib.pyplot库将词云图展现出来,代码如下:

plt.imshow(wordcloud)

plt.axis("off")

plt.show()

默认的词云形状为长方形,如果要对词云图本身进行视觉上的改进,可以在产生词云时设置mask参数,代码如下:

cloudMask=imread("mask.png")

wordcloud=WordCloud(font_path="simhei.ttf",background_color="white",mask=cloudMask).generate(text)

1.4 文本情感分析

文本情感分析[7]是指用自然语言处理技术来识别和提取文本中的主观信息,找出说话者或者作者当时的态度,如积极、消极或者中性,因此文本情感分析在舆情分析方面被广泛应用。

目前大量的自然语言处理库都是针对英文的,而SnowNLP库是一个用Python语言编写的自然语言处理类库,支持多种中文文本处理操作,包括词性标注、情感分析、提取文本摘要等[8]。因此,可以通过SnowNLP对中文文本情感进行分析,代码如下:

s = SnowNLP(coment)

print(s.sentiments)

其中,sentiments为SnowNLP情感分析的结果,取值在0到1之间,表示情感分析结果为正面的可能性:当数值大于0.5时,情感偏向正面;当数值小于0.5时,情感偏向负面。

随着人工智能技术与云计算技术的融合,国内部分公司推出了人工智能开放平台,开发者可以在程序中通过调用平台提供的接口完成情感分析,如百度AI开放平台、讯飞开放平台。以百度AI开放平台为例,其提供了情感倾向分析、文章分类等自然语言处理服务,开放者完成账号的注册与认证后,可以查看不同程序设计语言所对应的SDK文档,调用百度AI开放平台完成文本情感分析[9]。Python语言的调用方法如下:

result=client.sentimentClassify(text)

传入参数text表示待分析文本,最大2048 Byte。数据参数如表2所示。

表2 百度AI开放平台情感倾向分析返回数据参数详情

因此,可以通过pos=result['items'][0]['positive_prob'] 获得情感积极的概率。

2 舆情分析技术应用实例

综合应用上述技术对新闻评论进行分析,具体流程如图1所示。

图1 新闻评论数据分析过程

关键步骤如下。

1) 爬取新闻评论

(1) 爬取评论节点

评论的节点为〈div class="comment_que"〉

comment_nodes = data.find_all('div', class_="comment_que")

for node in comment_nodes:

(2) 获取昵称

nickname = node.find('div', class_="aqwright").find('h3').find('a').get_text().strip()

nicknames.append(nickname)

(3) 获取评论主体内容

comment = node.find('div', class_="aqwright").find('div', class_="ansright_cont").get_text().strip()

comments.append(comment)

2) 对评论分词并制作词云图

(1) 使用jieba中文分词

words=[word for word in jieba.lcut(comments) if len(word)>=2]

text=" ".join(words)

(2) 对词云图本身进行视觉上的改进,制作并显示指定形状的词云图

cloudMask=imread("mask.png")

wordcloud=WordCloud(font_path="simhei.ttf",background_color="white",mask=cloudMask).generate(text)plt.imshow(wordcloud)

plt.axis("off")

plt.show()

词云显示效果如图2所示。

图2 新闻评论词云图

3) 对评论进行情感分析

(1) 本例中使用SnowNLP进行情感分析

for comment in comments

(2) 获得每条评论的情感分析结果

s=SnowNLP(comment)

result=s.sentiments

emotion+=result

n += 1

(3) 输出所有评论情感分析的平均值

print('情感分析平均值:',emotion/n)

对于本次分析的结果,所有评论的情感分析平均值为0.7063,说明广大网民对本条新闻的评论以正面的、积极的评论为主。

3 总结

随着时代发展,网络舆情分析越来越受到社会各界重视。智能技术为网络舆情收集、分析提供了有力高效的手段,通过网络爬虫、中文分词以及文本情感分析技术,实现了新闻评论的自动化采集、可视化分析,能够在极短的时间内准确呈现网络舆情文本信息中的核心内容,为网络舆情分析与引导提供帮助。本文所用的情感分析结果对舆情导向的判断略显单一化,如何将情感分析结果与多种因素结合辅助判断是下一步的重要工作。

猜你喜欢
爬虫分词云图
利用网络爬虫技术验证房地产灰犀牛之说
基于Python的网络爬虫和反爬虫技术研究
分词在英语教学中的妙用
成都云图控股股份有限公司
结巴分词在词云中的应用
结巴分词在词云中的应用
利用爬虫技术的Geo-Gnutel la VANET流量采集
黄强先生作品《雨后松云图》
大数据环境下基于python的网络爬虫技术
基于TV-L1分解的红外云图超分辨率算法