编制:2026-09-12 | 口径:全部数字为本机实测,不推断 一句话结论:"找全文"这一段我们已经打穿了(40 篇本地全文 + 验真 100%),真正薄弱的是两头——上游"不知道有哪篇"、下游"24 篇真封闭拿不到",以及中间"没有可检索的语料库"。本轮已把语料库补上,剩下两条需要你拍板。
| 项 | 实测值 | 判定 |
|---|---|---|
| 本地全文 | 40 篇 txt / 184.0 万字符 / 切段 1,599 | 够用,但只是 4 个课题的量 |
| PDF 归档 | 4 份 | 偏少(多数走 XML/HTML 通道) |
| oa_index 索引 | 54 个 DOI(34 个有本地全文) | 元数据齐,全文命中 63% |
| 草稿引用缺口(规范化去重后) | D1 3 / D2 12 / D3 0 / D4 8 = 23 个 | 与上轮"真封闭 24 篇"互相验证一致 ✅ |
| 语料检索工具 | 修改前 0(每轮靠临时脚本现写)→ 现已建 脚本/lit_corpus.py |
已补 |
| 中英术语映射 | 修改前 0 → 现建 数据/lit_terms.json 75 组 |
已补(全文是英文、我们提问是中文,不映射就检索不到) |
| 语料格式纯净度 | 13/40 篇是 JATS XML 原文,检索会命中 XML 头 | 已修(自动剥离标签,只留 body) |
| 内部自查纠错率 | 本轮 1 处(Europe PMC 题名误配) | 纪律有效,需保持 |
脚本/lit_corpus.py — 三个子命令,把我们这几轮临时写的脚本固化成基础设施:
- stats 语料盘点(含"草稿引用 vs 本地全文"缺口自动算,DOI 规范化去重)
- search "查询词" 全文段落级 BM25 检索,中文自动展开英文同义词,直接给出可引用的出处
- verify facts.json 数值验真:逐条核对"这个数字是否真在原文里"数据/lit_terms.json — 75 组中英术语(冻干/保护剂/等温扩增/纠错测序/定向进化…),可持续补充。"抗抑制能力 全血 Klentaq1" → NAR gkn1055 排第 1,命中段落正是"血与土壤抑制物抗性"原文(此前只能靠我人工翻)
- 验真 verify → D3 24/24 命中、D4 18/18 命中(100%)esearch/efetch)—— 免费、无需 key,可直接批量拉题录 + PMCID + 摘要脚本/lit_fetch.py —— 输入 DOI 清单,自动逐阶段尝试、落盘、落盘后自动 verify,输出"已获 / 未获 / 原因"三列。verify → 进证据表"三步;数值 token 级回查未命中即不许进对外文件。| 护栏 | 由来 |
|---|---|
| 子 Agent 产物一律不采信自报,必须数值 token 级回查 | 第一轮 38/38、第二轮 59/59 全量回查 |
| Europe PMC 题名误配必须回查真 DOI | 抓 Kermekchiev 时被误配到 Frontiers 2014;gkn952 实为 Arezi 2009,真篇是 gkn1055 |
| "付费墙"结论必须先过 Unpaywall | 57 DOI → 发现 40 篇有合法开放版,原判"付费墙"的 19 篇其实免费可读 |
| 作者手稿(NIHMS)必须标注,不作最终排版引 | Chabon 2020 本地即为手稿 |
| 盗版镜像类不做 | 铁律,这条线不碰 |
我这边立刻能做(不等你)
| # | 动作 | 产出 |
|---|---|---|
| A | 固化 脚本/lit_fetch.py(五阶段阶梯一键化 + 自动验真) |
一脚本、一清单、三列结果 |
| B | 建 PubMed / Crossref 免费检索脚本,补上游召回 | 三通道召回对比表 |
| C | 4 份草稿全量"事实 ↔ 原文"回查 | 验真报告(未命中=0 才放行) |
需要你拍板 2 件