Skip to content

flytassel/ranz

Repository files navigation

AI生成文本检测系统

基于时间启发式标注和RoBERTa模型的研报AI检测系统,同时包含基于困惑度的异常检测方法。

功能特点

  1. 基于时间的伪标签生成:利用AI技术发展的时间线,自动为历史数据创建训练标签
  2. RoBERTa文本分类:使用中文RoBERTa模型进行二元分类(人类写作 vs AI生成)
  3. 困惑度异常检测:基于语言模型困惑度识别过于"完美"的AI生成文本
  4. 完整的训练流程:包含数据预处理、模型训练、评估和预测功能

核心思路

时间启发式标注策略

  • 2022年1月1日之前:标记为人类写作(Label = 0)
  • 2023年6月1日之后:标记为可能AI生成(Label = 1)
  • 中间时期:暂时排除,避免标签噪声

技术架构

  1. 数据预处理:文本清洗、去除HTML标签、标准化格式
  2. 特征提取:使用RoBERTa tokenizer进行文本编码
  3. 模型训练:微调预训练的中文RoBERTa模型
  4. 异常检测:计算文本困惑度,识别异常模式

安装依赖

pip install -r requirements.txt

使用方法

1. 基本使用

from ai_detection_system import AIDetectionSystem

# 初始化系统
detector = AIDetectionSystem(data_path="./分析师个股报告/")

# 运行完整检测流程
results = detector.main()

2. 预测单个文本

from ai_detection_system import predict_single_text

text = "您的研报文本内容..."
result = predict_single_text(text)

print(f"预测结果: {result['prediction']}")
print(f"置信度: {result['confidence']:.4f}")

3. 自定义数据格式

数据文件应包含以下列:

  • date: 日期列(YYYY-MM-DD格式)
  • content: 文本内容列
  • title: 标题列(可选)
  • author: 作者列(可选)

数据要求

CSV文件格式示例

date,title,content,author
2021-06-15,某公司深度研究报告,本报告通过深入调研发现...,张分析师
2023-08-10,公司业绩预测报告,基于公司最新财务数据...,王分析师

目录结构

项目根目录/
├── ai_detection_system.py    # 主程序
├── requirements.txt          # 依赖包
├── README.md                # 说明文档
├── 分析师个股报告/           # 数据目录
│   └── *.csv               # 数据文件
├── models/                  # 模型保存目录
└── results/                 # 结果保存目录

模型说明

1. RoBERTa分类模型

  • 基础模型hfl/chinese-roberta-wwm-ext
  • 任务类型:二元文本分类
  • 输出:人类写作 (0) 或 AI生成 (1)

2. 困惑度检测模型

  • 基础模型uer/gpt2-chinese-cluecorpussmall 或本地GPT2模型
  • 检测原理:AI生成文本通常具有异常低的困惑度
  • 阈值设置:可根据实际数据调整

评估指标

系统提供以下评估指标:

  • 准确率 (Accuracy):整体预测正确率
  • 精确率 (Precision):预测为AI生成中真正是AI生成的比例
  • 召回率 (Recall):真正AI生成中被正确识别的比例
  • F1分数:精确率和召回率的调和平均

输出结果

1. 模型性能报告

{
  "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
  }
}

2. 单文本预测结果

{
  'prediction': 'AI生成',
  'confidence': 0.8234,
  'probabilities': {
    '人类写作': 0.1766,
    'AI生成': 0.8234
  }
}

注意事项

  1. 数据质量:确保数据包含准确的时间戳信息
  2. 标签策略:可根据实际情况调整时间阈值
  3. 模型选择:可尝试不同的预训练模型以获得更好效果
  4. 计算资源:训练过程需要一定的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  # 提高阈值,更宽容
)

技术支持

如遇到问题,请检查:

  1. 依赖包是否正确安装
  2. 数据格式是否符合要求
  3. 模型下载是否完整
  4. 系统内存和GPU资源是否充足

更新日志

  • v1.0: 初始版本,包含基础检测功能
  • 支持RoBERTa分类和困惑度检测
  • 自动创建示例数据用于演示

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages