224 lines
6.4 KiB
Markdown
224 lines
6.4 KiB
Markdown
# 基于Tauri的新闻文本类别分类系统
|
||
|
||
## 项目简介
|
||
|
||
本系统是一个基于Tauri 2.x框架开发的跨平台桌面新闻文本分类系统,采用前后端分离架构,后端使用Spring Boot 3.x,前端使用Vue 3 + Composition API + TypeScript。系统集成了机器学习文本分类算法,能够自动识别新闻类别并进行智能分类。
|
||
|
||
## 技术栈
|
||
|
||
### 后端技术栈
|
||
- **核心框架**: Spring Boot 3.2.x + Spring MVC
|
||
- **数据库**: MySQL 8.0 + Redis 7.x
|
||
- **ORM**: MyBatis-Plus 3.5.x
|
||
- **安全认证**: Spring Security 6.x + JWT
|
||
- **API文档**: Knife4j/OpenAPI 3.x
|
||
- **任务调度**: XXL-Job
|
||
- **HTTP客户端**: Apache HttpClient 5 + Jsoup
|
||
|
||
### 前端技术栈
|
||
- **桌面框架**: Tauri 2.x (基于Rust)
|
||
- **UI框架**: Vue 3 + Composition API + TypeScript
|
||
- **状态管理**: Pinia
|
||
- **路由**: Vue Router 4.x
|
||
- **样式**: Tailwind CSS 3.x + HeadlessUI
|
||
- **构建工具**: Vite 5.x
|
||
- **图表**: ECharts 5.x
|
||
|
||
### 机器学习模块
|
||
- **传统算法**: Scikit-learn (朴素贝叶斯、SVM)
|
||
- **深度学习**: Transformers + BERT-Chinese (可选)
|
||
- **NLP**: jieba分词
|
||
|
||
## 项目结构
|
||
|
||
```
|
||
news-classifier/
|
||
├── backend/ # 后端Spring Boot项目
|
||
│ ├── src/
|
||
│ │ ├── main/
|
||
│ │ │ ├── java/com/newsclassifier/
|
||
│ │ │ │ ├── controller/ # 控制器层
|
||
│ │ │ │ ├── service/ # 服务层
|
||
│ │ │ │ ├── mapper/ # 数据访问层
|
||
│ │ │ │ ├── entity/ # 实体类
|
||
│ │ │ │ ├── dto/ # 数据传输对象
|
||
│ │ │ │ ├── vo/ # 视图对象
|
||
│ │ │ │ ├── common/ # 公共类
|
||
│ │ │ │ ├── config/ # 配置类
|
||
│ │ │ │ ├── security/ # 安全认证
|
||
│ │ │ │ ├── crawler/ # 新闻爬虫
|
||
│ │ │ │ ├── classifier/ # 文本分类器
|
||
│ │ │ │ ├── scheduler/ # 定时任务
|
||
│ │ │ │ └── exception/ # 异常处理
|
||
│ │ │ └── resources/
|
||
│ │ │ ├── mapper/ # MyBatis映射文件
|
||
│ │ │ └── application.yml # 配置文件
|
||
│ │ └── test/
|
||
│ └── pom.xml
|
||
├── frontend/ # 前端Tauri+Vue3项目
|
||
│ ├── src/
|
||
│ │ ├── api/ # API接口
|
||
│ │ ├── assets/ # 静态资源
|
||
│ │ ├── components/ # 组件
|
||
│ │ ├── composables/ # 组合式函数
|
||
│ │ ├── layouts/ # 布局
|
||
│ │ ├── router/ # 路由
|
||
│ │ ├── stores/ # 状态管理
|
||
│ │ ├── types/ # 类型定义
|
||
│ │ ├── utils/ # 工具函数
|
||
│ │ ├── views/ # 页面
|
||
│ │ ├── App.vue
|
||
│ │ └── main.ts
|
||
│ ├── src-tauri/ # Tauri Rust后端
|
||
│ ├── package.json
|
||
│ └── vite.config.ts
|
||
├── ml-module/ # 机器学习模块
|
||
│ ├── data/
|
||
│ │ ├── raw/ # 原始数据
|
||
│ │ └── processed/ # 处理后的数据
|
||
│ ├── models/ # 训练好的模型
|
||
│ ├── src/
|
||
│ │ ├── traditional/ # 传统机器学习算法
|
||
│ │ ├── deep_learning/ # 深度学习算法
|
||
│ │ └── hybrid/ # 混合策略
|
||
│ ├── notebooks/ # Jupyter notebooks
|
||
│ ├── tests/ # 测试
|
||
│ └── requirements.txt
|
||
├── docs/ # 文档
|
||
│ └── schema.sql # 数据库脚本
|
||
├── docker/ # Docker配置
|
||
│ └── docker-compose.yml
|
||
└── README.md
|
||
```
|
||
|
||
## 快速开始
|
||
|
||
### 环境要求
|
||
|
||
- **Java**: JDK 17 或更高版本
|
||
- **Node.js**: 18.x 或更高版本
|
||
- **Python**: 3.9+ (机器学习模块)
|
||
- **MySQL**: 8.0+
|
||
- **Redis**: 7.x+
|
||
- **Rust**: 1.70+ (Tauri需要)
|
||
|
||
### 1. 数据库初始化
|
||
|
||
```bash
|
||
# 创建数据库并执行初始化脚本
|
||
mysql -u root -p < docs/schema.sql
|
||
```
|
||
|
||
### 2. 后端启动
|
||
|
||
```bash
|
||
cd backend
|
||
|
||
# 修改配置文件中的数据库连接信息
|
||
# src/main/resources/application.yml
|
||
|
||
# 启动后端服务
|
||
mvn spring-boot:run
|
||
|
||
# 或者使用IDE运行 NewsClassifierApplication.java
|
||
```
|
||
|
||
后端服务地址: http://localhost:8080/api
|
||
API文档: http://localhost:8080/api/doc.html
|
||
|
||
### 3. 前端启动
|
||
|
||
```bash
|
||
cd frontend
|
||
|
||
# 安装依赖
|
||
npm install
|
||
|
||
# 开发模式运行
|
||
npm run tauri:dev
|
||
|
||
# 构建桌面应用
|
||
npm run tauri:build
|
||
```
|
||
|
||
### 4. 使用Docker
|
||
|
||
```bash
|
||
cd docker
|
||
|
||
# 启动所有服务
|
||
docker-compose up -d
|
||
|
||
# 停止服务
|
||
docker-compose down
|
||
```
|
||
|
||
### 5. 机器学习模块 (可选)
|
||
|
||
```bash
|
||
cd ml-module
|
||
|
||
# 创建虚拟环境
|
||
python -m venv venv
|
||
source venv/bin/activate # Linux/Mac
|
||
# venv\Scripts\activate # Windows
|
||
|
||
# 安装依赖
|
||
pip install -r requirements.txt
|
||
|
||
# 训练模型
|
||
python src/traditional/train_model.py
|
||
```
|
||
|
||
## 功能模块
|
||
|
||
| 模块名称 | 功能描述 | 状态 |
|
||
|---------|---------|------|
|
||
| 用户认证模块 | 注册/登录/JWT刷新/权限控制 | 待开发 |
|
||
| 新闻爬取模块 | 多源新闻抓取与清洗 | 已完成 |
|
||
| 文本分类模块 | 自动识别新闻类别 | 待开发 |
|
||
| 新闻展示模块 | 列表/详情/相关推荐 | 待开发 |
|
||
| 搜索模块 | 关键词全文检索 | 待开发 |
|
||
| 数据可视化模块 | 分类统计/热门排行/趋势图 | 待开发 |
|
||
| 后台管理模块 | 用户/新闻/分类/日志管理 | 待开发 |
|
||
| 系统设置模块 | 主题切换/缓存清理/自动更新 | 待开发 |
|
||
|
||
## 文本分类算法
|
||
|
||
系统支持三种分类方案:
|
||
|
||
1. **传统机器学习**: TF-IDF + 朴素贝叶斯/SVM
|
||
2. **深度学习**: BERT-Chinese预训练模型微调
|
||
3. **混合方案**: 规则引擎 + 机器学习置信度评分
|
||
|
||
## 开发规范
|
||
|
||
### 后端开发规范
|
||
- RESTful API设计
|
||
- 统一响应格式
|
||
- 全局异常处理
|
||
- 接口文档自动生成
|
||
|
||
### 前端开发规范
|
||
- TypeScript类型安全
|
||
- Composition API写法
|
||
- 统一的代码风格
|
||
- 响应式设计
|
||
|
||
## 预期成果
|
||
|
||
1. 功能完整的新闻文本分类系统
|
||
2. 中文新闻分类数据集 (5000+条)
|
||
3. 分类准确率 > 85%, F1-Score > 0.82
|
||
4. 跨平台桌面应用 (安装包 < 50MB)
|
||
|
||
## 作者
|
||
|
||
张俊恒
|
||
软件学院 22级11班
|
||
学号: 2210121328
|
||
|
||
## 许可证
|
||
|
||
MIT License
|