基于时间启发式标注和RoBERTa模型的研报AI检测系统,同时包含基于困惑度的异常检测方法。
- 基于时间的伪标签生成:利用AI技术发展的时间线,自动为历史数据创建训练标签
- RoBERTa文本分类:使用中文RoBERTa模型进行二元分类(人类写作 vs AI生成)
- 困惑度异常检测:基于语言模型困惑度识别过于"完美"的AI生成文本
- 完整的训练流程:包含数据预处理、模型训练、评估和预测功能
- 2022年1月1日之前:标记为人类写作(Label = 0)
- 2023年6月1日之后:标记为可能AI生成(Label = 1)
- 中间时期:暂时排除,避免标签噪声
- 数据预处理:文本清洗、去除HTML标签、标准化格式
- 特征提取:使用RoBERTa tokenizer进行文本编码
- 模型训练:微调预训练的中文RoBERTa模型
- 异常检测:计算文本困惑度,识别异常模式
pip install -r requirements.txtfrom ai_detection_system import AIDetectionSystem
# 初始化系统
detector = AIDetectionSystem(data_path="./分析师个股报告/")
# 运行完整检测流程
results = detector.main()from ai_detection_system import predict_single_text
text = "您的研报文本内容..."
result = predict_single_text(text)
print(f"预测结果: {result['prediction']}")
print(f"置信度: {result['confidence']:.4f}")数据文件应包含以下列:
date: 日期列(YYYY-MM-DD格式)content: 文本内容列title: 标题列(可选)author: 作者列(可选)
date,title,content,author
2021-06-15,某公司深度研究报告,本报告通过深入调研发现...,张分析师
2023-08-10,公司业绩预测报告,基于公司最新财务数据...,王分析师
项目根目录/
├── ai_detection_system.py # 主程序
├── requirements.txt # 依赖包
├── README.md # 说明文档
├── 分析师个股报告/ # 数据目录
│ └── *.csv # 数据文件
├── models/ # 模型保存目录
└── results/ # 结果保存目录
- 基础模型:
hfl/chinese-roberta-wwm-ext - 任务类型:二元文本分类
- 输出:人类写作 (0) 或 AI生成 (1)
- 基础模型:
uer/gpt2-chinese-cluecorpussmall或本地GPT2模型 - 检测原理:AI生成文本通常具有异常低的困惑度
- 阈值设置:可根据实际数据调整
系统提供以下评估指标:
- 准确率 (Accuracy):整体预测正确率
- 精确率 (Precision):预测为AI生成中真正是AI生成的比例
- 召回率 (Recall):真正AI生成中被正确识别的比例
- F1分数:精确率和召回率的调和平均
{
"model_performance": {
"accuracy": 0.85,
"precision": 0.82,
"recall": 0.88,
"f1": 0.85
},
"data_summary": {
"total_samples": 1000,
"labeled_samples": 800,
"train_samples": 480,
"val_samples": 160,
"test_samples": 160
}
}{
'prediction': 'AI生成',
'confidence': 0.8234,
'probabilities': {
'人类写作': 0.1766,
'AI生成': 0.8234
}
}- 数据质量:确保数据包含准确的时间戳信息
- 标签策略:可根据实际情况调整时间阈值
- 模型选择:可尝试不同的预训练模型以获得更好效果
- 计算资源:训练过程需要一定的GPU资源
detector.create_pseudo_labels(
early_date='2021-12-01', # 自定义早期阈值
late_date='2023-08-01' # 自定义晚期阈值
)perplexity_detector.detect_ai_by_perplexity(
texts,
threshold_low=8, # 降低阈值,更敏感
threshold_high=120 # 提高阈值,更宽容
)如遇到问题,请检查:
- 依赖包是否正确安装
- 数据格式是否符合要求
- 模型下载是否完整
- 系统内存和GPU资源是否充足
- v1.0: 初始版本,包含基础检测功能
- 支持RoBERTa分类和困惑度检测
- 自动创建示例数据用于演示