基于深度学习的Bilibili视频弹幕文本情感分析系统
🎈1.项目内容基于深度学习的Bilibili视频弹幕文本情感分析系统主要研究内容如下:(1)数据获取及处理通过使用Python的request等爬虫技术对Bilibili视频的弹幕文本进行爬取,在爬取到弹幕文本之后,需要对弹幕文本进行预处理工作,包括去除无关字符、过滤停用词,以及提取词干等,这些步骤可以提高情感分析的准确性。(2)BERT模型训练及优化。
一、项目技术
开发语言:Python
python框架:Django
软件版本:python3.7/python3.8
数据库:mysql 5.7或更高版本
数据库工具:Navicat11
开发软件:PyCharm/vs code
前端框架:vue.js
二、项目内容和功能介绍
🎈1.项目内容
基于深度学习的Bilibili视频弹幕文本情感分析系统主要研究内容如下:
(1)数据获取及处理
通过使用Python的request等爬虫技术对Bilibili视频的弹幕文本进行爬取,在爬取到弹幕文本之后,需要对弹幕文本进行预处理工作,包括去除无关字符、过滤停用词,以及提取词干等,这些步骤可以提高情感分析的准确性。
(2)BERT模型训练及优化
划分数据集为训练集、验证集和测试集,构建深度学习BERT模型,选择适当的损失函数及初始参数对模型进行训练,使用准确率和F1值评价指标评估模型,最后对模型进行优化调整。
(3)系统实现与应用
将程序实现的内容整合到一个功能完善的系统中,使其更具有实用价值,并可以以友好直观的形式提供给有相关需求的用户。程序实现的主要功能是分析某个视频中的弹幕情感,从而观察观众对视频的喜爱程度。根据数据分析的结果,为视频创作者提供数据支持,帮助视频创作者创作出更加优秀的视频。
4.系统功能:
(1)分析对象的选择:网页先输入视频创作者的信息,然后系统对视频创作者的视频列表进行爬取,再根据视频创作者的需求选择需要进行情感分析的视频。
(2)分析结果的展现:系统可以将视频分析的数据在浏览器中以折线图的形式进行结果的可视化展示,并根据视频时长将不同时间的弹幕的情感在折线图上按照时间顺序展现出来,使视频创作者们可以直观的看到单个视频中的观众情感变化,并在折线图下用一句话概括情感走向。
情感危机预警:项目可以根据消极评论的数量占比来判断观众的情感趋向,若消极评论占比过高则会对视频创作者进行预警。
三、核心代码
部分代码:
def config_page(request):
'''
获取参数信息
:return:
'''
if request.method in ["POST", "GET"]:
msg = {"code": normal_code, "msg": mes.normal_code,
"data": {"currPage": 1, "totalPage": 1, "total": 1, "pageSize": 10, "list": []}}
req_dict = request.session.get('req_dict')
msg['data']['list'], msg['data']['currPage'], msg['data']['totalPage'], msg['data']['total'], \
msg['data']['pageSize'] = config.page(config, config, req_dict)
return JsonResponse(msg)
def config_list(request):
'''
'''
if request.method in ["POST", "GET"]:
msg = {"code": normal_code, "msg": mes.normal_code,
"data": {"currPage": 1, "totalPage": 1, "total": 1, "pageSize": 10, "list": []}}
req_dict = request.session.get("req_dict")
msg['data']['list'], msg['data']['currPage'], msg['data']['totalPage'], msg['data']['total'], \
msg['data']['pageSize'] = config.page(config, config, req_dict)
return JsonResponse(msg)
def config_info(request, id_):
'''
'''
if request.method in ["POST", "GET"]:
msg = {"code": normal_code, "msg": mes.normal_code, "data": {}}
data = config.getbyid(config, config, int(id_))
if len(data) > 0:
msg['data'] = data[0]
return JsonResponse(msg)
def config_detail(request, id_):
'''
'''
if request.method in ["POST", "GET"]:
msg = {"code": normal_code, "msg": mes.normal_code, "data": {}}
data = config.getbyid(config, config, int(id_))
if len(data) > 0:
msg['data'] = data[0]
return JsonResponse(msg)
def config_save(request):
'''
创建参数信息
:return:
'''
if request.method in ["POST", "GET"]:
msg = {"code": normal_code, "msg": mes.normal_code, "data": {}}
req_dict = request.session.get('req_dict')
param1 = config.getbyparams(config, config, req_dict)
if param1:
msg['code'] = id_exist_code
msg['msg'] = mes.id_exist_code
return JsonResponse(msg)
error = config.createbyreq(config, config, req_dict)
logging.warning("save_config.res=========>{}".format(error))
if error != None:
msg['code'] = crud_error_code
msg['msg'] = error
return JsonResponse(msg)
def config_add(request):
'''
'''
if request.method in ["POST", "GET"]:
msg = {"code": normal_code, "msg": mes.normal_code, "data": {}}
req_dict = request.session.get("req_dict")
error = config.createbyreq(config, config, req_dict)
if error != None:
msg['code'] = crud_error_code
msg['msg'] = error
return JsonResponse(msg)
def config_update(request):
'''
更新参数信息
:return:
'''
if request.method in ["POST", "GET"]:
msg = {"code": normal_code, "msg": mes.normal_code, "data": {}}
req_dict = request.session.get('req_dict')
config.updatebyparams(config, config, req_dict)
return JsonResponse(msg)
四、效果图









更多推荐
所有评论(0)