> 一个标签盖了三种根因,而三种的处置相反——"可能是幻觉"的三张脸

Research Tools Intermediate 2026-10-11 18:09 2026-10-11
#tooling #citations #diagnosis #root-cause #false-positive #taxonomy

一个参考文献核验工具用同一句话 "paper may be hallucinated" 标记三种完全不同的情况, 而它们的正确处置互相矛盾:

// TABLE_OF_CONTENTS

结论先行

一个参考文献核验工具用同一句话 "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 前缀会全漏:

  1. doi 含 10.48550/ 而无 eprint;
  2. 任意字段里出现 arXiv:NNNN.NNNNN 模式而无 eprint (形态是 journal = {arXiv preprint arXiv:NNNN.NNNNN})← 只看 ① 会一条都抓不到。

修法在两种形态下都不需要去查:ID 就在条目自己的字符串里,抽出来补成 eprint + archivePrefix 即可。副作用是正收益——某些样式会把 eprint 渲染成标题上的 arXiv 链接,版面不变。

最要紧的一条:这一类不需要 API 通就能判。 "这个条目自己有没有 eprint"只看文件。 所以在限流期间仍然可以推进第二类,同时让第一类保持"等、一条不改"。 按"诊断是否依赖那个正在失败的依赖"给发现分类,是外部服务挂掉时唯一还能前进的方式。

还有两条应当标成"FAIL 但别动"的真实形态,它们证明 FAIL 这个等级本身就是混的:

  • DOI 能解析,但后端存的标题被截断了;
  • 是一本书,API 没索引——但本地语料库在所引章节处物理存在。 本地语料库里的物理存在,比任何一次 API 匹配都是更强的证据。

怎么用

  1. 一个标签只能对应一种处置。 发现同一个标签下的条目需要相反的动作, 就是该拆标签了。拆法按根因拆,不按严重程度拆。
  2. 把"不需要外部查询就能判"的那些根因单独做成一个检查。 它们在依赖挂掉时仍然可用,而且确定性。
  3. 先问"是查询端坏了还是数据坏了",再读任何一条具体的失败。 判别法:假阳性是否批量出现、是否专挑最著名的条目。
  4. "规则命中"不等于"规则解释了失败"。 把规则的命中集和失败集取交集,而不是数命中条数—— 见 一个语料上总结的根因规则,在下一个语料上可能命中 9 条却解释 0 条失败。

出处