news-classifier/README.md

224 lines
6.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 基于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