基于Python爬虫的影评情感分析与可视化系统设计

2023-12-30 02:01杨冰倩
无线互联科技 2023年20期
关键词:词云模块评分

杨冰倩

(河北软件职业技术学院,河北 保定 071000)

0 引言

中国电影市场规模不断扩大,成为全球第二大电影市场。2019年,中国电影市场总票房达到642.66亿元人民币,创历史新高。中国观众对电影的需求不断增加,推动了市场的快速增长。随着互联网的普及,越来越多的影评平台涌现出来,如豆瓣、时光网、猫眼等[1]。这些平台提供了观众发表影评、评分、讨论电影的空间,使得观众可以方便地获取他人对电影的评价和推荐。中国观众对影评的关注度逐渐增加,影评在电影消费决策中起到了重要的作用[2]。观众通过影评来获取信息、指导观影选择,并通过社交媒体进行讨论和分享。因此,影评在中国电影市场中具有一定的影响力[3]。

本文基于Python语言,对猫眼电影中的评论信息进行爬取,然后通过数据分析技术对爬取到的数据进行分析与展示。通过PyQt技术设计了与用户的交互界面,增强了与用户的互动性。

1 系统实现

本系统的业务流程如图1所示,用户先选择电影,如果该电影分析过则显示查看按钮,可以查看分析的结果;如果没有分析过,用户可以点击分析按钮,对选择的电影进行分析,分析完成后可以查看结果。本系统的用户交互界面使用PyQt完成,主要包括主窗口及显示分析结果的子窗口,功能设计主要通过request模块获取数据,再使用pandas模块把数据生成文件,最后使用Pyecharts模块生成图表。

图1 业务流程

2 获取影评数据

本系统使用request库爬取豆瓣电影网中的数据,主要包括电影的data(日期)、score(评分)、city(城市)、comment(评论)、nick(用户昵称)等字段,本文以近期热映电影“消失的她”为例。在获取数据时,先应用pandas模块中的DataFrame()方法创建一个数据框用于临时保存读取的数据。在猫眼电影网中每部电影都有唯一的moveId,因此可以通过传递不同的moveId爬取不同电影的评论。通过request.get()方法对评论链接发起请求,然后通过pandas模块将解析到的数据保存到Excel文件中。爬取到的部分原始数据如图2所示。

图2 部分原始数据集展示

爬虫部分代码展示如下:

re=requests.get(url='https://movie.douban.com/subject/%s/comments?start=%d&limit=20&sort

=new_score&status=P' % (self.movie_id, 20 * i),headers=headers).text

html=etree.HTML(re)

comment=html.xpath('//div[@class="comment"]')

for content in comment:

grades=content.xpath('.//span[contains(@class,"rating")]')

texts=content.xpath('.//span[@class="short"]')

if len(grades) >0:

grade=grades[0].xpath('./@class')[0][7:8]+' '

else:

grade= ' '

3 评分与地点分析

电影上映后,评分的高低在一定程度上体现了电影的质量与观众缘,本文以电影“消失的她”为例阐述该模块的技术实现。首先使用pandas模块读取数据,然后使用Pyecharts模块生成折线柱状图,最后调用render()方法生成HTML文件。其主要评论城市数及平均分如图3所示,左边的纵坐标表示评论的城市数量,右边的纵坐标表示该城市对电影评论的平均分。

图3 电影“消失的她”主要评论城市数及平均分

通过图3可以发现,来自上海、广州、成都的评论数量比较高,并且排在前几名的基本都是一线城市,一定程度上反映了电影在一线城市的播放量会比二、三线城市高,主要原因跟一线城市的人口规模、经济实力、影院数量和设施以及影评的发行策略有关系[4-5]。

部分代码展示如下:

city_main=city_com.sort_values('count', ascending=False)[0:30]

attr=city_main['city']

v1=city_main['count']

v2=city_main['mean']

line=Line("主要城市评分")

line.add("城市", attr, v2, is_stack=True, xaxis_rotate=45, yaxis_min=0,

mark_point=['min', 'max'], xaxis_interval=0, line_color='lightblue',

line_width=4, mark_point_textcolor='black', mark_point_color='yellow',

is_splitline_show=False) # 添加折线图

bar=Bar("主要城市评论数") # 柱形图对象

bar.add("城市", attr, v1, is_stack=False, xaxis_rotate=45, yaxis_min=0,

xaxis_interval=0, is_splitline_show=False,mark_point_color='yellow') # 添加柱形图

overlap=Overlap() # 叠加图表对象

4 评论情感分析

词云是一种可视化工具,通过将文本中出现频率较高的词语以较大的字体显示,从而给人一种直观的展示[6]。在影迷的情感分析中,词云可以用来展示影迷对电影的主要评价和感受[7]。本系统中对评论内容使用jieba模块进行分词,jieba库分词支持3种模式:精确模式、全模式和搜索引擎模式[7],本系统采用搜索引擎模式将评论内容切割成若干个词,然后使用WordCloud模块将其生成词云。如图4所示为电影“消失的她”评论生成的词云。

图4 电影“消失的她”词云

部分代码展示如下:

words=jieba.lcut(t)

filtered_words=[]

for word in words:

if len(word) >2: # 只保留长度大于2的词语

filtered_words.append(word)

filtered_text=' '.join(filtered_words)

w=WordCloud(

font_path="C:/Windows/Fonts/SIMSUN.TTC", # 词云字体

width=1000, # 图片宽度

height=800, # 图片高度

background_color="white") # 图片背景颜色

w.generate(filtered_text)

w.to_file(self.ciyun)

“消失的她”是一部悬疑电影,上映后引起了众多影迷的共情。通过词云可以看出,大部分观众认为该电影好看,评价较高。

5 结语

本系统实现了对影评的情感分析及可视化,以电影“消失的她”为例展示了该系统主要实现的功能,通过词云展示了影迷的情感倾向,通过柱状图与折线图展示了评论城市与评分之间的关系。通过这些数据的提取,全面挖掘了影评背后的关键信息,为电影行业研究观众的喜好和电影行业的发展提供了参考。

猜你喜欢
词云模块评分
28通道收发处理模块设计
“选修3—3”模块的复习备考
基于PyQt5界面的词云制作软件设计
我给爸爸评分
Castleman disease in the hepatic-gastric space: A case report
Web文本挖掘及可视化
An Optimal Resources Configuration Scheme for Caching-Based Content Distribution in Backhaul-Limited Small Cell Networks
基于SCI文献分析的呼吸病学发展态势研究
面向跨语言词云可视化的拓扑保持布局算法研究
集成水空中冷器的进气模块