Back to Bettafish

微博情感分析 - 传统机器学习方法

SentimentAnalysisModel/WeiboSentiment_MachineLearning/README.md

3.0.02.8 KB
Original Source

微博情感分析 - 传统机器学习方法

项目介绍

本项目使用5种传统机器学习方法对中文微博进行情感二分类(正面/负面):

  • 朴素贝叶斯: 基于词袋模型的概率分类
  • SVM: 基于TF-IDF特征的支持向量机
  • XGBoost: 梯度提升决策树
  • LSTM: 循环神经网络 + Word2Vec词向量
  • BERT+分类头: 预训练语言模型接分类器(我认为也属于传统ML范畴)

模型性能

在微博情感数据集上的表现(训练集10000条,测试集500条):

模型准确率AUC特点
朴素贝叶斯85.6%-速度快,内存占用小
SVM85.6%-泛化能力好
XGBoost86.0%90.4%性能稳定,支持特征重要性
LSTM87.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 > 朴素贝叶斯