当前位置: 首页 > news >正文

【AI大模型舆情分析】微博舆情分析可视化系统(pytorch2+基于BERT大模型训练微调+flask+pandas+echarts) 实战(上)

大家好,我是锋哥。最近发布一条【AI大模型舆情分析】微博舆情分析可视化系统(pytorch2+基于BERT大模型训练微调+flask+pandas+echarts)高级实战。分上下节。

实战简介:

前面的2026版【NLP舆情分析】基于python微博舆情分析可视化系统(flask+pandas+echarts+爬虫) 二次开发,前面课程舆情分析用得是snowNLP,我们现在改用基于BERT开源大模型微调,来实现舆情分析,提高舆情分析的准确率。重点讲解基本BERT大模型实现舆情分析,二分类问题。

视频教程和源码领取:

链接:https://pan.baidu.com/s/1_NzaNr0Wln6kv1rdiQnUTg
提取码:0000

微博舆情分析可视化系统 - 项目准备

基于python微博舆情分析可视化系统(flask+pandas+echarts) 项目源码本地运行下。

登录页面,我们改下小标题,加个LLM

登录后,进入系统主页面:

BERT大模型实现舆情分析功能

大模型开发环境准备-PyTorch和transformers库

首先新建model目录,把Bert-base-chinese粘贴到model目录下。

我们大模型训练尽可能的基于GPU的,CUDA要安装下。

然后我们要安装Pytorch2和transformers库:

pip install torch torchvision --index-url https://download.pytorch.org/whl/cu126
pip install transformers -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com

环境测试代码:

import torch from transformers import pipeline print(torch.cuda.is_available()) # 通过pipeline 加载模型 model = pipeline(task="text-classification", # 任务类型 二分类 model="Bert-base-chinese", # 模型名称 device=0 # 使用GPU ) # 调用模型预测 result = model("小明是好学生") print(result)

运行结果:

BERT大模型情感分析功能封装(使用AutoModel自动模型方式)

新建llm目录,里面再新建weibo.py文件

代码实现:

import torch from transformers import AutoTokenizer, AutoModelForSequenceClassification # 使用设备GPU device = torch.device("cuda" if torch.cuda.is_available() else "cpu") print(device) # 加载分词器 tokenizer = AutoTokenizer.from_pretrained('../model/Bert-base-chinese') # 加载模型 model = AutoModelForSequenceClassification.from_pretrained('../model/Bert-base-chinese') print(model) # 情感分析 def data_classfication(data): # 准备输入数据 input_ids = tokenizer.encode( text=data, # 输入文本 return_tensors='pt', # 返回PyTorch张量 truncation=True, # 截断超过长度的输入文本 max_length=20, # 最长长度 padding="max_length" # 填充短的输入文本 ).to(device) # 评估模型 model.eval() model.to(device) # 模型预测 output = model(input_ids) print(output) # 获取预测结果 logits = output.logits print(logits) predication = torch.argmax(logits, dim=-1) print(predication) sentiment = predication.item() # 把张量转成数字 print(sentiment) sentiment_label = "正面" if sentiment == 1 else "负面" return sentiment_label if __name__ == '__main__': result = data_classfication("开心") print("预测结果:", result)

运行结果:

使用BERT大模型对微博热词进行情感分析

找到视图层业务逻辑代码:

我们修改下:

# 改成使用大模型进行舆情分析 sentiments = data_classfication(defaultHotWord)

启动就直接报错了

原因是加载模型用得是相对路径,我们调用封装方法的时候,相对路径又变了。所以我们企业级开发,一般不用相对路径,只用绝对路径,由于开发环境,测试环境,线上环境模型路径会变,所以我们一般都会把路径放到配置文件里面去,方便修改路径。

我们在项目根目录下新建config.py

配置下模型路径:

# 定义模型路径 model_path = 'D:\python_pro\weiboLLMProject2\model'

接下来,weibo.py里把相对路径,改成绝对路径,使用config.py里的model_path属性;

改成:

# 加载分词器 tokenizer = AutoTokenizer.from_pretrained(config.model_path + "/Bert-base-chinese") # 加载模型 model = AutoModelForSequenceClassification.from_pretrained(config.model_path + "/Bert-base-chinese") print(model)

运行测试系统,可以了。不过情感分析的准确率很有限,等后面VIP课程,我们使用增量微调训练后的模型,准确率能上到90%以上。

使用BERT大模型对微博文章内容进行情感分析

找到微博舆情分析后端视图业务逻辑代码:

改成:

# 改成使用大模型进行舆情分析 sentiments = data_classfication(article[1])

重启项目测试:

使用BERT大模型对微博舆情分析以及可视化操作

找到数据可视化微博舆情分析后端视图层业务逻辑代码,包括柱状图,树形图,饼状图。代码都需要修改;

代码修改:

@pb.route('sentimentAnalysis') def sentimentAnalysis(): """ 舆情数据分析 :return: """ xHotBarData = ['正面', '负面'] yHotBarData = [0, 0] # 只读取前100条 df = pd.read_csv('./fenci/comment_fre.csv', nrows=100) for value in df.values: # 情感分析 # stc = SnowNLP(value[0]).sentiments # if stc > 0.6: # yHotBarData[0] += 1 # elif stc < 0.2: # yHotBarData[2] += 1 # else: # yHotBarData[1] += 1 # 使用大模型进行情感分析 sentiment_label = data_classfication(value[0]) if sentiment_label == '正面': yHotBarData[0] += 1 else: yHotBarData[1] += 1 hotTreeMapData = [{ 'name': xHotBarData[0], 'value': yHotBarData[0] }, { 'name': xHotBarData[1], 'value': yHotBarData[1] }] commentPieData = [{ 'name': '正面', 'value': 0 }, { 'name': '负面', 'value': 0 }] articlePieData = [{ 'name': '正面', 'value': 0 }, { 'name': '负面', 'value': 0 }] commentList = commentDao.getAllComment() for comment in commentList: # 情感分析 # stc = SnowNLP(comment[1]).sentiments # if stc > 0.6: # commentPieData[0]['value'] += 1 # elif stc < 0.2: # commentPieData[2]['value'] += 1 # else: # commentPieData[1]['value'] += 1 # 使用大模型进行情感分析 sentiment_label = data_classfication(comment[1]) if sentiment_label == '正面': commentPieData[0]['value'] += 1 else: commentPieData[1]['value'] += 1 articleList = articleDao.getAllArticle() for article in articleList: # 情感分析 # stc = SnowNLP(article[1]).sentiments # if stc > 0.6: # articlePieData[0]['value'] += 1 # elif stc < 0.2: # articlePieData[2]['value'] += 1 # else: # articlePieData[1]['value'] += 1 # 使用大模型进行情感分析 sentiment_label = data_classfication(article[1]) if sentiment_label == '正面': articlePieData[0]['value'] += 1 else: articlePieData[1]['value'] += 1 df2 = pd.read_csv('./fenci/comment_fre.csv', nrows=15) xhotData15 = [x[0] for x in df2.values][::-1] yhotData15 = [x[1] for x in df2.values][::-1] return render_template('sentimentAnalysis.html', xHotBarData=xHotBarData, yHotBarData=yHotBarData, hotTreeMapData=hotTreeMapData, commentPieData=commentPieData, articlePieData=articlePieData, xhotData15=xhotData15, yhotData15=yhotData15)

重启项目测试:

http://www.jsqmd.com/news/330351/

相关文章:

  • 工作量证明机制的未来发展方向是什么?
  • 2月1号
  • 2026/2/1总结
  • 腾讯轻量云 Nacos 公网访问排查指南(适用于其他平台的ecs)
  • USB存储设备管理工具 启用或者禁用+usb修复
  • 基于javaweb的网上购物系统 开题报告
  • 【读书笔记】《演讲的本质》
  • 基于JavaWeb的实验室助教系统的设计与实现
  • 【读书笔记】《遇见莫扎特》
  • 如何搜集图片?超实用功能必看!
  • 基于JavaWeb的网上书城网站的设计与实现 开题报告(2)
  • 基于JavaWeb的企业门户网站的设计与实现 开题报告
  • AI技术点总结(1)
  • 智能AI色选机如何提升食品加工效率与品质
  • z-image整合包下载 ControlNet局部重绘整合包教程|Z_image CN控图v2.0完整实测
  • 连锁门店管理系统如何助力企业实现标准化运营与效率提升
  • 别只盯着快手可灵!Google Veo 才是 AIGC 视频的终极形态?底层技术架构全揭秘
  • autoware 使用 waypoint loader重规划路径
  • 本科毕业设计开题报告系列之五:本科毕业设计中研究方法与技术路线怎么写?
  • 安卓开发工程师核心能力体系深度解析与面试指南
  • 【claude】claude skills核心概念解读
  • 银行柜台管理系统|基于java+ vue银行柜台管理系统(源码+数据库+文档)
  • codeblocks+wxWidgets Projects中引用第三方库(sqlite3)
  • Lecture 2:A Modern Multi-Core Processor (Part I)
  • 【状态估计】扩展EKF和无迹卡尔曼滤波UKF ieee33电力系统动态状态估计【含Matlab源码 15032期】
  • IEEE论文投稿Latex工程预先检查平台
  • 基于Simulink的根轨迹法控制器设计与仿真建模示例
  • 图文详解Trae配置Java开发环境
  • 完整教程:python+django/flask+vue的书城图书阅读器系统,亮点含目录章节pycharm
  • 电子学会青少年软件编程(C语言)等级考试试卷(三级)2025年12月