> 一个标签盖了三种根因,而三种的处置相反——"可能是幻觉"的三张脸
一个参考文献核验工具用同一句话 "paper may be hallucinated" 标记三种完全不同的情况, 而它们的正确处置互相矛盾:
结论先行¶
一个参考文献核验工具用同一句话 "paper may be hallucinated" 标记三种完全不同的情况, 而它们的正确处置互相矛盾:
| 根因 | 形态 | 处置 |
|---|---|---|
| ① 查询端瞬时失败 | 限流 / 超时 / 返回 HTML | 等。一条都不要改。 |
| ② 条目唯一的标识符恰好没有后端跟得动 | 有 arXiv DOI(10.48550/…,属 DataCite)而无 eprint |
补 eprint 字段 |
| ③ 条目根本没有机器可读标识符 | @inproceedings,既无 DOI 也无 arXiv id |
补字段无效——得先去查到 DOI |
在限流期间照 ② 的办法去"修",会把一堆正确的条目改坏。
有一个很好用的判别法,不需要任何额外查询:
假阳性批量出现,而且专挑最著名的那几篇文献(BLEU、Cohen 1960、InstructGPT、 经典教材)⇒ 坏的是查询端,不是你的参考文献。
最著名的文献被引用得最多、元数据最全,最不可能是编造的。 它们集体失败只能说明查询路径坏了。
为什么¶
三类里 ② 有一个很反直觉的性质:条目里唯一存在的那个标识符,
正好是所有后端都跟不动的那一个。arXiv 的 DOI 由 DataCite 注册,
而核验链主要问 Crossref——于是一篇真论文被读成幻觉。补上 eprint 之后全部通过。
而 ② 的识别规则本身也有变体,只看 DOI 前缀会全漏:
doi含10.48550/而无eprint;- 任意字段里出现
arXiv:NNNN.NNNNN模式而无eprint(形态是journal = {arXiv preprint arXiv:NNNN.NNNNN})← 只看 ① 会一条都抓不到。
修法在两种形态下都不需要去查:ID 就在条目自己的字符串里,抽出来补成
eprint + archivePrefix 即可。副作用是正收益——某些样式会把 eprint 渲染成标题上的
arXiv 链接,版面不变。
最要紧的一条:这一类不需要 API 通就能判。
"这个条目自己有没有 eprint"只看文件。
所以在限流期间仍然可以推进第二类,同时让第一类保持"等、一条不改"。
按"诊断是否依赖那个正在失败的依赖"给发现分类,是外部服务挂掉时唯一还能前进的方式。
还有两条应当标成"FAIL 但别动"的真实形态,它们证明 FAIL 这个等级本身就是混的:
- DOI 能解析,但后端存的标题被截断了;
- 是一本书,API 没索引——但本地语料库在所引章节处物理存在。 本地语料库里的物理存在,比任何一次 API 匹配都是更强的证据。
怎么用¶
- 一个标签只能对应一种处置。 发现同一个标签下的条目需要相反的动作, 就是该拆标签了。拆法按根因拆,不按严重程度拆。
- 把"不需要外部查询就能判"的那些根因单独做成一个检查。 它们在依赖挂掉时仍然可用,而且确定性。
- 先问"是查询端坏了还是数据坏了",再读任何一条具体的失败。 判别法:假阳性是否批量出现、是否专挑最著名的条目。
- "规则命中"不等于"规则解释了失败"。 把规则的命中集和失败集取交集,而不是数命中条数—— 见 一个语料上总结的根因规则,在下一个语料上可能命中 9 条却解释 0 条失败。
出处¶
- 自己的参考文献核验链(
bibguard)在三个项目的.bib上的三轮实测,2026-10-01, 记录在~/Tools/submission-preflight/feedback/: ② 的纯形态(4 条,补eprint后 4/4 通过)、② 的变体(自由文本里的 arXiv id,4 条)、 ① 的判别法(批量命中名著)、以及两条"FAIL 但别动"的实例 - 相关:会产生"指控"的工具,误报代价不对称——先归一化再开口、 核验报告必须先报自己的覆盖率,再报结论——否则一次失败的核验看起来像核过了、检查工具的噪声按「来源文件」折叠,不按条目截断