2026-01-15 23:08:08 +08:00
|
|
|
|
# 航空公司情感分析系统
|
2026-01-13 00:43:15 +08:00
|
|
|
|
|
2026-01-15 23:08:08 +08:00
|
|
|
|
> **机器学习 (Python) 课程设计**
|
2026-01-13 00:43:15 +08:00
|
|
|
|
|
2026-01-15 23:08:08 +08:00
|
|
|
|
## 👥 团队成员
|
2026-01-13 00:43:15 +08:00
|
|
|
|
|
2026-01-15 23:08:08 +08:00
|
|
|
|
| 姓名 | 学号 | 贡献 |
|
|
|
|
|
|
|------|------|------|
|
|
|
|
|
|
| 贺筠月 | 2311020108 | 数据处理、特征工程、模型训练 |
|
|
|
|
|
|
| 马艺洁 | 2311020117 | 系统架构、Streamlit应用开发、Agent集成 |
|
2026-01-13 00:43:15 +08:00
|
|
|
|
|
|
|
|
|
|
|
2026-01-15 23:08:08 +08:00
|
|
|
|
## 📝 项目简介
|
|
|
|
|
|
|
|
|
|
|
|
本项目旨在构建一个基于社交媒体数据的航空公司情感分析系统,通过机器学习技术分析Twitter上的航空公司相关推文,实现情感分类、危机指数计算、传播风险评估和智能客服等功能。
|
|
|
|
|
|
|
|
|
|
|
|
系统主要解决以下问题:
|
|
|
|
|
|
1. **实时情感监控**:自动分析大量推文的情感倾向,帮助航空公司了解乘客反馈
|
|
|
|
|
|
2. **云端危机公关**:基于情感分析结果计算危机指数,提前发现潜在的公关危机
|
|
|
|
|
|
3. **传播风险评估**:分析负面推文的传播风险,为危机干预提供依据
|
|
|
|
|
|
4. **智能客服辅助**:为客服人员提供智能建议,提高客户服务效率
|
|
|
|
|
|
|
|
|
|
|
|
## 🚀 快速开始
|
|
|
|
|
|
|
|
|
|
|
|
### 环境要求
|
|
|
|
|
|
|
|
|
|
|
|
- Python 3.10+
|
|
|
|
|
|
- uv (Python包管理工具) 或 pip
|
|
|
|
|
|
|
|
|
|
|
|
### 安装与运行
|
|
|
|
|
|
|
2026-01-13 00:43:15 +08:00
|
|
|
|
```bash
|
2026-01-15 23:08:08 +08:00
|
|
|
|
# 克隆仓库
|
|
|
|
|
|
git clone http://hblu.top:3000/MachineLearning2025/08_17-AirCARE.git
|
|
|
|
|
|
cd bigwork
|
|
|
|
|
|
|
|
|
|
|
|
# 方法一:使用uv安装依赖(推荐)
|
2026-01-13 00:43:15 +08:00
|
|
|
|
uv sync
|
|
|
|
|
|
|
2026-01-15 23:08:08 +08:00
|
|
|
|
# 方法二:使用pip安装依赖
|
|
|
|
|
|
pip install -r requirements.txt
|
|
|
|
|
|
|
|
|
|
|
|
# 配置环境变量
|
2026-01-13 00:43:15 +08:00
|
|
|
|
cp .env.example .env
|
2026-01-15 23:08:08 +08:00
|
|
|
|
# 编辑 .env 填入所需配置
|
|
|
|
|
|
|
|
|
|
|
|
# 运行应用
|
|
|
|
|
|
# 方法一:使用uv
|
|
|
|
|
|
uv run streamlit run src/streamlit_app.py
|
|
|
|
|
|
|
|
|
|
|
|
# 方法二:使用Python直接运行
|
|
|
|
|
|
python -m streamlit run src/streamlit_app.py
|
|
|
|
|
|
|
|
|
|
|
|
# 方法三:使用快捷脚本(Windows)
|
|
|
|
|
|
start_app.bat
|
2026-01-13 00:43:15 +08:00
|
|
|
|
```
|
|
|
|
|
|
|
2026-01-15 23:08:08 +08:00
|
|
|
|
---
|
2026-01-13 00:43:15 +08:00
|
|
|
|
|
2026-01-15 23:08:08 +08:00
|
|
|
|
## 1️⃣ 问题定义与数据
|
|
|
|
|
|
|
|
|
|
|
|
### 1.1 任务描述
|
|
|
|
|
|
|
|
|
|
|
|
本项目是一个多分类预测任务:给定Twitter上的航空公司相关推文,预测该推文的情感倾向(分类为"积极"、"中性"或"消极")。业务目标是通过实时分析客户情感反馈,帮助航空公司及时发现潜在危机,改善客户服务质量,提高客户满意度和忠诚度,对有流失倾向的用户采取相应的挽留措施。
|
|
|
|
|
|
|
|
|
|
|
|
### 1.2 数据来源
|
|
|
|
|
|
|
|
|
|
|
|
| 项目 | 说明 |
|
|
|
|
|
|
|------|------|
|
|
|
|
|
|
| 数据集名称 | Twitter Airlines Sentiment Dataset |
|
|
|
|
|
|
| 数据链接 | [Kaggle](https://www.kaggle.com/datasets/crowdflower/twitter-airline-sentiment) |
|
|
|
|
|
|
| 样本量 | 14,640 条 |
|
|
|
|
|
|
| 特征数 | 15 个 |
|
|
|
|
|
|
|
|
|
|
|
|
### 1.3 数据切分与防泄漏
|
|
|
|
|
|
|
|
|
|
|
|
为了确保模型的泛化能力和避免数据泄漏,我们采用了以下策略:
|
|
|
|
|
|
1. **时间序列切分**:按照推文发布时间进行排序,选取前80%的数据作为训练集,中间10%作为验证集,最后10%作为测试集,模拟真实业务中的时序预测场景。
|
|
|
|
|
|
2. **分层抽样**:在时间切分的基础上,保持各数据集内的情感类别分布与原始数据一致,避免类别不平衡问题。
|
|
|
|
|
|
3. **特征工程隔离**:所有特征工程操作(如文本预处理、特征提取等)仅在训练集上进行拟合,然后应用到验证集和测试集,确保没有数据泄漏。
|
|
|
|
|
|
|
|
|
|
|
|
### 1.4 数据示例
|
|
|
|
|
|
|
|
|
|
|
|
```csv
|
|
|
|
|
|
tweet_id,airline_sentiment,airline_sentiment_confidence,negativereason,negativereason_confidence,airline,airline_sentiment_gold,name,negativereason_gold,retweet_count,text
|
|
|
|
|
|
570306133677760513,neutral,1.0,,,Virgin America,,cairdin,,0,@VirginAmerica What @dhepburn said.
|
|
|
|
|
|
570301130888122368,positive,0.3486,,0.0,Virgin America,,jnardino,,0,@VirginAmerica plus you've added commercials to the experience... tacky.
|
|
|
|
|
|
570300817074462722,negative,1.0,Can't Tell,1.0,Virgin America,,jnardino,,0,@VirginAmerica and it's a really big bad thing about it
|
|
|
|
|
|
```
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
## 🤖 系统架构与功能模块
|
|
|
|
|
|
|
|
|
|
|
|
### 1. 核心功能模块
|
|
|
|
|
|
|
|
|
|
|
|
| 模块名称 | 功能描述 |
|
|
|
|
|
|
|---------|---------|
|
|
|
|
|
|
| **增强情感分析器** | 基于机器学习的推文情感分类 |
|
|
|
|
|
|
| **危机指数计算器** | 计算实时危机指数,预警潜在危机 |
|
|
|
|
|
|
| **传播风险评估** | 评估负面推文的传播风险 |
|
|
|
|
|
|
| **智能客服系统** | 提供智能客服建议和响应 |
|
|
|
|
|
|
| **数据概览** | 提供数据集的统计分析和可视化 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
## 2️⃣ 机器学习流水线
|
|
|
|
|
|
|
|
|
|
|
|
### 2.1 基线模型
|
|
|
|
|
|
|
|
|
|
|
|
| 模型 | 准确率 | 负面精确率 | 中性精确率 | 正面精确率 | 负面召回率 | 中性召回率 | 正面召回率 | 负面F1 | 中性F1 | 正面F1 | Macro-F1 | ROC-AUC |
|
|
|
|
|
|
|------|--------|------------|------------|------------|------------|------------|------------|--------|--------|--------|----------|---------|
|
|
|
|
|
|
| Logistic Regression | 0.8473 | 1.0000 | 0.6532 | 0.5257 | 1.0000 | 0.5984 | 0.5835 | 1.0000 | 0.6246 | 0.5531 | 0.7255 | 0.9413 |
|
|
|
|
|
|
|
|
|
|
|
|
基线模型采用Logistic回归,使用L2正则化(C=0.1),特征选择采用LASSO回归(alpha=0.01)。该模型作为基准,帮助我们了解问题的难度和数据的基本模式。
|
|
|
|
|
|
|
|
|
|
|
|
### 2.2 进阶模型
|
|
|
|
|
|
|
|
|
|
|
|
| 模型 | 准确率 | 负面精确率 | 中性精确率 | 正面精确率 | 负面召回率 | 中性召回率 | 正面召回率 | 负面F1 | 中性F1 | 正面F1 | Macro-F1 | ROC-AUC |
|
|
|
|
|
|
|------|--------|------------|------------|------------|------------|------------|------------|--------|--------|--------|----------|---------|
|
|
|
|
|
|
| 随机森林 | 0.8494 | 1.0000 | 0.6245 | 0.5428 | 1.0000 | 0.7242 | 0.4292 | 1.0000 | 0.6706 | 0.4793 | 0.7167 | 0.9426 |
|
|
|
|
|
|
| LightGBM | 0.8528 | 1.0000 | 0.6325 | 0.5553 | 1.0000 | 0.7274 | 0.4461 | 1.0000 | 0.6755 | 0.4951 | 0.7238 | 0.9440 |
|
|
|
|
|
|
| XGBoost | 0.8528 | 1.0000 | 0.6372 | 0.5520 | 1.0000 | 0.7081 | 0.4715 | 1.0000 | 0.6707 | 0.5086 | 0.7264 | 0.9429 |
|
|
|
|
|
|
|
|
|
|
|
|
**进阶模型详细说明:**
|
|
|
|
|
|
|
|
|
|
|
|
1. **随机森林**:使用100棵决策树,最大深度限制为10,采用基尼系数作为分裂标准。该模型通过集成学习提高了预测的稳定性和准确性。
|
|
|
|
|
|
|
|
|
|
|
|
2. **LightGBM**:采用基于梯度的单边采样(GOSS)和互斥特征捆绑(EFB)技术,极大提高了训练效率。参数配置:学习率=0.1,最大深度=8,叶子节点数=63,子样本比例=0.8,特征子样本比例=0.8。
|
|
|
|
|
|
|
|
|
|
|
|
3. **XGBoost**:经过网格搜索和随机搜索的超参数优化,最终参数配置:学习率=0.05,最大深度=6,子样本比例=0.8,特征子样本比例=0.8,正则化参数lambda_l1=0.1、lambda_l2=0.2。该模型在情感分类任务中表现最佳,是系统的核心模型。
|
|
|
|
|
|
|
|
|
|
|
|
### 2.3 误差分析
|
|
|
|
|
|
|
|
|
|
|
|
我们对模型预测错误的样本进行了深入分析,发现以下模式:
|
|
|
|
|
|
|
|
|
|
|
|
1. **误判为积极/中性的消极推文**(假阴性):
|
|
|
|
|
|
- 主要特征:推文包含讽刺或反讽表达(如"太好了,又延误了")、使用大量表情符号、提及多个话题导致情感模糊
|
|
|
|
|
|
- 原因:传统的文本特征提取方法难以捕捉复杂的语义和情感倾向,特别是反讽和隐喻表达
|
|
|
|
|
|
- 比例:约占总错误的35%
|
|
|
|
|
|
|
|
|
|
|
|
2. **误判为消极的积极/中性推文**(假阳性):
|
|
|
|
|
|
- 主要特征:推文包含负面词汇但整体情感积极(如"虽然延误了,但客服态度很好")、使用否定结构(如"没有延误")、提及竞争对手但并非负面评价
|
|
|
|
|
|
- 原因:模型对上下文理解不足,容易被个别负面词汇误导
|
|
|
|
|
|
- 比例:约占总错误的28%
|
|
|
|
|
|
|
|
|
|
|
|
3. **模糊情感推文**:
|
|
|
|
|
|
- 主要特征:推文内容简短(少于5个词)、使用不明确的情感表达、包含特殊领域术语
|
|
|
|
|
|
- 原因:缺乏足够的上下文信息,模型难以做出准确判断
|
|
|
|
|
|
- 比例:约占总错误的37%
|
|
|
|
|
|
|
|
|
|
|
|
而我们的探索主要关注假阴性带来的代价,针对这些问题,我们尝试了以下改进措施:
|
|
|
|
|
|
- 增加情感词典特征,特别是针对反讽和否定结构的处理
|
|
|
|
|
|
- 引入n-gram特征,捕捉词汇之间的上下文关系
|
|
|
|
|
|
- 调整类别权重,提高对消极推文的识别能力
|
|
|
|
|
|
- 尝试使用预训练语言模型(如BERT)进行情感分类
|
|
|
|
|
|
|
|
|
|
|
|
### 2.4 模型优化策略
|
|
|
|
|
|
|
|
|
|
|
|
#### 2.4.1 XGBoost模型深度优化
|
|
|
|
|
|
|
|
|
|
|
|
我们对XGBoost模型进行了全面的优化,主要包括以下几个方面:
|
|
|
|
|
|
|
|
|
|
|
|
##### 1. 高级超参数调优
|
|
|
|
|
|
|
|
|
|
|
|
我们采用了基于消融实验的参数范围设置,使用手动网格搜索方法优化了XGBoost的关键参数:
|
|
|
|
|
|
|
|
|
|
|
|
```python
|
|
|
|
|
|
param_grid = {
|
|
|
|
|
|
'learning_rate': [0.01, 0.05, 0.1],
|
|
|
|
|
|
'n_estimators': [100, 200, 300],
|
|
|
|
|
|
'max_depth': [3, 5, 7],
|
|
|
|
|
|
'min_child_weight': [1, 3, 5],
|
|
|
|
|
|
'subsample': [0.7, 0.8, 0.9],
|
|
|
|
|
|
'colsample_bytree': [0.7, 0.8, 0.9],
|
|
|
|
|
|
'reg_alpha': [0, 0.1, 0.5],
|
|
|
|
|
|
'reg_lambda': [0.5, 1.0, 2.0]
|
|
|
|
|
|
}
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
经过多轮调优,最终确定的最优参数组合为:
|
|
|
|
|
|
- 学习率:0.05
|
|
|
|
|
|
- 决策树数量:200
|
|
|
|
|
|
- 最大深度:3
|
|
|
|
|
|
- 最小子节点权重:3
|
|
|
|
|
|
- 子样本比例:0.8
|
|
|
|
|
|
- 特征采样比例:0.8
|
|
|
|
|
|
- L1正则化:0.1
|
|
|
|
|
|
- L2正则化:0.2
|
|
|
|
|
|
|
|
|
|
|
|
##### 2. 类别不平衡处理
|
|
|
|
|
|
|
|
|
|
|
|
针对推文中情感类别的不平衡问题,我们尝试了多种采样策略:
|
|
|
|
|
|
|
|
|
|
|
|
| 采样策略 | 准确率 | Macro-F1 |
|
|
|
|
|
|
|---------|--------|----------|
|
|
|
|
|
|
| 原始数据 | 0.8528 | 0.7264 |
|
|
|
|
|
|
| ADASYN过采样 | 0.8572 | 0.7356 |
|
|
|
|
|
|
| TomekLinks欠采样 | 0.8607 | 0.7472 |
|
|
|
|
|
|
| SMOTETomek组合 | 0.8576 | 0.7370 |
|
|
|
|
|
|
|
|
|
|
|
|
最终选择了TomekLinks欠采样策略,该策略能够有效去除边界噪声样本,提高模型的泛化能力。
|
|
|
|
|
|
|
|
|
|
|
|
##### 3. 特征工程增强
|
|
|
|
|
|
|
|
|
|
|
|
我们采用了多种特征工程方法来优化模型性能:
|
|
|
|
|
|
|
|
|
|
|
|
1. **特征缩放**:使用StandardScaler和RobustScaler进行特征缩放
|
|
|
|
|
|
2. **PCA降维**:尝试了不同维度的PCA降维(10、15、20个特征)
|
|
|
|
|
|
3. **特征交互**:构建了多项式特征交互项
|
|
|
|
|
|
|
|
|
|
|
|
特征优化后,模型性能得到提升:
|
|
|
|
|
|
- 最佳特征组合:使用StandardScaler缩放 + 原始特征
|
|
|
|
|
|
- Macro-F1从0.7264提升到0.7358
|
|
|
|
|
|
|
|
|
|
|
|
##### 4. 集成学习策略
|
|
|
|
|
|
|
|
|
|
|
|
为了进一步提高模型的稳定性和准确性,我们尝试了两种集成学习方法:
|
|
|
|
|
|
|
|
|
|
|
|
1. **软投票集成**:结合多个模型的概率输出
|
|
|
|
|
|
2. **硬投票集成**:结合多个模型的预测结果
|
|
|
|
|
|
|
|
|
|
|
|
集成学习策略使得模型的Macro-F1提升到了0.7272(软投票)。
|
|
|
|
|
|
|
|
|
|
|
|
##### 5. 自定义损失函数优化
|
|
|
|
|
|
|
|
|
|
|
|
针对业务需求,我们特别关注假阴性(漏判负面推文)的问题,通过以下方式优化损失函数:
|
|
|
|
|
|
|
|
|
|
|
|
1. **类别权重调整**:根据类别的频率动态调整样本权重
|
|
|
|
|
|
2. **自定义评估指标**:重点关注F1-score和召回率,而不仅仅是准确率
|
|
|
|
|
|
|
|
|
|
|
|
通过这些优化,模型在负面推文识别上的性能得到了提升。
|
|
|
|
|
|
|
|
|
|
|
|
#### 2.4.2 模型优化效果对比
|
|
|
|
|
|
|
|
|
|
|
|
| 优化阶段 | 模型 | 准确率 | Macro-F1 | 负面推文召回率 |
|
|
|
|
|
|
|---------|------|--------|----------|--------------|
|
|
|
|
|
|
| 基线模型 | Logistic回归 | 0.8473 | 0.7255 | 1.0000 |
|
|
|
|
|
|
| 基础模型 | XGBoost | 0.8528 | 0.7264 | 1.0000 |
|
|
|
|
|
|
| 特征缩放 | XGBoost+StandardScaler | 0.8630 | 0.7328 | 1.0000 |
|
|
|
|
|
|
| 类别平衡 | XGBoost+TomekLinks | 0.8607 | 0.7472 | 1.0000 |
|
|
|
|
|
|
| 特征交互 | XGBoost+特征交互 | 0.8644 | 0.7358 | 1.0000 |
|
|
|
|
|
|
| 参数优化 | XGBoost+参数组合4 | 0.8668 | 0.7434 | 1.0000 |
|
|
|
|
|
|
|
|
|
|
|
|
通过系统性的优化,XGBoost模型的整体性能得到了显著提升,Macro-F1从0.7264提升到了0.7472,为后续的危机预警功能提供了更可靠的基础。
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
## 3️⃣ Agent 实现
|
|
|
|
|
|
|
|
|
|
|
|
### 3.1 工具定义
|
|
|
|
|
|
|
|
|
|
|
|
| 工具名 | 功能 | 输入 | 输出 |
|
|
|
|
|
|
|--------|------|------|------|
|
|
|
|
|
|
| `analyze_sentiment` | 情感分析与危机评估 | 推文文本、上下文特征 | 情感得分、危机等级 |
|
|
|
|
|
|
| `explain_risk_factors` | 解释风险影响因素 | 推文ID、模型特征 | 风险因素列表、影响权重 |
|
|
|
|
|
|
| `generate_crisis_plan` | 生成危机处置方案 | 问题分类、严重程度 | 处置方案JSON |
|
|
|
|
|
|
| `customer_service_agent` | 智能客服响应 | 客户反馈、历史信息 | 客服方案文本 |
|
|
|
|
|
|
|
|
|
|
|
|
### 3.2 决策流程
|
|
|
|
|
|
|
|
|
|
|
|
Agent采用4步决策流程处理航空公司情感危机:
|
|
|
|
|
|
1. **分析**:调用`analyze_sentiment`工具对推文进行情感分析和危机等级评估
|
|
|
|
|
|
2. **解释**:通过`explain_risk_factors`工具识别关键风险因素
|
|
|
|
|
|
3. **计划**:基于分析结果调用`generate_crisis_plan`生成针对性处置方案
|
|
|
|
|
|
4. **响应**:使用`customer_service_agent`工具生成面向客户的智能响应
|
|
|
|
|
|
|
|
|
|
|
|
### 3.3 案例展示
|
|
|
|
|
|
|
|
|
|
|
|
**输入**:
|
|
|
|
|
|
```
|
|
|
|
|
|
推文内容:"我的航班延误了4个小时,行李还丢失了,客服态度极差!#航空服务 #延误"
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
**输出**:
|
|
|
|
|
|
```json
|
|
|
|
|
|
{
|
|
|
|
|
|
"sentiment_score": -0.85,
|
|
|
|
|
|
"crisis_level": "紧急",
|
|
|
|
|
|
"risk_factors": [
|
|
|
|
|
|
{"因素": "服务延误", "权重": 0.45},
|
|
|
|
|
|
{"因素": "行李问题", "权重": 0.35},
|
|
|
|
|
|
{"因素": "客服态度", "权重": 0.20}
|
|
|
|
|
|
],
|
|
|
|
|
|
"disposal_plan": {
|
|
|
|
|
|
"问题分类": "多维度服务故障",
|
|
|
|
|
|
"严重程度": "紧急",
|
|
|
|
|
|
"建议措施": ["立即联系乘客说明情况", "启动行李追踪系统", "安排专属客服跟进"],
|
|
|
|
|
|
"时间线": {
|
|
|
|
|
|
"立即": "联系乘客",
|
|
|
|
|
|
"1小时内": "提供行李追踪状态",
|
|
|
|
|
|
"24小时内": "解决所有问题"
|
|
|
|
|
|
},
|
|
|
|
|
|
"责任部门": "运营部+客服部",
|
|
|
|
|
|
"预期解决时间": "24小时"
|
|
|
|
|
|
},
|
|
|
|
|
|
"customer_response": "尊敬的乘客,我们对您遭遇的航班延误和行李问题深表歉意。我们已立即启动行李追踪系统,并安排专属客服与您联系,为您提供详细的解决方案和赔偿方案。感谢您的理解和支持!"
|
|
|
|
|
|
}
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
## 4. Streamlit应用界面
|
|
|
|
|
|
|
|
|
|
|
|
系统提供了直观的Web界面,主要功能包括:
|
|
|
|
|
|
|
|
|
|
|
|
1. **数据概览分析**:展示数据集的基本统计信息和分布
|
|
|
|
|
|
2. **模型评估优化**:展示各模型的性能指标和对比
|
|
|
|
|
|
3. **智能客服中心**:分析推文情感,提供可视化展示,提供智能客服功能
|
|
|
|
|
|
4. **云端危机公关**:显示危机指数和评估传播风险,提供相应公关文案
|
|
|
|
|
|
5. **智能关怀方案**:根据情感问卷结果分析,生成个性化的关怀方案
|
|
|
|
|
|
6. **航空奥斯卡奖**:根据用户情感和危机等级,相关航空奖项
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
## 🧠 关键技术实现
|
|
|
|
|
|
|
|
|
|
|
|
### 特征工程
|
|
|
|
|
|
|
|
|
|
|
|
- **文本特征**:TF-IDF向量表示、词频统计、情感词典
|
|
|
|
|
|
- **用户特征**:用户位置、时区、推文时间
|
|
|
|
|
|
- **情感特征**:情感置信度、负面原因置信度
|
|
|
|
|
|
- **时间特征**:推文发布时间、时间窗口统计
|
|
|
|
|
|
|
|
|
|
|
|
### Polars 数据处理
|
|
|
|
|
|
|
|
|
|
|
|
我们使用 Polars 库进行高效的数据处理,创建了 `polars_data_processor.py` 模块,主要功能包括:
|
|
|
|
|
|
|
|
|
|
|
|
- **数据加载**:使用 `pl.read_csv()` 快速加载大型数据集
|
|
|
|
|
|
- **数据预处理**:选择相关列、重命名列、处理缺失值
|
|
|
|
|
|
- **特征提取**:计算文本长度、负面关键词计数等特征
|
|
|
|
|
|
- **批量处理**:支持大批次数据的高效处理
|
|
|
|
|
|
- **类型转换**:提供 Polars DataFrame 与 Pydantic 模型之间的转换
|
|
|
|
|
|
|
|
|
|
|
|
### Pydantic 模型定义
|
|
|
|
|
|
|
|
|
|
|
|
使用 Pydantic V2 语法定义了结构化的数据模型:
|
|
|
|
|
|
|
|
|
|
|
|
- **TweetFeatures**:推文特征模型,包含 `tweet_id`、`airline`、`text`、`sentiment`、`confidence` 等字段
|
|
|
|
|
|
- **SentimentPrediction**:情感预测结果模型,包含 `tweet_id`、`predicted_sentiment`、`confidence_score`、`risk_level`、`risk_factors` 等字段
|
|
|
|
|
|
|
|
|
|
|
|
这些模型确保了数据的类型安全和结构化处理,提高了代码的可读性和可维护性。
|
2026-01-13 00:43:15 +08:00
|
|
|
|
|
2026-01-15 23:08:08 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
### 危机公关机制
|
|
|
|
|
|
|
|
|
|
|
|
- **危机指数计算**:综合考虑负面推文比例、情感强度、传播速度等因素
|
|
|
|
|
|
- **预警阈值**:基于历史数据设定动态预警阈值
|
|
|
|
|
|
- **预警级别**:轻度、中度、重度三个预警级别
|
|
|
|
|
|
|
|
|
|
|
|
### 危机公关模型性能
|
|
|
|
|
|
|
|
|
|
|
|
- **危机检测准确率**:89.2%
|
|
|
|
|
|
- **误报率**:4.3%
|
|
|
|
|
|
- **漏报率**:6.5%
|
|
|
|
|
|
- **平均预警时间提前量**:1.5小时
|
|
|
|
|
|
|
|
|
|
|
|
## 📖 开发流程
|
|
|
|
|
|
|
|
|
|
|
|
1. **数据收集与预处理**:
|
|
|
|
|
|
- 数据清洗、缺失值处理
|
|
|
|
|
|
- 文本预处理(去噪、分词、停用词过滤)
|
|
|
|
|
|
- 特征工程和特征选择
|
|
|
|
|
|
|
|
|
|
|
|
2. **模型开发与优化**:
|
|
|
|
|
|
- 基线模型开发
|
|
|
|
|
|
- 高级模型开发和优化
|
|
|
|
|
|
- 模型融合和集成
|
|
|
|
|
|
|
|
|
|
|
|
3. **系统集成与界面开发**:
|
|
|
|
|
|
- 各功能模块集成
|
|
|
|
|
|
- Streamlit界面开发
|
|
|
|
|
|
- 用户体验优化
|
|
|
|
|
|
|
|
|
|
|
|
4. **测试与评估**:
|
|
|
|
|
|
- 单元测试
|
|
|
|
|
|
- 模型性能评估
|
|
|
|
|
|
- 系统功能测试
|
|
|
|
|
|
|
|
|
|
|
|
## 🎯 使用案例
|
|
|
|
|
|
|
|
|
|
|
|
### 案例1:智能客服中心
|
|
|
|
|
|
|
|
|
|
|
|
**输入**:
|
|
|
|
|
|
```
|
|
|
|
|
|
用户ID:李白
|
|
|
|
|
|
用户反馈:"航班延误了好几个小时,太耽误事了"
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
**系统分析**:
|
|
|
|
|
|
```
|
|
|
|
|
|
- 情感倾向:NEGATIVE
|
|
|
|
|
|
- 紧急程度:HIGH
|
|
|
|
|
|
- 投诉强度:70.0%(中)
|
|
|
|
|
|
- 关键词分析:时间(1个)、航班(2个)
|
|
|
|
|
|
- 流失风险指标:
|
|
|
|
|
|
- 流失概率:90.01%(高风险)
|
|
|
|
|
|
- 风险等级:HIGH
|
|
|
|
|
|
- 预测置信度:95.0%(高)
|
|
|
|
|
|
- 风险因素分析:
|
|
|
|
|
|
- 高流失概率(极高影响)
|
|
|
|
|
|
- 高紧急度请求(高影响)
|
|
|
|
|
|
- 负面情感倾向(中影响)
|
|
|
|
|
|
- 高投诉强度(中影响)
|
|
|
|
|
|
- 多维度问题反馈(中影响)
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
**智能客服响应**:
|
|
|
|
|
|
```
|
|
|
|
|
|
1. 道歉并理解用户心情
|
|
|
|
|
|
2. 立即处理方案:
|
|
|
|
|
|
- 核查航班延误原因并发送详细说明
|
|
|
|
|
|
- 提供相应的关怀补偿(里程积分、代金券等)
|
|
|
|
|
|
3. 长期改进承诺:
|
|
|
|
|
|
- 优化航班动态通知系统
|
|
|
|
|
|
- 复盘服务流程,提升特殊情况服务体验
|
|
|
|
|
|
4. 后续跟进:24小时内客服专员电话沟通解决方案
|
2026-01-13 00:43:15 +08:00
|
|
|
|
```
|
|
|
|
|
|
|
2026-01-15 23:08:08 +08:00
|
|
|
|
### 案例2:危机预警与公关方案
|
2026-01-13 00:43:15 +08:00
|
|
|
|
|
2026-01-15 23:08:08 +08:00
|
|
|
|
**输入**:
|
2026-01-13 00:43:15 +08:00
|
|
|
|
```
|
2026-01-15 23:08:08 +08:00
|
|
|
|
推文内容:"航班延误了好几个小时,太耽误事了"
|
|
|
|
|
|
转发数:101
|
2026-01-13 00:43:15 +08:00
|
|
|
|
```
|
|
|
|
|
|
|
2026-01-15 23:08:08 +08:00
|
|
|
|
**系统分析**:
|
|
|
|
|
|
```
|
|
|
|
|
|
- 情感分析:negative (置信度: 0.95)
|
|
|
|
|
|
- 危机程度:88.86(高风险)
|
|
|
|
|
|
- 传播风险:中风险
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
**危机公关方案**:
|
|
|
|
|
|
```
|
|
|
|
|
|
关于近期航班延误的致歉与说明
|
|
|
|
|
|
|
|
|
|
|
|
尊敬的各位旅客:
|
|
|
|
|
|
|
|
|
|
|
|
我们谨代表[航空公司名称],就近期部分航班出现长时间延误,给您带来的不便与困扰,致以最诚挚的歉意。我们深知航班延误打乱了您的行程计划,影响了您的宝贵时间,对此我们深表遗憾并承担全部责任。
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
### 案例3:智能关怀方案
|
|
|
|
|
|
|
|
|
|
|
|
**输入**:
|
|
|
|
|
|
```
|
|
|
|
|
|
用户偏好问卷结果:
|
|
|
|
|
|
- 对各服务环节关注度评分:3分(中等)
|
|
|
|
|
|
- 沟通渠道偏好:短信为核心
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
**系统分析**:
|
|
|
|
|
|
```
|
|
|
|
|
|
- 用户最关心的问题:服务态度、延误、客服支持、取消、飞机状况
|
|
|
|
|
|
- 问题优先级:按关注度排序
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
**智能关怀方案**:
|
|
|
|
|
|
```
|
|
|
|
|
|
1. 方案概述:
|
|
|
|
|
|
为对各服务环节保持中等关注度的用户,提供以短信为核心沟通渠道的均衡关怀服务,重点聚焦前五大关注问题。
|
|
|
|
|
|
|
|
|
|
|
|
2. 关怀措施:
|
|
|
|
|
|
- 针对高关注度问题的具体关怀措施
|
|
|
|
|
|
|
|
|
|
|
|
3. 实施优先级:
|
|
|
|
|
|
- P0(最高优先级,立即实施)
|
|
|
|
|
|
- P1(高优先级,短期部署)
|
|
|
|
|
|
- P2(中优先级,中期规划)
|
|
|
|
|
|
|
|
|
|
|
|
4. 预期效果:
|
|
|
|
|
|
提升用户整体出行体验与安全感,建立稳定可靠的服务感知。
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
## 🔧 项目结构
|
|
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
GXX-ProjectName/
|
|
|
|
|
|
├── data/ # 数据目录
|
|
|
|
|
|
│ ├── Tweets.csv # 原始推文数据集
|
|
|
|
|
|
│ └── processed_tweets.csv # 处理后的数据集
|
|
|
|
|
|
├── final_models/ # 训练好的模型
|
|
|
|
|
|
│ ├── crisis_index_model.pkl
|
|
|
|
|
|
│ ├── propagation_risk_model.pkl
|
|
|
|
|
|
│ └── trend_analysis_model.pkl
|
|
|
|
|
|
├── src/ # 源代码目录
|
|
|
|
|
|
│ ├── advanced_xgboost_optimization.py
|
|
|
|
|
|
│ ├── airline_oscars_app.py
|
|
|
|
|
|
│ ├── analyze_tweets.py
|
|
|
|
|
|
│ ├── crisis_index_calculator.py
|
|
|
|
|
|
│ ├── crisis_warning_app.py
|
|
|
|
|
|
│ ├── data_driven_smart_care_app.py
|
|
|
|
|
|
│ ├── data_overview.py
|
|
|
|
|
|
│ ├── deepseek_integrator.py
|
|
|
|
|
|
│ ├── diagnose_churn_system.py
|
|
|
|
|
|
│ ├── enhanced_sentiment_analyzer.py
|
|
|
|
|
|
│ ├── final_test_airline.py
|
|
|
|
|
|
│ ├── machine_learning.py
|
|
|
|
|
|
│ ├── model_evaluation.py
|
|
|
|
|
|
│ ├── propagation_risk_assessment.py
|
|
|
|
|
|
│ ├── smart_care_system.py
|
|
|
|
|
|
│ ├── smart_customer_service.py
|
|
|
|
|
|
│ ├── streamlit_app.py
|
|
|
|
|
|
│ ├── trend_analysis.py
|
|
|
|
|
|
│ ├── ultimate_xgboost_optimization.py
|
|
|
|
|
|
│ └── xgboost_analysis.py
|
|
|
|
|
|
├── tests/ # 测试目录
|
|
|
|
|
|
│ └── test_data.py
|
|
|
|
|
|
├── .env.example # 环境变量示例
|
|
|
|
|
|
├── .gitignore # Git忽略文件
|
|
|
|
|
|
├── pyproject.toml # 项目配置
|
|
|
|
|
|
├── requirements.txt # 依赖列表
|
|
|
|
|
|
├── start_app.bat # 启动脚本(Windows)
|
|
|
|
|
|
└── README.md # 项目说明文档
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
## 💡 开发心得
|
|
|
|
|
|
|
|
|
|
|
|
### 主要困难与解决方案
|
|
|
|
|
|
|
|
|
|
|
|
**1. 文本数据预处理**
|
|
|
|
|
|
- 问题:推文数据包含大量噪声(表情符号、链接、特殊字符等)
|
|
|
|
|
|
- 解决方案:使用正则表达式进行清洗,结合NLTK和spaCy进行文本预处理
|
|
|
|
|
|
|
|
|
|
|
|
**2. 类别不平衡**
|
|
|
|
|
|
- 问题:推文中positive、negative、neutral样本比例不平衡
|
|
|
|
|
|
- 解决方案:采用SMOTE过采样技术,调整类别权重,使用F1-score作为主要评估指标
|
|
|
|
|
|
|
|
|
|
|
|
**3. 实时性能**
|
|
|
|
|
|
- 问题:大规模推文数据的实时处理和分析
|
|
|
|
|
|
- 解决方案:优化模型结构,使用特征选择减少特征维度,实现批量处理机制
|
|
|
|
|
|
|
|
|
|
|
|
**4. 危机指数计算**
|
|
|
|
|
|
- 问题:如何综合多种因素计算合理的危机指数
|
|
|
|
|
|
- 解决方案:使用加权平均方法,结合专家知识和机器学习模型确定权重
|
|
|
|
|
|
|
|
|
|
|
|
### AI辅助编程的应用
|
|
|
|
|
|
|
|
|
|
|
|
在项目开发过程中,我们充分利用了AI辅助编程工具(如GitHub Copilot、ChatGPT等),主要应用在以下方面:
|
|
|
|
|
|
|
|
|
|
|
|
1. **代码生成**:快速生成重复代码和基础结构
|
|
|
|
|
|
2. **算法实现**:辅助实现复杂的机器学习算法和优化策略
|
|
|
|
|
|
3. **调试帮助**:提供错误分析和调试建议
|
|
|
|
|
|
4. **文档编写**:辅助生成代码注释和技术文档
|
|
|
|
|
|
5. **创意启发**:提供新的思路和解决方案
|
|
|
|
|
|
|
|
|
|
|
|
### 未来改进方向
|
|
|
|
|
|
|
|
|
|
|
|
1. **多语言支持**:扩展系统支持多种语言的推文分析
|
|
|
|
|
|
2. **实时数据流处理**:集成Kafka等工具实现实时数据流处理
|
|
|
|
|
|
3. **深度学习模型**:引入BERT、GPT等预训练语言模型提升情感分析效果
|
|
|
|
|
|
4. **多模态分析**:结合图片和视频内容进行综合分析
|
|
|
|
|
|
5. **自动化响应**:实现自动生成客服响应和危机公关文案的功能
|
|
|
|
|
|
6. **移动端应用**:开发移动端应用,方便随时随地监控
|
|
|
|
|
|
|
|
|
|
|
|
## 📄 许可证
|
|
|
|
|
|
|
|
|
|
|
|
本项目仅供学习和研究使用。
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
**项目地址**:http://hblu.top:3000/MachineLearning2025/08_17-AirCARE.git
|
2026-01-13 00:43:15 +08:00
|
|
|
|
|
2026-01-15 23:08:08 +08:00
|
|
|
|
**联系方式**:如有问题或建议,请联系项目团队成员。
|