> 一篇"条数达标、密度不达标"的稿子只看到了达标的那一半——两条规矩冲突时取不产生自信错数的那条

Research Tools Intermediate 2026-10-12 06:18 2026-10-12
#metrics #thresholds #reporting #calibration #comparability #tooling

一个工具对论文的两个部分用了两种口径: 首节按条数判(至少 2 条断言),正文按密度判(断言/千词落在区间内)。

// TABLE_OF_CONTENTS

结论先行

一个工具对论文的两个部分用了两种口径: 首节按条数判(至少 2 条断言),正文按密度判(断言/千词落在区间内)。

它的标定数据里两种口径都有 —— 首节也有一个密度下限(2.61/千词), 只是没拿来判定。于是一篇首节"条数达标、密度不达标"的稿子, 报告里只会看到"落在经典区间内"。另一半存在、算过、没显示。

把密度也做成判定之后,实测它把一篇已录用论文报红了: 首节窗口 1235 词、2 条断言、密度 1.62 < 2.61。 而经典参照的首节窗口是 456–1029 词 —— 长度差一倍多。

窗口长度 断言条数 密度
9 篇经典(参照) 456–1029 词 2–8 ≥2.61
那篇已录用 1235 词 2(达标) 1.62(不达标)

结论分两步,两步都要:

  1. 密度在这个窗口上不可比。 窗口长度差一倍,密度就不是同一个量。 读者进门时实际经历的是"我读到第几条主张",那是条数。
  2. 但另一半不许藏。 两条规矩冲突时取不产生自信错数的那一条做判定, 另一条用 INFO 原样输出。

为什么

第一个毛病是选择性展示,而且它是无意的:两个口径都在标定里, 实现时只给一个接了判定,报告自然只打印有判定的那个。 没人决定要隐藏什么 —— 判定和展示耦合在一起,于是没判定的量就没出口。 后果是报告在撒一个很具体的谎:它说"你落在区间内", 而同一份标定数据里有另一个量说你没有。

第二个毛病更有意思:比率需要可比的分母。 密度是"每千词多少条",它假设窗口是可比的。 这里的窗口(标题 + 摘要 + 第一节 + 第一个 caption)长度由论文结构决定, 差一倍以上。一篇写得长的第一节不见得更不敢说,但密度会这么判。 条数和密度在这里不是"同一件事的两种精度",是两个不同的量, 而只有一个对应读者的真实体验。

值得抄的是裁决规则本身:取不产生自信错数的那一条。 它不是"取更严的",也不是"取更松的"。密度在不可比的窗口上会给出一个 看起来精确、方向却错的判定;条数粗糙,但它粗糙得诚实。 而既然另一半也算过了,就把它放在 INFO 里 —— 粗判定 + 细事实, 两种错误都不犯。

怎么用

检查一遍:你的标定里算过的量,是不是每一个都在报告里出现了。 算过而不显示是选择性展示的默认形态。做法很简单: 报告按"算过的量"枚举,判定只是其中某些量的属性。 参考 核验报告必须先报自己的覆盖率,再报结论——否则一次失败的核验看起来像核过了: 先报自己的覆盖面,再报结论。

用密度/比率之前,先量分母的离散程度。 参照集的窗口长度范围是 456–1029,被测对象是 1235 —— 超出参照范围本身就该让这个比率失去判定权。 一条便宜的护栏:被测对象的分母落在参照分母范围之外时, 只报原始计数,不报比率。

两条规矩冲突时,问"哪一条错的时候错得更自信"。 精确的量错起来更危险,因为它的数字看起来像证据。 粗的量正确率不一定更高,但它不会让人确信一个错结论。

判定和展示要解耦。 一个量能不能判定、要不要显示, 是两个独立的决定。耦合在一起时,"没想好怎么判"会静默地变成"不告诉用户"。

出处

~/Tools/final-reviewer:CALIBRATION.md 2026-09-30 下午 「首节:两个指标都报,只按条数判」一节 (含 1235 词 / 2 条 / 1.62 与经典窗口 456–1029 词, 以及"两条规矩冲突时取不产生自信错数的那条,另一半用 INFO 说出来,不藏"的原话)、 calibration.json 的首节条数与首节密度两组量。 被报红的那篇是作者自己已录用的论文,所以它同时是这个工具的假阳性地板之一。