EasyTemporalPointProcess-main / COMPUTE_METRICS_README.md
Abigail99216's picture
Upload folder using huggingface_hub
f43af3c verified
# 计算级联指标使用说明
本脚本用于计算信息级联数据的情感得分、情感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` 了解如何使用这些特征。