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)。

F1 柱状图(全部模型;各自阈值;水平虚线为随机基线/多数类基线)

分析与讨论

为什么 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
Safetensors
Model size
4B params
Tensor type
BF16
·
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Model tree for aikexue170/jev-novel-2-4b-bf16

Finetuned
Qwen/Qwen3.5-4B
Finetuned
(896)
this model

Collection including aikexue170/jev-novel-2-4b-bf16