File size: 5,879 Bytes
f43af3c |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 |
# 计算级联指标使用说明
本脚本用于计算信息级联数据的情感得分、情感deviation、contextual deviation和perplexity。
## 功能说明
脚本 `compute_cascade_metrics.py` 会处理以下两个JSON文件:
- `information_cascade.json`: 包含完整级联数据(原帖、评论、转发)
- `information_cascade_original_posts.json`: 包含原帖数据(可选)
计算以下指标:
1. **情感得分 (Sentiment Score)**: 文本的情感倾向得分
2. **情感偏差 (Sentiment Deviation)**: 相对于原帖的情感偏差
3. **语境偏差 (Contextual Deviation)**: 相对于原帖的语义偏差
4. **困惑度 (Perplexity)**: 文本的语言模型困惑度
## 安装依赖
在云电脑上安装必要的依赖:
```bash
pip install torch transformers numpy tqdm
```
如果需要使用GPU:
```bash
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118
```
## 使用方法
### 基本用法(使用默认模型)
```bash
python compute_cascade_metrics.py \
--input_cascade information_cascade.json \
--output output_with_metrics.json \
--batch_size 32
```
### 完整用法(指定所有模型)
```bash
python compute_cascade_metrics.py \
--input_cascade information_cascade.json \
--input_original information_cascade_original_posts.json \
--output output_with_metrics.json \
--bert_model bert-base-chinese \
--sentiment_model <情感分析模型路径> \
--perplexity_model <语言模型路径> \
--batch_size 32 \
--max_length 512 \
--device cuda
```
### 参数说明
- `--input_cascade`: **必需**,输入级联JSON文件路径
- `--input_original`: 可选,输入原帖JSON文件路径
- `--output`: **必需**,输出JSON文件路径
- `--bert_model`: BERT模型名称或路径(默认: `bert-base-chinese`)
- `--sentiment_model`: 情感分析模型路径(可选,不提供则使用简化方法)
- `--perplexity_model`: 语言模型路径(可选,不提供则使用简化方法)
- `--batch_size`: 批处理大小(默认: 32)
- `--max_length`: 最大序列长度(默认: 512)
- `--device`: 计算设备,`cuda` 或 `cpu`(默认: 自动选择)
- `--max_cascades`: 最大处理级联数量(用于测试,默认: 处理所有)
## 输出格式
处理后的JSON文件会在每个节点中添加以下字段:
### 原帖 (`post_info`)
```json
{
"post_info": {
"content": "原帖内容",
"embedding": [0.1, 0.2, ...], // BERT语义向量 (768维)
"sentiment_score": 0.7, // 情感得分
"perplexity": 15.3 // 困惑度
}
}
```
### 评论 (`comment_tree`)
```json
{
"comment_tree": {
"comment_id": {
"content": "评论内容",
"embedding": [0.1, 0.2, ...],
"sentiment_score": 0.6,
"perplexity": 12.5,
"contextual_deviation": 0.25, // 语境偏差
"sentiment_deviation": 0.1 // 情感偏差
}
}
}
```
### 转发 (`repost_chain`)
```json
{
"repost_chain": [
{
"forward_text": "转发内容",
"comment_content": "评论内容",
"embedding": [0.1, 0.2, ...],
"sentiment_score": 0.5,
"perplexity": 18.2,
"contextual_deviation": 0.35,
"sentiment_deviation": 0.2
}
]
}
```
## 模型选择建议
### BERT模型
- 中文文本:`bert-base-chinese`
- 英文文本:`bert-base-uncased`
- 自定义模型:提供本地路径
### 情感分析模型
- 中文:可以使用 `uer/roberta-base-finetuned-chinanews-chinese` 或其他中文情感分析模型
- 英文:可以使用 `nlptown/bert-base-multilingual-uncased-sentiment` 等
- 如果不提供,脚本会使用基于关键词的简化方法
### 困惑度模型
- 中文:可以使用 `gpt2-chinese` 或其他中文语言模型
- 英文:可以使用 `gpt2` 等
- 如果不提供,脚本会使用基于词汇多样性的简化方法
## 注意事项
1. **大文件处理**: 如果JSON文件很大,处理时间可能较长。建议:
- 使用GPU加速(`--device cuda`)
- 调整批处理大小(`--batch_size`)
- 先用 `--max_cascades` 测试少量数据
2. **内存使用**:
- BERT模型需要较多内存
- 如果内存不足,减小 `--batch_size`
3. **简化方法**:
- 如果不提供情感分析模型或困惑度模型,脚本会使用简化的启发式方法
- 简化方法的结果可能不如专业模型准确,但计算速度快
4. **数据格式**:
- 确保输入的JSON文件格式正确
- JSON文件应包含 `cascades` 字段,每个级联包含 `post_info`、`comment_tree`、`repost_chain`
## 示例
### 示例1:使用默认设置处理数据
```bash
python compute_cascade_metrics.py \
--input_cascade /path/to/information_cascade.json \
--output /path/to/output.json
```
### 示例2:使用GPU和自定义模型
```bash
python compute_cascade_metrics.py \
--input_cascade /path/to/information_cascade.json \
--output /path/to/output.json \
--bert_model bert-base-chinese \
--sentiment_model /path/to/sentiment_model \
--device cuda \
--batch_size 64
```
### 示例3:测试模式(只处理前10个级联)
```bash
python compute_cascade_metrics.py \
--input_cascade /path/to/information_cascade.json \
--output /path/to/output.json \
--max_cascades 10
```
## 故障排除
1. **CUDA内存不足**: 减小 `--batch_size` 或使用 `--device cpu`
2. **模型下载失败**: 检查网络连接,或手动下载模型到本地后指定路径
3. **JSON格式错误**: 检查输入JSON文件格式是否正确
4. **处理速度慢**: 使用GPU(`--device cuda`)和增大批处理大小
## 与EasyTPP集成
处理后的JSON文件可以用于EasyTPP框架的训练。参考 `examples/train_robot_thp_with_features.py` 了解如何使用这些特征。
|