AI小说工厂(四):度量车间——把爽不爽变成可打分的指标

  • ~3.92K 字

“这章不够爽”是一句无法执行的反馈。AI 改稿需要的是”爽点密度 18 分,低于 25 的达标线,建议在反击段落增加一个当众打脸节拍”。这篇讲我怎么把”爽””AI 味””黄金三章”这些主观概念做成确定性打分器——以及为什么”度量不是表演”是这个设计的底线。

为什么需要确定性度量

第三篇的七维评审是 LLM 当编辑,好用但有三个天然缺陷:(每次评审都是一次完整调用)、不稳(同一章两次评审分差可以到 10 分)、不可解释(”节奏 72 分”说不清为什么是 72 不是 68)。

而网文创作里恰好有一批指标本质上是可数的

  • 爽点——打脸/逆袭/震惊/膜拜这些节拍有明确的词典特征
  • AI 味——“不禁””一丝””眼底闪过”这些 LLM 高频词、整齐划一的段落长度、三段式排比,全是可统计的文本特征
  • 黄金三章——冲突是否前置、金手指是否出现、章末有没有钩子,全是可判定的结构特征

所以度量车间的定位是:规则层打分免费、确定、可解释,跑在每一章定稿时;LLM 评审昂贵、模糊,留给关键节点。两层并存,规则层是地毯,LLM 层是探针。

爽点密度:词典 + 密度公式

先看爽点评分的真实代码:

def cool_points(text: str) -> dict:
"""每章爽点节拍评分。score 0-100:<20 稀薄;20-45 偏低;
45-70 达标;≥70 密集。"""
text = text or ""
chars = len(re.sub(r"\s", "", text))
base = {"chars": chars, "at": time.strftime("%Y-%m-%d %H:%M:%S")}
if chars < 300:
return {"score": None, "level": "样本过短", "hits": {}, "total": 0, **base}

hits = {}
for cat, words in COOL_LEXICON.items():
cat_hits = []
for w in words:
c = text.count(w)
if c:
cat_hits.append({"word": w, "count": c,
"ev": _evidence(text, w, 1)})
if cat_hits:
hits[cat] = cat_hits
total = sum(h["count"] for cat in hits.values() for h in cat)

# 网文基准:2000-4000 字/章,期望 3 个以上爽点节拍
# (词频是节拍的粗代理)
dens = total / chars * 1000
if dens >= 4:
score, level = 80, "密集"
...

设计要点:

  • 六类爽点词典(打脸/逆袭/震惊/膜拜/收获/装逼打脸循环那套),每类一组特征词,命中带证据引用(_evidence 返回原文片段——每个分数都能点开看”为什么”)
  • 密度而非次数。2000 字 3 个爽点和 6000 字 3 个爽点不是一回事,除以字数归一
  • 丰富度加分。六个类型命中越多样越好——同一类型的词堆 10 遍是注水,六类各来一次才是节奏

校准数据是拿真实语料跑出来的:密集爽文样本 80+ 分、大段设定文 15 分稀薄——分档线不是拍的,是样本分布里切出来的

黄金三章:网文生死线的机器审判

网文行业共识:前三章决定读者去留,”黄金三章”有明确的手艺标准。我把它拆成六项可判定检查:

冲突前置      第一章前 1/3 是否出现冲突要素(词表判定)
设定克制 第一章大段世界观说明占比是否超标
金手指出现 金手指词典命中
爽点前置 首个爽点是否落在前半章
章末钩子 结尾段是否含悬念/反问/危机特征
对话占比 对话行占比(网文对话驱动,大段叙述劝退)

六项加权合成黄金分,pass 线 = 均分 ≥70 且金手指出现且首章过线——后两个是硬性一票项,均分高但金手指没出现照样不达标(爽文没有金手指等于火锅没有锅)。这套检查只在第 1-3 章定稿时跑,过了这村不要这店。

AI 痕迹检测:自研规则层的底气

起因是我问过检测 AI 文本的商业产品原理,答案是规则层可解释的那部分。于是自研了一个零成本版本,六项特征加权:

疲劳套话密度    30 分   "不禁/一丝/一抹/仿佛/似乎"等词频
句长变异系数 20 分 burstiness——人类写作长短句交错,
AI 倾向均匀句长(统计学的 CV 值)
段落均匀度 10 分 段落长度方差,同上原理
句首模板占比 10 分 "他/她/这/那"开头的连续段落比例
4-gram 固化 15 分 重复出现的四字组合(AI 的口头禅)
结尾升华模板 10 分 "这一刻,他明白了…"式强行点题

最有意思的是句长变异系数这项——有研究指出人类文本的 burstiness(突发性)显著高于 AI 文本:人会写一个三字短句再接一个四十字长句,AI 则倾向于把每句都写得差不多长。这是纯统计特征,不依赖任何词典,难被”换个词”绕过。

分数解读要克制:这是”痕迹”不是”判决”。30 分以下绿色(干净)、30-55 橙色(有痕迹)、55+ 红色(浓重)。我在 E2E 测试里专门验证过:mock 生成的干巴巴正文得分诚实地低——度量不是表演,分数低就是低,不为了好看调参数

门禁闭环:分数怎么变成行动

度量单独存在只是仪表盘,接进管线才是质检车间:

定稿 → 规则层三件套落库(爽点/黄金三章/AI痕迹,免费,每章)
→ 质量门禁(仅打脸/闯关骨架):爽点 <25 或黄金三章 <40
→ 自动"定向加强"一次(把弱项写进重写指令,只重写弱项段落)
→ 每章限一次,不无限加强
→ LLM 复核(可选开关):引用原文举证打 0-10 分,+1 次调用

门禁的判据边界直接写在 UI 上:“只对打脸循环、关卡推进骨架生效——雪花/悬疑/单元剧/种田不按爽文词典评判”。悬念小说按爽文词典打分当然低,但那是品类差异不是质量问题——用错度量比没有度量更糟,边界必须显式到用户可见。

打磨循环也挂在度量上:完本后自动跑”体检 + 分段精读 + 定向修复 + 重定稿”的循环,连续 2 轮干净或 12 轮上限后停——又是熟悉的”有界”设计。

全书体检:确定性规则的集团军

单章度量之上还有全书级体检,11 类确定性规则扫整本书:节奏曲线(每章冲突密度连成曲线看走向)、违规残留统计、引号规范(中文引号混用——实测真的抓出来过)、对话占比异常章、伏笔账龄、时间线断裂……全是不花钱的机械检查,体检报告一页看完整本书的健康状况。

实测价值:某次体检发现”节奏 18-20 章偏低、8 章违规残留、引号混用集中在 1-4 和 26 章、对话占比低在 27/36/37 章”——这种颗粒度的报告,人工通读 40 万字也未必能总结出来,机器 3 秒。

踩坑小结

  • 度量不是表演。mock 正文没有爽点词,分数就是诚实地低——坚决不为”截图好看”去特判。一旦度量开始迎合,它就失去信用,整个门禁跟着失效
  • 词典要配丰富度,密度要除以字数。单一类型堆词是注水不是节奏,六类分布才是;字数归一防止长章节”躺赢”
  • 品类边界写进 UI。爽文词典去评悬疑小说是灾难,门禁的适用范围要让用户一眼看见,不是藏在文档里
  • 免费的先跑,贵的后跑。规则层每章必跑(零成本),LLM 评审留关键节点和抽查——成本结构反过来这个系统就不可持续
  • burstiness 是被低估的 AI 检测特征。不依赖词典、难规避、计算一行代码,比”检测高频词”类方法健壮

小结

度量车间建完,质量体系三件套齐了:编辑部管”对不对、好不好”(LLM 主观评审),硬规则管”红线”(确定性禁止),度量车间管”够不够”(确定性打分)。但真正的考验在后面——当用户的爽文项目跑起来,我发现了整个系统里最隐蔽的敌人:AI 自己的文学观。下一篇,反伪爽文。

赞助喵
非常感谢您的喜欢!
赞助喵
分享这一刻
让朋友们也来瞅瞅!