信息速览

PMC OA Subset — 全球最大开放获取生物医学全文语料 AI-Ready Wikipedia
INFOBOX
| 字段 | 内容 |
|---|---|
| 数据集名称 | PMC Open Access Subset(PMC OA Subset) |
| 英文全称 | PubMed Central Open Access Subset |
| 别名/简称 | PMC OA Subset;PMC Open Access 子集;open access[filter] 语料 |
| 疾病分类(ICD-11) | 全谱系生物医学文献(覆盖 ICD-11 多数章节,重点:感染性疾病 1A00-1H0Z、肿瘤 2A00-2F9Z、循环系统 BA00-BE2Z、呼吸系统 CA00-CA4Z) |
| SNOMED CT | 本数据集自身不含 SNOMED CT 标注;全文经 NLP 可抽取 SNOMED CT 概念(辅助主题域) |
| 数据模态 | 全文文本(JATS XML + 纯文本)、PDF、图像/音视频媒体文件、补充材料、JSON 元数据 |
| AI 任务类型 | 语言模型预训练、命名实体识别、关系抽取、问答、文本摘要、文献挖掘、图文对齐(衍生) |
| 样本总数 | 近 8,000,000 篇文章与预印本(截至 2026-07) |
| 数据格式 | NISO Z39.96-2015 JATS XML、TXT、PDF、JSON 元数据、CSV inventory |
| 许可证 | 逐篇 Creative Commons(CC0/CC BY/CC BY-SA/CC BY-ND/CC BY-NC 系列)或类似许可;整体受 PMC Copyright 管理 |
| 访问级别 | 开放(AWS S3 匿名下载,无需注册) |
| 语言 | 英文为主,含多语种期刊文献 |
| 首发日期 | 2003(PMC Open Access 政策设立) |
| 最后更新 | 持续更新(S3 桶连续更新;2026-08-26 完成分发架构迁移) |
| 发布机构 | National Library of Medicine(NLM)/ NCBI / NIH |
| 官方主页 | PMC Open Access Subset |
| 下载地址 | AWS Registry of Open Data: ncbi-pmc(s3://pmc-oa-opendata) |
| AI 就绪度评分 | ⭐⭐⭐⭐(4/5)— 有标准化 JATS 结构、版本化分发与 license 元数据、每日更新;但无官方划分与预处理脚本,JATS 解析与许可过滤需手动实现,扣 1 分 |
| 页面状态 | published |
§0 E-E-A-T 信任声明与免责声明
医学审核者:千方病案医学编辑部交叉审核:§2 医学背景(ICD-11 章节映射、文献谱系与临床任务定义、金标准描述)、§7 偏倚分析。
数据工程审核者:千方病案医学编辑部交叉审核:§4 DAIMS 数据字典(PMCID 版本体系、JATS 字段字典)、§5 数据划分策略、§6 预处理 Pipeline 和坑点。
审核日期:2026-09-05
审核方式:交叉审核
利益冲突声明:千方病案医数集与 NLM、NCBI、NIH、AWS 无任何商业利益关联。本页面不销售 PMC OA Subset 数据集本身,仅提供 AI 就绪指南与学术信息服务。编辑者未接受 NLM、NCBI 或 AWS 的任何形式资助。
医疗免责声明:本页面提供的医学信息仅供研究和教育目的,不构成医疗建议、诊断或治疗方案。数据集的医学描述基于公开发表的文献,未经逐一临床验证。任何基于该数据集训练的 AI 模型在应用于临床决策前,必须经过独立的临床验证和监管审批。
技术免责声明:本页面的代码示例、预处理建议和基准性能数据基于公开资料整理,不保证在特定环境下的准确性和适用性。使用者应自行验证代码安全性和数据预处理流程的正确性。千方病案医数集不对因使用本页面信息而导致的任何直接或间接损失承担责任。
数据使用合规:使用本页面描述的数据集前,请务必阅读并遵守数据集原始许可协议。PMC OA Subset 无需注册即可匿名下载,但每篇文章的再利用边界由其逐篇许可(CC0/CC BY/CC BY-NC 系列等)决定,用户对版权合规负直接与全部责任。DUO 标签仅供参考,具体使用限制以数据集官方协议为准。
§1 数据集概览
§1.0 30 秒速览
这是什么? PMC OA Subset 是美国国家医学图书馆(NLM)旗下 NCBI 维护的 PubMed Central 档案中,专门划出的"可以放心机器再利用"部分:所有以 Creative Commons 或类似开放许可发布的期刊文章与预印本全文。截至 2026-07,它包含近 800 万篇文章,以结构化 XML、纯文本和 PDF 三种形态,通过亚马逊云的公共存储桶免费、匿名、无限量地向所有人开放(NCBI 官方、SciX 2026-07)。
为什么重要? 生物医学 AI 最大的瓶颈不是算法而是语料:PubMed 只有摘要,临床文本受隐私限制不可流通,而 PMC OA Subset 是极少数规模达千万级、许可清晰、全文可得的高质量来源。BioBERT、PubMedBERT、BioGPT 等里程碑式生物医学模型的预训练语料都以它为底座(AAAS 数据集卡片)。可以说,过去五年生物医学 NLP 的进展,相当程度上建立在这个子集之上。
我能用它做什么? 预训练或继续训练医疗大语言模型;构建命名实体识别、关系抽取、问答、摘要的数据集;做药物-疾病-基因挖掘与文献计量研究;甚至从文章图表中二次构建图文对数据集(如 1.65M 图文对的 PMC-OA)。你唯一不能随意做的,是把带有"非商业"许可的文章用于商业产品——这需要按许可逐篇过滤,本 Wiki §6 将给出完整方案。
§1.1 摘要
PMC OA Subset 由 NLM 通过出版商 deposit 与资助机构政策(NIH Public Access Policy 等)两条路径持续收集,所有进入子集的文章均附带允许再利用的机器可读 Creative Commons 或类似许可。NLM 在入库时将出版商来稿标准化为 NISO Z39.96-2015 JATS XML 格式,并同时派生纯文本、全文 PDF、媒体与补充材料文件。自 2003 年设立以来,该子集经历了从 FTP 批量包、PMC-OAI 接口到 2021-09 上云(AWS Open Data)、再到 2026-08 完成分发架构迁移(legacy FTP 与旧 Cloud 文件全部移除,统一收敛至 S3 桶 pmc-oa-opendata)的演进(NCBI Insights、PMC AWS 文档)。数据按 PMCID 与版本号前缀组织,配有每日生成的 CSV inventory 与逐版本 JSON 元数据。对 AI 工程而言,它是一个"许可即元数据、版本即主键"的大规模语料底座:规模近 800 万篇(截至 2026-07),质量由同行评审出版流程背书,但标签(许可、撤稿状态、主题)分布在多个层级,需要工程手段收敛。
§1.2 战略价值
维度一:稀缺的"全文 × 开放许可"交叉点。 生物医学文献的公开形态分三档:PubMed 摘要(免费但非全文)、订阅全文(有版权墙)、开放获取全文(全文且可再利用)。PMC OA Subset 精确占据第三档,且是其中规模最大、许可信息最完整的一份。对需要全文细节(方法学、纳排标准、结果表格)的 AI 任务——如检索增强生成(RAG)的证据库、临床指南抽取、试验设计理解——摘要语料无法替代。PMC 全库约 1,240 万篇文章中,OA Subset 覆盖了其中可机器再利用的绝大部分(PMC 官网、AWS Registry)。
维度二:事实上的生物医学 LLM 预训练标准底座。 BioBERT、PubMedBERT、BioGPT 等模型的预训练语料清单中都把 PMC 全文列为核心组成(AAAS)。选择它作为底座有三个工程理由:许可可审计(避免类似大规模网络爬取语料的版权争议);结构稳定(JATS 是 ISO 标准,二十年不变);更新持续(连续更新 + 每日 inventory,可做增量同步)。对医疗 AI 团队,它同时是"合规护城河"与"免费算力外的基础设施"。
维度三:高质量衍生数据集的母体。 本子集是过去五年一大批知名医疗 AI 数据集的上游:PMC-OA 图文对从其中抽取 1.65M 图题样本(arXiv:2303.07240),各类生物医学问答、关系抽取与检索基准也从中采样构建。这一"母体"地位意味着:以本子集为起点做任务,天然与社区既有基准同源可比;同时也要警惕衍生数据集的采样偏倚被反向继承——用衍生数据集训练的模型,其盲区往往就是母体在特定过滤条件下丢弃的部分。
§1.3 同类数据集横向对比
| 数据集 | 规模 | 模态/形态 | 许可/标注 | 与 PMC OA Subset 的差异 |
|---|---|---|---|---|
| PMC OA Subset | 近 8,000,000 篇(截至 2026-07) | JATS XML/TXT/PDF/媒体 | 逐篇 CC 许可,无任务标签 | 本条目主体:NLM 官方全文语料,许可驱动 |
| PubMed | 超 3,800 万条引文记录 | 标题+摘要+MeSH | 免费检索,全文多在版权墙内 | 只有摘要,无全文;与 OA Subset 通过 PMCID 关联 |
| Europe PMC OA Subset | 近 8,200,000 篇全文 | XML/PDF | 逐篇 CC 许可 | EMBL-EBI 维护,含 PMC 内容且并入更多来源,镜像互补 |
| Author Manuscript Dataset | 超 700,000 篇(2021-09 口径) | XML/TXT(无许可者无 PDF) | 默认仅 text mining + fair use | PMC 家族姊妹数据集,资助政策驱动而非出版商许可 |
| PMC-OA(图文对,上海交大) | 1,650,000 图文对 | 图像+图题 JSONL | 学术发布 | 从本子集二次构建的多模态衍生数据集,易混淆,非本条目对象 |
| bioRxiv/medRxiv | 数百万预印本 | PDF/HTML | 逐篇许可 | 预印本未经同行评审,与本子集的已评审全文互补 |
§1.4 版本时间轴
| 时间 | 事件 | 关键数字/变化 |
|---|---|---|
| 2003 | NLM 设立 PMC Open Access 政策,子集雏形建立 | 官方引用记录起始年为 2003 |
| 2010s | FTP 批量包(oa_comm/oa_noncomm 目录)与 PMC-OAI 接口服务近二十年 | 机器可读全文获取的主通道 |
| 2020-12 | 第三方方法学研究时的子集规模 | 2,869,889 篇,来自 14,722 种 OA 期刊 |
| 2021-09 | PMC Article Datasets 上线 AWS Open Data(STRIDES 支撑) | OA Subset 超 340 万篇 + 预印本;AAM 超 70 万篇 |
| 2026-02 | 宣布 Article Dataset Distribution Service 变更 | 预告 legacy FTP 与旧 Cloud 文件下线 |
| 2026-08-26 | 迁移完成:legacy FTP 与旧 Cloud 分发文件当周全部移除 | 统一收敛至 S3 桶 pmc-oa-opendata,连续更新 |
| 2026-07 | 第三方观测的子集规模 | 近 8,000,000 篇(SciX 博客) |
§1.5 典型应用场景
- 生物医学语言模型预训练/继续预训练:以 JATS XML 或纯文本形态喂入语言模型,BioBERT、PubMedBERT、BioGPT 均属此类用法(AAAS)。
- 检索增强生成(RAG)证据库:按 section 语义切块后建立向量索引,为医疗问答提供可引用的全文证据。
- 生物医学信息抽取:疾病-基因-药物-变异命名实体识别与关系抽取,配合 BioC API 获得 passage 级结构。
- 图文对与多模态语料二次构建:从 XML 的 figure/caption 结构抽取图题对(PMC-OA 1.65M 图文对即源于此,arXiv:2303.07240)。
- 元研究与科学计量:基于全文的方法学趋势、开放许可生态、撤稿行为分析(JATSdecoder 研究即为一例,DOI 10.1007/s11192-021-04162-z)。
选择场景时的一个经验法则:凡是需要"引用可审计"或"全文细节"的场景,本子集都是首选供给;凡是只需要摘要级事实的场景,PubMed/Europe PMC 的轻量接口更经济;凡是需要患者级数据的场景,本子集只能作为知识侧伴随语料,不能替代临床数据库。
§2 医学背景
§2.1 ICD-11 编码映射表
PMC OA Subset 是全谱系生物医学文献语料,本身不带疾病标签;下表给出其内容密度最高的主题域与 ICD-11 章节级映射,供领域过滤与标注体系设计参考。
| 内容主题 | ICD-11 编码 | ICD-11 中文名 | 语料中的典型形态 |
|---|---|---|---|
| 传染病与寄生虫病 | 1A00-1H0Z | 感染性疾病章节 | COVID-19 专题收藏、抗微生物耐药性研究 |
| 肿瘤学 | 2A00-2F9Z | 恶性肿瘤 | 临床试验全文、肿瘤标志物与病理研究 |
| 心血管系统 | BA00-BE2Z | 循环系统疾病 | 队列研究、介入治疗报告 |
| 呼吸系统 | CA00-CA4Z | 呼吸系统疾病 | 哮喘/COPD 管理、机械通气研究 |
| 内分泌与代谢 | 5A00-5D46 | 内分泌、营养或代谢疾病 | 糖尿病流行病学、肥胖干预 |
| 神经系统 | 8A00-8E7Z | 神经系统疾病 | 神经退行性疾病机制与试验 |
| 精神与行为 | 6A00-6E8Z | 精神与行为障碍 | 流行病学调查、干预研究 |
| 公共卫生与卫生系统 | QD00-QE80 | 影响健康状态的疾病或相关实体章 | 卫生政策、医疗质量与安全研究 |
§2.1b SNOMED CT 映射表
| 内容主题 | ICD-11 关联 | SNOMED CT 概念示例 | 术语说明 |
|---|---|---|---|
| 疾病与发现 | 全章节 | 可经 NLP 映射至 clinical finding 层级(如 404684003 \ | Clinical finding) |
| 药物与治疗 | 各系统章节 | 373873005 \ | Pharmaceutical / biologic product) |
| 操作与干预 | 2A00-2F9Z 等 | 71388002 \ | Procedure) |
| 生物体 | 1A00-1H0Z | 57645009 \ | Organism) |
§2.2 疾病谱系简介与流行病学背景
与单一疾病数据集不同,PMC OA Subset 的"医学背景"是整个生物医学研究议程的镜像。语料密度直接反映全球研究热点:2020 年以来新冠相关文献构成 PMC COVID-19 Collection 的主体,其中持续开放再利用许可的部分被并入本子集;肿瘤、心血管与神经科学等高投入领域占据稳定份额。对建模者而言,这带来两个直接后果:其一,任何跨疾病任务都必须处理主题分布的长尾性——第三方分析发现,向 PMC 供稿的期刊中约半数仅提供 10 篇以内的文章(JATSdecoder 研究,Scientometrics 2022);其二,语料的疾病构成会随资助政策与公共卫事件漂移,时间切片分析必须作为标配。
§2.3 临床任务定义
在文献语料上可定义的临床 AI 任务与传统临床数据集不同,核心是"从已发表的医学知识中结构与验证知识":
- 筛查/诊断类知识抽取:从方法与结果部分抽取疾病诊断标准、筛查阈值与判读规则,支撑诊断辅助系统的知识库。
- 治疗证据抽取与分级:识别干预-结局对及其证据强度(RCT/队列/病例报告),用于证据合成与指南支持。
- 预后模型知识发现:抽取预后因子报告,比较跨研究的效应量口径。
- 问答与检索:以全文段落为证据源构建生物医学问答(BioASQ 类任务),是 RAG 系统的标准评测形态。
- 药物警戒信号挖掘:从不良反应报告与病例系列中抽取药物-不良事件对,作为自发报告体系的补充。
- 指南与路径知识装配:抽取临床指南类文献中的推荐条目与证据等级,装配为可推理的知识单元,供决策支持系统调用。
以上任务共享同一个工程前提:先做许可切片与撤稿过滤,再做任务标注。跳过前者会引入合规风险,跳过后者会让模型学到被撤回的知识;两者在 §6.5 的坑点 2 与坑点 4 中各有一套可直接落地的处理方案。
§2.4 患者人群表
本数据集不含患者级记录,人群信息以文献报告的人群聚合形态存在。下表概括语料中研究人群的总体画像(供下游人群偏倚分析参考)。
| 维度 | 语料中的总体形态 | 对 AI 建模的含义 |
|---|---|---|
| 来源 | 全球同行评审期刊 deposit;英文期刊与西方出版商占高频主体 | 训练出的知识分布偏 English-language 医学体系 |
| 时间 | 20 世纪至今连续覆盖,2020 年后显著加速 | 近期文献权重需按任务显式设定 |
| 研究人群 | 各原始研究的人群由其入排标准决定,语料层面无法聚合 | 人群级结论不可直接从语料统计得出 |
| 性别/种族 | 原始研究报告不一致,无统一字段 | 公平性分析需回溯到具体研究而非语料整体 |
| 就医类型 | 覆盖门诊、住院、公共卫生场景的混合叙述 | 场景混淆是抽取任务的常见噪声源 |
§2.5 临床价值
PMC OA Subset 的临床价值体现在"知识供给侧":它是临床决策支持、指南工具与医学教育系统的知识原料库。与 MIMIC 类临床数据集形成互补——临床数据回答"发生了什么",文献语料回答"应当如何解释与处置"。在监管侧,任何面向临床的生成式系统都需要可追溯的证据引用,而本子集的逐篇许可与 PMCID 恒定标识使"引用可审计"在工程上可落地。对医学信息学研究者,它还是研究本身的对象:出版偏倚、报告质量、撤稿模式等元科学问题都能在同一份语料内做纵向分析。
从落地路径看,其临床价值分三段实现:短期(检索与摘要,直接可用)、中期(结构化知识抽取,需 §6.3 级流水线)、长期(与临床数据集联动验证,如用文献中的纳排标准校准真实世界队列定义)。三段的共同前提是许可合规与撤稿过滤——这两件事做不好,后续所有临床应用都建立在可被撤回的证据之上。
§2.6 金标准描述
| 维度 | 描述 |
|---|---|
| 划分 | 无官方划分;语料按 PMCID/版本组织,划分由使用方自定(见 §5) |
| 标注方式 | 无任务标注;许可标签、文章类型(retraction/correction/expression-of-concern)与元数据由出版商 deposit 与 NLM 入库流程产生 |
| 标注者 | 出版商编辑与 NLM 入库流水线,非临床标注团队 |
| 性质 | 知识语料型金标准:全文结构(JATS)即为"标签",质量由同行评审出版流程与 NLM 标准化双重背书 |
§3 数据集规格
§3.0 版本抉择矩阵
PMC OA Subset 本身持续更新无固定版本号,但 PMC Article Datasets 家族提供多条获取路径与姊妹子集。按下表根据需求选择:
| 你的需求 | 推荐路径/子集 | 获取方式 | 理由 |
|---|---|---|---|
| 商业产品训练(模型会商用) | OA Subset 中 CC0/CC BY 文章子集 | AWS S3 + JSON 元数据 license 字段过滤 | 非 NC 许可才可安全用于商用模型;须保留许可溯源 |
| 学术研究全量语料(含非商用) | 整个 OA Subset | aws s3 sync --no-sign-request s3://pmc-oa-opendata |
覆盖全部 CC 许可与"其他"许可文章,规模最大 |
| 需要 NIH 资助作者手稿(AAM) | Author Manuscript Dataset | AWS Cloud Service(无 CC 许可者仅 XML/TXT) | AAM 是出版版之外的早期版本;默认许可仅为 text mining |
| 18-20 世纪历史文献 | Historical OCR Dataset | AWS S3(同桶) | NLM 数字化项目的 OCR 全文,均带 CC 许可 |
| passage 级结构化 NLP | BioC API | REST 拉取(BioC XML/JSON) | 免去 JATS 解析,直接获得段落与偏移 |
| 增量同步/每日更新 | S3 inventory + E-Utilities | CSV inventory(每日生成)+ efetch | 比全量重扫便宜;注意 inventory 滞后约一天 |
| OAI 元数据收割 | PMC OAI-PMH Service | OAI-PMH 协议 | 库级元数据同步的传统通道,不传送媒体文件 |
§3.1 模态详情
- 全文 XML:NISO Z39.96-2015 JATS 格式,含 front(元数据/摘要)、body(分节正文)、back(参考文献/致谢)三大部分,是信息保真度最高的形态。
- 纯文本 TXT:由 XML 抽取的纯文本,丢失结构与表格形态,适合快速预训练。
- 全文 PDF:出版商排版版本(有许可者才提供;无 CC 许可的作者手稿不提供 PDF)。
- 媒体文件:文章内嵌图像、音视频(开放获取文章提供)。
- 补充材料:出版商随文发布的附录数据、代码与表格。
- JSON 元数据:每版本一份,含 pmcid、version、license、is_manuscript、MD5 等字段。
- CSV inventory:全桶对象清单,每日生成、保留 30 天,是对账与增量同步的权威依据(PMC AWS 文档、Cloud Service 文档)。
§3.2 按许可分组的样本构成
| 分组 | 许可类型 | 商业再利用 | 说明 |
|---|---|---|---|
| Commercial use allowed | CC0、CC BY、CC BY-SA、CC BY-ND | 允许(需遵守具体条款) | Snowflake 口径下仅此组可安全商用,文章超 400 万 |
| Non-commercial use only | CC BY-NC、CC BY-NC-SA、CC BY-NC-ND | 禁止 | 学术研究可自由使用 |
| Other | 无机器可读 CC 许可/未打标/自定义许可 | 逐篇判定 | 需人工或规则审计许可声明 |
| (关联)AAM 无 CC 者 | 默认 text mining + fair use | 禁止 | 属 Author Manuscript Dataset,带 CC 的 AAM 亦出现在 OA Subset |
| (关联)Historical OCR | 18-20 世纪数字化期刊,均带 CC 许可 | 依具体 CC 条款 | 本子集组成部分,OCR 文本质量低于 born-digital |
来源:PMC Article Datasets 官方页、Snowflake 列表。官方未公布各分组文章数的实时拆分,请以 JSON 元数据与 inventory 自行统计。
§3.3 格式规格表
| 形态 | 格式标准 | 典型用途 | 结构保留度 |
|---|---|---|---|
| 全文 XML | NISO Z39.96-2015 JATS | 解析、抽取、多模态构建 | 完整(front/body/back) |
| 纯文本 | TXT(XML 抽取) | LLM 预训练 | 仅段落文本 |
| 出版商 PDF | 人工阅读、版面模型 | 排版级 | |
| 元数据 | JSON(每版本一份) | 许可过滤、版本管理 | 字段级 |
| 清单 | CSV inventory(每日) | 对账、增量 | 对象级 |
§3.4 存储大小
官方未公布子集总量的权威数字;S3 桶含逐文章的 XML/TXT/PDF/媒体与补充材料文件,总量为持续增长的 TB 级。规划存储时建议以 inventory 统计为准,并为 PDF 与补充材料预留数倍于 XML 的空间(AWS Registry)。
自测容量的推荐做法:拉取最新 inventory 快照后按顶层目录与对象后缀聚合 size_bytes,得到"XML/TXT/PDF/媒体/补充材料"五类各自的桶内实况。经验上 PDF 与媒体对象数量多、单件体积大,是镜像成本的支配项;若任务只需文本(预训练、抽取),仅同步 xml/ 与 txt/ 目录可将成本降低一个数量级。镜像前先做这份统计,是避免"盲扫全桶"的最重要一步。
§3.5 标注方式
本子集无人工任务标注。可用的"准标注"全部由出版流程产生:许可标签(permissions/license 元数据)、文章类型(article-type 属性:retraction/correction/expression-of-concern)、作者手稿标志(is_manuscript)、版本号与时间戳。主题与关键词字段由出版商填写,一致性差,第三方研究明确建议不要单独依赖 subject/keyword 做主题筛选(JATSdecoder 研究)。需要任务标签时,社区惯例是借助 PubMed MeSH 词表或外部本体映射间接获得弱监督信号。
§3.6 标注者资质与一致性
许可与文章类型信息由出版商编辑部(而非 NLM 临床标注员)提供,质量参差:JATS4R 运动正是因出版商间 JATS 标注不一致而发起,许可标注是重灾区(机器可读 URI 与人读文本矛盾的实例见于 OAMI 的 Wikimedia 复用实践,Balisage 2015)。NLM 入库时进行 JATS 标准化,但不改写许可文本本身。
§3.7 采集周期
子集自 2003 年政策设立起持续积累;S3 桶以连续更新方式接收新文章版本与既有版本的修订;CSV inventory 每日生成、保留 30 天快照(PMC AWS 文档)。
§3.8 地域覆盖
全球期刊 deposit,无地理过滤。高频期刊与出版商以欧美为主,英语内容占绝对多数;非英语文献以局部分布存在,建模时需考虑语言偏倚。
§3.9 设备规格
不适用。本子集为文献语料,无采集设备概念;涉及医学影像的插图仅以出版图像形态出现,其采集设备信息需回溯到各原始文章正文。
§3.10 深度溯源链
每篇文章版本可完整溯源:出版商/资助方 deposit → NLM 入库标准化(JATS)→ S3 桶前缀 PMCID.版本号 → JSON 元数据(license/is_manuscript/MD5/LastModifiedDate)→ CSV inventory 快照。删除以"前缀整体消失"呈现且无显式通知,inventory 对账是唯一官方支持的删除发现机制(PMC AWS FAQ)。
§4 数据结构
§4.0 目录树
AWS S3 桶按文章版本前缀组织,同步到本地后形态如下(示例为两个文章版本):
pmc-oa-opendata/ # S3 桶根(或本地镜像根目录)
├── README.txt # 官方技术说明:结构/inventory/版本机制
├── xml/ # JATS XML 全文(按 PMCID.版本 前缀)
│ ├── PMC1234567.1/
│ │ ├── PMC1234567.xml # NISO Z39.96-2015 JATS 全文
│ │ └── PMC1234567.json # 该版本 JSON 元数据
│ └── PMC7654321.2/ # 同一文章的第二版(AAM 或期刊分版)
│ ├── PMC7654321.xml
│ └── PMC7654321.json
├── txt/ # XML 抽取的纯文本(同前缀规则)
│ └── PMC1234567.1/PMC1234567.txt
├── pdf/ # 全文 PDF(仅许可允许者)
│ └── PMC1234567.1/PMC1234567.pdf
├── media/ # 文章内嵌图像/音视频
│ └── PMC1234567.1/media/
└── supplementary/ # 出版商补充材料
└── PMC1234567.1/supplementary/
说明:桶内另含官方 CSV inventory 对象与 README;不同资源类型的顶层目录划分以桶内 README 为权威,以上为工程镜像示意。
§4.1 DAIMS 字段字典
以 JSON 元数据 + JATS XML 双层字段组织,核心字段如下:
| 字段名 | 类型 | 说明 | 示例值 | AI 用途 | 观测误差 | 信息性缺失编码 | 取值范围 |
|---|---|---|---|---|---|---|---|
| pmcid | Text | PMC 恒定标识,主键成分 | PMC1234567 | 语料定位、引用溯源 | 无(官方分配) | 无 | PMC + 1-8 位数字 |
| version | Integer | PMC 处理序版本号 | 1 / 2 | 版本控制、AAM 区分 | 高版本不必然更新(见坑点 5) | 无 | ≥1 |
| license | Text | 机器可读许可标签 | cc-by / cc0 / cc-by-nc | 商用过滤的权威字段 | 与人读文本可能矛盾(坑点 3) | “other”/缺失=需审计 | 枚举 |
| is_manuscript | Text | 是否作者手稿 | yes / no | AAM 与出版版区分 | 无 | 无 | |
| article-type | Text | JATS 文章类型属性 | research-article / retraction | 撤稿过滤 | 出版商填写不一致 | 缺省=research-article | 枚举 |
| title | Text | 文章标题(JATS front) | — | 检索、摘要任务 | 特殊字符转义差异 | 无 | 自由文本 |
| abstract | Text | 结构化/非结构化摘要 | — | 预训练、QA 弱监督 | 约 18% 第三方观测缺 abstract(需回补) | 无 | 自由文本 |
| body/sec/title | Text | 章节标题 | Methods | 语义切块 | 标题命名无标准词表 | 无 | 自由文本 |
| author/ORCID | Text | 作者识别码 | 0000-0002-XXXX | 作者消歧 | 2020 年约半数文章缺失 | 缺失=无编码 | 自由文本 |
| LastModifiedDate | Date | 对象最后修改时间 | 2026-08-26 | 增量同步 | 含非内容性重写(坑点 8) | 无 | ISO 日期 |
§4.2 标签分布
许可标签是本子集最重要的"标签体系"。官方不发布实时分布;基于公开口径可锚定两点:仅商业可用组(CC0/CC BY 等)文章超 400 万(Snowflake 口径),子集整体近 800 万(SciX,2026-07)。工程上应一次性用 JSON 元数据统计自己的镜像副本,并将分布随数据版本一起归档。
推荐的三层标签视图:
| 标签层 | 来源字段 | 典型取值 | 工程动作 |
|---|---|---|---|
| 许可层 | JSON metadata license |
cc0 / cc-by / cc-by-nc / other | 商用白名单过滤(§6.3) |
| 类型层 | JATS 根元素 article-type |
research-article / retraction / correction / expression-of-concern | 撤稿剔除或降权(坑点 4) |
| 版本层 | JSON metadata is_manuscript |
yes / no | AAM 与出版版区分(坑点 5) |
三层各自独立漂移:许可层随出版商政策变化,类型层随撤稿事件更新,版本层随 deposit 流程增补。任何"标签分布报表"都应注明统计时点与 inventory 快照 ID。
§4.3 关键统计
| 指标 | 数值 | 时点 | 来源 |
|---|---|---|---|
| 子集文章与预印本总数 | 近 8,000,000 篇 | 截至 2026-07 | SciX 博客 |
| PMC 全库文章总数 | 约 12,400,000 篇 | 截至 2026-09 检索 | PMC 官网 |
| 仅商业可用组文章数 | 超 4,000,000 篇 | 2025-05 引用口径 | Snowflake 列表 |
| 上云时子集规模 | 超 3,400,000 篇 | 2021-09 | NCBI Insights |
| 作者手稿数据集规模 | 超 700,000 篇 | 2021-09 | NCBI Insights |
| 供稿期刊数(历史切片) | 14,722 种 OA 期刊 | 2020-12 | bioRxiv 方法学研究 |
| 长尾集中度 | 约半数期刊仅 ≤10 篇 | 2022 发表观测 | JATSdecoder 研究 |
除官方时点数据外,撤稿/更正/关注声明混入语料,可通过 article-type 属性或检索过滤器 articletyperetraction 等识别(官方文档)。
§4.4 数据层级
PMC Article Datasets(家族)
└── PMC OA Subset(许可驱动子集)
└── Article Version(PMCID.版本号,主键单元)
├── JATS XML:front(元数据/摘要)→ body(sec/p 分节)→ back(参考文献)
├── TXT 派生物、PDF、media、supplementary
└── JSON 元数据(license / is_manuscript / MD5 / LastModifiedDate)
§4.5 缺失值与信息性缺失
| 缺失情形 | 表现 | 是否信息性缺失 | 建议处理 |
|---|---|---|---|
| 无摘要 | JATS 无 abstract 元素 | 否(出版差异) | E-Utilities 从 PubMed 回补或置空 |
| 无 ORCID | 作者无识别码 | 否(2020 年约半数) | 按姓名+机构模糊消歧,接受不确定性 |
| 版本 1 不存在 | 桶内仅有 .2 前缀 | 是(暗示 v1 许可不合格被移除) | 不要假设 v1 必然存在 |
| 许可标 other | 无机器可读 CC 标签 | 是(许可不确定) | 逐篇审计或排除出商用管道 |
§5 划分与使用建议
§5.1 官方划分
无。PMC OA Subset 是持续更新的语料库,官方不提供 train/val/test 划分,这一"空白"是有意设计:子集的许可与内容随出版流程流动,固定划分会立即过时。
§5.2 社区惯例划分
- 按时间切分:以 LastModifiedDate 或出版日期划快照(如训练 ≤2024、测试 2025+),最接近真实部署漂移。
- 按 PMCID 哈希切分:确定性切分,便于跨团队复现,适合静态语料快照研究。
- 按期刊/学科切分:测试分布外(OOD)泛化能力,对应"换一家出版商/换一个专科"的真实场景。
- 按许可组切分:商用评测只允许在 CC0/CC BY 切片上进行;非商用切片单独报告,避免许可污染评测结论。
- 按任务已有基准接入:NER/QA 任务直接使用 BLURB、BioASQ 等外部基准的划分,语料仅作预训练。
§5.3 泄漏风险(重点)
- 同文多版本泄漏:AAM 与出版版可能同时在桶内(is_manuscript 区分),切分必须以 PMCID 而非文件为单位。
- 预印本/镜像重复:同一研究可能同时出现在 bioRxiv、arXiv 与 PMC,跨库预训练需做文本级近重复去重(段落哈希 + MinHash)。
- 更正链条泄漏:correction 引用原文,若原文与更正分属不同 split,评测会虚高;建议沿 PMCID 聚簇后再切分。
- 时间泄漏:知识具有时效性,用 2026 年测试集评 2019 年切片的模型会同时测出知识过时与能力不足两种效应。
§5.4 交叉验证建议
对全量预训练任务交叉验证意义有限;对微调任务(如章节分类、关系抽取),建议 5 折按 PMCID 分组交叉验证(GroupKFold on PMCID),确保同一文章的所有版本与派生句落入同一折。折间应同时报告许可组构成——若某折非商用文章占比显著偏高,其指标不能与商用切片直接平均。
§5.5 外部验证建议
在任何下游系统上线前,用与语料构成显著不同的外部数据做验证:非英语文献子集、低资源专科期刊、撤稿高发领域,以及 BioASQ/BLURB 等标准基准,以检验对 §7.3 所列泛化风险的实际暴露程度。验证集一经选定即冻结,不随镜像更新滚动换题,否则性能曲线的起伏将无法归因于模型与数据本身。
§6 AI 就绪指南
§6.0 云端快速启动
语料托管在 AWS Open Data 桶 pmc-oa-opendata(us-east-1),支持匿名访问,无需 AWS 账号。若在 AWS 上计算,同区拉取近乎零出口流量成本:
# 1. 无凭证浏览桶结构(匿名访问必须加 --no-sign-request)
aws s3 ls --no-sign-request s3://pmc-oa-opendata/
# 2. 读取官方 README(结构/inventory/版本机制以它为权威)
aws s3 cp --no-sign-request s3://pmc-oa-opendata/README.txt . && less README.txt
# 3. 试拉一篇文章版本(替换为 README 中的真实前缀示例)
aws s3 cp --no-sign-request s3://pmc-oa-opendata/xml/PMC1234567.1/ ./sample/ --recursive
# 4. 批量镜像(建议 --no-sign-request + 仅同步所需目录)
aws s3 sync --no-sign-request s3://pmc-oa-opendata/xml/ ./corpus/xml/ --no-progress
§6.1 快速上手
本节代码的目录结构预期:镜像或抽样后的本地目录为
./corpus/,其下含xml/PMC*.1/*.xml与同名 JSON 元数据。data_root即./corpus,代码内部按data_root / "xml" / f"{pmcid}.{version}"拼接,与 §4.0 目录树一一对应。最小可用子集:先抓取任意 100 个xml/PMC*/前缀即可跑通本节与 §6.4 全部代码。
# quickstart.py — 10 分钟跑通:解析一篇 JATS XML + 读取许可元数据
# 预期目录:./corpus/xml/PMC1234567.1/PMC1234567.xml 与同目录 .json
from pathlib import Path
import json
from lxml import etree
data_root = Path("./corpus") # data_root:本地镜像根目录
jats_ns = {"jats": "https://jats.nlm.nih.gov"} # PMC 实际命名空间以文件头为准
def parse_article(xml_path: Path) -> dict:
"""从单篇 JATS XML 提取标题/摘要/分节正文,并读取同目录 JSON 元数据。"""
tree = etree.parse(str(xml_path))
title = tree.findtext(".//front//article-title", default="").strip()
abstract = " ".join(
t.strip() for t in tree.findall(".//front//abstract//text()") if t.strip()
)
sections = []
for sec in tree.findall(".//body//sec"):
heading = (sec.findtext("./title") or "").strip()
paras = [" ".join(p.itertext()).strip() for p in sec.findall("./p")]
body = "\n".join(x for x in paras if x)
if body:
sections.append({"heading": heading, "text": body})
meta_path = xml_path.with_suffix(".json") # JSON 元数据与 XML 同前缀
meta = json.loads(meta_path.read_text()) if meta_path.exists() else {}
return {
"title": title,
"abstract": abstract,
"sections": sections,
"license": meta.get("license"), # 商用过滤的权威字段
"is_manuscript": meta.get("is_manuscript"),
}
xml_files = sorted((data_root / "xml").glob("PMC*/PMC*.xml"))[:100] # 最小子集
docs = [parse_article(p) for p in xml_files]
print(f"parsed {len(docs)} articles; first license = {docs[0]['license']}")
§6.2 数据获取
| 通道 | 地址 | 格式 | 速率/限流 | 适用场景 |
|---|---|---|---|---|
| AWS S3(主力) | s3://pmc-oa-opendata(us-east-1) |
XML/TXT/PDF/JSON/CSV | 存储/带宽瓶颈,无 API 限流 | 全量镜像、批量获取 |
| PMC OAI-PMH | 官方 OAI 页 | XML 元数据与全文 | OAI 协议限流 | 元数据收割、增量 |
| E-Utilities | eutils.ncbi.nlm.nih.gov | XML | 无 key 3 req/s,有 key 10 req/s | 定点查询、回补摘要 |
| BioC API | BioC-PMC | BioC XML/JSON | API 节流 | passage 级 NLP |
注意:2026-08-26 起 legacy FTP(ftp.ncbi.nlm.nih.gov/pub/pmc/oa_bulk)与旧 Cloud 分发文件已全部移除,任何指向 FTP 的旧脚本都会失败;批量获取一律走 S3(PMC AWS 文档)。
# 下载策略:先 inventory 对账,再按需同步(避免全桶盲扫)
# 1) 获取最新 inventory 快照并统计 XML 对象数
aws s3 cp --no-sign-request s3://pmc-oa-opendata/inventory/latest/ ./inv/ --recursive
# 2) 多线程镜像 xml 目录(aria2/wget 单线程在大规模下严重低效)
aws s3 sync --no-sign-request s3://pmc-oa-opendata/xml/ ./corpus/xml/ \
--exclude "*" --include "PMC*.1/PMC*.xml" --no-progress
# 3) E-Utilities 回补示例(注意限流:无 API key 每秒 3 次)
sleep 0.4 && curl -s "https://eutils.ncbi.nlm.nih.gov/entrez/eutils/efetch.fcgi?db=pubmed&id=36826692&retmode=xml"
§6.3 预处理全流程
流程:JATS 解析 → 许可过滤 → 撤稿剔除 → 清洗标准化 → 语义切块 → 去重 → 落盘 JSONL。
# preprocess.py — 生产级最小流水线
# 预期:./corpus/xml/PMC*/ 与镜像一致;输出 ./corpus/processed/train.jsonl
import hashlib, json, re
from pathlib import Path
from lxml import etree
data_root = Path("./corpus")
out_dir = data_root / "processed"
out_dir.mkdir(exist_ok=True)
ALLOWED = {"cc0", "cc-by", "cc0 1.0", "cc-by 4.0"} # 示例商用白名单,按需扩展
def norm_license(lic: str) -> str:
"""把许可串规范化为小写枚举,便于过滤与审计。"""
return re.sub(r"\s+", " ", (lic or "").strip().lower())
def para_hash(text: str) -> str:
return hashlib.sha1(" ".join(text.split()).encode()).hexdigest()
def clean(text: str) -> str:
text = re.sub(r"\[\d+(?:,\s*\d+)*\]", "", text) # 参考文献角标
text = re.sub(r"\s+", " ", text).strip() # 连续空白
return text
def iter_docs():
for meta_path in sorted((data_root / "xml").glob("PMC*/*.json")):
meta = json.loads(meta_path.read_text())
lic = norm_license(meta.get("license", ""))
if lic not in ALLOWED: # 步骤 2:许可过滤
continue
xml_path = meta_path.with_suffix(".xml")
if not xml_path.exists():
continue
tree = etree.parse(str(xml_path))
atype = tree.getroot().get("article-type", "") # 步骤 3:撤稿剔除
if atype in {"retraction", "expression-of-concern"}:
continue
pmcid_version = meta_path.parent.name
title = (tree.findtext(".//front//article-title") or "").strip()
abstract = clean(" ".join(
t for t in tree.findall(".//front//abstract//text()") if t.strip()))
for sec in tree.findall(".//body//sec"): # 步骤 5:语义切块
heading = (sec.findtext("./title") or "").strip()
for p in sec.findall("./p"):
text = clean(" ".join(p.itertext()))
if len(text.split()) < 20: # 过滤碎句
continue
yield {
"id": f"{pmcid_version}#{para_hash(text)[:12]}",
"pmcid_version": pmcid_version,
"section": heading, "title": title,
"abstract": abstract, "text": text,
"license": lic,
}
seen, n = set(), 0
with (out_dir / "train.jsonl").open("w") as f: # 步骤 6:文档级去重
for rec in iter_docs():
if rec["id"] in seen:
continue
seen.add(rec["id"])
f.write(json.dumps(rec, ensure_ascii=False) + "\n")
n += 1
print(f"wrote {n} paragraphs -> {out_dir/'train.jsonl'}")
标准化建议:许可枚举化(norm_license)、日期统一 ISO、段落级哈希主键、保留 pmcid_version 作 group 键;增强策略见 §6.6。
§6.4 PyTorch DataLoader 完整代码
# dataset.py — 语言模型继续预训练的 Dataset + DataLoader
# 预期:./corpus/processed/train.jsonl 由 §6.3 产出(每行一个段落记录)
import json
from pathlib import Path
import torch
from torch.utils.data import Dataset, DataLoader
from transformers import AutoTokenizer
class PmcOaTextDataset(Dataset):
"""按段落读 JSONL;group 键 pmcid_version 保留在样本里供 GroupKFold。"""
def __init__(self, jsonl_path: str, tokenizer_name: str = "microsoft/BiomedNLP-BiomedBERT-base-uncased-abstract-fulltext",
max_length: int = 512):
self.records = [json.loads(line) for line in Path(jsonl_path).open()]
self.tokenizer = AutoTokenizer.from_pretrained(tokenizer_name)
self.max_length = max_length
def __len__(self):
return len(self.records)
def __getitem__(self, idx):
rec = self.records[idx]
text = f"[SEC] {rec['section']} [SEP] {rec['text']}"
enc = self.tokenizer(
text, truncation=True, max_length=self.max_length,
padding="max_length", return_tensors="pt",
)
return {
"input_ids": enc["input_ids"].squeeze(0),
"attention_mask": enc["attention_mask"].squeeze(0),
"pmcid_version": rec["pmcid_version"], # 泄漏审计用
"license": rec["license"], # 合规审计用
}
train_ds = PmcOaTextDataset("./corpus/processed/train.jsonl")
train_loader = DataLoader(
train_ds, batch_size=32, shuffle=True,
num_workers=8, pin_memory=True, drop_last=True,
)
batch = next(iter(train_loader))
print(batch["input_ids"].shape, batch["license"][:4])
§6.5 坑点 8 个
⚠️ 坑点 1:FTP 时代脚本全面失效(分类:工程陷阱)
问题:2026-02 宣布分发服务变更,2026-08-24 当周 legacy FTP(oa_bulk 的 oa_comm/oa_noncomm 包)与旧 Cloud 文件全部移除,大量博客、教程与内部脚本仍指向 FTP 地址。
症状:wget ftp.ncbi.nlm.nih.gov/pub/pmc/oa_bulk/...直接连接失败或 404;oa_file_lists.csv等旧清单无处可下。
解决:
- 简单方法:改用
aws s3 sync --no-sign-request s3://pmc-oa-opendata/,匿名即可,无需账号。- 进阶方法:以桶内 README.txt 与每日 CSV inventory 重建文件清单,替换旧的 oa_file_lists 逻辑。
- SOTA 方法:写一层分发抽象(distribution adapter),S3 为主、OAI-PMH/E-Utilities 为增量通道,未来再变架构只改一层。
参考:PMC 分发变更公告、NCBI Insights
⚠️ 坑点 2:CC BY 与 CC BY-NC 混进同一个训练桶(分类:偏倚陷阱)
问题:子集不按许可分组分目录(旧 FTP 时代按 oa_comm/oa_noncomm 的习惯已失效),商用团队若不过滤直接预训练,模型权重可能背负不可再分发的许可污染。
症状:法务审查时无法回答"模型见过哪些许可的文章";或分发时发现部分语料明确标注 non-commercial。
解决:
- 简单方法:下载后用 JSON 元数据
license字段硬过滤,仅保留 CC0/CC BY 等商用组。- 进阶方法:把许可规范化为小写枚举并随每条记录持久化(见 §6.3),训练侧与发布侧共用同一审计键。
- SOTA 方法:构建许可族谱(CC0 < CC BY < CC BY-SA/ND < NC 系),对 CC BY-SA/ND 做"允许商用但条款特殊"的二级处置,并保留逐篇溯源清单。
参考:PMC Article Datasets 许可说明、PMC Copyright
⚠️ 坑点 3:机器可读许可与人读许可文本矛盾(分类:预处理陷阱)
问题:出版商 JATS 标注质量参差,存在 license URI 标为 CC-BY 但人读文本附含"不得商用"条款、许可信息落在 permissions 元素之外、同文多个矛盾 URI 等真实案例(OAMI 为 Wikimedia 收集媒体时发现,并催生了 JATS4R 规范)。
症状:仅按 URI/标签过滤的管道会把 NC 文章当成商用可用;两套过滤口径给出不同文章数且无法解释。
解决:
- 简单方法:标签与全文正则扫描双通道,二者不一致的文章进入人工待审队列。
- 进阶方法:用规则 + 小型分类器对人读许可段落分类(commercial/NC/unknown),与机器可读标签做交叉校验。
- SOTA 方法:对争议文章直接回退到出版商官网声明页比对;仍不确定即按 NC 处理(宁严勿宽)。
参考:JATS4R 背景论文(Balisage 2015)
⚠️ 坑点 4:撤稿与更正混在语料里当"正常知识"用(分类:标签理解)
问题:子集内含 retraction、correction、expression-of-concern 文章;撤稿声明本身措辞与论文正文相似,直接混训会让模型把被撤结论当有效证据。
症状:RAG 系统引用已被撤稿的研究支撑答案;按 article-type 统计时发现数千篇撤稿混在全量里。
解决:
- 简单方法:入库时按 XML
article-type属性剔除 retraction/expression-of-concern。- 进阶方法:保留撤稿文章但打独立标签,构建"撤稿感知"检索器(检索时降权)。
- SOTA 方法:建立 PMCID → 撤稿状态的定期刷新表(官方亦提供
articletyperetraction等检索过滤器),在服务层做引用前校验。
参考:PMC Article Datasets 官方页
⚠️ 坑点 5:版本号不是"越新越好",v1 可能不存在(分类:工程陷阱)
问题:S3 按 PMCID.版本号组织;版本号反映 PMC 处理顺序而非新旧,且 v1 常因许可不合格被整体移除(桶里可能只有 .2 没有 .1);同一文章可能同时存在作者手稿版与出版版。
症状:按"取最大版本号"合并语料时错选 AAM 版本;假设 v1 必然存在的键拼接逻辑在部分文章上崩溃。
解决:
- 简单方法:每版本读 JSON 元数据,以
is_manuscript区分 AAM 与出版版,按任务策略选择(预训练可全收、评测只用出版版)。- 进阶方法:以 inventory 的 LastModifiedDate 而非版本号做更新检测。
- SOTA 方法:在镜像层维护 pmcid_version 主键表 + 每日 inventory diff,把"版本选择"做成显式可配置策略。
参考:PMC AWS 文档 FAQ
⚠️ 坑点 6:复合图、公式与媒体类型标注不一致毁掉多模态抽取(分类:预处理陷阱)
问题:出版商对 figure/caption、数学公式、媒体类型的 JATS 标注差异巨大(OAMI 实践中媒体类型、关键词、图题标注全部中招);直接按标签抽图题对会得到大量错配样本。
症状:构建图文对数据集时出现"一题多图"“图题张冠李戴”;公式段落出现 XML 实体碎片。
解决:
- 简单方法:只取单子图+单图题、标签结构完整的文章,宁缺毋滥。
- 进阶方法:引入子图检测与图题切分模型(PMC-OA 流水线:DocFigure 分类 + DETR 子图分割 + 图题对齐,对齐精度约 73%)。
- SOTA 方法:对齐后用 CLIP 打分过滤低置信对,并保留 alignment_score 供下游加权。
参考:PMC-CLIP 论文、JATS4R 背景
⚠️ 坑点 7:作者消歧系统性失败(分类:偏倚陷阱)
问题:约半数 2020 年文章没有任何作者识别码(ORCID 等),同名作者在生物医学领域极普遍,纯姓名消歧会把不同人的产出混为一谈,做作者级分析或图谱构建时偏差被放大。
症状:作者图谱中出现高产"同一作者"横跨无关专科;按作者聚合的评测指标不稳定。
解决:
- 简单方法:姓名 + 机构 + 邮箱域三要素联合消歧,输出置信度。
- 进阶方法:以合作者网络为约束的图聚类(同名但合作网络不交则拆分)。
- SOTA 方法:与 ORCID 公开档案、PubMed author 信息做增量对齐,承认长尾不可消歧并显式输出 unknown。
参考:JATSdecoder 研究(Scientometrics 2022)
⚠️ 坑点 8:语料是"活的":删除无通知、inventory 滞后一天(分类:工程陷阱)
问题:文章版本会被加入、更新,少数会被移除且无显式通知(前缀直接消失,仅 inventory 对账可发现);CSV inventory 每日生成、永远滞后于桶实时状态,还会因元数据重写导致 LastModifiedDate 变化但内容未变。
症状:重放昨日清单今日同步时部分对象 404;按 LastModifiedDate 增量拉回大量"假更新",重复任务量虚高。
解决:
- 简单方法:同步脚本对 404 走"标记待对账"而非报错中断;以 inventory 快照为权威做差异同步。
- 进阶方法:每日拉取 inventory 最新快照做集合 diff(新增/更新/移除三类事件),LastModifiedDate 变化时比对 JSON 内 MD5 去除假更新。
- SOTA 方法:把镜像做成版本化数据资产(DVC/lakeFS),每次同步生成可回滚快照,评测固定在快照版本上。
参考:PMC AWS 文档 FAQ 与 inventory 说明
§6.6 数据增强
- ✅ 安全:随机段落打乱(句内语义不变时)、同义缩写替换(如 “MRI/magnetic resonance imaging”)、基于出版结构的小节重命名归一化、BM25/语义近邻的段落拼接。
- ✅ 安全:以 LLM 改写生成对比学习正样本,但须保留许可溯源,不得跨许可混用输出。
- ✅ 安全:基于出版年份与期刊信息的辅助特征拼接,增强模型对来源结构的感知。
- ❌ 危险:跨文档句子拼接生成"伪论文"——会破坏证据链并污染引用型评测。
- ❌ 危险:把 correction 与原文合并当作新样本,或用撤稿声明做"负样本增强"而不打标签——下游无法审计。
- ❌ 危险:对含表格/公式的 JATS 段做字符级扰动——JATS 实体与转义会被破坏,产生非法 XML 残片。
§6.7 模型推荐表
| 任务 | 推荐起点 | 说明 |
|---|---|---|
| 全文预训练/继续预训练 | BiomedBERT(PubMedBERT 权重)、BioGPT 架构 | 官方先例均以 PMC 全文为底座 |
| NER/RE | BioBERT + 任务微调;spaCy/scispaCy 流水线 | 全文长上下文需滑动窗口 |
| 检索/RAG | BGE/E5 多任务向量 + 段落切块 | 章节标题作为切块元数据收益明显 |
| 图文对齐 | PMC-CLIP(在 PMC-OA 上预训练) | 直接利用本子集衍生的 1.65M 图文对 |
| 结构解析 | lxml + JATS DTD;BioC API 免解析 | BioC 适合 passage 级任务快速起步 |
§6.8 硬件需求表
| 阶段 | 建议配置 | 说明 |
|---|---|---|
| 镜像 100 万篇 XML/TXT | 8 vCPU + 2 TB 磁盘 | 网络/磁盘瓶颈,无需 GPU |
| 全量镜像(含 PDF/媒体) | 对象存储 + 数 TB 级空间 | 以 inventory 统计为准 |
| JATS 解析 + 清洗 | 16 vCPU,lxml 多进程 | 每 vCPU 每小时约数千篇量级 |
| 预训练(继续预训练基线) | 8×A100-40G,DeepSpeed ZeRO-2 | 近 800 万篇量级按 token 预算规划 |
| 向量索引(RAG) | 单机 64 GB RAM + ANN 库 | 段落级向量约数十亿级需分片 |
| 许可审计 + 撤稿过滤 | 4 vCPU + 每日定时任务 | CPU 密集度低,重在与同步流程编排 |
§6.9 评估指标代码
# metrics.py — 语料级与下游任务级双层评估
import collections
def license_audit(records) -> dict:
"""许可分布审计:任何训练前必须产出并归档。"""
counter = collections.Counter(r["license"] for r in records)
total = sum(counter.values())
return {lic: {"count": n, "ratio": round(n / total, 4)} for lic, n in counter.items()}
def group_leakage_rate(records) -> float:
"""泄漏审计:同一 pmcid_version 跨越多个 split 的比例(split 字段需预先写入)。"""
groups = collections.defaultdict(set)
for r in records:
groups[r["pmcid_version"]].add(r.get("split", "train"))
bad = sum(1 for s in groups.values() if len(s) > 1)
return bad / max(len(groups), 1)
def version_conflict_rate(records) -> float:
"""版本审计:同一 PMCID 出现 AAM 与出版版并存的比例(坑点 5 的量化)。"""
by_pmcid = collections.defaultdict(set)
for r in records:
pmcid, _, _ = r["pmcid_version"].rpartition(".")
by_pmcid[pmcid].add(r.get("is_manuscript", "no"))
both = sum(1 for flags in by_pmcid.values() if {"yes", "no"} <= flags)
return both / max(len(by_pmcid), 1)
def retrieval_metrics(ranks: list, k: int = 10) -> dict:
"""RAG 检索质量:MRR@k 与 Recall@k(ranks 为 gold 段落排名,1 起)。"""
def rr(r): return 1.0 / r if r <= k else 0.0
return {
f"MRR@{k}": sum(rr(r) for r in ranks) / len(ranks),
f"Recall@{k}": sum(r <= k for r in ranks) / len(ranks),
}
print(license_audit([{"license": "cc-by"}, {"license": "cc0"}])) # demo
print(retrieval_metrics([1, 3, 25, 2])) # demo
§6.10 MLOps 笔记
- 数据版本化:把镜像做成版本化资产,评测绑定快照;同步任务每日跑 inventory diff(坑点 8)。
- 许可审计流水线:license_audit 产物随模型训练 run 归档,发布时可直接出示许可清单。
- 撤稿刷新:每周刷新撤稿状态表并在服务端做引用校验(坑点 4)。
- 成本控制:AWS 同区拉取免出口流量费;跨云请在内网中转,避免数 TB 出口费。
- 可复现性:记录 bucket 前缀清单 + JSON MD5 + 代码提交哈希三元组,任何实验可回放。
- 权限模型:镜像桶为只读公开数据,但公司内部镜像目录必须只写不删,防止有人"清理磁盘"时误删原始语料。
- 合规集成:把许可审计结果接入模型发布 gate——许可清单未归档的训练 run 不允许进入发布候选。
§7 质量评估与局限性
§7.1 已知偏倚表
| 偏倚类型 | 描述 | 严重程度 | 缓解措施 |
|---|---|---|---|
| 语言偏倚 | 英文期刊与西方出版商占高频主体,非英语文献稀少 | 高 | 按语言分层采样;跨语言任务引入外部双语语料 |
| 学科长尾 | 约半数供稿期刊仅 ≤10 篇,主题分布极度长尾 | 中 | 主题过滤用标题+摘要+keyword+subject 组合判据 |
| 许可选择偏倚 | 进入子集的前提是开放许可,商密期刊体系缺席 | 高 | 结论外推时明确"开放获取研究"的边界 |
| 时效偏倚 | 近年文献占比激增(COVID 后加速) | 中 | 时间切片训练与评测 |
| 标注不一致 | subject/keyword/许可标注出版商间差异大 | 中 | 双通道许可校验(坑点 3);弃用单一主题标签 |
| 作者消歧噪声 | 约半数文章无 ORCID,同名作者混淆 | 中 | 多要素消歧 + 显式 unknown 输出(坑点 7) |
§7.2 标注质量
子集无人工任务标注,其"标注"即出版元数据。质量实测要点:NISO JATS 核心标签(标题、摘要、章节、参考文献)如今使用相当一致,可靠抽取率高(JATSdecoder 全库实测);但日期戳存在明显错误、约半数 2020 年文章缺作者识别码、subject 与 keyword 高度不一致(Scientometrics 2022)。许可标签的机器可读与人读矛盾是最高风险项,处理方案见坑点 3。
从工程视角给元数据质量分层:可直接信任层(PMCID、版本号、MD5——官方流水线生成);抽查后信任层(标题、章节结构——JATS 标准约束强);必须双通道校验层(许可、主题、文章类型——出版商异质性大)。把这一分层写入团队的元数据接入规范,可以避免对官方数据"一刀切"式信任或怀疑。
§7.3 泛化性表
| 场景 | 失效风险 | 证据/机制 |
|---|---|---|
| 非英语医疗系统 | 高 | 语料英文主导,非英语术语与诊疗路径覆盖稀薄 |
| 低资源专科(罕见病等) | 高 | 长尾期刊贡献稀少,罕见病深度知识不足 |
| 开放获取之外的知识 | 高 | 订阅期刊体系内容系统性缺席 |
| 知识时效敏感问答 | 高 | 语料含被撤稿知识;训练截止后新证据缺失 |
| 影像级临床判断 | 极高 | 出版插图非诊断影像,分辨率与标注不足以支撑诊断模型 |
| 药物剂量决策 | 极高 | 文本是叙述性证据,非处方级结构化数据 |
§7.4 伦理
语料全部为已公开发表的学术文献,无患者级隐私数据新增暴露面;但全文中的病例细节、基因组位点与影像插图仍受各原始出版物的伦理约束,二次传播须遵守逐篇许可。撤稿文章的处理涉及"知识纠错"伦理:既不能让模型把撤稿结论当真,也不应在无标签情况下让撤稿作者的其他工作被株连(PMC Copyright)。
§7.5 公平性
语料层面的公平性体现为"谁的医学知识被看见":高资源国家、英语写作能力强的研究群体与 OA 友好学科被系统性放大。以子集训练的医学问答系统在低资源地区常见病、传统医学、地区性流行病上的表现应专门评测;PMC-OA 图文衍生数据集报告其患者性别比例大致均衡(男性约 54%),可作多模态子任务的人群参考(arXiv:2303.07240)。
§7.6 数据漂移
三类漂移叠加:内容漂移(COVID 后文献量与主题结构突变)、许可漂移(文章可因许可变化进出子集,版本前缀整体消失)、技术漂移(2026-08 分发架构切换使获取路径一夜变更)。工程对策是 §6.10 的快照化 + 每日 inventory diff,并对主题分布做月度监控卡(top 期刊占比、新文章数、撤稿数)。
建议的月度监控卡字段:
| 监控项 | 计算口径 | 告警阈值建议 |
|---|---|---|
| 新增文章版本数 | 本月新出现的前缀数(inventory diff) | 偏离近 6 个月均值 ±40% |
| 移除文章版本数 | 本月消失的前缀数 | 环比翻倍即审查原因 |
| 许可分布位移 | 商用组占比月度变化 | 变化超 2 个百分点 |
| 撤稿增补数 | article-type=retraction 新增 | 按领域拆分观察 |
| Top-10 期刊占比 | 供稿集中度(HHI 可选) | 集中度骤升提示覆盖面收窄 |
§7.7 DAIMS 数据质量评估
| # | 检查项 | 状态 | 说明 |
|---|---|---|---|
| 1 | 宽格式 | ⚠️ | 无统一宽表;以逐文章 JATS JSON 为主,需自行展平 |
| 2 | 唯一标识 | ✅ | PMCID + 版本号构成稳定主键,官方恒定 |
| 3 | 特殊字符 | ✅ | XML 转义规范,实体引用受 JATS DTD 约束 |
| 4 | 重复行 | ⚠️ | AAM 与出版版并存、预印本跨库重叠,需去重 |
| 5 | 缺失编码 | ⚠️ | 摘要、ORCID 等字段系统性缺失且无统一缺失码 |
| 6 | 标签标识 | ⚠️ | 许可标签机器可读值与人读文本存在矛盾案例 |
| 7 | 罕见类分组 | ⚠️ | 长尾期刊极稀疏,罕见主题分组不可靠 |
| 8 | 偏倚评估 | ⚠️ | 官方无偏倚报告;语言/学科偏倚需自评(§7.1) |
| 9 | 数据字典 | ✅ | JATS DTD + 桶内 README + JSON 字段文档完整 |
| 10 | 信息性缺失解释 | ❌ | 无官方缺失机制说明(v1 缺失靠 FAQ 间接推断) |
| 11 | 设备记录 | ❌ | 文献语料不适用设备元数据 |
| 12 | 共线性 | ✅ | 文本模态不适用特征共线性问题 |
| 13 | 编码映射 | ✅ | JATS 是 ISO 标准化格式,跨出版商可比 |
| 14 | 时间戳处理 | ⚠️ | 部分文档日期戳存在明显错误(第三方实测) |
| 15 | 划分建议 | ✅ | 本 Wiki §5 给出四种可复现划分方案 |
| 16 | 泄漏讨论 | ⚠️ | 官方不讨论;多版本/预印本泄漏需自行控制 |
| 17 | 标签分布 | ⚠️ | 官方不发实时许可分布,需以元数据自查 |
| 18 | 测量偏倚 | ❌ | 不适用(非仪器测量数据) |
| 19 | 外部验证建议 | ✅ | BioASQ/BLURB 等标准基准可直接接入 |
| 20 | 版本记录 | ✅ | 版本号 + LastModifiedDate + MD5 三重记录 |
| 21 | 预处理脚本 | ⚠️ | 官方仅 README,无官方解析/过滤脚本 |
| 22 | 合规要求 | ✅ | 许可体系明确(但合规责任在用户) |
| 23 | 多模态对齐 | ⚠️ | 图题对齐结构在 XML 中,但质量参差需过滤 |
| 24 | 去标识化 | ✅ | 已出版公开文献,由出版流程承担脱敏责任 |
DAIMS 评分:16.5 / 24(✅ 计 1 分 × 11,⚠️ 计 0.5 分 × 11,❌ 计 0 分 × 3,其中三项不适用按 0 计入以保守估计)
评分解读:作为持续运营二十年的官方语料库,其标识体系(#2)、格式标准(#13)、版本记录(#20)与合规透明度(#22)达到工业级水准,这是"数字有据、来源可溯"的底座能力;短板集中在"官方未替你做的事":无划分、无脚本、无分布报告、无缺失机制说明(#10、#15、#17、#21),以及出版商异质性带来的标注噪声(#6、#7、#14)。11 项 ⚠️ 中约半数是"文献语料天性"而非缺陷,但工程上必须显式处理。
对你意味着什么:立即做三件事——第一,把许可枚举审计(§6.9 license_audit)纳入每日同步任务,这是唯一能让法务签字的动作;第二,以 PMCID 为 group 键重建你自己的划分与去重(§5.3),永远不要按文件名切分;第三,接受"这是活的语料":评测绑定快照版本(坑点 8),任何跨时间的指标对比都注明语料快照日期。不要期待开箱即用的标签:把它当"带许可元数据的原始全文矿",而不是"标注数据集"。
§7.8 外部验证矩阵
| 外部数据集/场景 | 来源机构 | 评估任务 | 性能指标 | 相对内部变化 | 关键发现 |
|---|---|---|---|---|---|
| ROCO 图文检索 | ROCO(放射学图文) | 图文检索 R@10 | PMC-CLIP 相对既有方法 +8.1% | 与训练同源分布(PMC 图像),提升可信 | 语料衍生图文对可迁移至放射图文检索 |
| MedMNIST 系列 | MedMNIST 联盟 | 12 项医学图像分类 | 准确率相对提升 +3.9% | 跨影像模态(皮肤镜/病理/OCT)仍有效 | 全文语料学到的视觉先验可迁移 |
| VQA-RAD / SLAKE | 公开医学 VQA | 医学视觉问答 | SOTA(MICCAI 2024 评审确认) | 从图文对齐到问答需微调适配 | 衍生预训练提升下游 VQA 起点 |
注:仅收录有同行评审支撑的结果(PMC-CLIP,MICCAI 2024);语料本体无"内部测试集"概念,故以衍生模型的外部基准为准。
§8 基准性能与生态
§8.1 基于 PMC OA 语料的代表模型与基准表现
本子集是语料底座而非任务基准,不存在"官方排行榜";下表列出以它为预训练语料的代表模型在公开基准上的表现。不同模型的语料配比、任务与评测协议不同,数值不可直接横向比较。
| 排名 | 模型 | 性能 | 年份 | 关键技术 | 完整引用 | 代码 |
|---|---|---|---|---|---|---|
| 1 | PMC-CLIP | ROCO 检索 R@10 +8.1%;MedMNIST 分类 +3.9%(相对既有 SOTA) | 2024 | 图题对自动构建 + CLIP 式 ITC/MLM 联合预训练 | Lin et al., 2024, MICCAI. DOI 10.1007/978-3-031-43901-8_17(arXiv:2303.07240) | GitHub |
| 2 | BioGPT | 生成式生物医学 NER 与 QA 全面超越同规模基线(原论文报告) | 2022 | GPT-2 架构以 PubMed 摘要 + PMC 全文领域预训练 | Luo et al., 2022, Briefings in Bioinformatics. DOI 10.1093/bib/bbac409 | microsoft/BioGPT |
| 3 | PubMedBERT (BiomedBERT) | BLURB 多任务超越通用 LM 与混合语料模型(原论文报告) | 2021 | 从零以 PubMed 摘要 + PMC 全文预训练 | Gu et al., 2021, ACM TRANS. HEALTHC… DOI 10.1145/3458754 | GitHub |
| 4 | BioBERT | 生物医学 NER/RE/QA 多基准超越 BioBERT 之前基线(原论文报告) | 2020 | BERT 以 PubMed 摘要 + PMC 全文继续预训练 | Lee et al., 2020, Bioinformatics. DOI 10.1093/bioinformatics/btz682 | dmis-lab/biobert |
§8.2 SOTA 总结与选型建议
- 只需要文本理解起点:直接用 PubMedBERT/BiomedBERT 权重,免预训练成本。
- 需要生成式能力(摘要/对话):以 BioGPT 或现代开源 LLM 做继续预训练,语料选本子集的商用许可切片。
- 需要多模态:PMC-CLIP 权重或在其 PMC-OA 图文对上复训。
- 需要长文档理解:以"章节标题 + 段落"的结构化输入微调长上下文模型,利用 JATS 分节先验。
- 需要文献计量/元研究:不必训练模型,直接在镜像副本上做统计,JATSdecoder 类工具是起点。
- 自建领域模型:本子集按时间切片做继续预训练,配合 §6.3 流水线即可在单周内完成首轮实验。
§8.3 评测协议
推荐三层协议:语料层(许可分布、重复率、主题覆盖,随快照归档)→ 表示层(困惑度/线性探测,固定 held-out 快照)→ 任务层(BioASQ/BLURB/自定义 RAG 评测)。所有报告必须注明语料快照日期与许可切片范围,否则结果不可复现。
协议落地清单:语料层每次同步后自动产出(§6.9 的 license_audit 与 group_leakage_rate 挂入 CI);表示层使用冻结的 held-out 前缀集合,跨版本不更新;任务层每次换基准须重跑语料层审计,防止在不知情的情况下于非商用切片上评测商用模型。三层产物统一写入实验追踪系统,与模型 checkpoint 关联。
§8.4 相关数据集表
| 数据集 | 关系 | 适用场景 |
|---|---|---|
| PubMed | 同源引文库(摘要级) | 元数据、MeSH 弱监督 |
| Europe PMC OA Subset | 镜像+超集(EMBL-EBI 维护,近 8.2M 全文) | 欧洲视角补充、每周更新镜像 |
| Author Manuscript Dataset | PMC 家族姊妹子集(AAM) | 早期版本对比、政策研究 |
| PMC-OA 图文对 | 本子集衍生的多模态数据集 | 图文预训练(勿与本条目混淆) |
| bioRxiv/medRxiv | 预印本互补库 | 最新未评审研究 |
§8.5 关键论文 Top 8
- Lee et al., 2020, Bioinformatics. DOI 10.1093/bioinformatics/btz682 — BioBERT:确立 PMC 全文作为生物医学预训练底座的里程碑。
- Gu et al., 2021, ACM Trans. Comput. Healthcare. DOI 10.1145/3458754 — PubMedBERT:证明领域从零预训练优于通用模型继续训练。
- Luo et al., 2022, Briefings in Bioinformatics. DOI 10.1093/bib/bbac409 — BioGPT:把 PMC 语料带入生成式范式。
- Lin et al., 2024, MICCAI. DOI 10.1007/978-3-031-43901-8_17 — PMC-CLIP/PMC-OA:全文语料二次构建 1.65M 图文对。
- Böschen, 2022, Scientometrics. DOI 10.1007/s11192-021-04162-z — JATSdecoder:迄今最系统的 PMC 全库 JATS 标注一致性实证。
- Beck, 2015, Balage Series Vol 15(全文)— JATS4R 起点:OAMI 实践揭示的许可与标注不一致问题全集。
- Alanziuk et al., 2021, bioRxiv. DOI 10.1101/2020.12.02.408989 — PMC OAS 方法学大规模分析(286 万篇切片)的采集与解析实例。
- NLM, 2026, Registry of Open Data on AWS(ncbi-pmc)— 现行分发架构的官方权威描述。
§8.6 社区活跃度
NLM 通过 NCBI Insights 博客与 pubmedcentral@ncbi.nlm.nih.gov 邮箱发布变更并收集反馈;GitHub 上围绕 PMC 解析的工具链(JATSdecoder、BioC 工具、各类 loader)持续维护;AWS Open Data 生态提供官方教程与第三方集成(如 Snowflake Cortex 列表)。重大变更(如 2026 年分发迁移)以官方公告为准,第三方教程常滞后数月。
社区实践的三条主线值得跟进:其一是许可合规工具(按 license 族过滤与溯源的开源脚本不断出现);其二是 JATS 解析质量改进(JATS4R 建议与各语言解析库的兼容修复);其三是衍生数据集发布(图文对、QA 语料、检索基准),每季度都有新产物。接入社区的最佳方式是订阅 NCBI Insights 与 AWS Open Data 公告,并定期检索 “PMC Open Access Subset” 的新增工具与论文。
§8.7 生态快照表
| 资源 | 类型 | 链接 | Star/热度截至 2026-09 | 推荐理由 |
|---|---|---|---|---|
| microsoft/BioGPT | 模型代码 | GitHub | 4k+(微软官方仓库) | 生成式预训练参考实现 |
| dmis-lab/biobert | 模型代码 | GitHub | 3k+(社区长期维护) | 经典文本挖掘基线 |
| WeixiongLin/PMC-CLIP | 模型代码 | GitHub | 数百(MICCAI 2024 新作) | 多模态衍生流水线参考 |
| ingmarboeschen/JATSdecoder | R 包 | GitHub | 数十(学术工具) | JATS 全库解析实证最充分的工具 |
| BioC-PMC API | 官方 API | NCBI | 官方服务 | 免解析获取 passage 结构 |
| AWS Open Data 教程 | 官方教程 | Registry | 官方维护 | 上手 S3 分发的第一站 |
§9 相关资源与引用
§9.1 官方文档矩阵
| 资源 | 内容 | 链接 |
|---|---|---|
| PMC Open Access Subset 主页 | 子集定义、检索过滤器、四条获取通道 | openftlist |
| PMC Article Datasets 总览 | 数据集家族、许可分组、撤稿识别 | textmining |
| AWS 使用文档 | S3 结构、inventory、版本 FAQ | pmcaws |
| Cloud Service 页 | 各数据集在云上的文件清单与更新频率 | cloud |
| PMC OAI-PMH | OAI 协议端点与收割指南 | oai |
| BioC-PMC API | passage 级结构化全文接口 | BioC |
| E-Utilities 手册 | 检索/获取 API 与限流政策 | NBK25501 |
| PMC Copyright | 许可与版权总政策 | copyright |
| NCBI Insights 博客 | 分发架构变更等重大公告 | ncbiinsights |
| AWS Registry of Open Data | 数据集卡片与引用格式 | ncbi-pmc |
§9.2 常用命令速查
# 匿名列出桶根
aws s3 ls --no-sign-request s3://pmc-oa-opendata/
# 下载官方 README(结构权威说明)
aws s3 cp --no-sign-request s3://pmc-oa-opendata/README.txt ./
# 仅同步 XML 文件(按需替换 include 模式)
aws s3 sync --no-sign-request s3://pmc-oa-opendata/xml/ ./corpus/xml/ --no-progress
# 拉取最新 inventory 快照
aws s3 cp --no-sign-request s3://pmc-oa-opendata/inventory/latest/ ./inv/ --recursive
# E-Utilities 定点取回(限流:无 key 3 req/s)
curl -s "https://eutils.ncbi.nlm.nih.gov/entrez/eutils/efetch.fcgi?db=pmc&id=PMC1234567&retmode=xml"
# BioC API:passage 级结构化全文(免 JATS 解析的快速通道)
curl -s "https://www.ncbi.nlm.nih.gov/research/bionlp/RESTful/pmcoa.cgi/BioC_json/PMC1234567/unicode"
用 inventory 做容量与增量核算(配合 §3.4 与坑点 8):
# 假设 latest inventory 快照已下载到 ./inv/(CSV 或 ORC 格式以官方 README 为准)
# 1) 按顶层目录聚合对象数与字节数,估算镜像成本
python3 - <<'PY'
import csv, collections, sys
agg = collections.Counter(); size = collections.Counter()
with open(sys.argv[1]) as f:
for row in csv.DictReader(f):
top = row["Key"].split("/")[0]
agg[top] += 1
size[top] += int(row.get("Size", 0) or 0)
for top in sorted(agg):
print(f"{top:15s} objects={agg[top]:>12,} bytes={size[top]:>18,}")
PY
# 2) 每日 diff:记录前缀集合快照,比较新增/消失(删除无通知,靠对账发现)
comm -13 <(sort yesterday.prefixes) <(sort today.prefixes) > added.txt
comm -23 <(sort yesterday.prefixes) <(sort today.prefixes) > removed.txt
§9.3 BibTeX 完整引用
@misc{ncbi_pmc_oa_2026,
title = {NIH NLM NCBI PubMed Central (PMC) Article Datasets - Full-Text
Biomedical and Life Sciences Journal Articles on AWS},
author = {{National Library of Medicine (NLM)}},
year = {2026},
howpublished = {Registry of Open Data on AWS},
url = {https://registry.opendata.aws/ncbi-pmc},
note = {Accessed 2026-09}
}
@article{lee2020biobert,
title = {BioBERT: a pre-trained biomedical language representation model
for biomedical text mining},
author = {Lee, Jinhyuk and Yoon, Wonjin and Kim, Sungdong and Kim, Donghyeon
and Kim, Sunkyu and So, Chan Ho and Kang, Jaewoo},
journal = {Bioinformatics},
volume = {36},
number = {4},
pages = {1234--1240},
year = {2020},
doi = {10.1093/bioinformatics/btz682}
}
@article{gu2021pubmedbert,
title = {Domain-Specific Language Model Pretraining for Biomedical
Natural Language Processing},
author = {Gu, Yu and Tinn, Robert and Cheng, Hao and Lucas, Michael
and Usuyama, Naoto and Liu, Xiaodong and Naumann, Tristan
and Gao, Jianfeng and Poon, Hoifung},
journal = {ACM Transactions on Computing for Healthcare},
volume = {3},
number = {1},
pages = {1--23},
year = {2021},
doi = {10.1145/3458754}
}
@article{luo2022biogpt,
title = {BioGPT: generative pre-trained transformer for biomedical
text generation and mining},
author = {Luo, Renqian and Sun, Liai and Xia, Yingce and Qin, Tao
and Zhang, Sheng and Poon, Hoifung and Liu, Tie-Yan},
journal = {Briefings in Bioinformatics},
volume = {23},
number = {6},
pages = {bbac409},
year = {2022},
doi = {10.1093/bib/bbac409}
}
@inproceedings{lin2024pmcclip,
title = {PMC-CLIP: Contrastive Language-Image Pre-training using
Biomedical Documents},
author = {Lin, Weixiong and Zhao, Ziheng and Zhang, Xiaoman and Wu, Chaoyi
and Zhang, Ya and Wang, Yanfeng and Xie, Weidi},
booktitle = {Medical Image Computing and Computer Assisted Intervention (MICCAI)},
year = {2024},
doi = {10.1007/978-3-031-43901-8_17},
note = {arXiv:2303.07240}
}
@article{boschen2022jatsdecoder,
title = {Software review: The JATSdecoder package---extract metadata, abstract
and sectioned text from NISO-JATS coded XML documents; Insights to
PubMed central's open access database},
author = {B{\"o}schen, Ingmar},
journal = {Scientometrics},
volume = {127},
pages = {2931--2952},
year = {2022},
doi = {10.1007/s11192-021-04162-z}
}
@inproceedings{beck2015jats4r,
title = {A client-side JATS4R validator using Saxon-CE},
author = {Beck, John},
booktitle = {Balisage: The Markup Conference, Proceedings},
volume = {15},
year = {2015},
url = {https://balisage.net/Proceedings/vol15/print/Beck01/BalisageVol15-Beck01.html}
}
§9.4 引用指南
引用本数据集时使用官方推荐格式(引用 AWS Registry 卡片并注明访问日期,见 §9.3 第一条);引用具体文章时使用其 PMCID/DOI;引用衍生数据集(PMC-OA 图文对)时务必引用 Lin et al. 2024 而非本子集,以避免来源混淆。
三种常见场景的引用要点:在论文中报告语料规模时,写明统计口径与访问日期(如"近 800 万篇,截至 2026-07"),因为子集逐月增长,无日期的规模数字不可复核;在系统文档中描述许可范围时,列出你实际使用的许可白名单而非笼统写"CC 许可";在模型卡中声明训练数据时,同时给出语料快照日期与许可分布表,这是下游用户判断可复用性的唯一依据。
§10 AI 使用声明卡
§10.1 本页面使用的 AI 模型列表
- 大语言模型(负责资料汇总、初稿撰写与代码骨架生成)
- 检索增强工具(WebSearch/WebFetch,负责官方文档与文献事实核查)
§10.2 AI 参与范围
AI 参与了资料检索汇总、章节草稿、代码示例编写与表格整理;所有事实性断言、数字、许可描述与坑点来源均经过检索核实并附来源链接;结构与最终定稿由人工编辑控制。
§10.3 输入来源列表
- PMC Home. National Library of Medicine. https://pmc.ncbi.nlm.nih.gov/ (访问 2026-09)
- PMC Open Access Subset. NLM. https://pmc.ncbi.nlm.nih.gov/tools/openftlist/ (访问 2026-09)
- PMC Article Datasets. NLM. https://pmc.ncbi.nlm.nih.gov/tools/textmining/ (访问 2026-09)
- Accessing PMC Article Datasets Using Amazon Web Services. NLM. https://pmc.ncbi.nlm.nih.gov/tools/pmcaws/ (访问 2026-09)
- Cloud Service. PMC. https://pmc.ncbi.nlm.nih.gov/tools/cloud/ (访问 2026-09)
- NIH NLM NCBI PubMed Central (PMC) Article Datasets. Registry of Open Data on AWS. https://registry.opendata.aws/ncbi-pmc (访问 2026-09)
- PubMed Central Article Datasets are Now Available on the Cloud. NCBI Insights, 2021-09-01. https://ncbiinsights.ncbi.nlm.nih.gov/2021/09/01/pubmed-central-article-datasets-cloud/
- SciX Supports Open Access Publishing with PubMed Central and Europe PMC. ADS/SciX Blog, 2026-07. https://adsabs.github.io/blog/scix-open-access
- Lee et al., 2020, Bioinformatics. DOI 10.1093/bioinformatics/btz682
- Gu et al., 2021, ACM Trans. Comput. Healthcare. DOI 10.1145/3458754
- Luo et al., 2022, Briefings in Bioinformatics. DOI 10.1093/bib/bbac409
- Lin et al., 2024, MICCAI. DOI 10.1007/978-3-031-43901-8_17(arXiv:2303.07240)
- Böschen, 2022, Scientometrics. DOI 10.1007/s11192-021-04162-z
- Beck, 2015, Balisage Vol 15. https://balisage.net/Proceedings/vol15/print/Beck01/BalisageVol15-Beck01.html
- Snowflake Marketplace: PubMed Biomedical Research Corpus. https://app.snowflake.com/marketplace/listing/GZSTZ67BY9OQW/ (访问 2026-09)
§10.4 人工校验记录
| 内容模块 | 审核者 | 审核方式 | 审核状态 |
|---|---|---|---|
| frontmatter 与 INFOBOX 数据字段 | 千方病案医学编辑部 | 对照官方页面逐字段核对 | ✅ 已通过/已验证 |
| §2 医学背景与 ICD-11 映射 | 千方病案医学编辑部 | 依据 ICD-11 官方章节结构核对 | ✅ 已通过/已验证 |
| §3 规格、许可分组与版本矩阵 | 千方病案医学编辑部 | 对照官方 textmining/pmcaws 页 | ✅ 已通过/已验证 |
| §4 数据字典与目录树 | 千方病案医学编辑部 | 对照 S3 README 与 JSON 元数据说明 | ✅ 已通过/已验证 |
| §6 代码与 8 个坑点 | 千方病案医学编辑部 | 代码逻辑走查 + 坑点来源逐条核实 | ✅ 已通过/已验证 |
| §7 DAIMS 与偏倚分析 | 千方病案医学编辑部 | 24 项逐项评估 + 来源核对 | ✅ 已通过/已验证 |
| §8-§9 引用与生态信息 | 千方病案医学编辑部 | DOI/链接逐一可达性检查 | ✅ 已通过/已验证 |
§10.5 AI 生成章节标注
各章节初稿由 AI 生成,经人工编辑改写与事实核验后定稿;其中 §6.5 坑点、§7.1 偏倚表与 §7.7 DAIMS 评级的来源核验为人工重点复核部分。
具体而言:所有规模数字、日期与许可条款均回溯至 §10.3 列出的原始来源比对;代码示例经人工走查逻辑与边界条件;引用链接经人工点击验证可达。AI 未接触任何未公开数据,亦未生成任何无来源的数字。
§10.6 最后人工审核日期
最后人工审核日期:2026-09-05(与 §0 审核日期一致)
页面状态:published(全部内容已完成审核并发布)
§C 结构化数据(JSON-LD)
---
## 相关数据集导航
以下为站内 AI-Ready 数据集百科中与本词条共享多个主题标签的相关数据集,按相关度降序排列:
- [mimic-iv-ext-pe](https://www.qianfanghub.com/ai-ready-dataset/mimic-iv-ext-pe/618) — 共享标签:医疗NLP / 临床文本
- [rad-coreference-resolution](https://www.qianfanghub.com/ai-ready-dataset/rad-coreference-resolution/621) — 共享标签:医疗NLP / 临床文本
- [radgraph2-radiology-reports](https://www.qianfanghub.com/ai-ready-dataset/radgraph2-radiology-reports/622) — 共享标签:医疗NLP / 临床文本
- [maccrobat](https://www.qianfanghub.com/ai-ready-dataset/maccrobat/519) — 共享标签:医疗NLP / 生物医学文献 / 临床文本
- [open-pmc](https://www.qianfanghub.com/ai-ready-dataset/open-pmc/45) — 共享标签:医疗NLP / 生物医学文献
- [imcs-21](https://www.qianfanghub.com/ai-ready-dataset/imcs-21/200) — 共享标签:医疗NLP / 临床文本
- [mediqa](https://www.qianfanghub.com/ai-ready-dataset/mediqa/220) — 共享标签:医疗NLP / 生物医学文献 / 临床文本
- [s2orc](https://www.qianfanghub.com/ai-ready-dataset/s2orc/370) — 共享标签:医疗NLP / 生物医学文献
- [ncbi-disease](https://www.qianfanghub.com/ai-ready-dataset/ncbi-disease/425) — 共享标签:医疗NLP / 生物医学文献
- [jnlpba](https://www.qianfanghub.com/ai-ready-dataset/jnlpba/442) — 共享标签:医疗NLP / 生物医学文献
> 导航说明:本章节由全站统一标签体系自动计算生成(标签重合度算法),双向可达;点击链接可跳转至对应数据集词条。
