PubMed 文獻引用批量驗證:五態判定與錯配 PMID 識別

前言

寫綜述、改 AI 生成的初稿,或維護帶 PMID 的知識庫時,常見做法是逐條打開 PubMed 看編號是否存在。這隻覆蓋了一半問題:不少「看起來合法」的引用,PMID 在庫裏真有記錄,卻指向另一篇同年、同領域的論文——單純的存在性檢查會把這類錯配全部放過。

下面介紹 SkillHub 上的 PubMed文獻引用批量驗證(pubmed-verifier)。它在 Agent 對話裏按自然語言觸發批量覈驗,底層用純 Python 標準庫腳本對接 NCBI 等公開學術接口,在本地生成審計報告,不額外拉第三方運行時依賴。

這是什麼

一句話定位:批量覈驗 PMID / DOI / arXiv 等引用是否真實,並判斷編號是否對得上你聲稱的那篇文獻;錯配時可推薦更可能的 PMID,並支持參考文獻格式化導出。

該 Skill 在 SkillHub 發佈,官方入口爲:

https://api.skillhub.cn/user_481397b5/pubmed-verifier

公開頁顯示分類爲 professional,評分 93097,下載 1855 次(以 SkillHub 展示爲準)。同類技能說明頁(如 @indiv-sorsor/pubmed-verifier)將能力概括爲:五態判定、引用上下文解析與交叉比對、撤稿檢測、arXiv 與純文本參考文獻表解析、GB/T 7714 / Vancouver / APA / AMA 等格式導出,以及 NCBI、Europe PMC、Crossref、OpenAlex 多數據源;網絡不可達時標註爲「未判定」,不誤報爲「不存在」。許可爲 MIT-0,核心實現爲單文件 CLI scripts/verify_pmids.py,零依賴、純本地運行(需聯網訪問學術註冊庫)。

核心功能

五態判定

與僅返回「有 / 無」不同,覈驗結果分爲五類(含義與 Skill 文檔一致):

判定 含義
Correct PMID 存在,且與聲稱的題名、作者、期刊、年份等一致
Mismatch PMID 存在,但指向另一篇文獻(AI 幻覺引用裏較常見)
Partial 部分元數據吻合(例如作者、期刊對但題名不同)
Invalid PubMed 中不存在該 PMID
Unknown 聲稱信息不足無法交叉比對,或數據源暫時不可達

輸入與交叉比對

  • 從項目目錄掃描 .html、.md、.txt、.json 等中的 PMID / PubMed 鏈接,並啓發式解析周圍參考文獻上下文。
  • 支持 Word(.docx)、PowerPoint(.pptx)、導出 HTML、BibTeX / RIS、粘貼的參考文獻表(--parse-text / --stdin)。
  • 可選 --claims-file(JSON 或 CSV)傳入期望題名與作者,做決定性五態判定;可選 --verify-doi、--suggest(錯配時檢索候選 PMID)、撤稿與 DOI 拼接檢測。
  • 輸出終端摘要、HTML 儀表盤、JSON、CSV,以及 --format-references 等格式化結果。

Agent 側觸發

在 Cursor 等兼容環境中安裝 Skill 後,可用中文或英文觸發詞喚起,例如:驗證 PMID、參考文獻覈查、引用驗證、撤稿檢查、文獻排版、verify PMIDs、citation audit、AI幻覺檢測 等。Skill 說明強調:只做驗真與排版,不潤色、不翻譯、不憑空生成參考文獻。

安裝與啓用

  1. 在瀏覽器打開 SkillHub 官方地址(見上文),按頁面指引將 Skill 安裝到當前使用的 Agent(如 Cursor)。各客戶端的具體菜單或命令以 SkillHub 當時展示爲準;本文不寫無法從公開資料覈實的安裝命令。
  2. 安裝完成後,技能包內通常包含 scripts/verify_pmids.py 與 SKILL.md。除對話觸發外,也可在技能目錄下直接調用 CLI 做批處理或 CI。

可選環境變量(用於 NCBI 限速與身份標識,非必須):

export NCBI_API_KEY="你的_NCBI_API_Key"
export PUBMED_VERIFIER_MAILTO="you@lab.org"

大陸網絡環境可參考 Skill 文檔:使用 HTTPS_PROXY / HTTP_PROXY、先執行 --check-net,或通過 --meta-source europepmc 等參數;Skill 包在 ModelScope 等鏡像僅減輕安裝摩擦,覈驗仍訪問學術註冊庫。

典型用法

下列示例來自公開的 pubmed-verifier Skill 文檔,路徑請替換爲本機技能目錄下的 scripts/verify_pmids.py。

投稿前快速全量檢查(刷新緩存、DOI 交叉驗證、錯配建議):

python3 scripts/verify_pmids.py --source /path/to/draft --quick --output report.html

驗證指定 PMID:

python3 scripts/verify_pmids.py --pmids 31018962,22213727

粘貼參考文獻表(無需先存文件):

python3 scripts/verify_pmids.py --parse-text references.txt --no-cache
# 或從管道讀入
cat references.txt | python3 scripts/verify_pmids.py --stdin

帶聲稱元數據的 CSV,並對錯配給出 PMID 建議:

python3 scripts/verify_pmids.py --claims-file claims.csv --suggest --output report.html

claims.csv 需包含 pmid、title 等列;缺 title 時判定最高只能到 partial。可先離線校驗:

python3 scripts/verify_pmids.py --lint-claims claims.csv

在 Python 中調用(將 sys.path 指向技能內 scripts 目錄):

import sys
sys.path.insert(0, "/path/to/pubmed-verifier/scripts")
import verify_pmids as vp

info = vp.fetch_summaries(["31018962"], batch_size=1)["31018962"]
cross = vp.cross_check_citation(
    {"claimed_title": "Classification criteria for autoinflammatory recurrent fevers",
     "claimed_year": "2019"},
    {"title": info["title"], "authors": info["authors"],
     "journal": info["journal"], "pubdate": info["pubdate"]})
print(cross["verdict"], round(cross["confidence"], 2))

適用場景與注意

適合誰

  • 系統綜述、meta 分析投稿前的參考文獻自檢。
  • 審覈 AI 生成文稿中的 PMID / DOI 列表。
  • 醫學科普、教學材料、內部知識庫引文 QA。

使用上要注意

  • --pmids 只做存在性檢查時,不能等同於「引用正確」;要判 mismatch,應提供題名等 claims(--claims-file 或解析上下文)。
  • 終稿前建議加 --no-cache,避免新收錄或撤稿狀態被舊緩存誤導。
  • 大批量(數百條以上)時,--verify-doi 與 --suggest 會顯著增加請求次數;可先掃一遍,再對 flagged 條目深度覈驗。
  • 引用上下文解析是啓發式,非常規排版可能拆錯;精確場景請用結構化 claims。
  • 工具連接 eutils.ncbi.nlm.nih.gov、www.ebi.ac.uk、api.crossref.org、api.openalex.org、export.arxiv.org 等官方接口;報告與緩存寫在本地(默認緩存目錄 ~/.cache/pubmed-verifier/,可用 --no-cache 關閉)。

結尾

PubMed文獻引用批量驗證把「PMID 是否存在」推進到「是否指向正確論文」,用五態結果和可導出的 HTML / JSON 報告,適合在 Agent 裏用自然語言發起,也適合用同一套 CLI 做投稿前批處理。官方地址:

https://api.skillhub.cn/user_481397b5/pubmed-verifier

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜