基于新浪微博热搜的舆情分析和可视化设计与实现

2021-03-10 09:20徐家宁吕沛强任艳
电子技术与软件工程 2021年20期
关键词:舆情可视化界面

徐家宁 吕沛强 任艳

(苏州大学应用技术学院 江苏省苏州市 215325)

近年来,随着社交媒体网站的迅速发展,新浪微博以其信息的传播共享性和交流互动性深受广大网民的追捧,其中,微博的热搜话题内容得到了网民的广泛关注。通过微博平台表达社情民意,体现用户的意愿、态度已经成为常态。微博舆情,就是一个风向标。而舆情分析,则是根据特定问题的需要,针对这个问题的舆情进行深层次的思维加工和分析研究,得到相关结论用于决策。

本文从微博热搜话题的用户评论情况出发,通过数据采集、数据分析和数据展示三个层面进行了基于自然语言处理技术的微博热搜舆情分析,实现了微博舆论事件的评论热点词、主要地域来源、情感倾向、热度走向等内容的可视化展示,以期有效地了解网络热点事件,从不同维度分析网络舆情,给网络热点舆情管控等工作提供技术支撑。

1 总体功能设计

1.1 功能分析

通过对微博热搜话题的相关数据进行获取、处理和分析,在可视化界面上展示出相应处理分析后的结果,分为热搜话题、热搜微博评论以及热度走向三部分内容,每部分内容按照对应模块进行展示,如图1所示。

图1:总体功能结构图

(1)了解每日微博热搜的话题排行榜,获取当日热搜话题,热度状况以及热搜微博原文。

(2)针对热搜话题的用户评论情况,分析舆论事件的评论热点词、评论情感分析、情绪地图分布、具体评论内容。

(3)对话题事件进一步跟踪,了解其热搜话题的阅读量和讨论数走势。

1.2 架构设计

本文架构设计包括采集层、分析层和展示层三大部分。如图2所示。

图2:整体设计

1.2.1 采集层

利用网络爬虫技术,将本文所需要获取热的数据内容,包括热搜列表、日期、微博原文、微博热度以及对应热搜话题下的评论进行抓取,以csv 格式按照爬取的内容分区储存,对所要分析的内容进行简单地数据清洗。

1.2.2 分析层

对获取的评论数据集进行读取。使用python 第三方库jieba 库对中文评论进行分词,并事先读取停用词词典对返回的分词列表进行过滤,仅保留关键词,按照词频大小进行降序排序并保存。在热点词提取模块采用jieba 库基于TF-IDF 算法的关键词提取。情感分析部分,结合调用SnowNLP 库的情感分析接口即可得出对应的评论情感倾向数值并进行分类。最后,将分析结果保存到数据表格中。

1.2.3 展示层

以可视化界面的形式展示获取和处理后的内容。包括热搜微博原文、评论内容及热度状况,通过词云图展示该话题下的热点词;以条形统计图展示高频词及其词频;以情绪地图样式展示该微博热搜话题所产生舆论的主要地区来源和情感倾向;情感倾向通过饼图展现;阅读量和讨论数走势则以折线统计图形式呈现。

2 微博热搜舆情分析和可视化的实现

2.1 数据采集

本文以手机端微博网址为对象来获取相应的数据。通过对微博URL 的观察可得知博文的URL 地址是由“https://m.weibo.cn/detail/”+“ID”组成。本文需要取得热搜话题内容信息以及评论,故需要获得热搜微博的ID,通过对网页源代码的分析后得知,所蕴含信息的URL 是由ajax 生成的。观察返回的信息以JSON 格式数据呈现,故使用json.loads()方法进行解析转化成字典格式类型。通过对字典格式的数据进行取值,获得50 条热搜话题。然而,由于微博的网页有不同的结构,因此需要对每个不同网页所蕴含的文章及其ID 信息分别进行获取并且保存为CSV 格式方便后续使用。在获得热搜微博ID 之后,对该微博URL 发起请求,在网站中需要登录用户才能查看所有评论信息,因此在请求头中需要加入Cookies。分析得知每页的ID 蕴含在上一页中,该爬取方式与上述爬取微博话题内容相同,分析返回的用户名、用户地址、用户ID、用户评论进行存储。

2.2 数据预处理

本文使用Pandas 工具对获取的数据进行预处理,将爬取的微博热搜话题评论数据以csv 表格导入并转换为DataFrame 对象,并可以进行相关的操作,比如处理缺失数据、删除重复行等。微博评论中,常常会包含很多特殊符号,如网站中的便签信息、广告、表情、标点符号,类似“@# $ %-&* ()_ +.../<>?”等。这些符号与本文舆情分析的内容无关,为提高分词效率并避免不相关的干扰,文本信息需要经过清洗才能使用,本文选择采用了Python 的正则表达式来删除这些的非文本内容。

2.3 数据集存储

数据集设计主要来自所获取的数据源结果。数据源的获取分为三个部分,第一部分主要是获取的热搜列表及其对应的微博热度状况,同时,也保存了对应热搜话题的网页地址,以便对热点事件做进一步跟踪分析,即热搜话题榜清单数据集;第二部分是获取用户原始肖像和评论数据集,其中包括用户的 ID、名称、地点等,主要用于情绪地图模块地理位置的统计,而微博评论内容将作为输入进行热点词提取、文本情感积极分析;第三部分为热搜话题的原文,热度状况以及阅读量和讨论数走势。

2.4 数据分析

针对微博文本评论具有短小、语言不规范、半结构化的特点,采用了python 中用jieba 包来实现中文分词,使用了百度停用词包对停用词进行过滤来提取高频词汇,并使用jieba.analyse 提取评论关键字。jieba 的关键词提取是通过计算每个词汇的TF-IDF 值来衡量词汇的重要性,TF-IDF 值越大该词汇的重要性就越大。在中文情感分析SnowNLP 是一个python 写的类库,可以用于处理中文文本的情感,返回值为正面情绪的概率,越接近1 表示正面情绪,越接近0 表示负面情绪。本文将返回值大于0.5 的评论归类为积极评论,小于0.5 的评论为消极评论,等于0.5 的评论为中性评论。

2.5 界面实现

图表及界面的实现采用第三方库pyecharts,该库是使用Python 语言生成 Echarts 图表。pyecharts 生成的可交互图表可以为HTML 格式,将存储的数据和分析结果输入到对应图表中,并通过pyehcharts 的Page 网页组件最终实现多图表的可视化展示。本文将可视化结果分为热搜话题主界面和话题详情界面两个部分。

2.5.1 热搜话题主界面

该界面显示的是新浪微博的热搜榜,本主要获取了热搜话题的排名靠前热搜话题,并显示了对应的文章标题、热搜微博网址、阅读量与讨论数,如图3所示,通过点击文章标题可以进入话题详情界面,点击网址可跳转热搜微博话题网站。

图3:热搜话题主界面

2.5.2 话题详情界面

话题界面针对该话题下的数据信息进行了舆情分析,并以可视化图表的形式展现,包括该话题的微博原文、热点词云、评论情感倾向饼图、热度状况、情绪地图,除此之外根据每小时阅读量和讨论数变化绘制了热度走向折线图。

3 总结

本文结合自然语言处理技术并以微博评论作为数据源,运用python 网络爬虫技术和舆情分析方法设计和实现了基于微博热搜的舆情分析可视化。主要分为三个部分:第一部分为采集层,利用基于 Python 的网络爬虫爬取微博评论数据并保存至本地,并对数据进行预处理,主要是对原始数据的清洗,对于网络的文本信息预处理主要是文本的特殊符号过滤、分词、去停用词等;第二部分为分析层,主要用TF-IDF 算法实现热点词的提取,调用SnowNLP 库地情感分析接口进行了情感分析;第三部分介绍了展示层,将处理好的数据内容展示在可视化界面中。

本文所设计和实现的基于微博热搜舆情分析和可视化涉及自然语言处理、舆情分析以及数据可视化等多方面的技术和方法,在实际应用中还需要不断改进和完善,有助于相关机构从数据中挖掘出更多有用的信息。未来可以在以下几个方面需要做进一步的研究和提升:提高网络爬虫的效率,做到及时地动态更新;将数据保存进数据库,对数据储存和提取进行优化;探索更加精确的提取关键词和情感分析的方法;划分出板块,政治、文化、经济、科技等等,对标不同的人群的适用人群,也可以通过关键词查找之前的热搜话题等多个方面进一步提高舆情分析的准确性和实用性。

猜你喜欢
舆情可视化界面
基于CiteSpace的足三里穴研究可视化分析
基于Power BI的油田注水运行动态分析与可视化展示
国企党委前置研究的“四个界面”
基于CGAL和OpenGL的海底地形三维可视化
“融评”:党媒评论的可视化创新
基于FANUC PICTURE的虚拟轴坐标显示界面开发方法研究
人机交互界面发展趋势研究
舆情
舆情
舆情