JEVnovel 2 · 4B
面向 AIGC 文学创作的「八股文」检测模型:单句好坏判断 + 置信度,一次前向传播出结果。
🎯 背景与动机
LLM 在文学创作领域一直面临一个显著的问题。由于对编码、Agent 领域持续精进的训练,文学领域始终未受重视——语料的不平衡、RL 策略的倾向性,使得 AI 在文学创作输出上逐渐形成了一套「八股文」,即文学创作领域的局部最优。
八股文通常是概率上的最优,而不是可读性上的最优:
- 极度不自然,出现频率相当高,严重影响人类阅读体验;
- 表现形式多样——从高频形容词、高频修辞,到句式排列、分句断句;
- 不同 AI 各有不同的「八股」,且八股本身源自人类的正常描写,只是被 AI 不正当地滥用。
这导致基于正则表达式的识别方式困难重重:
- 大量漏判:无法处理结构性八股(例如 DeepSeek 常用的「不是……而是」句式);
- 容易误杀:「湖」「石子」只是概念,但「湖中投入石子」却成了 Gemini 的八股——封杀「石子」会误伤大量正常描写。
为了让 AIGC 创作出更好的内容,社区需要一种有能力识别这些八股的、高泛化性的方法。JEVnovel 2 就是我们给出的答案。
🧠 方法
- 架构改造:选取部分 Qwen 系列模型,将输出结构改造为分类头——一次前向传播即可输出分类与置信度;强制模型对单句做判断,不考虑句间关系。
- 数据集:我们面向某个专注 AIGC 文学创作的大型社区搭建了数据收集公益网站,收集了大量人类标注的偏好数据。清洗后构成 2 万句单句样本数据集(训练 25,076 / 验证 4,199 / 测试 4,254)。
- 训练:
- Qwen3.5 0.8B / 4B:LoRA 训练
- Qwen3.8 27B:全参数 SFT
训练后的模型在单句好坏判断上涌现出相当高的能力:能有效识别八股、不自然的句子结构、AI 堆砌的描写等 AIGC 不良特征,同时不对人类文章、AIGC 良性文字造成大规模误伤。
📊 评测
评测设置
我们从数据集中构建了两类 bench:
| Bench | 构成 | 特点 |
|---|---|---|
| main-bench | 人类标注人数多、共识最高的数据(538 句) | 核心指标:macro-F1 |
| all-bench | 数量较多、共识较低、噪声极大的全体数据(4,254 句) | 参考指标 |
同时统计 bad 召回率、bad 准确率、负类误报率等辅助判据。评分时各模型使用各自迭代出的判定阈值。Bench 中也加入了 LLM 的得分——环境与 JEVnovel 2 一致,仅对提示词做了完善(JEVnovel 2 不需要复杂提示词,直接平移至 LLM 会难以统一输出,并造成困惑)。
结果
| 模型 | 来源 | main macro-F1 | bad召回 | bad精确 | 负误报 | all macro-F1 |
|---|---|---|---|---|---|---|
jev-novel-2-27b-bf16 |
JEVnovel 2 | 0.7661 | 0.6162 | 0.8978 | 0.0712 | 0.5928 |
jev-novel-2-4b-bf16 |
JEVnovel 2 | 0.7509 | 0.6273 | 0.8458 | 0.1161 | 0.5954 |
jev-novel-2-0.8b-bf16 |
JEVnovel 2 | 0.7426 | 0.6790 | 0.7830 | 0.1910 | 0.6057 |
random-baseline |
baseline | 0.5000 | 0.5000 | 0.5037 | 0.5000 | 0.4999 |
claude-opus-5.5 |
LLM | 0.4853 | 0.6642 | 0.5028 | 0.6667 | 0.4728 |
claude-opus-5 |
LLM | 0.4396 | 0.7048 | 0.4860 | 0.7566 | 0.4618 |
claude-fable-5 |
LLM | 0.4393 | 0.3247 | 0.4467 | 0.4082 | 0.4420 |
claude-opus-4-7 |
LLM | 0.4381 | 0.5609 | 0.4592 | 0.6704 | 0.4709 |
gpt-5.6-terra |
LLM | 0.4337 | 0.6679 | 0.4788 | 0.7378 | 0.4646 |
grok-4.7 |
LLM | 0.4209 | 0.7343 | 0.4795 | 0.8090 | 0.4323 |
claude-sonnet-5 |
LLM | 0.4164 | 0.5978 | 0.4525 | 0.7341 | 0.4411 |
gemini-3.7-flash |
LLM | 0.4123 | 0.4317 | 0.4194 | 0.6067 | 0.4375 |
gpt-6-sol |
LLM | 0.4116 | 0.7934 | 0.4909 | 0.8352 | 0.4645 |
deepseek-v4-pro |
LLM | 0.4088 | 0.3948 | 0.4100 | 0.5768 | 0.4422 |
glm-5.3 |
LLM | 0.4075 | 0.5055 | 0.4308 | 0.6779 | 0.4873 |
gpt-5.6-sol |
LLM | 0.3986 | 0.6679 | 0.4617 | 0.7903 | 0.4622 |
grok-4.6 |
LLM | 0.3953 | 0.6937 | 0.4608 | 0.8240 | 0.4450 |
gemini-3.1-pro-preview |
LLM | 0.3947 | 0.3247 | 0.3843 | 0.5281 | 0.4241 |
claude-opus-4-8 |
LLM | 0.3937 | 0.6052 | 0.4420 | 0.7753 | 0.4428 |
qwen3.7-max |
LLM | 0.3930 | 0.4613 | 0.4112 | 0.6704 | 0.4648 |
qwen3.8-flash |
LLM | 0.3892 | 0.6568 | 0.4506 | 0.8127 | 0.4561 |
kimi-k3 |
LLM | 0.3871 | 0.2989 | 0.3716 | 0.5131 | 0.4231 |
claude-opus-4-6 |
LLM | 0.3846 | 0.2915 | 0.3674 | 0.5094 | 0.4222 |
deepseek-v4-flash |
LLM | 0.3830 | 0.3284 | 0.3739 | 0.5581 | 0.4407 |
gpt-5.6-luna |
LLM | 0.3827 | 0.6199 | 0.4444 | 0.7865 | 0.4454 |
gpt-6-luna |
LLM | 0.3804 | 0.6679 | 0.4536 | 0.8165 | 0.4350 |
Qwen3.6-27B |
LLM | 0.3751 | 0.5535 | 0.4213 | 0.7715 | 0.4523 |
deepseek-v4.1-flash |
LLM | 0.3746 | 0.4096 | 0.3868 | 0.6592 | 0.4349 |
gpt-5.5 |
LLM | 0.3739 | 0.4871 | 0.4099 | 0.7116 | 0.4439 |
glm-5.3-flash |
LLM | 0.3729 | 0.2509 | 0.3487 | 0.4757 | 0.4158 |
qwen3.7-plus |
LLM | 0.3712 | 0.4317 | 0.3900 | 0.6854 | 0.4327 |
deepseek-v3.2 |
LLM | 0.3643 | 0.3100 | 0.3529 | 0.5768 | 0.4300 |
gemini-3.6-flash |
LLM | 0.3584 | 0.4871 | 0.3964 | 0.7528 | 0.4292 |
qwen3.8-max |
LLM | 0.3584 | 0.3801 | 0.3679 | 0.6629 | 0.4628 |
glm-5.2 |
LLM | 0.3522 | 0.6125 | 0.4246 | 0.8427 | 0.4534 |
gemini-2.5-pro |
LLM | 0.3432 | 0.3727 | 0.3556 | 0.6854 | 0.4341 |
majority-baseline |
baseline | 0.3317 | 0.0000 | — | 0.0000 | 0.3288 |
gemini-3.5-flash |
LLM | 0.3216 | 0.3210 | 0.3246 | 0.6779 | 0.3975 |
gemma-4-E4B-it |
LLM | 0.3203 | 0.2768 | 0.3074 | 0.6330 | 0.3760 |
gemma-4-31B-it |
LLM | 0.3126 | 0.2435 | 0.2882 | 0.6105 | 0.3818 |
辅助指标最优:bad 召回
gpt-6-sol(0.7934)|bad 精确jev-novel-2-27b-bf16(0.8978)|负类误报最低jev-novel-2-27b-bf16(0.0712)。
分析与讨论
为什么 LLM 普遍不佳(甚至低于随机基线)?
我们推测这与 LLM 并未针对文学判断任务优化有关——它们难以区分一个句子从人类角度看正常与否。更进一步,AI 八股本就是语料不均、RL 偏好等训练过程的综合产物,LLM 甚至可能认为 AI 八股是「优秀的描写」。而 JEVnovel 2 基于人类偏好数据训练归纳,不存在这种分布偏移,因此准确性大幅胜出。
速度也是完全胜利。 JEVnovel 2 不需要自回归生成,一次前向传播即可输出结果,在高并行、大输入场景下对比自回归模型有巨大优势。
分数不等于一切:三档模型怎么选?
三档 JEV 模型分数差距不大,但我们发现判断存在长尾效应:
- 人类高共识的八股(「所有人看过之后都觉得十分差劲」的那类)对模型并不困难——甚至部分过拟合的模型也能保持较高识别率,这解释了为何 main-bench 上所有 JEVnovel 系列分数都不低;
- 但对于模棱两可的句子(连人类也拿不准是「平庸」还是「有点毛病」),参数量的优势就体现出来了——从使用体验上,27B 显著优于小参数模型(这是社区使用者的真实评价,属于 bench 难以量化的体验层面)。
🗺️ 未来计划
- 持续提升对不同 AI 八股的识别能力,扩展数据集广度;
- 细分判断档位:力争识别出「哪里有问题」与「有什么问题」,进一步提升模型输出的指导价值。
📐 模型规格
| 项 | 值 |
|---|---|
| 参数量 | 4.21B |
| 权重 | bf16,7.84 GiB,4 个 safetensors 分片 |
| 文本骨干 | qwen3_5_text,hidden 2560,32 层 |
| 主头 | pointer(256 维)二分类 |
| 副头 | 五档 ordinal |
| 判定阈值 | 0.48 |
| 最长输入 | 1024 token(含固定提示) |
🚀 用法
⚠️ 自定义架构,不能直接用
AutoModel加载,请使用本仓库的infer.py。
安装
python -m pip install torch --index-url https://download.pytorch.org/whl/cu128
python -m pip install --no-build-isolation -r requirements.txt
推理
# 单句
python infer.py --model-dir . --text "雨停后,她推开窗,看见屋檐还在滴水。"
# 批量(JSONL)
python infer.py --model-dir . --input input.jsonl --output predictions.jsonl --batch-size 1
输入:JSONL 每行包含 sentence(可选 id)。
输出字段:
| 字段 | 说明 |
|---|---|
label |
分类标签 |
needs_revision |
是否需要修改 |
bad_probability |
bad 类别概率 |
probabilities |
各类别概率分布 |
加 --ordinal 额外返回五档分布与 expected_grade。
📄 许可
以 Apache-2.0 发布,承继基座模型(Qwen3.5 / Qwen3.8)的许可证,见 LICENSE。
- Downloads last month
- 29
