计算级联指标使用说明
本脚本用于计算信息级联数据的情感得分、情感deviation、contextual deviation和perplexity。
功能说明
脚本 compute_cascade_metrics.py 会处理以下两个JSON文件:
information_cascade.json: 包含完整级联数据(原帖、评论、转发)information_cascade_original_posts.json: 包含原帖数据(可选)
计算以下指标:
- 情感得分 (Sentiment Score): 文本的情感倾向得分
- 情感偏差 (Sentiment Deviation): 相对于原帖的情感偏差
- 语境偏差 (Contextual Deviation): 相对于原帖的语义偏差
- 困惑度 (Perplexity): 文本的语言模型困惑度
安装依赖
在云电脑上安装必要的依赖:
pip install torch transformers numpy tqdm
如果需要使用GPU:
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118
使用方法
基本用法(使用默认模型)
python compute_cascade_metrics.py \
--input_cascade information_cascade.json \
--output output_with_metrics.json \
--batch_size 32
完整用法(指定所有模型)
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)
{
"post_info": {
"content": "原帖内容",
"embedding": [0.1, 0.2, ...], // BERT语义向量 (768维)
"sentiment_score": 0.7, // 情感得分
"perplexity": 15.3 // 困惑度
}
}
评论 (comment_tree)
{
"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)
{
"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等 - 如果不提供,脚本会使用基于词汇多样性的简化方法
注意事项
大文件处理: 如果JSON文件很大,处理时间可能较长。建议:
- 使用GPU加速(
--device cuda) - 调整批处理大小(
--batch_size) - 先用
--max_cascades测试少量数据
- 使用GPU加速(
内存使用:
- BERT模型需要较多内存
- 如果内存不足,减小
--batch_size
简化方法:
- 如果不提供情感分析模型或困惑度模型,脚本会使用简化的启发式方法
- 简化方法的结果可能不如专业模型准确,但计算速度快
数据格式:
- 确保输入的JSON文件格式正确
- JSON文件应包含
cascades字段,每个级联包含post_info、comment_tree、repost_chain
示例
示例1:使用默认设置处理数据
python compute_cascade_metrics.py \
--input_cascade /path/to/information_cascade.json \
--output /path/to/output.json
示例2:使用GPU和自定义模型
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个级联)
python compute_cascade_metrics.py \
--input_cascade /path/to/information_cascade.json \
--output /path/to/output.json \
--max_cascades 10
故障排除
- CUDA内存不足: 减小
--batch_size或使用--device cpu - 模型下载失败: 检查网络连接,或手动下载模型到本地后指定路径
- JSON格式错误: 检查输入JSON文件格式是否正确
- 处理速度慢: 使用GPU(
--device cuda)和增大批处理大小
与EasyTPP集成
处理后的JSON文件可以用于EasyTPP框架的训练。参考 examples/train_robot_thp_with_features.py 了解如何使用这些特征。