281 lines
6.8 KiB
Markdown
281 lines
6.8 KiB
Markdown
# 基于Python的中文文本分类系统
|
||
|
||
本项目是一个全面的中文文本分类系统,它基于TensorFlow框架,使用深度学习方法对中文文本进行自动分类。系统采用分层架构设计,由数据层、处理层、模型层和接口层四个主要层次构成。
|
||
|
||
## 功能特点
|
||
|
||
- 支持多种深度学习模型:CNN、RNN/LSTM、Transformer
|
||
- 完善的文本预处理:中文分词、停用词过滤、特征工程
|
||
- 丰富的评估指标:准确率、精确率、召回率、F1分数等
|
||
- 多种接口方式:命令行、Web界面、REST API
|
||
- 批量处理能力:支持批量文本、文件上传
|
||
|
||
## 系统架构
|
||
|
||
1. **数据层**:负责原始文本数据的存储和管理
|
||
2. **处理层**:实现文本预处理和特征工程
|
||
3. **模型层**:包含核心的分类模型,负责模型训练和预测
|
||
4. **接口层**:提供用户交互界面,支持数据输入输出和结果展示
|
||
|
||
## 安装方法
|
||
|
||
### 环境需求
|
||
|
||
- Python 3.7+
|
||
- TensorFlow 2.5+
|
||
- 其他依赖见 `requirements.txt`
|
||
|
||
### 安装步骤
|
||
|
||
1. 克隆仓库:
|
||
|
||
```bash
|
||
git clone https://git.sq0715.com/qin/Chinese_Text_Classification_System.git
|
||
cd chinese-text-classification
|
||
```
|
||
|
||
2. 创建虚拟环境(可选):
|
||
|
||
```bash
|
||
python -m venv venv
|
||
source venv/bin/activate # Linux/Mac
|
||
venv\Scripts\activate # Windows
|
||
```
|
||
|
||
3. 安装依赖:
|
||
|
||
```bash
|
||
pip install -r requirements.txt
|
||
```
|
||
|
||
4. 安装项目:
|
||
|
||
```bash
|
||
pip install -e .
|
||
```
|
||
|
||
## 使用方法
|
||
|
||
### 训练模型
|
||
|
||
使用以下命令训练模型:
|
||
|
||
```bash
|
||
python main.py train --data_dir path/to/data --model_type cnn --epochs 10 --batch_size 64
|
||
```
|
||
|
||
参数说明:
|
||
- `--data_dir`:数据目录,默认使用配置中的目录
|
||
- `--model_type`:模型类型,可选 'cnn', 'rnn', 'transformer'
|
||
- `--epochs`:训练轮数
|
||
- `--batch_size`:批大小
|
||
- `--save_dir`:模型保存目录
|
||
|
||
### 评估模型
|
||
|
||
使用以下命令评估模型:
|
||
|
||
```bash
|
||
python main.py evaluate --model_path path/to/model --data_dir path/to/data
|
||
```
|
||
|
||
参数说明:
|
||
- `--model_path`:模型路径
|
||
- `--data_dir`:数据目录,默认使用配置中的目录
|
||
- `--output_dir`:评估结果输出目录
|
||
|
||
### 预测文本
|
||
|
||
使用以下命令预测单条文本:
|
||
|
||
```bash
|
||
python main.py predict --text "这是一条测试文本" --model_path path/to/model
|
||
```
|
||
|
||
使用以下命令预测文件内容:
|
||
|
||
```bash
|
||
python main.py predict --file path/to/file.txt --model_path path/to/model
|
||
```
|
||
|
||
### 启动Web服务
|
||
|
||
使用以下命令启动Web服务:
|
||
|
||
```bash
|
||
python main.py web --host 0.0.0.0 --port 5000
|
||
```
|
||
|
||
然后在浏览器中访问 `http://localhost:5000`
|
||
|
||
### 启动API服务
|
||
|
||
使用以下命令启动API服务:
|
||
|
||
```bash
|
||
python main.py api --host 0.0.0.0 --port 8000
|
||
```
|
||
|
||
然后可以通过 `http://localhost:8000/docs` 查看API文档
|
||
|
||
### 使用命令行接口
|
||
|
||
使用以下命令启动交互式命令行接口:
|
||
|
||
```bash
|
||
python main.py cli --interactive
|
||
```
|
||
|
||
## 目录结构
|
||
|
||
```
|
||
text_classification_system/
|
||
│
|
||
├── config/ # 配置文件目录
|
||
├── data/ # 数据层
|
||
├── preprocessing/ # 处理层
|
||
├── models/ # 模型层
|
||
├── training/ # 训练相关
|
||
├── evaluation/ # 评估相关
|
||
├── inference/ # 推理相关
|
||
├── interface/ # 接口层
|
||
├── utils/ # 工具类
|
||
├── saved_models/ # 保存的模型
|
||
├── tests/ # 测试代码
|
||
├── docs/ # 文档
|
||
├── scripts/ # 脚本文件
|
||
│
|
||
├── main.py # 主入口文件
|
||
├── requirements.txt # 依赖列表
|
||
├── setup.py # 安装脚本
|
||
└── README.md # 项目说明
|
||
```
|
||
|
||
## 数据集
|
||
|
||
本项目使用的数据集是清华大学开源的THUCNews数据集,包含14个类别的新闻文本。您可以在以下位置下载数据集:
|
||
|
||
[THUCNews数据集下载链接](http://thuctc.thunlp.org/)
|
||
|
||
下载后,将数据解压到 `data/raw/THUCNews` 目录下。
|
||
|
||
## 许可证
|
||
|
||
本项目采用 MIT 许可证,详情请参见 LICENSE 文件。
|
||
|
||
## 贡献指南
|
||
|
||
欢迎贡献代码、报告问题或提出改进建议。请先fork本仓库,然后提交pull request。
|
||
|
||
## 联系方式
|
||
|
||
如有问题或建议,请通过 issue 或以下方式联系我们:
|
||
|
||
- 邮箱:your.email@example.com
|
||
```
|
||
|
||
# 如何使用这个文本分类系统
|
||
|
||
## 1. 安装项目
|
||
|
||
首先,确保您的环境满足以下要求:
|
||
- Python 3.7+
|
||
- TensorFlow 2.5+
|
||
|
||
安装步骤:
|
||
|
||
```bash
|
||
# 克隆代码(假设您已有代码)
|
||
cd text_classification
|
||
|
||
# 创建虚拟环境(可选)
|
||
python -m venv venv
|
||
source venv/bin/activate # Linux/Mac
|
||
# 或者在Windows上:
|
||
# venv\Scripts\activate
|
||
|
||
# 安装依赖
|
||
pip install -r requirements.txt
|
||
|
||
# 安装项目(可选)
|
||
pip install -e .
|
||
```
|
||
|
||
## 2. 数据准备
|
||
|
||
确保THUCNews数据集位于正确路径:
|
||
```
|
||
data/raw/THUCNews/
|
||
```
|
||
|
||
数据集应包含多个类别文件夹,每个文件夹中包含对应类别的文本文件。
|
||
|
||
## 3. 训练模型
|
||
|
||
使用以下命令训练CNN模型:
|
||
|
||
```bash
|
||
python main.py train --model_type cnn --epochs 10 --batch_size 64
|
||
```
|
||
|
||
您也可以尝试其他模型类型:
|
||
- RNN/LSTM模型: `--model_type rnn`
|
||
- Transformer模型: `--model_type transformer`
|
||
|
||
训练完成后,模型将保存在`saved_models/classifiers/`目录下。
|
||
|
||
## 4. 评估模型
|
||
|
||
使用以下命令评估模型性能:
|
||
|
||
```bash
|
||
python main.py evaluate --model_path path/to/your/model
|
||
```
|
||
|
||
评估结果将包括准确率、精确率、召回率、F1分数等指标,以及混淆矩阵可视化。
|
||
|
||
## 5. 使用模型预测
|
||
|
||
有多种方式使用训练好的模型:
|
||
|
||
### 命令行预测
|
||
```bash
|
||
# 预测单条文本
|
||
python main.py predict --text "2021年羽毛球冠军是林丹"
|
||
|
||
# 预测文件内容
|
||
python main.py predict --file path/to/your/file.txt
|
||
```
|
||
|
||
### 启动Web界面
|
||
```bash
|
||
python main.py web --port 5000
|
||
```
|
||
然后在浏览器中访问`http://localhost:5000`
|
||
|
||
### 启动API服务
|
||
```bash
|
||
python main.py api --port 8000
|
||
```
|
||
API文档可在`http://localhost:8000/docs`查看
|
||
|
||
### 交互式命令行
|
||
```bash
|
||
python main.py cli --interactive
|
||
```
|
||
|
||
## 6. 系统扩展
|
||
|
||
如需扩展系统功能:
|
||
|
||
1. 添加新模型:在`models/`目录下添加新的模型类
|
||
2. 调整预处理:修改`preprocessing/`目录下的相关模块
|
||
3. 添加新接口:在`interface/`目录下进行扩展
|
||
|
||
## 7. 常见问题解决
|
||
|
||
- 内存不足:减小`batch_size`或使用数据生成器
|
||
- 训练速度慢:调整模型复杂度,考虑使用GPU加速
|
||
- 分类准确率低:尝试不同模型结构,增加数据预处理步骤,调整超参数
|
||
|
||
这个完整的中文文本分类系统现在已经准备就绪,您可以根据上述说明开始训练和使用! |