Files
bettafish-company/WeiboSentiment_MachineLearning/README.md
T

108 lines
2.8 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.
# 微博情感分析 - 传统机器学习方法
## 项目介绍
本项目使用5种传统机器学习方法对中文微博进行情感二分类(正面/负面):
- **朴素贝叶斯**: 基于词袋模型的概率分类
- **SVM**: 基于TF-IDF特征的支持向量机
- **XGBoost**: 梯度提升决策树
- **LSTM**: 循环神经网络 + Word2Vec词向量
- **BERT+分类头**: 预训练语言模型接分类器(我认为也属于传统ML范畴)
## 模型性能
在微博情感数据集上的表现(训练集10000条,测试集500条):
| 模型 | 准确率 | AUC | 特点 |
|------|--------|-----|------|
| 朴素贝叶斯 | 85.6% | - | 速度快,内存占用小 |
| SVM | 85.6% | - | 泛化能力好 |
| XGBoost | 86.0% | 90.4% | 性能稳定,支持特征重要性 |
| LSTM | 87.0% | 93.1% | 理解序列信息和上下文 |
| BERT+分类头 | 87.0% | 92.9% | 强大的语义理解能力 |
## 环境配置
```bash
pip install -r requirements.txt
```
数据文件结构:
```
data/
├── weibo2018/
│ ├── train.txt
│ └── test.txt
└── stopwords.txt
```
## 训练模型(后面可以不接参数直接运行)
### 朴素贝叶斯
```bash
python bayes_train.py
```
### SVM
```bash
python svm_train.py --kernel rbf --C 1.0
```
### XGBoost
```bash
python xgboost_train.py --max_depth 6 --eta 0.3 --num_boost_round 200
```
### LSTM
```bash
python lstm_train.py --epochs 5 --batch_size 100 --hidden_size 64
```
### BERT
```bash
python bert_train.py --epochs 10 --batch_size 100 --learning_rate 1e-3
```
注:BERT模型会自动下载中文预训练模型(bert-base-chinese
## 使用预测
### 交互式预测(推荐)
```bash
python predict.py
```
### 命令行预测
```bash
# 单模型预测
python predict.py --model_type bert --text "今天天气真好,心情很棒"
# 多模型集成预测
python predict.py --ensemble --text "这部电影太无聊了"
```
## 文件结构
```
WeiboSentiment_MachineLearning/
├── bayes_train.py # 朴素贝叶斯训练
├── svm_train.py # SVM训练
├── xgboost_train.py # XGBoost训练
├── lstm_train.py # LSTM训练
├── bert_train.py # BERT训练
├── predict.py # 统一预测程序
├── base_model.py # 基础模型类
├── utils.py # 工具函数
├── requirements.txt # 依赖包
├── model/ # 模型保存目录
└── data/ # 数据目录
```
## 注意事项
1. **BERT模型**首次运行会自动下载预训练模型(约400MB)
2. **LSTM模型**训练时间较长,建议使用GPU
3. **模型保存**在 `model/` 目录下,确保有足够磁盘空间
4. **内存需求**BERT > LSTM > XGBoost > SVM > 朴素贝叶斯