基于百度API的豆瓣电影评论情感分析
2021-09-22罗旋
摘要:对豆瓣电影评论的情感分析,可以帮助后续电影票房的预测。调用百度情感分析API,将按照电影上映时间划分,计算出每个时间段内的观众的情感趋势。
关键词:电影评论;情感分析;百度API
中图分类号:TP391.1 文献标识码:A
1 引言
电影评论反映了观众对影片的认同程度,在电影消费行为上起着决定性的指导作用,它可以给未观影者提供一种情感的导向参考,也给电影制作及发行方提供了参考方向,对电影票房产生了各种各样的影响[1,2]。
首先需要从豆瓣网爬取每个电影评论的相关信息[3],每个电影评论大概是200条。再通过调用百度情感文本分析API对每条评论进行分析,通过调用会返回相关的JSON格式字符串。通过对字符串内容的分析得出每部电影在上映前用户、上映7天内以及上映7天后评论的情感趋势。这里的情感趋势指的是评论文字所持态度的可能性。例如1代表的积极,0.5代表中性,0代表消极。在0-1之间的数就代表了相关程度。例如0.9代表很积极,0.75代表一般积极,0.1代表消极。
2 调用百度API
2.1 百度API介绍
对只包含单一主体主观信息的文本,进行自动情感倾向性判断(积极、消极、中性),并给出相应的置信度。为口碑分析、话题监控、舆情分析等应用提供基础技术支持,同时支持用户自行定制模型效果调优。
2.2 安装API Python SDK
对于一般的请求来说,需要通过URL进行手动请求。但是,此处使用的是Python语言。百度对Python语言的请求接口做了封装,因此只需对SDK进行pip下载即可使用内置包。如果已安装pip,执行pip install baidu-aip即可,如果需要使用HTTP2,请安装pip install baidu-aip-http2。如果已安裝setuptools,执行python setup.py install即可。
2.3 新建AipNlp
AipNlp是百度大脑自然语言处理的Python SDK客户端,为使用自然语言处理的开发人员提供了一系列的交互方法。编写如下代码,可新建一个AipNlp。
""" 你的 APPID AK SK """
APP_ID = '18884915'
API_KEY = 'Bm4P8py3wcPkGFCuK0aDsO16'
SECRET_KEY = 'GIIBgETUXcKXF2gosswUHa4hV5W1auYu'
def getAPI():
client = AipNlp(APP_ID,API_KEY,SECRET_KEY)
return client
在上面代码中,常量APP_ID在百度云控制台中创建,常量API_KEY与SECRET_KEY是在创建完毕应用后,系统分配给用户的,均为字符串,用于标识用户,为访问做签名验证,可在AI服务控制台中的应用列表中查看。
情感分析API对包含主观观点信息的文本进行情感极性类别(积极、消极、中性)的判断,并给出相应的置信度。调用百度情感倾向分析API的代码如下:
client = BaiDuCutWord.getAPI()
调用API进行分析如下:
res = client.sentimentClassify(text);
其中text是请求参数,为String类型文本内容(GBK编码)。
把分析数据保存如下:
SingleItem['emotions']= res
3 对返回参数分析
3.1数据类型转换
将数据从数据库中以DataFrame形式加载至内存以便后续分析。由于原始数据的时间是字符串形式,为了方便后续使用DataFrame的query查询,需要做前期准备,将字符串类型转换成datatime64[ns]类型。利用datetime的timedelta对时间进行操作,计算出所需的时间,并合并成新的DataFrame。
3.2 情感分析
在数据类型转换完毕后,将按照影片上映前、上映7天内以及上映7天后进行时间划分,并计算出每个时间段内的观众的情感趋势。对影片上映前分析代码如下:
beforeReleaseComments = df.query('commentTime<releaseTime')
beforeRelease = beforeReleaseComments.groupby(by="movieUniqueId").mean()['positive_prob']
对影片上映7天内分析代码如下:
in7Comments = ddff.query('commentTime<=release7Time')
in7= in7Comments.groupby(by="movieUniqueId").mean()['positive_prob']
对影片上映7天后分析代码如下:
after7Comments = ddff.query('commentTime>release7Time')
after7 = after7Comments.groupby(by="movieUniqueId").mean()['positive_prob']
最后将分析的数据,按照电影名称进行分类并存储备用,以便后续预测所需。
参考文献:
[1]罗捷.基于电影评价的进口影片票房预测研究[D].重庆:重庆大学,2015.
[2]张红,张海悦,王萃.基于文本情感分析的类型电影受众特征与偏好研究[J].现代电影技术.2019,(11).
[3]孟梅.基于BERT-TextCNN-B的电影评论情感分析[D].上海:上海师范大学,2021.
基金项目:校级教学研究项目(2020Y03)
作者简介:罗旋(1983-),女,湖北武汉人,讲师,硕士,主要研究方向为大数据技术、软件工程。