Skip to content

Wyh-max-star/LLM-Recognizer

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

BYR 中文 AI 文本检测项目

本项目用于区分中文文本是否由 AI 生成,覆盖了句子级文档级两条任务线,并同时提供了机器学习、深度学习、大模型 LoRA 微调以及多个 baseline 评测脚本。

项目目标

  • 句子级 AI/Human 二分类
  • 文档级 AI/Human 二分类
  • 支持传统机器学习、RoBERTa、LLM LoRA 微调和零样本 baseline
  • 支持本地模型缓存,适合 Windows / AutoDL / 离线环境

主要能力

  • 机器学习基线:TF-IDF + Naive Bayes / 决策树 / 随机森林 / 逻辑回归 / Linear SVM / XGBoost / MLP
  • 深度学习分类:中文 RoBERTa 句子或文档分类
  • LoRA 微调:文档级与句子级的大模型参数高效微调
  • Baseline 评测:Fast-DetectGPT、MPU、DetectLLM-LRR
  • 数据处理:句子拆分、分类格式转换、标签修正、数据去重与重平衡

任务与数据格式

句子级数据

常见格式为 JSONL,每行一个样本:

{"instruction": "你突然发现肚子变大,你父母会作何感想?", "label": "AI"}

其中:

  • instruction:输入文本
  • labelAIHuman

文档级数据

文档级脚本也主要使用同样的 instruction / label 格式,测试集通常放在文档级训练集、域内测试集或域外新闻测试集中。

推荐环境

  • Python 3.10+
  • CUDA GPU(训练和大模型评测强烈建议)
  • PyTorch、Transformers、Datasets、PEFT、scikit-learn 等依赖

建议安装的 Python 包

pip install torch transformers datasets peft accelerate sentencepiece scikit-learn pandas numpy xgboost joblib tqdm

如果你已经在 AutoDL 或 Conda 环境中安装好依赖,只要保证这些核心库可用即可。

目录说明

BYR/
├─ baseline_eval/                 # Fast-DetectGPT / MPU / DetectLLM 等 baseline
├─ doc_ML.py                      # 文档级机器学习训练脚本
├─ doc_DL.py                      # 文档级 RoBERTa 训练脚本
├─ doc_level_llm_lora_finetuning.py  # 文档级 LLM LoRA 微调脚本
├─ sent_ML.py                     # 句子级机器学习训练脚本
├─ sent_DL.py                     # 句子级 RoBERTa / 深度学习脚本
├─ sent_level_llm_lora_finetuning.py # 句子级 LLM LoRA 微调脚本
├─ eval_lora_on_dataset.py        # 评测微调后的 LLM
├─ eval_roberta_on_dataset.py      # 评测保存好的 RoBERTa 模型
├─ LLM/                           # 本地 LLM 缓存目录
├─ RoBERTa/                       # 本地 RoBERTa 缓存目录
├─ 句子级数据集/                  # 句子级训练 / 测试数据
├─ 文档级训练集/                  # 文档级训练数据
├─ 文档级域内测试集/              # 文档级域内测试集
└─ 文档级域外测试集—新闻/         # 文档级域外测试集

数据准备

项目默认会优先读取仓库里的数据文件。如果你的文件名不同,可以在脚本顶部修改路径。

常见数据路径包括:

  • 句子级数据集/训练集/分类格式_训练集_单句_更多_去重后_更多model.jsonl
  • 句子级数据集/测试集/分类格式_测试集_单句_多一点_去重后.jsonl
  • 文档级域外测试集—新闻/human-ai-news-pairs.jsonl

快速开始

1. 运行文档级机器学习模型

python doc_ML.py

功能:

  • 读取文档级训练 / 验证 / 测试数据
  • 训练多个传统机器学习模型
  • 保存最佳模型为 model_best.joblib
  • 保存 TF-IDF 向量器为 tfidf_vectorizer.joblib
  • 保存各模型训练耗时为 doc_ml_training_times.json

2. 运行句子级机器学习模型

python sent_ML.py

功能:

  • 从句子级分类格式数据中解析训练 / 测试样本
  • 训练多个传统机器学习模型
  • 输出验证集与测试集表现
  • 保存最佳模型到 sent_ml_output/

3. 运行文档级 RoBERTa

python doc_DL.py

功能:

  • 使用中文 RoBERTa 进行文档级分类
  • 自动划分训练 / 验证 / 外部测试集
  • 模型和输出保存在本地 roberta_* 目录

4. 运行句子级深度学习模型

python sent_DL.py

功能:

  • 使用深度学习模型完成句子级分类
  • 与句子级数据格式兼容

5. 运行文档级 LLM LoRA 微调

python doc_level_llm_lora_finetuning.py

默认会使用本地或缓存中的 OpenBMB/MiniCPM3-4B,并自动适配它的 chat template 和 LoRA 注入层。

6. 运行句子级 LLM LoRA 微调

python sent_level_llm_lora_finetuning.py

适合句子级 AI/Human 分类任务,支持 LoRA、早停和本地缓存。

7. 评测微调后的模型

python eval_lora_on_dataset.py
python eval_roberta_on_dataset.py

这两个脚本分别用于评测微调后的 LLM 和保存好的 RoBERTa 分类器。

Baseline 评测

baseline 统一放在 baseline_eval/ 目录下,配置入口是 baseline_eval/baseline_config.py

修改配置

如果你要换测试集、模型缓存位置或输出文件,只需要改这里:

  • baseline_eval/baseline_config.py

运行脚本

python baseline_eval/eval_fast_detectgpt.py
python baseline_eval/eval_mpu.py
python baseline_eval/eval_detectllm_lrr.py

输出内容

三个 baseline 都会输出:

  • 评测指标
  • 阈值信息
  • 模型来源
  • 推理耗时统计

结果会保存到 baseline_eval/results/ 下对应的 JSON 文件。

本地缓存说明

项目默认会把模型缓存到本地目录,避免写入系统盘:

  • LLM/:大模型缓存
  • RoBERTa/:RoBERTa 缓存

如果你已经下载好模型,建议直接使用本地路径或缓存 snapshot。

常见模型

  • OpenBMB/MiniCPM3-4B
  • Qwen/Qwen1.5-0.5B-Chat
  • hfl/chinese-roberta-wwm-ext
  • yuchuantian/AIGC_detector_zhv3short

结果文件

项目中比较常见的输出包括:

  • model_best.joblib
  • tfidf_vectorizer.joblib
  • doc_ml_training_times.json
  • sent_ml_output/
  • roberta_output_local/
  • output/
  • baseline_eval/results/*.json

你可能需要改的地方

如果你在别的机器上运行,通常需要检查以下配置:

  • 数据路径是否和当前仓库一致
  • baseline_eval/baseline_config.py 里的测试集路径
  • 本地模型缓存目录 LLM/RoBERTa/
  • GPU 显存是否足够
  • 是否需要改成离线模式或指定镜像源

备注

  • doc_ML.pydoc_DL.py 更适合做传统训练 / 对比实验
  • doc_level_llm_lora_finetuning.py 更适合做大模型迁移实验
  • baseline_eval/ 适合做零样本或弱监督基线对比
  • 如果你只想快速验证流程,建议先跑机器学习脚本和 baseline,再跑 LoRA 微调

许可与用途

本仓库内容主要用于中文 AI 文本检测研究与实验复现。模型权重和第三方数据集请遵循各自的许可证与使用条款。

About

This repository is used to store all the code and datasets for LLM-Recognizer.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages