AI大模型:Python 新闻文本分类系统 深度学习 机器学习(Flask+Vue+Element UI+QT・PaddleHub 驱动)(建议收藏)✅
AI大模型:Python 新闻文本分类系统 深度学习 机器学习(Flask+Vue+Element UI+QT・PaddleHub 驱动)(建议收藏)✅
博主介绍:✌全网粉丝10W+,前互联网大厂软件研发、集结硕博英豪成立工作室。专注于计算机相关专业项目实战6年之久,选择我们就是选择放心、选择安心毕业✌
> 🍅想要获取完整文章或者源码,或者代做,拉到文章底部即可与我联系了。🍅🍅感兴趣的可以先收藏起来,点赞、关注不迷路,大家在毕设选题,项目以及论文编写等相关问题都可以给我留言咨询,希望帮助同学们顺利毕业 。🍅
1、毕业设计:2025年计算机专业毕业设计选题汇总(建议收藏)✅
1、项目介绍
技术栈:
python语言、Flask框架、Vue前端框架+Element UI、FastAPI后端+PaddleHub、数据集
a.NewsSort-API文件夹为后端API服务模块,其中best_model文件夹存放基于PaddleHub训练好的新闻长文本10分类模型参数。main.py为后端API服务主程序。
b.NewsSort-Web文件夹为web前端界面模块,基于VUE+ElementUI组件搭建新闻智分系统前端页面模块。通过Axios发送网络请求对接后端API接口服务从而完成前后端联调。界面搭建主程序可查看src/App.vue文件。
1、新闻长文本10分类模型预测
财经, 房产, 教育, 科技, 军事, 汽车, 体育, 游戏, 娱乐, 其他
网页版本:输入新闻标题、新闻内容,点击新闻分类按钮,下方即可显示新闻的类型
QT版本:【1】单挑新闻文本分类:输入新闻标题、新闻内容,点击新闻分类,下方显示新闻类型
【2】批量文本分类:上传Excel文件,进行检测
2、项目界面
(1)网页版本:输入新闻标题、新闻内容,点击新闻分类按钮,下方即可显示新闻的类型

(2)输入新闻标题、新闻内容,点击新闻分类按钮,下方即可显示新闻的类型
(3)QT版本:【1】单挑新闻文本分类:输入新闻标题、新闻内容,点击新闻分类,下方显示新闻类型
(4)QT版本:【1】单挑新闻文本分类:输入新闻标题、新闻内容,点击新闻分类,下方显示新闻类型

(5)页面设计


3、项目说明
本项目是一款基于 Python 开发的新闻长文本智能分类系统,核心采用 PaddleHub 训练的新闻 10 分类模型(覆盖财经、房产、教育等 10 大类别),构建 “Web 网页版 + QT 客户端版” 双端应用,技术栈整合 Flask、Vue+Element UI、FastAPI 后端框架,实现 “单条分类 + 批量处理” 的全场景新闻分类需求,可应用于媒体内容审核、新闻平台内容归档、信息检索筛选等场景,解决传统人工分类效率低、标准不统一的问题,兼具智能化与易用性。
技术架构上,项目采用前后端分离设计,形成 “后端服务 - 前端交互 - 多端应用” 的完整体系:后端分为两大核心模块 ——NewsSort-API 文件夹提供 API 服务,基于 FastAPI 框架搭建,best_model 文件夹存储 PaddleHub 训练好的新闻 10 分类模型参数,main.py 为主程序,负责接收分类请求并返回预测结果;前端通过 NewsSort-Web 文件夹实现,基于 Vue+Element UI 组件构建 Web 界面,src/App.vue 为界面搭建主程序,借助 Axios 发送网络请求对接后端 API,完成前后端联调。同时支持 QT 客户端版本,拓展桌面端使用场景,满足不同用户操作习惯。
核心功能覆盖 “Web 单条分类 + QT 单条 / 批量分类” 双场景:
Web 网页版:用户在界面输入新闻标题与新闻内容,点击 “新闻分类” 按钮,系统通过 Axios 请求后端 FastAPI 接口,调用 PaddleHub 分类模型对长文本分析,快速输出新闻所属类别(财经、房产等 10 类之一),界面简洁直观,操作门槛低,适用于零散新闻的即时分类需求。
QT 客户端版:包含两种分类模式 —— 单条新闻文本分类与批量文本分类。单条分类功能与 Web 版逻辑一致,输入标题和内容即可获取类别;批量分类功能支持上传 Excel 文件,系统自动读取文件中的多条新闻文本,批量执行分类检测并返回结果,大幅提升多文本处理效率,适用于媒体、企业等批量新闻归档场景。
系统模块划分清晰,后端 API 服务与前端界面解耦,便于后续功能拓展与维护;PaddleHub 训练的 10 分类模型确保分类准确率,覆盖主流新闻领域;双端设计兼顾网页便捷访问与桌面端批量处理需求,满足不同场景下的使用需求。整体项目技术栈丰富,整合前后端开发、机器学习模型应用、多端客户端开发技术,是兼具实用性与技术深度的优质开发项目,可广泛应用于新闻相关的文本处理场景。
4、核心代码
# 导入所需包
import paddle
import paddlehub as hub
if __name__ == '__main__':
# 定义要进行新闻10分类的内容数据:新闻标题title + 新闻正文body
# 新闻标题title:
title = "新总督致力提高加拿大公立教育质量"
# 新闻正文body:
body = "滑铁卢大学校长约翰斯顿先生于10月1日担任加拿大总督职务。约翰斯顿先生还曾任麦吉尔大学长,并曾在多伦多大学、女王大学和西安大略大学担任教学职位。"
# 定义要进行分类的10个类别
label_list=['财经', '房产', '教育', '科技', '军事', '汽车', '体育', '游戏', '娱乐', '其他']
label_map = {
idx: label_text for idx, label_text in enumerate(label_list)
}
# 加载训练好的模型
model = hub.Module(
name='ernie_tiny',
task='seq-cls',
num_classes=10, # 分类类别为10
load_checkpoint='./model/model.pdparams', # 加载微调训练好的模型权重,注意此处路径一定要注意设置对!
label_map=label_map
)
# 拼接新闻标题和正文内容
data = title + body
# 对数据进行简单清洗和格式处理
process = lambda x: x.strip().replace('\n', '').replace('\r', '').replace(" ","").replace(u'\t',u'')
data = process(data)
newslist = []
list = []
list.append(data)
newslist.append(list)
# 新闻长文本10分类模型预测
# 默认为cpu环境,若已配置gpu环境可设置use_gpu=True
label = model.predict(newslist, max_seq_len=256, batch_size=1, use_gpu=False)
# 输出结果
print('新闻标题: {} \n 新闻正文: {} \n 新闻类别: {} '.format(title, body, label[0]))
# -*- coding: utf-8 -*-
'''
该文件为项目主程序:
运行该程序即可打开项目可视化界面,支持单条和批量导入新闻10类别预测
'''
import paddlehub as hub
import interface
import sys
import xlrd
import csv
import re
import pandas as pd
import numpy as np
from functools import partial
from PyQt5.QtGui import QPixmap
from PyQt5.QtWidgets import QApplication, QMainWindow
from time import time
# 定义单条新闻文本分类函数
def Single_classification(ui):
title = ui.lineEdit.text() # 获取输入的新闻标题
content = ui.textEdit.toPlainText() # 获取输入的新闻内容
# 新闻正文内容不能为空
if title == '' or content == '' :
ui.label_4.setText('无')
ui.warn1() # 提示补全新闻内容
else:
# 将新闻标题和正文直接拼接
news = title + content
# 去除换行符和多余空格等进行简单清洗
process = lambda x: x.strip().replace('\n', '').replace('\r', '').replace(" ","").replace(u'\xa0', u'').replace(u'\u3000',u'').replace(u'\t',u'')
news = process(news)
# 格式处理
# 创建空列表
data = []
list = []
# 使用 append() 添加元素
list.append(news)
data.append(list)
# 单条预测时间度量
t1 = time()
# 进行单条新闻文本分类预测,注意默认为CPU环境。 若已配置GPU,可设置use_gpu=True
label = model.predict(data, max_seq_len=256, batch_size=1, use_gpu=False)
t2 = time()
print('单条文本分类CPU预测耗时(毫秒):%.3f' % ((t2 - t1) * 1000.0))
# 显示新闻分类预测结果
ui.label_4.setText(label[0])
# 弹窗提示分类完成
ui.success1()
# 定义批量新闻文本分类函数
def Batch_classification(ui):
excel_path = ui.lineEdit_2.text() # 获取输入文件路径
output_path = ui.lineEdit_3.text() # 获取输出文件路径
if excel_path == '':
ui.warn2() # 提示未选择要导入的excel新闻文件
elif output_path == '':
ui.warn3() # 提示未选择分类结果文件输出路径
else:
# pandas读取新闻excel文件
df = pd.read_excel(excel_path)
# 对数据进行清洗以及将标题和内容进行拼接
news = pd.DataFrame(columns=['news'])
# 拼接新闻标题title和正文内容content列
news['news'] = df["title"] + df["content"]
# 去除换行符和多余空格等
process1 = lambda x: x.strip().replace('\n', '').replace('\r', '').replace(" ","").replace(u'\xa0', u'').replace(u'\u3000',u'').replace(u'\t',u'')
# 去除噪声数据
process2 = lambda x: re.sub(u"\\(.*?\\)|\\{.*?}", "", x)
news['news'] = news['news'].apply(process1)
news['news'] = news['news'].apply(process2)
# 首先将pandas读取的数据转化为array
data_array = np.array(news)
# 然后转化为list形式
data_list =data_array.tolist()
# 进行批量分类预测
# 注意默认为cpu环境,若已配置GPU可设置use_gpu=True。对于批量分类,batch_size也可适当增大进行提速
results = model.predict(data_list, max_seq_len=256, batch_size=1, use_gpu=False)
# 将结果填充到新闻类别channelName列上
df['channelName'] = results
# 保存结果文件为xlsx文件
df.to_excel(output_path, sheet_name='类别', index=False, header=True)
ui.showresult() # 预览显示预测完成后的excel结果文件
# 提示批量分类完成
ui.success2()
if __name__ == '__main__':
# 定义要进行分类的10个类别
label_list=['财经', '房产', '教育', '科技', '军事', '汽车', '体育', '游戏', '娱乐', '其他']
label_map = {
idx: label_text for idx, label_text in enumerate(label_list)
}
# 加载训练好的新闻10分类模型
model = hub.Module(
name='ernie_tiny',
task='seq-cls',
load_checkpoint='../model/model.pdparams',
label_map=label_map
)
# 加载GUI界面
app = QApplication(sys.argv)
MainWindow = QMainWindow()
ui = interface.Ui_Form()
ui.setupUi(MainWindow)
MainWindow.show()
# 为按钮绑定相关功能函数完成功能添加
# 单条新闻文本分类
ui.pushButton.clicked.connect(partial(Single_classification, ui))
# 批量新闻文本分类
ui.pushButton_6.clicked.connect(partial(Batch_classification, ui))
sys.exit(app.exec_())
5、项目获取
更多推荐



所有评论(0)