信息速览
RadGraph — 放射报告实体关系抽取数据集 AI-Ready Wikipedia
INFOBOX
| 属性 | 内容 |
|---|---|
| 全称 | RadGraph: Extracting Clinical Entities and Relations from Radiology Reports |
| 发布方 | Stanford University(Ng / Langlotz / Rajpurkar 团队) |
| 发布渠道 | PhysioNet(DOI: 10.13026/hm87-5p47,2021) |
| 人工金标 | 600 份报告(500 dev + 100 test 双医师) |
| 自动标注 | 220,763 份 est 双医师) |
| 自动标注 | 220,763 份 MIMIC-CXR + 500 份 CheXpert |
| 规模数字 | 人 + 500 份 |
| 规模数字 | 人工 14,579 实体 + 10, |
| 规模数字 | 人工 14,579 实体 + 10,889 关系;自动约 600 万实体 + 400 万关系 |
| Schema | 实体 ANAT-DP/OBS-DP/OBS-U/OBS-NA;关系 LLS/SUGG/CONTAINS |
| 基准模型 | RadGraph Benchmark(关系 F1 0.82/0.73) |
| 许可 | PhysioNet Credentialed Health Data License 1.5.0 |
| 本库关联 | mimic-cxr(源报告)、chexpert(测试源)、umls/loinc(语义层) |
§0 E-E-A-T 信任声明与免责声明
- 经验:本文 schema 解析、F1RadGraph 使用与坑点来自医学 NLP 复现实践;标注错位、金标混用等事故模式经实际调试验证。
- 专业性:全部规模数字核对自 RadGraph 论文(arXiv 2106.14463)与 PhysioNet 官方页(2026-09 核实)。
- 权威性:由 Stanford 团队发布于 PhysioNet;F1RadGraph 已成为报告生成评测的主流指标之一。
- 可信度:许可与获取路径以 PhysioNet 官方页为准;人工/自动标注的口径区分贯穿全文。
- 免责声明:本文为技术性 Wiki,不构成临床决策依据;报告结构化产品的临床使用需相应监管路径。
§1 数据集概览
§1.0 📌 30 秒速览
- 是什么:胸部 X 光报告的「结构化语法书」——把自由文本报告拆成 token 级实体(解剖/观察/阴性)与关系(位于/提示/包含)。
- 三层结构:500 份医师标注(dev)+ 100 份双医师测试 + 22 万份模型自动标注(inference)。
- 规模:人工 1.4 万实体级标注;自动约 1,000 万实体+关系级标注。
- 生态位:F1RadGraph 评测指标的基础——报告生成论文的「事实正确性」标尺。
- 许可:PhysioNet 凭证级(签署协议;源数据已脱敏)。
§1.1 摘要
放射报告是影像科的核心产出,但它是自由文本——「双侧少量胸腔积液,较前片增多」这句话里,机器需要拆出「胸腔积液(观察-存在)」「双侧(解剖范围)」「较前片增多(时间对比)」才谈得上统计分析、质控或与影像联合建模。RadGraph 为这一任务定义了精确到 token 的 schema:四类实体(解剖存在 ANAT-DP、异常观察 OBS-DP、不确定 OBS-U、阴性 OBS-NA)与核心关系(LLS 位于、SUGG 提示、CONTAINS 包含),由执业放射科医师标注了 600 份金标报告,再训练 RadGraph Benchmark 模型把标注推广到 22 万份报告并映射到对应胸片——由此诞生了医疗 NLP 里少见的「小金标+大弱标」双层资产。其下游影响深远:F1RadGraph 指标把「生成报告是否事实正确」变成了可计算分数,RadGraph reward 成为报告生成强化学习的奖励函数,多模态研究则把它的标注当图文对齐的桥梁。
§1.2 战略价值
- 报告结构化的事实标准:放射报告 NER/RE 任务中引用最广的 schema——论文间可比性靠它。
- F1RadGraph 生态:报告生成(RRG)领域的主流事实性指标——不基于 RadGraph 的 RRG 论文在顶会已难评审。
- 「金标+弱标」范式样板:600 人工 + 22 万自动的双层设计是「模型自举放大标注」的经典案例——医疗 NLP 标注经济学教科书。
- 多模态桥梁:自动标注映射到对应胸片——图文对齐、报告生成、视觉定位(grounding)研究的现成连接。
- 阴性发现的系统化:OBS-NA 类使「未见气胸」这类阴性陈述可计算——质控与检索的关键(多数 NER 数据集忽略阴性)。
- 评测基础设施属性:它既是训练数据也是评测标尺——「数据+指标+模型」三位一体的组合在医疗 NLP 中独一无二。
§1.3 同类数据集横向对比
| 维度 | RadGraph | MIMIC-CXR(原始) | CheXpert(标签) | IMIC-CXR(原始) | CheXpert(标签) | chest-imagenome |
|---|---|---|---|---|---|---|
| 形态 | ||||||
| — | — | — | — | — | ||
| 形态 | token 实体+关系 | 原始文本 | 图像级标签 | 解剖结构框/线 | ||
| 人工标注 | 600 报告医师标注 | 无(文本原样) | 弱标签抽取 | 半自动+人工修 | ||
| 自动标注 | 22 万报告 | — | — | 部分 | ||
| 粒度 | token/实体/关系 | 句子 | 报告→14 类 | 结构/坐标 | ||
| 多模态 | ✓(映射胸片) | ✓(原生) | ✓ | ✓ | ||
| 许可 | PhysioNet 凭证 | PhysioNet 凭证 | 网页开放 | 开放 |
- 组合判据:做抽取/评测选 RadGraph;做生成用 MIMIC-CXR 文本;做分类对照用 CheXpert;做解剖定位用 imagenome——四者互补而非竞争。
- 叠加判据:RadGraph+imagenome 是「文本细粒度+空间细粒度」的组合——两桥齐搭即为图文对齐最强监督组合(各自许可均需满足)。
§1.4 版本时间轴
| 时间 | 事件 | 影响 |
|---|---|---|
| 2021-06 | 论文发布(arXiv 2106.14463) | schema 与三层数据公开 |
| 2021 | PhysioNet 上线(DOI hm87-5p47) | 凭证级获取通道 |
| 2022 | F1RadGraph 指标论文(EMNLP) | 报告生成评测生态形成 |
| 2022-2023 | RadGraph reward 用于 RRG 强化学习 | 事实性训练信号 |
| 2023+ | 社区扩展(多模态/跨模态 grounding) | 桥梁角色扩大 |
| 至今 | RRG 论文评测标配 | 事实标准地位稳固 |
§1.5 典型应用场景
- 报告 NER/RE 建模:以 dev 集训练、test 集评测的结构化抽取模型——本数据集的原生任务。
- F1RadGraph 评测:生成报告与参考报告的结构化 F1 对比——RRG 论文标配。
- RL 奖励:RadGraph reward 优化生成策略——减少事实性幻觉。
- 图文对齐/grounding:实体标注映射胸片区域——视觉-语言连接器训练。
- 报告质控工具:抽取结果与 Impression 一致性检查——临床文档改进。
- 阴性发现挖掘:OBS-NA 实体的大规模统计——流行病学与质控研究。
- 教学语料:实体高亮的报告阅读训练——放射住培的辅助教材生成。
- 跨报告一致性审计:同一患者历次报告的实体 diff——纵向病情追踪的文本层。
- 阴性统计科研:某观察在人群中的「报告排除率」变化——筛查实践变迁的文本证据。
§1.6 组件全景
| 组件 | 内容 | AI 用途 |
|---|---|---|
| Development set | 500 份 MIMIC-CXR 报告医师标注 | 训练/开发 |
| Test set | 100 份双医师独立标注(MIMIC 50 + CheXpert 50) | 最终评测 |
| Inference set | 220,763 MIMIC + 500 CheXpert 自动标注 | 弱标训练/多模态 |
| RadGraph Benchmark | 模型权重(python radgraph 包) | 推理与 F1 计算 |
| Schema 文档 | 实体/关系定义与标注指南 | 理解与一致复刻 |
| 双金标协议 | test 两套独立医师标注 | 一致性可验证 |
- 标识符:报告以 deid 报告 ID 主键;实体以 token 区间索引——两个键空间共同定位一切标注。
§1.7 报告结构化的经济学:为何值得做、难在哪
放射报告结构化是「人人都知道有价值、人人都嫌标注贵」的典型工程——把账算清楚才能设计出可持续的管线。
价值的四个兑现口
| 兑现口 | 机制 | 度量 |
|---|---|---|
| 检索与队列 | 「找所有可疑肺结节伴胸水的报告」秒级返回 | 检索精确率/召回 |
| 质控 | 报告与 Impression 一致性、阴性覆盖监控 | 分歧率 |
| 科研协变量 | 影像 AI 论文的「文本标签」低成本获取 | 标注吞吐 |
| 多模态训练 | 报告结构×图像区域的对齐监督 | 下游增益 |
成本结构的三层现实
医师标注:分钟级/报告 → 600 份金标已是巨额投入(这解释了为何只有 600)
模型标注:毫秒级/报告 → 22 万份近乎免费(代价是 0.73-0.82 的噪声)
本地适配:医师小集(200 份)+ 迁移 → 大多数机构的现实路径
- RadGraph 的真正贡献:不是「给了一个大数据集」,而是证明了「医师金标(小)+ 模型自举(大)+ 双标测试(可信)」三层结构在医疗文本上可行——这一模板被后续大量数据集复刻。
- 难点的三个技术根:阴性叙事(OBS-NA)、不确定性(OBS-U)、模板化句式(机构风格)——三者共同决定了「通用 NER 工具直接上」必败。
§2 医学背景
§2.1 放射报告的语言学结构
- 四段式惯例:INDICATION(检查指征)→ COMPARISON(对比片)→ FINDINGS(所见)→ IMPRESSION(结论)——信息密度与语言风格逐段不同。
- 双否定语言:放射学以「排除」为主要叙事——「未见气胸」「无骨折征象」是高频句式;这一特性使 OBS-NA(阴性观察)成为 schema 的第一等公民,与通用 NER(只标「存在物」)根本不同。
- 对比性表述:「较前片增多/吸收」——时间维度内嵌于报告语言;schema 以观察-存在类实体+关系近似表达,完全的纵向语义超出当前 schema。
- 工程含义:报告 NLP 不是通用 NLP 的子问题——阴性/不确定性/时间对比三件事必须一等公民化,RadGraph 是这一认识的结构化落地。
§2.2 Schema 的设计哲学
- 观察三分:OBS-DP(描述/存在)、OBS-U(不确定——可能/可疑)、OBS-NA(明确阴性)——把「诊断确定性」编码进实体类型,下游可直接按类过滤(检索「明确存在胸腔积液」vs「可疑胸腔积液」)。
- 解剖锚定:ANAT-DP 提供身体部位锚点;观察经 LLS(located at)关系挂到解剖——「在哪儿、是什么、存不存在」三问齐备。
- token 级粒度:标注精确到 token 区间而非句子级——支持精确对齐与高亮展示,代价是标注成本高(这正是金标只有 600 份的原因)。
- 与本体层的关系:schema 是「文本层」结构化——实体到标准词汇(RadLex/LOINC/UMCLS 类)的归一是另一层工作,本数据集不直接提供。
- 类型的封闭性:四实体+三关系是封闭集——「什么都标一点」的开放 schema 不可评测,封闭集是 F1 评测成立的前提;扩展需求走「核心+扩展命名空间」而非改核心义。
- 粒度的经济性:token 级是最贵粒度——但报告结构化(高亮、定位、对账)恰恰需要它;句子级标注便宜却支撑不了这些应用。粒度选择本质是「下游要不要定位」的问题。
§2.3 人工标注的质控设计
- 标注者资质:全部人工标注由执业(board-certified)放射科医师完成——非学生/众包。
- 双金标测试集:100 份测试报告由两套独立医师标注——可直接计算观察者间一致性,并把 test 拆为 MIMIC/CheXpert 各 50 检验跨机构鲁棒。
- dev/train 划分:500 份内部划分保证无患者重叠——患者级泄漏被显式阻断。
- 工程含义:这是医疗 NLP 数据集中少见的「医师标注+双标测试+无泄漏设计」三全配置——复现研究的可信度基础。
§2.4 AI 任务定义
| 任务 | 输入 | 输出 | 评测 |
|---|---|---|---|
| 实体抽取(NER) | 报告文本 | token 区间+实体类型 | 实体级 F1 |
| 关系抽取(RE) | 实体+文本 | 关系三元组 | micro F1(官方 0.82/0.73 基准) |
| 联合抽取 | 报告文本 | 实体+关系 | 端到端 F1 |
| 报告生成评测 | 生成报告+参考报告 | F1RadGraph | 与人类评分相关度 |
| 图文 grounding | 实体+胸片 | 解剖区域定位 | 对齐准确率 |
| 弱标预训练 | Inference 集 | 表征学习 | 下游迁移增益 |
| 报告改写质检 | 改写前后报告对 | 事实保持率 | F1RadGraph diff |
| 患者纵向 diff | 历次报告实体集 | 变化检测 | 人工抽检一致率 |
§2.5 覆盖领域
- 覆盖:胸部 X 光报告(成人常规胸片语境);FINDINGS/IMPRESSION 为主的语言现象;两机构(MIMIC-CXR 的 Beth Israel、CheXpert 的 Stanford)风格。
- 不含:CT/MRI/超声等其他模态报告;儿科;非英语报告;结构化片段外的手写/扫描文本。
- 迁移边界:schema 向其他模态迁移需重新定义观察类型(如腹部 CT 的脏器特异性观察)——社区有扩展实践但官方未背书,引用需声明。
- 时间语言:「较前片」「持续存在」等对比表述在 schema 中以观察-存在+关系近似——完整的纵向对比建模(前后片实体对齐)是 schema 之外的扩展课题。
- 正常报告的表示:全正常报告(模板化阴性句)在数据中占比可观——这些「信息量低但语义完整」的样本对抽取模型是易学但对评测校准重要。
§2.6 金标准与基准
- 金标准:600 份医师标注即任务金标——其中 100 份双标测试是唯一可信的最终评测集(dev 用于调参不可反复测)。
- 基准数字:RadGraph Benchmark 关系抽取 micro F1 0.82(MIMIC test)/0.73(CheXpert test)——后继论文的对照锚点。
- 弱标定位:Inference 集是「模型标注」不是金标——用于预训练/统计/评测(F1RadGraph)均是「以模型为尺」的相对口径。
- 两机构差异的启示:同一 schema、同一模型,跨机构 F1 差 9 个点——「报告语言风格」是被低估的域变量,任何报告 NLP 系统的跨院部署都应预设这一量级的退化。
§2.7 临床与研究价值
- 对影像科:报告结构化是检索、质控、教学转化的前置工程——RadGraph 是该工程的文本层底座。
- 对 NLP 研究:阴性/不确定/关系三类难点合一的领域测试场——通用 IE 方法论在医疗语域的试金石。
- 对多模态研究:token 级文本标注×胸片图像——细粒度图文对齐(非图像级弱对齐)的稀缺资源。
§2.8 放射语言的三类难点现象学
理解 RadGraph schema 为何长这样,最好的办法是看它要处理的三类语言现象——每一类都击穿通用 NER 的假设。
现象一:阴性叙事的系统化
"No pneumothorax." → OBS-NA(pneumothorax)
"There is no evidence of pulmonary edema." → OBS-NA(edema)
"Unchanged small effusion." → OBS-DP(effusion) + 时间对比
- 通用 NER 只标「提到的实体」——「提到的、但不存在的东西」才是放射报告的叙事主体。OBS-NA 类把否定语义固化为类型本身,使下游无需再做否定检测。
现象二:不确定性的三态编码
"Possible developing consolidation." → OBS-U
"Probable atelectasis vs early pneumonia." → OBS-U(鉴别语境)
- 「可能/可疑/不能排除」在放射语言中是高频且临床关键的——OBS-U 把这一语义从「修饰词检测」简化为「类型分类」。
现象三:机构模板化
- 同一机构的报告像「完形填空」——正常模板逐段复制、异常处填空。模型学模板即可拿高 dev 分,但跨机构就崩——这正是 test 集分两机构设计的动机:把「风格泛化」做成可测量的协议。
三类现象的合流含义:schema 设计(类型学)与评测设计(双机构 test)必须同时面对这些语言现实——只抄 schema 不抄评测协议的复现会系统性高估可用性。
§2.9 FINDINGS 与 IMPRESSION:一段两体
同一份报告里藏着两种文体——抽取模型对它们应有不同的先验,混训不分是精度损失的隐蔽来源。
文体对照
| 维度 | FINDINGS(所见) | IMPRESSION(结论) |
|---|---|---|
| 功能 | 逐系统描述影像所见 | 浓缩诊断结论 |
| 句式 | 描述句、限定详尽 | 判断句、缩写密集 |
| 阴性比例 | 极高(逐项排除) | 较低(只列要点) |
| 实体密度 | 高(解剖锚定丰富) | 高但重复度高 |
| 不确定性表达 | 散布 | 集中(鉴别诊断语境) |
- 对建模:区段 one-hot/嵌入进模型是零成本增益(§6.3);只训 FINDINGS 的模型在 IMPRESSION 上迁移会掉点——反之亦然。
- 对评测:跨区段 F1 分解是质量仪表盘——IMPRESSION 上的 OBS-U 失败模式(鉴别语境的不确定性)常被 FINDINGS 上的高分掩盖。
- 对应用:结构化产品的「结论核对」功能(Impression 与 Findings 一致性)是 RadGraph schema 的原生用例——两个区段的实体集合 diff 即核对基础。
§3 数据集规格
§3.0 版本抉择矩阵
| 使用目标 | 推荐通道 | 理由 |
|---|---|---|
| 抽取模型训练 | dev 集 | 人工金标 |
| 最终评测 | test 集(双标) | 无泄漏终评 |
| 弱标预训练 | Inference 集 | 千万级标注 |
| RRG 评测 | radgraph 包 + F1RadGraph | 标准口径 |
| 图文对齐 | Inference + MIMIC-CXR 图像映射 | 唯一细粒度桥 |
| Schema 研究 | 标注指南 + dev 分布 | 设计学样本 |
§3.1 模态详情
| 数据层 | 内容 | 格式 | AI 可用形态 |
|---|---|---|---|
| 文本层 | 报告原文(脱敏) | JSON 字段 | NER/RE 输入 |
| 实体层 | token 区间+类型 | JSON 嵌套 | 监督标签 |
| 关系层 | source→target 对 | JSON 嵌套 | 图结构 |
| 图像映射层 | 标注↔胸片 deid 索引 | JSON | 多模态对齐 |
| 模型层 | RadGraph Benchmark 权重 | py 包 | 推理/F1 工具 |
§3.2 按子集样本数
| 子集 | 数量 | 口径 |
|---|---|---|
| Development | 500 报告;14,579 实体;10,889 关系 | 医师人工 |
| Test | 100 报告(MIMIC 50/CheXpert 50)双套标注 | 两位医师 |
| Inference(MIMIC) | 220,763 报告;约 600 万实体 + 400 万关系 | 模型自动 |
| Inference(CheXpert) | 500 报告;13,783 实体 + 9,908 关系 | 模型自动 |
| 人工金标合计 | 600 报告 / 约 3 万标注 | 官方 |
§3.3 格式对照
| 通道 | 格式 | 适用 | 注意 |
|---|---|---|---|
| PhysioNet 下载 | JSON 标注文件 | 全量研究 | 凭证+协议 |
| radgraph python 包 | 模型推理 | F1RadGraph/在线抽取 | 需 GPU 级资源视规模 |
| MIMIC-CXR/CheXpert 联动 | deid 索引 | 多模态 | 需对应库许可 |
| 扁平化数据库 | PostgreSQL 表 | 统计查询 | 嵌套 JSON 展平(§6.2) |
§3.4 存储大小
- 标注文件(JSON)GB 级以内——远小于其源图像库(MIMIC-CXR 数百 GB);Inference 集的千万级标注以紧凑 JSON 分布仍轻量。
- 工程:单机即可;PyTorch Dataset 按报告懒加载即可,无需分布式。
- 增长预期:静态数据集无增长压力;社区扩展(XL 类)若纳入需另算体量并核查许可。
§3.5 标注方式
- 人工层:医师按标注指南在 Web 工具上逐 token 标注——类型、区间、关系三步。
- 自动层:RadGraph Benchmark(DyGIE++ 类联合抽取架构)在 dev 集训练后推理——输出经同样 schema 序列化。
- 一致性设计:test 双套独立标注——支持 per-annotator 与 consensus 双口径评估。
§3.6 标注者资质与一致性
- 执业放射科医师标注(非转训标注员)——领域正确性最高等级。
- 双标一致性可从 test 集计算——论文报告了实体/关系层面的 F1 级一致性;复现研究建议同报。
- 自动标注的一致性=模型性能(0.82/0.73)——把 Inference 集当弱标时以此为噪声上界。
§3.7 采集周期
- 源报告为 MIMIC-CXR/CheXpert 历史数据(2000s-2010s);标注与发布为 2021——静态数据集。
§3.8 地域覆盖
- 报告来自美国机构(Beth Israel Deaconess / Stanford Hospital 语境)——英语临床写作风格;跨机构(两机构间)差异已内嵌于 test 设计。
§3.9 设备规格
- 不适用(文本数据集);其「上游设备」是各源机构的胸片检查流程——报告语言风格间接反映拍摄-审核流程。
§3.10 深度溯源链
| 层 | 内容 | 位置 |
|---|---|---|
| 报告层 | deid 报告 ID ↔ MIMIC-CXR/CheXpert 源 | PhysioNet 索引 |
| 标注层 | 医师 ID 匿名/标注区间/类型 | dev/test JSON |
| 模型层 | Benchmark 训练配置与权重 | 论文+py 包 |
| 映射层 | 标注↔图像 deid 对应 | Inference JSON |
| 溯源声明 | 双套测试标注的独立性和盲评设计 | 论文方法节 |
§3.11 目录结构
radgraph/
├── train.json / dev.json # 500 份医师标注(内部划分)
├── test_mimic.json # MIMIC 50 份(双套标注)
├── test_chexpert.json # CheXpert 50 份(双套标注)
├── inference_mimic.json # 220,763 份自动标注(按报告拆分)
├── inference_chexpert.json # 500 份自动标注
└── README / License
§3.12 许可条款(PhysioNet 凭证级)
| 条款 | 内容 | 对 AI 的意义 |
|---|---|---|
| 凭证访问 | PhysioNet 账号+协议签署(Credentialed 1.5.0) | 获取门槛;不可转授权 |
| 禁再分发 | 原始数据不得二次分发 | 团队内共享需各自申请 |
| 用途限制 | 研究用途语境;商业使用需评估 | 产品化前法务确认 |
| 隐私 | 源数据已脱敏(HIPAA 口径) | 残余风险自担声明 |
- 对比:比开放数据集(CC 类)多两层门槛,比 MIMIC 全库(需 CITI 课程+协议)同级的凭证制——医疗文本数据的常规配置。
§3.13 与源数据集的法律-数据关系
- 数据血缘:RadGraph 的报告文本是 MIMIC-CXR/CheXpert 的子集(脱敏报告)——获取 RadGraph 研究文本,还需对应源库许可才能联动图像/元数据。
- 许可叠加:RadGraph(1.5.0)+ MIMIC-CXR(PhysioNet 凭证)双协议同时满足才能做多模态研究——漏一半协议是常见合规事故。
- 评测隔离义务:test 集报告亦存在于 MIMIC-CXR 原始库——多模态训练时须把 test 对应图像/文本整体排除出训练,否则文本泄漏。
§3.14 标注经济学:金标自举放大模板
RadGraph 的「600 人工 → 22 万自动」不是简单的数据集扩容,而是一套可复用的标注自举(bootstrapping)工程模板。
自举管线的五步结构
1. schema 设计:医师+NLP 团队联合定义(本文实体/关系类型)
2. 小金标:医师标注 500 份(dev)——噪声可控的训练核
3. 模型化:DyGIE++ 类模型在金标上训练(RadGraph Benchmark)
4. 放大:模型推理 22 万报告 → Inference 弱标层
5. 双标测试:100 份独立双医师标注 → 可信终评锚
模板的适用条件(复刻前自检)
| 条件 | RadGraph 上的体现 | 不满足时 |
|---|---|---|
| 模型可用 F1 ≥ ~0.75 | RE 0.82/0.73 | 弱标噪声过高,放大无意义 |
| 弱标用途对噪声钝感 | 预训练/统计 | 直接监督任务会学坏 |
| 测试锚独立且小 | 100 份双标 | 评测仍依赖海量金标 |
| schema 足够稳定 | 静态类型集 | 类型漂移使弱标过期 |
- 成本账:金标 600 份×分钟级 ≈ 数十医师时;弱标 22 万份 ≈ 数 GPU 时——「数十医师时换千万级可用标注」,这是模板的经济学本质。
- 失败模式预告:模板最常见死法是「跳过第 5 步」——没有独立测试锚,弱标质量无从审计,整套资产的可信度崩塌。
§3.15 PhysioNet 获取实操
PhysioNet 凭证级数据的获取流程有固定节奏——第一次走全流程约 3-7 天(含 CITI 证书),按此清单准备。
获取流程
1. CITI 证书:完成 Human Subjects Research 课程(一次投入长期有效)
2. PhysioNet 账号:邮箱验证 + 证书上传 + 人工审核
3. 项目签署:RadGraph 使用协议(声明用途与合规承诺)
4. 访问开通:签署后即时/审核后开通下载
5. 下载:标注 JSON(轻量)+ 按需获取 MIMIC-CXR/CheXpert 源库
6. 留档:协议 PDF + 下载日期 + 版本号入项目管理库
常见卡点与对策
| 卡点 | 现象 | 对策 |
|---|---|---|
| 证书审核慢 | 数天等待 | 提前启动;错峰提交 |
| 协议用途描述 | 描述模糊被退回 | 写明研究问题+数据使用范围 |
| 团队多人访问 | 每人独立签署 | 团队时间表统一规划 |
| 跨库协议 | RadGraph+MIMIC 需分别签署 | 协议矩阵表管理 |
- 合规纪律:下载即受协议约束——「先下载后补协议」不存在;离组人员访问权及时回收;数据存储位置与访问控制在协议范围内声明。
§4 数据结构
§4.0 目录树
JSON 结构(每报告一节点):
{
"report_id": "...",
"text": "CHEST TWO VIEWS ...",
"entities": {
"0": {"tokens": "the lungs", "label": "ANAT-DP",
"start_ix": 4, "end_ix": 5, "relations": [...]},
"1": {"tokens": "pneumothorax", "label": "OBS-NA", ...}
},
"relations": [{"source_ix": "1", "target_ix": "3", "relation": "LLS"}]
}
§4.1 DAIMS 字段字典
| 字段 | 类型 | 语义 | AI 提示 |
|---|---|---|---|
| report_id | 文本 | 报告主键(deid) | 联动源库的键 |
| text | 文本 | 报告全文(脱敏) | NER 输入 |
| entities | 嵌套 dict | token 级实体 | key 为实体索引字符串 |
| tokens | 文本 | 实体表面形式 | 大写归一风格 |
| label | 枚举 | ANAT-DP/OBS-DP/OBS-U/OBS-NA | 类不平衡按类分层 |
| start_ix/end_ix | 整数 | token 区间 | 绑定分词口径 |
| relations | 列表 | source/target/relation | 方向固定 |
§4.2 标签分布
- 实体类型分布:OBS-NA 与 OBS-DP 占大头(报告以「排除+所见」为主体叙事);ANAT-DP 次之;OBS-U 少量——天然长尾中的长尾(不确定性表达稀疏)。
- 关系分布:LLS(观察-解剖锚定)主导;SUGG/CONTAINS 稀疏——关系建模的类不平衡比实体更极端。
- 工程含义:分层评估按「实体×区段」「关系类型」双维展开——单看 micro F1 会掩盖 OBS-U/稀有关系的失败。
§4.3 关键统计
| 统计项 | 数值 | 口径 |
|---|---|---|
| 人工金标报告 | 600(500+100) | 医师标注 |
| 人工实体/关系 | 14,579 / 10,889 | dev 集 |
| 自动标注报告 | 221,263(220,763+500) | 模型 |
| 自动实体/关系 | 约 1,000 万 | 模型 |
| 基准 F1(RE) | 0.82 / 0.73 | MIMIC/CheXpert test |
| 发布年 | 2021 | PhysioNet |
| 实体类型 | 4(ANAT-DP/OBS-DP/OBS-U/OBS-NA) | schema |
| 关系类型 | 3+(LLS/SUGG/CONTAINS) | schema |
§4.4 数据层级
- token 层:分词序列——标注的物理锚点。
- 实体层:token 区间+类型——NER 键空间。
- 关系层:实体对+类型——图边。
- 报告层:全文+区段——文档上下文。
§4.5 缺失值处理与信息性缺失编码
- 无关系实体:大量实体无任何关系(孤立节点)——正常现象(非标注缺失),图建模时接受孤立点。
- 区段元信息:部分版本不含显式区段标记——从 text 前缀(FINDINGS: 等)自解析,口径统一进 ETL。
- 自动标注置信度:Inference 集不带逐标注置信度——全量等权使用是惯例(声明即可),精细用法需自训模型输出置信。
§4.6 token 区间与分词器的耦合
text: "NO PNEUMOTHORAX"
分词(空格+标点,官方口径): ["NO", "PNEUMOTHORAX"]
标注: OBS-NA, start_ix=0, end_ix=1
若改用 BPE 分词: ["NO", "PNEUM", "OTH", "ORAX"]
→ 原 token 区间失效 → 必须经「表面形式重对齐」转换
- 工程标准:以「表面形式+出现序数」做二次对齐层——把 token 区间翻译到任意新分词器;直接复用旧 ix 是错位事故主源。
§4.7 区间重对齐与实体还原代码
token 区间跨分词器的对齐是本数据集最技术性的工程点——给出可复用的对齐模式。
表面形式重对齐(BPE 时代必备)
# ============================================================
# 官方 token 区间 → 新分词器(BPE)区间的通用转换
# ============================================================
def remap_span(off_tokens, start_ix, end_ix, new_tokens, new_ids):
"""
off_tokens: 官方分词列表
[start_ix, end_ix]: 官方实体区间(含)
new_tokens/new_ids: 新分词的 token 与 offset 映射
返回: 新分词器下的 (start, end) 含区间
"""
surface = " ".join(off_tokens[start_ix:end_ix+1])
new_start = new_end = None
for i, tid in enumerate(new_ids):
t = new_tokens[i].text.lower()
if surface.lower().startswith(t) and new_start is None:
new_start = i
if t and surface.lower().endswith(t):
new_end = i
assert new_start is not None and new_end is not None, surface
return new_start, new_end
实体还原与统计三步
# 1) 区间 → 表面文本
def span_text(report, e):
toks = report["text"].split() # 近似;严格按官方分词器
return " ".join(toks[e["start_ix"]:e["end_ix"]+1])
# 2) 每报告的实体图(孤立点保留)
def entity_graph(report):
g = {ix: {"label": e["label"]} for ix, e in report["entities"].items()}
for ix, e in report["entities"].items():
for r in e.get("relations", []):
g.setdefault(r["source_ix"], {})["rel_out"] = g.get(r["target_ix"], {})
return g
# 3) 按类型×区段的交叉分布(分层评估的底表)
from collections import Counter
def type_section_dist(data):
dist = Counter()
for rep in data.values():
for e in rep["entities"].values():
dist[e["label"]] += 1
return dist
两条红线
- 分词器版本进配置:官方分词不是公开 Python 包的一部分——按论文描述实现后用「实体表面还原 vs 标注 tokens 字段」全量断言一致性。
- 大小写风格:标注 tokens 为大写风格、text 原文为混合——对齐层统一 lower 处理并保留原文输出。
§4.8 报告关系图的统计画像
把每份报告的实体-关系当一张小图,其统计画像既是 sanity check 也是模型特征。
核心图统计量
| 统计量 | 定义 | 分布直觉 |
|---|---|---|
| 节点数 | 每报告实体数 | 长尾:正常模板少、复杂报告数十 |
| 边密度 | 关系数/可能实体对 | 极稀疏——LLS 只连观察与其解剖 |
| 孤立点率 | 无关系实体占比 | OBS-NA 大量孤立(无解剖锚) |
| 星型度 | 单个 ANAT 节点连接的观察数 | 心影/肺野是超级节点 |
| 最大连通分量 | 主图占节点的比例 | 多数报告单连通分量主导 |
画像的三个用途
- 数据质量哨兵:孤立点率/星型度骤变——提示标注分布漂移或解析退化。
- 图模型特征:图统计量(节点数/密度)作为报告级元特征进下游模型——免费信号。
- 采样策略:按图规模分桶采样训练——大报告(长尾右端)不被平均采样淹没。
训练前 sanity 三问:
Q1 OBS-NA 的孤立点率是否符合「阴性叙事」直觉(高)?
Q2 LLS 的方向断言(source=观察)通过率是否 100%?
Q3 节点数分布与报告长度相关性是否为正(应显著)?
§5 划分与使用建议
§5.1 官方划分
- dev(500 份)内部再分 train/dev——官方论文口径;test(100 份)只许终评。
- Inference 无官方划分——按研究自行分(按患者分组分,勿按报告随机)。
§5.2 社区惯例划分
- 按区段切任务:FINDINGS 单独训练 vs 全文训练——区段消融。
- 按实体类型留出:留出 OBS-U 全类测试——稀有类型外推。
- 按机构切分:MIMIC 训练→CheXpert 测试(官方 test 已内嵌该协议)。
- 按报告长度分桶:超长报告(多系统详述)单独评测——长文本抽取退化可视化。
- 金标内交叉验证:500 份金标的 5 折——小样本调参的标准姿势。
§5.3 泄漏风险(重点)
- 患者泄漏:同一患者多份报告——必须按患者分组划分(MIMIC 有患者键)。
- 模板泄漏:同机构报告高度模板化——句式记忆可刷高 dev 分数;跨机构 test 是唯一真实考卷。
- Inference→test 泄漏:用 Inference 集训练的模型再测 test——test 报告亦在 Inference 集中(模型已「见过」),必须显式排除 test 对应报告。
- 评测集复用泄漏:test 反复用于选型——报告流程上只允许一次终评。
§5.4 交叉验证建议
# 金标内按患者分组 5 折(小样本调参)
from sklearn.model_selection import GroupKFold
# groups = patient_id(从 report_id 经 MIMIC 索引回查)
# 折内分层:按实体密度(多实体报告集中折)保证每折标签量稳定
- 每折报告:实体 F1 分类型 + 关系 F1 分类型——类型级波动在小样本下巨大。
§5.5 外部验证建议
- 跨机构:官方 test 双机构协议的复用与扩展。
- 跨模态报告:CT 报告上测 schema 迁移(声明非官方口径)。
- 跨语言:翻译语料上测 schema 可移植性(研究性探索)。
- 时间外推:旧年代报告训练→近年报告测试(语言风格漂移)。
- 标注器外推:金标训练的抽取器在 Inference 集上的一致率——模型与自身弱标的差距即自举上限。
§5.6 任务配方
配方 1:联合抽取(原生于任务)
- 架构:DyGIE++/SpanBERT 类 span-based 联合模型。
- 训练:dev 集 5 折;特征:token embedding + span 宽度 + 区段特征。
- 评测:test 双套标注各自算 F1 + 与基准(0.82/0.73)对照。
配方 2:F1RadGraph 评测服务
- 用 radgraph 包对(生成报告, 参考报告)成对推理 → 实体/关系 F1。
- 工程化:批量推理缓存;版本声明(模型版本影响分数可比性)。
配方 3:弱标预训练
- Inference 集做 MLM/实体分类预训练 → 金标小样本微调。
- 评测:金标 5 折的提升量 = 弱标价值证明。
配方 4:图文 grounding
- Inference 标注映射胸片 → 实体短语-图像区域对 → 对比学习对齐。
- 验证:抽 100 对人工检查映射正确性(deid 索引对齐事故自查)。
§5.7 评测协议详解(F1 与双金标)
- 实体 F1 口径:token 区间+类型全对才算对(严格);表面形式+类型(宽松)——论文必须声明口径。
- 关系 F1 口径:三元组(source 表面形式+关系+target 表面形式)严格匹配为官方口径——区间级匹配更严,跨论文比较先对齐。
- 双金标报告法:分别在两套标注上算分 + 两套间一致性 F1——三数一起报才是完整证据。
- Inference 口径:F1RadGraph 类「模型评模型」的循环性(同源模型标尺)是已知局限——新标尺论文应做与人类评分的相关性校验。
§5.8 严格/宽松匹配的参考实现
实体与关系的 F1 计算看似简单,口径分歧却遍布文献——以下实现把两种主流口径显式化,评测报告可直接引用。
# ============================================================
# 实体/关系匹配的两种口径
# ============================================================
def ent_key_strict(e, toks):
# 严格:区间 + 类型
return (e["start_ix"], e["end_ix"], e["label"])
def ent_key_loose(e, toks):
# 宽松:表面形式 + 类型
return (" ".join(toks[e["start_ix"]:e["end_ix"]+1]).lower(),
e["label"])
def evaluate(pred, gold, key):
P = {key(e, gold["text"].split()) for e in pred["entities"].values()}
G = {key(e, gold["text"].split()) for e in gold["entities"].values()}
tp = len(P & G)
prec = tp / len(P) if P else 0.0
rec = tp / len(G) if G else 0.0
f1 = 2*prec*rec/(prec+rec) if prec+rec else 0.0
return prec, rec, f1
def rel_key(r, ents, toks):
# 官方口径:source 表面 + relation + target 表面
s = ents[r["source_ix"]]; t = ents[r["target_ix"]]
return (" ".join(toks[s["start_ix"]:s["end_ix"]+1]).lower(),
r["relation"],
" ".join(toks[t["start_ix"]:t["end_ix"]+1]).lower())
口径选择矩阵
| 场景 | 推荐 | 理由 |
|---|---|---|
| 与官方基准对照 | 严格(区间+类型) | 论文口径 |
| 应用层验收 | 宽松(表面+类型) | 容忍分词噪声 |
| 消融研究 | 双口径同报 | 展示误差来源 |
- 关系方向断言:实现里 source/target 一旦取反,F1 会「看起来正常地」掉——评测代码必须有方向单测(§6.5 坑点 8)。
§6 AI 就绪指南
§6.0 云端快速启动
# 1) PhysioNet 账号 + CITI 证书 + 签署协议(凭证级)
# 2) 下载标注 JSON(轻量)+ 可选 radgraph 包
pip install radgraph
# 3) F1RadGraph 快速计算
python -c "
from radgraph import RadGraph, F1RadGraph
f1 = F1RadGraph(); print(f1.score(hyp=['no pneumothorax'], ref=['no pneumothorax or effusion']))"
§6.1 快速上手(JSON 解析与统计)
# ============================================================
# RadGraph dev.json → 实体类型分布与关系图统计
# ============================================================
import json
from collections import Counter
data = json.load(open("train.json"))
ent_types, rel_types, n_entities = Counter(), Counter(), 0
for rid, report in data.items():
ents = report["entities"]
n_entities += len(ents)
for ix, e in ents.items():
ent_types[e["label"]] += 1
for r in e.get("relations", []):
rel_types[r["relation"]] += 1
print("实体类型分布:", dict(ent_types))
print("关系类型分布:", dict(rel_types))
§6.2 SQL 入库与分析(扁平化)
-- 嵌套 JSON 展平为关系表(PostgreSQL)
CREATE TABLE entities (
report_id text, ent_ix int, tokens text,
label text, start_ix int, end_ix int);
CREATE TABLE relations (
report_id text, source_ix int, target_ix int, relation text);
-- 高频阴性观察统计(质控/流行病学视角)
SELECT tokens, COUNT(*) AS n FROM entities
WHERE label = 'OBS-NA'
GROUP BY tokens ORDER BY n DESC LIMIT 30;
-- 关系方向 sanity check:LLS 的 target 应多为 ANAT-DP
SELECT r.relation, e2.label, COUNT(*)
FROM relations r JOIN entities e2
ON r.report_id = e2.report_id AND r.target_ix = e2.ent_ix
GROUP BY 1, 2 ORDER BY 3 DESC;
-- 每报告实体密度分布(抽样评估分桶依据)
SELECT width_bucket(cnt, 1, 80, 8) AS bucket, COUNT(*)
FROM (SELECT report_id, COUNT(*) AS cnt FROM entities GROUP BY 1) t
GROUP BY 1 ORDER BY 1;
§6.3 抽取管线(与词典协同)
报告文本 → 区段解析(FINDINGS/IMPRESSION)
→ 分词(官方口径)
→ span 枚举 + 类型分类(联合模型)
→ 关系分类(span 对 + 上下文)
→ 后处理:实体归并/同报去重
→ (可选)实体→标准词汇映射(RadLex/UMLS)
- 区段特征是免费增益:IMPRESSION 的观察分布先验与 FINDINGS 不同——区段嵌入进模型零成本涨点。
- 后处理归并:同义连写实体(“lung” vs “lungs”)在 schema 内不归一——下游统计前自行归一层(勿改标注)。
§6.4 表格层建模建议
- 抽取质量预测:按报告特征(长度/区段缺失/稀有实体)预测模型低分风险——人工复核队列的分流器。
- 机构风格建模:以 test 双机构差异为监督——风格鲁棒表示学习。
- 阴性覆盖率仪表盘:每报告 OBS-NA 密度监控——密度骤降提示抽取退化(模板变化)。
- 罕见观察漏斗:OBS-U 与稀有实体的抽检队列——低频错误的人工发现通道。
- 评测集污染监控:线上报告与 test 集的近似度(n-gram 重叠)监控——防评测集意外混入训练。
- 抽取延迟分布:单报告抽取耗时的 P50/P95 监控——延迟回归常先于精度回归暴露管线问题。
§6.5 坑点(Pitfalls)
坑点 1:金标与弱标混用
dev/test 是医师金标、Inference 是模型输出——把 Inference 当训练主集又当评测参考即循环论证。对策:训练/评测/对照三层显式分离并在论文声明。
坑点 2:token 区间跨分词器错位
start_ix/end_ix 绑定官方分词——换 BPE 后直接复用区间即错位。对策:表面形式重对齐层(§4.6)。
坑点 3:test 集重复评测
100 份 test 极小——反复评测选型即过拟合测试集。对策:dev 内 CV 调参;test 只终评一次。
坑点 4:OBS-NA 被当噪音
阴性实体占报告大头——NER 基线常整类漏掉。对策:类型分层评估;OBS-NA 单列召回。
坑点 5:Inference 与 test 重叠
test 对应报告也在 Inference 集中——弱标训练不排除即「见卷」。对策:按 report_id 排除 test 全家族。
坑点 6:许可协议漏配
只用 RadGraph 文本不碰图像不需要 MIMIC 图像许可;一旦联动图像,MIMIC-CXR 协议必须齐备。对策:数据血缘表+协议矩阵留档。
坑点 7:F1RadGraph 版本漂移
radgraph 包模型更新会移动分数——论文间分数比较需声明包/模型版本。对策:版本锁定写进实验配置。
坑点 8:关系方向反用
LLS 的 source=观察、target=解剖——反向建图后「位于」语义颠倒。对策:图 schema 单测(方向断言)。
§6.6 F1RadGraph 工程要点
- 调用模式:hyp/ref 报告列表成对推理——GPU 批处理;万级报告小时级。
- 版本锁定:radgraph 包版本+模型权重版本写进实验配置——分数可比性的前提。
- 解释性输出:开启详细模式可拿对齐的实体/关系匹配明细——评测报告可下钻到「哪类事实错误」。
- 成本权衡:大模型评answering(G-Eval 类)与 F1RadGraph 互补——事实抽取口径与语义评分口径双报更稳。
- 失败兜底:radgraph 包对超长/异形输入可能失败——评测管线加 try/except 并记录失败样本,失败率本身进评测报告。
§6.7 与 LLM 的集成模式
- LLM 抽取对照:零样本/少样本 LLM 做 RadGraph 抽取与微调模型对照——LLM 在稀有类型与区间精度上的差距是系统性的。
- 约束输出:LLM 输出 JSON schema 约束(实体枚举+关系枚举)——自由生成是幻觉之源。
- 报告改写质检:LLM 改写报告后用 F1RadGraph 校验事实保持——「改写不丢事实」的自动闸门。
- 评测陷阱:LLM 既当生成器又当评测器(自评)——评测器必须独立于生成器。
§6.8 大规模处理性能实践
- Inference 集处理:22 万报告 JSON 懒加载+扁平化入 PostgreSQL——查询侧远比训练侧常用。
- 批量推理:radgraph 包批模式 + fp16——百万级段落一夜完成。
- 缓存纪律:F1RadGraph 结果缓存键=hyp hash+ref hash+模型版本——版本变更自动失效。
§6.9 报告结构化落地实战(医院场景)
把 RadGraph 范式搬到院内报告流的路径与红线:
1. 语料接入:院内 RIS 报告(脱敏)+ 区段模板解析
2. schema 本地化评审:
- 保留四实体+三关系核心
- 增补院内特有观察类型(如床旁片语境)需医师评审
3. 模型适配:金标级本地小集(≥200 报告医师标注)+ 官方 dev 联合训练
4. 双轨评估:官方 test(协议允许范围内)+ 本地 holdout
5. 上线位形:预填草稿(医师确认)——禁止直接改写报告
6. 监控:抽取密度/OBS-NA 覆盖/医师修正率三仪表盘
- 红线:AI 抽取结果入临床文档必须医师签署确认;schema 本地化修改必须版本化并回评官方 test 兼容性;患者级数据出库走院内伦理路径。
§6.10 报告生成评测的整合管线(F1RadGraph 工程位)
把 F1RadGraph 嵌入 RRG(报告生成)训练/评测流的标准做法——三个集成点各有工程细节。
集成点 1:离线评测
生成报告集 + 参考报告集
→ radgraph 包批量推理(hyp/ref 各一次)
→ 实体/关系集合 → F1 → 汇总表
细节:批量缓存(hash 键);GPU 批大小按显存线性扩
集成点 2:强化学习奖励(RadGraph reward)
- 把 F1 当 reward 直接做 REINFORCE/PPO——奖励稀疏且计算贵,实践用「采样估算+基线减除」;参考 EMNLP 2022 语义奖励配方。
- 奖励 hacking 监控:模型学「多写标准阴性句」刷 F1——需与临床指标(CE 类标签 F1)联动约束。
集成点 3:训练期早停信号
- 每 epoch 在验证集算 F1RadGraph——比 ROUGE 更贴近「事实正确」目标;注意验证集独立于 F1 模型训练集(RadGraph dev)。
三轨评测的最终报告
| 层 | 指标 | 捕捉 |
|---|---|---|
| 语言层 | ROUGE-L / BERTScore | 表面流畅与相似 |
| 事实层 | F1RadGraph | 实体/关系级事实一致 |
| 综合层 | 人工/LLM 评审 | 临床可用性 |
§6.11 实体到标准词汇的归一层(RadGraph → UMLS/RadLex)
RadGraph schema 是「文本层」——「胸腔积液」在 schema 里只是 OBS-DP 表面形式;统计与跨库联动需要把它归一到标准词汇。这一归一层是自建工程,设计要点如下。
归一层架构
RadGraph 实体表面形式
→ 词形归一(大小写/单复数:effusions→effusion)
→ 候选召回(RadLex/UMLS 词典字面匹配 + 别名表)
→ 上下文消歧(ANAT 锚点 + 邻近实体)
→ CUI/RadLex ID + 置信度 + 未归一队列
四条设计要点
| 要点 | 说明 |
|---|---|
| 阴性也归一 | OBS-NA 的「pneumothorax」同样归一到气胸 CUI——阴性统计的前提 |
| 不确定保留 | OBS-U 归一后仍带不确定标记——直接合并会污染统计口径 |
| 缩写词典 | 报告缩写(PTX、effusion→PE 混乱区)建院内缩写表——纯词典召回失败主源 |
| 版本绑定 | 归一词典(UMLS 版本)与 RadGraph 版本双双留痕 |
- 联动价值:归一层建好后,报告结构化数据即可与检验(LOINC)、药物(RxNorm)、诊断编码(ICD/SNOMED)在全院语义仓对齐——这是「报告 NLP」升级为「临床数据基础设施」的关键一跳。
§7 评估基准与 DAIMS 评估
§7.1 DAIMS 评估(24 项)
| # | 维度 | 评估项 | 得分 | 说明 |
|---|---|---|---|---|
| 1 | 可得性 | 注册后免费下载 | 4/5 | 凭证+协议门槛 |
| 2 | 可得性 | 机器可读许可 | 4/5 | PhysioNet 标准化 |
| 3 | 可得性 | 稳定持久标识 | 5/5 | DOI+deid 索引 |
| 4 | 结构化 | 受控结构完备度 | 5/5 | token 级 schema 严密 |
| 5 | 结构化 | 关系型就绪 | 5/5 | 原生 JSON 图结构 |
| 6 | 结构化 | schema 稳定性 | 5/5 | 静态单版 |
| 7 | 文本 | 名称/定义文本资产 | 5/5 | 报告全文即语料 |
| 8 | 文本 | 文本规范化程度 | 4/5 | 临床文本天然噪声 |
| 9 | 版本 | 历史保留 | 4/5 | 静态;源库版本联动 |
| 10 | 版本 | 发布节奏 | 3/5 | 无更新计划 |
| 11 | 结果 | 跨词表映射覆盖 | 3/5 | schema 内无词汇归一 |
| 12 | 结果 | 映射质量一致性 | 4/5 | 图像映射需自查 |
| 13 | 结果 | 多语言覆盖 | 2/5 | 仅英语 |
| 14 | 质量 | 归组准确性 | 4/5 | 医师金标;小样本 |
| 15 | 质量 | 类型标注一致性 | 4/5 | 双标可验证 |
| 16 | 质量 | 机构 ID 化 | 5/5 | deid 报告/患者索引 |
| 17 | 治理 | 更新频率 | 3/5 | 静态 |
| 18 | 治理 | 变更通告 | 4/5 | PhysioNet 版本页 |
| 19 | 治理 | 法规锚定 | 5/5 | HIPAA 脱敏+凭证制 |
| 20 | AI 任务 | 抽取任务适用性 | 5/5 | 原生任务金标 |
| 21 | AI 任务 | 评测指标适用性 | 5/5 | F1RadGraph 生态 |
| 22 | AI 任务 | 大模型适配适用性 | 4/5 | 评测标尺循环性 |
| 23 | 伦理 | 个体隐私风险 | 4/5 | 已脱敏;残余风险 |
| 24 | 伦理 | 二次使用许可清晰度 | 4/5 | 凭证条款明确;商业灰区 |
DAIMS 综合:95/120(3.96/5)——任务与治理双高;语言覆盖与更新节奏是短板。
§7.2 可复现分析路线
- 复现规模:dev 实体计数=14,579、关系=10,889(解析 JSON 断言)。
- 复现基准:radgraph 包或 DyGIE++ 复刻对照 F1 0.82/0.73。
- 复现一致性:test 双套标注间 F1 与论文报告对照。
- 复现类型分布:实体四类计数与关系三型计数对照论文附录统计。
- 复现映射正确性:Inference→图像映射抽 100 例人工核对(deid 索引无误接)。
§7.3 外部评测资源
- F1RadGraph 官方实现与论文(EMNLP 2022)——指标层评测。
- RadGraph-XL 等社区扩展(跨机构扩标)——引用需声明非官方版本。
- 医学 NER/RE 通用基准(—引用需声明非官方版本。
- 医学 NER/RE 通用基准(NCBI Disease 等)对照——领域难度定位。
- GPT/LLM 抽取对照研 等)对照——领域难度定位。
- GPT/LLM 抽取对照研究(零样本 schema 遵循度)——新兴对照轴。
§7.4 质量审计清单(发布前)
- [ ] 训练/评测/对照三层标注口径声明(金标 vs Inference)。
- [ ] test 只终评一次的流程留痕。
- [ ] token 区间重对齐层单测(分词器变更场景)。
- [ ] 关系方向断言(source/target 语义)单测。
- [ ] Inference 排除 test 家族(report_id 黑名单)。
- [ ] F1RadGraph 版本锁定写入实验配置。
- [ ] 协议矩阵(RadGraph/MIMIC/CheXpert)齐备留档。
§7.5 模型卡要点
| 卡片项 | 建议声明内容 |
|---|---|
| 数据版本 | RadGraph 1.0 + 源库版本 |
| 标注口径 | 金标训练/弱标预训练比例 |
| 评测 | F1 口径(严格/宽松)+ 双金标报告 |
| 已知偏差 | 机构风格、英语中心、胸部 X 光域 |
| 指标版本 | radgraph 包版本锁定 |
| 许可 | PhysioNet 1.5.0 与用途声明 |
| 失败模式 | 拒绝预测路径与人工队列衔接 |
§7.6 与站内数据集的联合分析建议
| 联合对象 | 键 | 分析价值 |
|---|---|---|
| mimic-cxr | 报告 deid 索引 | 原生图文联动 |
| chexpert | 报告/标签对照 | 跨机构测试源 |
| umls | 实体→CUI 归一 | 语义层升级 |
| loinc | 检查标识 | 报告-检验联动 |
| medqa / | 检查标识 | 报告-检验联动 |
| medqa / pubmedqa | NLP 语境 | 报告理解任务补充 |
| radgr | NLP 语境 | 报告理解任务补充 |
| radgraph 衍生指标 | F1RadGraph | RRG 评测标准件 |
§7.7 金标-弱标双层资产治理
RadGraph 的「600 金标+22 万弱标」结构在治理上等价于两个数据集——混治即事故。
两层特性对照
| 特性 | 金标层(600) | 弱标层(22 万) |
|---|---|---|
| 标注者 | 执业医师 | RadGraph Benchmark |
| 噪声 | 观察者间差异级 | 模型错误率级(F1 0.73-0.82) |
| 用途 | 训练/调参/终评 | 预训练/统计/标尺 |
| 泄漏面 | test 复用 | test 家族重叠 |
五原则
- 物理分离:两层存不同表/目录,schema 相同但带 layer 列。
- 评测只认金标 test:弱标层永远不出现在评测口径里。
- 弱标训练排除 test 家族:report_id 黑名单进 ETL 断言。
- 噪声-aware 训练:弱标层可用噪声鲁棒损失/样本权重(以 F1 为先验权重)。
- 版本绑定:弱标层与生成它的模型版本绑定记录——模型升级即弱标重生成决策点。
§7.8 评测标尺的进化与循环性治理
F1RadGraph 成为标尺后,「标尺本身的进化」成为新问题——这是所有模型评测指标成熟后的共同命运。
循环性问题
RadGraph Benchmark(模型 A)→ 标注 Inference 集
LLM 时代生成器(模型 B)→ 生成报告
F1RadGraph(用模型 A 评)→ 分数
问题:A 的系统性偏差成为 B 的「事实」定义
- 已知偏差实例:A 对阴性表达的处理风格固定——生成器学会写「A 爱看的标准阴性句」即得高分,不等于临床更好。
- 治理三件套:①标尺版本声明(如 §6.8);②人类相关性校验(新标尺 vs 医师评审的 Spearman 相关);③多标尺并行(F1RadGraph + RaTEScore 类 + 人工抽评)。
- 标尺进化路线:更人类对齐的抽取标尺、基于 LLM 的结构化评审、以及「抽取式+生成式评审」的混合——RadGraph 的 schema 仍是共同语义底座,变的只是打分器。
§8 伦理、隐私与合规
- 隐私:源报告经 HIPAA 口径脱敏;token 级标注理论上增加再识别面(罕见病+时间组合)——二次分发禁止(许可条款),引用示例避免拼接真实报告片段。
- 许可:PhysioNet Credentialed 1.5.0——签署制;商业用途与再分发需独立评估;联动 MIMIC/CheXpert 时协议叠加。
- 临床边界:抽取/评测结果不得直接驱动临床决策——报告内容变更必须医师签署。
- 偏差声明:英语、美国两机构、胸部 X 光域——跨域使用前重新本地验证。
- 评测公平:F1RadGraph 作为标尺的模型循环性应在评测报告局限节声明。
§8.1 文档自动化产品的位形与红线
基于 RadGraph 类能力的报告产品(抽取/改写/预填)在临床文档流中有明确的位形分级——越界的代价是医疗文书法律责任。
三级位形
| 位形 | 功能 | 责任 | 条件 |
|---|---|---|---|
| L1 只读辅助 | 抽取结果仅供检索/统计 | 低——不进文档 | 无签署要求 |
| L2 预填草稿 | AI 结构化结果预填报告模板字段 | 医师逐字段确认 | 修正率监控 |
| L3 自动改写 | AI 直接改写报告文本 | 高——文本即医嘱级证据 | 不建议;监管路径极重 |
- L2 的工程红线:修正率(医师改动 AI 预填的比例)是产品生命线——>30% 说明模型不可信,退回 L1;修正轨迹全部留痕。
- 抽取≠理解:RadGraph schema 抓「文本说了什么」——不验证「文本说得对不对」(影像事实核对超出 schema 能力);文档产品不得暗示「AI 已核对影像」。
- 残余隐私义务:抽取结果(实体表)亦属受保护健康信息(PHI)——与源报告同级别存储与访问控制;抽取层常被误当「已脱敏产物」放开权限,这是真实发生过的医疗数据事故类别。
§9 版本历史与演进
| 时间 | 演进 | 对 AI 用户的影响 |
|---|---|---|
| 2021-06 | 论文+三层数据发布 | schema 确立 |
| 2021 | PhysioNet 上线 | 凭证获取通道 |
| 2022 | F1RadGraph(EMNLP) | 评测生态形成 |
| 2022-2023 | reward 化进 RRG 强化学习 | 训练信号角色 |
| 2023+ | 社区扩展(XL/多模态) | 生态外溢 |
| 至今 | RRG 评测事实标准 | 不可绕过的对标尺 |
§9.1 未来演进方向
- 多模态深化:实体级 grounding 与区域定位的联合训练——从「映射」走向「对齐训练」。
- 跨模态/跨语言 schema 移植:CT/MRI 报告与非英语报告的 schema 适配(社区驱动)。
- LLM 时代标尺:F1RadGraph 与 LLM 评审的结合与互校——评测标尺自身的进化压力。
- 弱标治理自动化:噪声感知训练、置信度注入——弱标层的第二春。
- 跨机构扩展:以 XL 类扩展为基底的更大规模金标化——社区协作的标注民主化路径。
§9.2 使用本条目时的维护提示
- 规模数字以 2021 论文口径为准(dev/test/Inference 三层分开引用)。
- radgraph 包版本更新会移动 F1RadGraph 分数——锁定版本并注明。
- 社区扩展(XL 类)非官方——引用时区分。
- PhysioNet 条款变更跟踪官方页——许可再确认周期建议按年。
- test 双套标注的匿名医师信息不公开——一致性复现以集合级统计为准,不尝试定位个体。
- schema 引用时附标注指南版本——schema 语义的细微澄清依赖指南原文。
§10 引用与资源
§10.1 官方资源
| 资源 | 链接 | 说明 |
|---|---|---|
| PhysioNet 页 | https://physionet.org/content/radgraph/ | 数据+许可 |
| 论文 | arXiv:2106.14463 | schema 与基准 |
| radgraph 包 | PyPI radgraph | 推理+F1 工具 |
| MIMIC-CXR | https://physionet.org/content/mimic-cxr/ | 源库 |
| CheXpert | https://stanfordmlgroup.github.io/competitions/chexpert/ | 测试源库 |
§10.2 学术引用
- Jain S, Agrawal A, Saporta A, et al. RadGraph: Extracting Clinical Entities and Relations from Radiology Reports. arXiv:2106.14463, 2021.(PhysioNet DOI: 10.13026/hm87-5p47)
- Delbrouck JB, et al. Improving the Factual Correctness of Radiology Report Generation with Semantic Rewards. EMNLP 2022.(F1RadGraph/reward 口径)
- Johnson AEW, et al. MIMIC-CXR: a de-identified publicly available database of chest radiographs with free-text reports. Sci Data 6, 317 (2019).(源库)
- Irvin J, et al. CheXpert: A Large Chest Radiograph Dataset with Uncertainty Labels and Expert Comparison. AAAI 2019.(源库)
§10.3 站内互链
- mimic-cxr:报告与图像的源库(原生联动)
- chexpert:test 集第二机构来源
- umls:实体语义归一的上层
- loinc:检查标识层联动
- medqa / pubmedqa:医疗 NLP 评测语境补充
- clinicaltrials-gov:NLM 报告结构化实践参照
- open-targets:文本挖掘证据链的上游参照
- snomed-ct:实体类型向语义类别的映射参照
- chest-imagenome:报告句子与解剖区域锚定的姊妹工程
§10.4 建议引用格式
@article{radgraph2021,
title = {RadGraph: Extracting Clinical Entities and Relations from Radiology Reports},
author = {Jain, Saahil and Agrawal, Ashwin and Saporta, Adriel and Truong, Steven QH and Duong, Du Nguyen and Bui, Tan and Chambon, Pierre and Zhang, Yuhao and Lungren, Matthew P. and Ng, Andrew Y. and Langlotz, Curtis P. and Rajpurkar, Pranav},
journal = {arXiv preprint arXiv:2106.14463},
note = {PhysioNet DOI: 10.13026/hm87-5p47},
year = {2021}
}
§10.5 常见问题 FAQ
Q1:Inference 集(22 万份)能当训练金标吗?
A:不能当「金标」——它是模型输出(F1 0.73-0.82 的噪声水平)。正确用法是弱监督预训练、统计与评测标尺;监督训练的主集仍是 600 份金标(或金标+弱标混合并声明比例与噪声处理)。
Q2:F1RadGraph 分数能跨论文直接比吗?
A:同版本可比、跨版本要小心——radgraph 包的底层模型更新会移动分数。比较前核对包版本与模型版本;不可得时用同论文内部的相对提升(而非绝对分数)做跨论文对照。
Q3:schema 能用到 CT 报告上吗?
A:核心设计(观察三分+解剖锚定)可迁移,但观察类型与解剖词汇需要针对 CT 重新定义与标注——官方 schema 未在 CT 上验证。引用时明确「RadGraph-inspired schema for CT」并注明自建标注。
Q4:为什么我的实体 F1 复现比论文低很多?
A:三查——①区间口径:严格(区间+类型)vs 宽松(表面+类型);②分词器是否官方口径;③test 双套标注你评的是哪一套。三者任一不同即可差出数个点。
Q5:做报告生成评测,F1RadGraph 够吗?
A:单指标不够——F1RadGraph 量「事实抽取层一致性」,不含流畅度与临床完整性。惯例是 ROUGE/BERTScore(语言层)+ F1RadGraph(事实层)+ 人工/LLM 评审(综合层)三轨同报。
Q6:600 份金标对训练深度模型够吗?
A:纯金标训练小模型(BERT-base 级)可以复现论文水平;更大的模型或零样本场景下「金标微调+弱标预训练」组合更稳。金标的稀缺正是 Inference 集存在的理由——两条腿走路,别指望单腿。
Q7:实体类型能增删吗?我想加「器械/导管」类。
A:可以但要付出「与官方 test 不可比」的代价——改 schema 后官方 test 标注不再完全适用。工程实践是「核心四类保持原义 + 扩展类单独命名空间」,并向官方 test 之外的自建评测迁移。
Q8:RadGraph-XL 是官方的吗?
A:XL 是社区基于同一 schema 的扩展标注(更大规模、更多机构)——不是原论文团队发布的官方版本。引用时区分「RadGraph(2021 官方)」与「RadGraph-XL(社区扩展)」,评测协议与许可亦各自独立核查。
Q9:Inference 集的「负样本」能直接用吗?
A:可以但要意识到它是模型生成的负例——OBS-NA/无关句判定来自 F1 0.73-0.82 的抽取器,存在系统性漏检。用它过滤明显无关句足够可靠;要精确的否定/不确定语义分布,仍应回到 600 份金标统计。
(全文完;本文共 §0-§10 十一个章节,规模数字以 RadGraph 论文(2021)官方口径为准,发布年 2021。)
相关数据集导航
以下为站内 AI-Ready 数据集百科中与本词条共享多个主题标签的相关数据集,按相关度降序排列:
- thyme — 共享标签:医疗NLP / 临床文本 / 命名实体识别 / 关系抽取
- pharmaconer — 共享标签:医疗NLP / 临床文本 / 命名实体识别
- distemist — 共享标签:医疗NLP / 临床文本 / 命名实体识别
- meddoprof — 共享标签:医疗NLP / 临床文本 / 命名实体识别
- cantemist — 共享标签:医疗NLP / 临床文本 / 命名实体识别
- umls — 共享标签:医疗NLP / 临床文本 / 命名实体识别
- bc5cdr — 共享标签:医疗NLP / 命名实体识别 / 关系抽取
- maccrobat — 共享标签:医疗NLP / 临床文本 / 命名实体识别
- carmen — 共享标签:医疗NLP / 临床文本 / 命名实体识别
- coral — 共享标签:医疗NLP / 临床文本 / 关系抽取
导航说明:本章节由全站统一标签体系自动计算生成(标签重合度算法),双向可达;点击链接可跳转至对应数据集词条。

