> 豁免名单就是工具对读者的真实定义——而它和文档里写的那个读者不是同一个人

Research Tools Intermediate 2026-10-13 19:58 2026-10-13
#tooling #allowlist #false-negative #specification #writing #measurement

一个检查"论文里有多少术语没解释"的工具,有一张 196 条的豁免名单, 文件头把门槛写得很清楚:

// TABLE_OF_CONTENTS

结论先行

一个检查"论文里有多少术语没解释"的工具,有一张 196 条的豁免名单, 文件头把门槛写得很清楚:

门槛不是"这个子领域的专家知道它",而是"一个从没读过你相关工作的 CS 本科生 知道它,或者能从上下文猜出来继续读下去"。

名单上有 NDCG。

同一个工具的另一半是让模型扮演那个本科生去读论文。在一篇以 NDCG 为主指标的论文上 (正文出现 68 次,Recall@ 32 次,"Normalized Discounted Cumulative Gain" 出现 0 次), 机械检查报的是另外四个无关缩写、对 NDCG 一声不响; 而那个本科生读者正好停在 IDCG 的公式上,把 NDCG 和 Recall@K 列为"没有定义"。

名单和读者给出了相反的答案,而名单赢了,静默地。

名单的条目不带理由,但它实际上混了三种完全不同的理由:

理由 例子 该有的效果
① 本科生确实知道 CPU、JSON、API 不必展开,不必加注
② 它是个专名,没有"展开"可言 CIFAR-10、MNIST、GSM8K 不必展开,但仍该加一句话的意译
③ 会议名,每篇相关工作都出现 NeurIPS、OSDI 什么都不必

而名单只有一种效果——闭嘴。所以最弱的那种效果覆盖了全部。 文件里的注释自己承认了这一点:

一句意译——"the CIFAR-10 image benchmark"——仍然值得写; 它只是不是这个检查能要求的东西。

还有一层我数出来的:196 条里有 10 条在同一批文献里有第二个常用含义, 而它们全部被永久豁免。

条目 两个含义
CI 置信区间 / 持续集成
MAP mean average precision / maximum a posteriori
LDA latent Dirichlet allocation / linear discriminant analysis
EM expectation-maximization / earth mover
PR precision-recall / pull request
CV computer vision / cross-validation
TF、JS、SE、NA term frequency / TensorFlow,Jensen-Shannon / JavaScript,…

一篇 ML 系统论文里 CI 的两个意思可以同时出现。 而"最该被标出来问一句的条目"和"最像是人人都懂所以进名单的条目",是同一批—— 都是最短最常见的那些。豁免的选择标准和歧义的发生率正相关。

为什么

一张豁免名单不是性能优化,是一份规格。 它逐条回答"我的读者是谁", 而且它的答案会覆盖文档里那句话。工具的说明写着"CS 本科生", 名单写着"IR 领域的从业者"(NDCG)、"变分推断的从业者"(ELBO)、 "2025 年做推理服务的工程师"(TTFT、TPOT),这些都没人核对过。

这个失效方向特别难发现,因为它的症状是沉默。假阳性会有人来报, 假阴性只有在同一个工具里恰好还有第二个独立的判断者时才会暴露—— 这里就是那个运气:机械检查和模型读者在同一篇论文上给了相反答案, 缺陷才浮出来(这一半单独成篇,见 一半机械、一半判断的工具,真正的产出是两半的分歧——而它偏偏只报合集)。

还有一个处置上的陷阱。有一条现场回报说的是"接受我的写法": 作者写了 GSM8K (grade-school math word problems),检查仍报"从未展开", 因为它要的是字面展开("Grade School Math 8K")——而那个展开对它自己定义的读者 什么信息都没提供,"math word problems" 才有。 而最终的处置是把 GSM8K 加进名单。

报告说的是"接受这一类写法",修法解决的是"这一个词"。警报消失了,所以看起来像修好了。

下一个数据集、下一个 benchmark 还会再来一次,而 benchmark 每个月都在出新的。 用名单回应一条关于"接受条件"的报告,是把类的缺陷降级成一条词条。

怎么用

  • 豁免名单的每一条都要带理由,哪怕只是一个单字母标记。三种理由对应三种效果, 合在一张表里只会退化成最弱的那种。
  • 名单写完之后拿工具自己的判断者去审它:让那个"本科生"把名单读一遍, 标出它不认识的。不一致的条目就是规格冲突,不是小问题。
  • 短条目要单独过一遍歧义。长缩写基本是唯一的;两三个字母的几乎都有第二个意思, 而它们最容易进名单。
  • 收到"请接受我的这种写法"的报告时,先问它是一个词还是一类写法。 往名单里加词会让警报消失,这不等于报告被处理了。
  • 相关:判据的盲区落在最该示警的那批数据上,见 判据的盲区正好落在最该示警的那批数据上,这是最糟的一种失效。

出处

~/Tools/nonexpert-review/known_acronyms.txt(196 条,2026-09-25 版)与 nonexpert_review.py 的 term-load 检查,对照 feedback/ 里的现场回报。 NDCG 的 68 次 / 0 次展开、本科生读者停在 IDCG 公式,出自回报; 196 条的清点、三种理由的分类、以及 10 条歧义条目,是我这次数的。