SOAP 标注与问题列表摘要 — 七百六十五份病程记录

765 份病程记录 / 603-75-87 划分 / 行级标签 CSV

来源 https://physionet.org/content/task-1-3-soap-note-tag/1.0.0/发布时间: 2026-10-28最后更新: 2026-10-31 阅读 11
SOAP 标注与问题列表摘要 — 七百六十五份病程记录

信息速览

数据集名称SOAP 标注与问题列表摘要 — 七百六十五份病程记录
数据类型文本,人工标注,序列标注,元数据
规模来源于 MIMIC-III 住院记录
接入方式https://physionet.org/content/task-1-3-soap-note-tag/1.0.0/

临床文本领域有一件长期解决不了的事:公开语料几乎都只在标注"文本里说了什么",极少标注"医生是怎么想的"。命名实体、关系、时序、否定与推测这些标签,覆盖的是文本的表层特征;而诊断推理这条链路——从主观叙述与客观数据中形成假设、在医学知识上做抽象、再收束成一句诊断与当日计划——在公开资源里长期缺位。原因不难理解:表层特征可以由语言学背景的标注者完成,诊断推理的标注必须让有临床资质的人来做,成本高出一个量级。

这套数据集是少数正面处理这条链路的公开资源之一,而且它的处理方式很特别:不是单独标注某一个任务,而是把标注组织成三层递进的结构。第一层把病程记录逐行切进 SOAP(主观 Subjective、客观 Objective、评估 Assessment、计划 Plan)四个段落;第二层标注评估与计划之间的因果关联,这一层被 2022 年美国国家自然语言处理临床挑战赛(n2c2)收为赛道三,不在本数据集内;第三层从计划小节里抽出问题与诊断,形成问题列表。两件公开的是第一层与第三层,它们共用同一批病程记录、同一个记录编号,因此可以用记录编号把两件拼起来,也可以单独取用。

代价同样清晰:765 份病程记录、单一来源、单一国家、单一医院系统、标注者为两名医学生,规模上它撑不起大模型的预训练,而且受 PhysioNet 凭据访问管制,文件目录在部分地区会因策略限制直接不可见。它不是粮仓,是一把用来量"文本理解"与"诊断抽象"这两件事到底差多少的尺子。一屏速览见下表。

维度 内容
全名 Tasks 1 and 3 from Progress Note Understanding Suite of Tasks: SOAP Note Tagging and Problem List Summarization
上游套件 Progress Note Understanding(病程记录理解);本数据集收录其中的任务 1 与任务 3
发布方 PhysioNet 托管;作者团队来自威斯康星大学麦迪逊分校、波士顿儿童医院计算健康信息学项目、Rush 大学医学中心、芝加哥洛约拉大学
首次发布 2022 年 9 月 30 日,版本 1.0.0
版本状态 官方页仅列出 1.0.0 一个版本,无修订记录
原始来源 MIMIC-III Clinical Database v1.4,波士顿贝斯以色列女执事医疗中心,约六万例 ICU 住院
记录数 765 份病程记录(去重后)
划分 训练 603 / 验证 75 / 测试 87
任务构成 任务 1 为 SOAP 段落行级标注;任务 3 为问题列表摘要;任务 2 另在 n2c2 2022 赛道三
标签体系 任务 1 为 B/I 前缀加 S/O/A/P 四类;任务 3 为分号分隔的问题串
文件格式 CSV;任务 1 以单竖线分隔字段,任务 3 以逗号分列
标注工具 INCEpTION
标注者 两名医学生;指南由两名具备重症医学、肺科与临床信息学资质的医师制定;与裁决者一致性 kappa 大于 0.80
记录类型筛选 取自 MIMIC-III 的 84 种记录类型,排除护理病程记录与社会工作病程记录
访问方式 需签署数据使用协议的凭据访问;须完成 CITI「仅数据或标本研究」培训
许可 PhysioNet Credentialed Health Data License 1.5.0
DOI 10.13026/wks0-w041(v1.0.0);10.13026/5qe0-x984(latest)
典型用途 临床文本分段、问题列表生成、序列标注基线、病程记录结构化评测、共享任务复现

§1 它要解决的具体麻烦

1.1 公开语料里缺的不是文本,是推理链

把自然语言处理用到电子病历上,早期成果集中在几类看得见的任务上:命名实体识别把疾病名、药名、检查名标出来;关系抽取把两个实体连起来;否定与推测检测判断这句话说的是"有"还是"没有";时间关系抽取把事件排到时间轴上。这些任务的共同点是标签附着在文本的表层形态上——标注者读一句话,凭语言学规则与术语表就能给出答案。

诊断推理不在这个层面。一位医生在写病程记录时做的是另一件事:把前一天的症状变化、今晨的检验数值、影像报告的关键句,压缩成"这个患者现在的主要问题是什么、今天要处理什么"。压缩的中间过程从不写在纸上,写在纸上的只有压缩的结果。要标注这个过程,就必须把"输入的证据"与"输出的结论"分别标出来,再在两者之间建立可检验的对应关系。

这套数据集的三层结构就是照这个逻辑搭的。第一层解决"证据在哪"——把整份记录切成主观、客观、评估、计划四个段落,让人知道哪句话属于哪一类信息。第三层解决"结论是什么"——从计划小节里把问题与诊断逐个摘出来。中间被拿去办挑战赛的第二层解决"证据怎么通向结论"。两件公开的分处首尾,正好把中间那段留给别人去做。

值得一提的是这个链条的源头。SOAP 格式由 Larry Weed 提出,他同时也是问题导向病历的提出者,官方页在背景段落里引用了他 1964 年发表于 Irish Journal of Medical Science 的文献,并在同一段里指出 SOAP 病程记录已嵌入医学院课程与其他培训课程。这一点解释了为什么四分类这条口径能成立:它不是一个为了标注方便而发明的分类,而是医生群体已经在用的书写结构。标注这样一套结构,等于把既有的书写惯例变成可计算的标签。

反过来看,这也解释了为什么这类标注不能靠众包完成。判断"这一行属于客观还是评估",需要知道检验数值与影像报告属于客观,而医生对数值的解读属于评估。这条界线不在文本表面,而在临床训练里。官方页因此把指南的制定交给了持专科资质的医师,把执行交给了受过训练并经过三周导入的医学生——这是一个在成本与质量之间的具体取舍,使用时应当把它当作标注质量的边界条件之一。

1.2 三条常见的错误期待

第一条,期待它是"一个大语料"。765 份记录,按行级标注展开之后行数会多得多,但记录本身只有 765 份,且全部来自同一家医院的重症环境。想用它做自监督预训练或把参数量堆上去,会立刻撞到天花板。

第二条,期待它"下载即可用"。它受 PhysioNet 凭据访问管制,需要完成 CITI 培训、签署数据使用协议、经审核后才能拿到文件;在部分地区,官方页的文件面板会直接显示因法律或政策限制不可见。这不是配置问题,是访问政策的既定结果(§5.1)。

第三条,期待它"包含三层标注的全部数据"。官方页明确说明,本数据集提供的是阶段一与阶段三的独立任务数据,阶段二的评估与计划关系标注任务已被 n2c2 2022 挑战赛收纳,需到挑战赛站点获取。把三层的论文描述当成三层的可得数据,是引用时最容易出的错。

1.3 它能给到的与给不到的

你的需求 它给的 够不够
病程记录的段落切分(四分类) 765 份记录的行级标签,B/I 前缀加 S/O/A/P 够,且标签粒度到达单行文本
从病程记录生成问题列表 任务 3 的评估段落输入加分号分隔的问题串 够做有监督抽取与生成,规模偏小
训练一个序列标注基线 行级标签可直接进 BIO 式解码 够做基线,不够做大模型
用记录编号把两件拼起来 两件共用记录编号,任务 3 可回溯任务 1 全文 够,这是它设计上的便利
评估与计划之间的因果推理 — 不在本数据集,需到 n2c2 2022 赛道三
多中心泛化验证 单一国家、单一医院系统 不够,只能做源内划分
门诊或普通病房文本 全部为重症病程记录 不够,文体与门诊差异明显
时间跨度与随访结局 无时间标签、无结局变量 不够
影像或波形等多模态 纯文本 不够
作为评测基准长期复用 有对应共享任务与官方评测指标 够,且已有公开共享任务记录

1.4 你的处境与它能帮到的事

你的处境 它能帮你什么 下一步该做什么
你在做病历结构化,需要把自由文本切成 SOAP 四段 行级标签可直接做序列标注,含 B/I 边界 先按记录编号划分,不要按行随机分(§5.6)
你在做问题列表生成,苦于没有成对的问题清单 任务 3 给的是评估段落到问题串的成对数据 按官方共享任务的口径用 ROUGE-L 评测,便于跟已发表结果对齐
你读过 LREC 2022 的层级标注论文,想复现 本数据集就是那篇论文公开的件,但数量少 3 份 引用时注明 765 与 768 的差异(§3.2)
你想验证"理解文本"与"抽象诊断"是不是两种能力 同一批记录上有两段标注,可对同一批输入分别评测 固定记录划分,两个任务用同样的训练记录集
你要一条公开可用的临床文本生成评测线 有共享任务、有官方主评测指标 ROUGE-L 用共享任务口径,别自造指标
你在教临床信息学,需要一个可讲的结构化例子 官方页给了两条可直接展示的样本行 用 §2.3 的样本行讲字段,不要改动原文

1.5 一句话判断

它不适合当"更大的训练集",而适合当"更完整的链条":同一批病程记录上同时标了证据的所在位置与结论的最终形态,中间那一步留给你自己补——这正是它最有价值也最容易被误用的地方。

1.6 不适合谁:四条边界

不适合拿来做规模训练。 765 份记录、单一来源。想靠数据量换性能的项目,用它会在一两轮内过拟合,而且无法用外部数据补,因为标注口径依赖原作者制定的指南。

不适合拿来做临床部署前的验证。 官方页的伦理段明确要求,任何预训练语言模型在部署前,应由研究者与医疗系统对不同健康群体做公平性与公平表现的审计。它是一份标注产物,不是一份验证材料。

不适合拿来做泛化能力评估。 同一家医院、同一个国家、同一类重症记录。在它上面得到的好成绩,不能推到别家医院的文本。

不适合拿来做流行病学或结局研究。 记录里没有随访、没有结局变量、没有用药时间线。它只承载文本与标注,不承载临床过程。

§2 数据构成与规格

2.1 两件分别独立,共享记录编号

数据集的两件各自独立组织,各自带训练、验证、测试三份文件。任务 1 是 SOAP 段落标注,任务 3 是问题列表摘要。它们共享同一批 765 份病程记录、同一个记录编号,官方页明确说明:任务 3 只给出评估段落的文本,若需要完整病程记录,可用记录编号从任务 1 取回。

这个设计有个直接后果。任务 3 的输入比任务 1 少——它只喂评估段落,而任务 1 提供完整记录。想做"从主观加客观加评估生成问题列表"的实验,需要自己按记录编号把任务 1 里的对应段落拼到任务 3 的样本上。官方共享任务页里提到的输入选项(只用评估、主观加评估、三者全用)就是这么来的,而物理存储上任务 3 只有评估段落一列。

从评测的角度看,这种"存储上只给一列、使用时按需拼接"的做法是有意为之。三种输入选项对应三种难度:只给评估段落时,模型必须在信息最少的条件下完成抽象;加上主观段落,就有了症状与病程变化的叙述;再加上客观段落,就有了检验与影像的支撑。同一份标准答案配三种输入难度,等于把"输入信息量如何影响摘要质量"这个问题也变成了可测量的。想要复现这条比较,就必须先完成拼接,官方共享任务页提供的示例数据加载脚本正是为这件事准备的。

还有一个容易被忽略的细节:任务 1 提供的是完整病程记录,因此它其实可以用来构造任务 3 之外的输入变体。比如只用客观段落加评估段落,或者只用主观段落。官方共享任务页只列了三种选项,但拼接本身没有限制,前提是每次拼接都保留记录编号,以便结果能对应回标准答案。

2.2 字段字典

任务 1 的字段共四个,官方页给出的排列为:NOTE_ID | line_text | section_label | note_index。

字段 取值形态 含义 使用注意
NOTE_ID 整数,如 148567 记录编号,实为 MIMIC-III 的住院编号 HADM_ID 两件之间的连接键,也是与 MIMIC-III 连接的键
line_text 自由文本 病程记录中的一行原文 官方页说明样本为原始文本
section_label 两位字符,如 BS 首位为 B 或 I,表示段落的开始或内部;次位为 S/O/A/P,表示段落类别 直接进 BIO 式解码时需要拆成两位
note_index 整数,从 0 起 该行在本份记录中的行序号 官方页说明 0 为记录起始行,之后为 0+i

任务 3 的字段共三个,官方页给出的排列为逗号分列:HADM ID、ASSESSMENT Section extracted from the Progress Note、Problems/Diagnoses extracted from each subsection of the PLAN section。

字段 取值形态 含义 使用注意
HADM ID 整数,如 110437 记录编号 与任务 1 的 NOTE_ID 同义,是拼接的键
评估段落 自由文本 从病程记录中抽出的评估段落原文 任务 3 唯一的输入列
问题与诊断列表 分号分隔的短串 从计划各小节中抽出的问题与诊断 每个列表视为一条短摘要,问题之间以分号分隔

2.3 两条官方样本行的完整解剖

官方页在 Usage Notes 里直接给出了两行样本,这是理解两份文件最可靠的地方。

任务 1 的样本行:

148567 | Patient able to wean off vent to trach collar in AM | BS | 0

拆开看:记录编号 148567;原文是"患者上午可脱离呼吸机改为气管切开面罩";标签 BS 拆成 B 与 S,即"主观段落的开始";行序号 0,说明这是这份记录的第一行。这一行把四个字段的语义一次展示完了。

任务 3 的样本行:

110437 , 53 year old female with hx of alcoholism presents with hepatic and renal failure. Transfered to ICU with new oxygen requirement. , Hypoxia; Hepatic failure; ARF; Alcoholism

拆开看:记录编号 110437;评估段落是"53 岁女性,有酒精使用史,因肝衰竭与肾衰竭就诊,转入 ICU 后出现新的吸氧需求";问题列表是四个分号分隔的项目:低氧血症、肝衰竭、急性肾衰竭、酒精使用。注意这里用的是逗号分列而不是竖线,与任务 1 不同——这两份文件的分隔符并不一致,是解析时最常踩的坑(§5.6)。

2.4 标签体系:任务 1 的两位标签

任务 1 的标签是两位字符,官方页说明后处理把段落小标题归到了更大的四个段落标题下。

首位 含义 说明
B Beginning,段落的开始 标记该行为某个段落的第一行
I Inner,段落的内部 标记该行处于某个段落的中间
次位 含义 对应段落 段落内容
S Subjective 主观 描述患者症状、状况与日常变化的自由文本
O Objective 客观 检验结果、生命体征、影像报告等结构化数据
A Assessment 评估 描述患者并确立本次就诊的主要症状或问题
P Plan 计划 针对每个鉴别诊断或问题给出当日处理方案

四个次位与两个首位组合,共八种标签取值。官方页说明,多数段落以小标题开头,小标题之下的各行归入同一类别,直到下一个小标题出现;没有小标题时,标注者按行内表达的内容判断归属,官方举的例子是"Last dose of Antibiotics"一行归入用药类。

2.5 任务 3 的问题来源:只标能在原文里找到的

任务 3 的问题列表并不是对患者真实疾病的全量枚举,它有明确的入选条件。官方页说明:标注者只标出计划各小节中覆盖问题的文本片段,而且只收录在第二阶段被标为"直接"或"间接"的问题,因为只有这两类能从源病程记录中抽取或抽象出来;被标为"两者皆非"或"不相关"的问题无法从源记录中发现,已被排除。

这条规则决定了任务 3 的评测性质:它评的不是"模型知道多少医学知识",而是"模型能否从给定文本里抽出该抽的东西"。用外部医学知识补全问题列表,在这个任务的口径下不会得分。

2.6 与同类资源的字段差异

对比项 本数据集(任务 1 与任务 3) n2c2 2022 赛道三 BioNLP 2023 共享任务 1A MIMIC-III 原始记录表
标注对象 病程记录 评估与计划的关系 问题列表摘要 无此标注
标签粒度 行级(任务 1)与列表级(任务 3) 关系级 列表级 无
输入列 完整记录 / 仅评估段落 评估与计划段落 主观、客观、评估三列 整份自由文本
输出 段落标签 / 问题串 关系标签 问题串(标准答案) 无
记录数 765 官方挑战赛站点给出 768 训练加 237 测试 MIMIC-III 全量
是否在本数据集内 是 否 否,为独立页面 否,为上游

§3 它是谁的数据

3.1 贡献者与机构

作者团队共七人,分属四家机构。官方页列出的任职机构为:威斯康星大学麦迪逊分校(Yanjun Gao、John Caskey、Matthew Churpek、Majid Afshar)、波士顿儿童医院计算健康信息学项目与哈佛医学院儿科(Timothy Miller)、Rush 大学医学中心(Brihat Sharma)、芝加哥洛约拉大学(Dmitriy Dligach)。

标注执行由两名医学生完成,官方在致谢中点名为 Ryan Laffin 与 Samuel Tesch,二人受威斯康星大学夏季 Shapiro 资助项目支持。指南的制定者是两名持有重症医学、肺科与临床信息学专科资质的医师,官方说明他们与源记录的书写者处于同一执业领域——这一点很关键,因为标注重症病程记录的人若不熟悉重症环境,很容易在缩略语与默认的临床惯例上出错。

3.2 时间线

时间 事件 出处
2022 年 层级标注方法与数据集在 LREC 2022 会议论文集发表,第 5484 至 5493 页 官方页参考文献
2022 年 问题列表摘要的序列到序列方法在 COLING 2022 发表,第 2979 至 2991 页 官方共享任务页参考文献
2022 年 9 月 30 日 本数据集版本 1.0.0 发布于 PhysioNet 官方页版本历史
2023 年 1 月 13 日 BioNLP 2023 共享任务 1A 开放注册,训练与验证数据发布 官方共享任务页
2023 年 1 月 19 日 本数据集发布公告:文件因共享任务封存至 7 月 13 日;共享任务数据集 1.0.0 发布 官方页公告与共享任务页版本历史
2023 年 4 月 13 日 共享任务测试集发布,237 份新标注病程记录,暂不含标准答案 官方共享任务页版本历史
2023 年 11 月 12 日 共享任务发布 2.0.0,公开测试集标准答案 官方共享任务页版本历史
2023 年 共享任务综述发表于第 22 届生物医学自然语言处理研讨会,第 461 至 467 页 官方共享任务页参考文献

3.3 采集场景:重症环境下的每日病程记录

来源记录全部取自 MIMIC-III。官方页说明 MIMIC-III 是波士顿贝斯以色列女执事医疗中心约六万例 ICU 住院的去标识电子病历数据。抽样对象是包含 SOAP 段落的病程记录。

记录类型的筛选有明确口径。官方页说明,在 MIMIC-III 的 84 种记录类型中,纳入的类型包括住院医师记录、重症医师记录(外科 ICU、心血管 ICU、创伤 ICU)、第一年住院医师病程记录、第一年住院医师与主治医师内科 ICU 每日病程记录、内科 ICU 住院医师与主治医师每日病程记录等;被排除的类型包括护理病程记录与社会工作病程记录,理由是这两类通常不按 SOAP 格式组织。

排除的理由值得单独说一句。SOAP 的四个段落对应的是"医生如何组织临床思维";护理记录的组织逻辑是按护理措施与观察项排列,社会工作记录按资源与家庭情况排列。把这两类塞进四分类,标签会失去意义。反过来说,这也界定了这套数据集的适用文本——它只适用于医生按 SOAP 书写的病程记录。

3.4 数据来源的三个层次

第一层是原始记录,来自 MIMIC-III v1.4。官方页把 MIMIC-III 列为父项目,并提示使用时同时引用。

第二层是标注产物,由本数据集的作者团队在原始记录之上完成。这一层引入了指南、标注者、一致性门槛三个人为因素,也引入了本数据集与 LREC 论文之间 3 份记录的数量差异。

第三层是共享任务封装,即 BioNLP 2023 共享任务 1A。官方共享任务页说明,该页的五列 CSV 含 765 份去重后的病程记录,并说明第二阶段的加工方式:对于每个评估,整理出直接问题列表与间接问题列表。三层之间不是简单的包含关系,而是逐层加工关系。

§4 它最独特的东西:SOAP 标注与问题列表摘要的成对结构

4.1 稀缺的不是文本,是"成对"

公开临床文本资源里,有文本无标注的很多,有表层标注的不少,有"证据加结论"成对标注的极少。这套数据集的独特之处正在于成对:同一份病程记录上,既标了每行属于哪个段落(证据的组织),也标了最终的诊断与问题清单(结论的形态)。

这对研究有一个直接用途。可以设计一个实验:给模型同样的输入,一个任务要求它预测段落归属,另一个任务要求它生成问题列表,然后比较同一批模型在两个任务上的排序是否一致。若排序不一致,说明"读懂文本的形态"与"抽象出结论"是两种能力,而不是同一种能力的强弱表现。这类问题在没有成对标注的资源上无法回答。

第二个用途是分工验证。过去若干年里,临床文本任务常被当作一整块来报告成绩:一个模型在某基准上高了几个点,就被说成"更懂临床文本"。但这类基准内部往往混杂了不同性质的子能力——把段落切对靠的是对书写惯例的熟悉,把问题摘全靠的是对临床语义的把握。同一批记录上有两种标注,就可以把这两件事分开报。分开之后常会发现,某个模型在段落切分上领先,在问题摘要上落后,反之亦然。这种分化只有在成对标注上才能看到。

第三个用途更朴素:作为对照用的成熟基线。它有一个已办完的共享任务、一个公开的综述论文、一套官方指定的评测口径,因此任何人都能在自己的方法上跑一遍,直接与已发表的数字对齐。对齐的前提是指标口径一致——用 ROUGE-L、按官方方式处理分词与停用词、并在同一份测试集上评测。做到了这三点,结果的差距才谈得上是方法的差距,而不是口径的差距。

4.2 三段式结构:刻意留出的中间

阶段 任务 是否公开在本数据集 官方说明
阶段一 SOAP 段落标注,把病程记录各行归入四个段落 是 理解病程记录组成部分的第一步
阶段二 评估与计划关系标注,指定评估中提到的症状问题与计划小节中覆盖的诊断之间的因果关系 否 已作为 n2c2 2022 挑战赛的内容,需到挑战赛站点获取
阶段三 问题列表识别,标出最终诊断 是 从计划小节中把问题与处理方案分开

官方页明确说每一阶段的标注都建立在前一阶段之上。这个依赖关系的含义是:阶段三的操作对象——计划小节里的问题片段——是在阶段二的关系判断基础上确定的;没有阶段二,阶段三的标注者只能凭文本位置与语义判断。也就是说,两件公开的数据是同一条标注流水线的首尾,中间环节被拿去办挑战赛了。

4.3 案例:一条记录编号如何串起两件

以官方给出的两条样本行为例。任务 1 的样本记录编号是 148567,任务 3 的是 110437,它们不是同一份记录,所以官方页是把两件各自举例。真正可用的串接方式如下:

步骤 操作 依据
1 在任务 3 中取一条样本,拿到记录编号 任务 3 第一列
2 用该编号在任务 1 的行级文件中筛选同编号的全部行 任务 1 第一列 NOTE_ID
3 按 note_index 升序排列,拼接 line_text 任务 1 第四列保证行序
4 用 section_label 的次位取出主观、客观两段 任务 1 第三列
5 与任务 3 的评估段落拼接,得到"主观加客观加评估"的完整输入 官方共享任务页提到的输入选项

第 3 步不能省。行级文件里同一记录的多行在物理顺序上未必等于行序,排序必须由 note_index 决定,否则拼出来的段落顺序会乱。

4.4 标注的粒度:行级清楚,列表级受条件约束

任务 1 的粒度是行。这个选择有实际好处:病程记录本身就是逐行书写的,行是自然的分段单位,而且医生写小标题时通常独占一行。代价是行内混合信息无处安放——如果一行里既有客观数值又有主观描述,标注者只能取其一。

任务 3 的粒度是列表,但受 §2.5 讲的入选条件约束。官方页明确说每个列表被视为一条短摘要,问题之间以分号分隔。这意味着任务 3 的输出顺序在语义上并不重要,而评测指标的选择会直接受此影响——ROUGE-L 用的是最长公共子序列,对顺序敏感但对跨度不敏感,这正好适配"顺序不重要、内容要全"的摘要场景。

4.5 边界条件:什么情况下它不再适用

文本不再是医生病程记录时。 出院小结、手术记录、门诊便签、护理记录都不在适用范围内。前三者不按 SOAP 组织,后者被明确排除。

问题需要外部知识才能确定时。 任务 3 只收录能从源记录中抽取或抽象的问题。若应用场景要求模型补充文本里没写的诊断,本数据集的口径与需求相反。

需要跨机构结论时。 单一医院系统、单一国家、重症人群。用它得到的结论不能外推。

需要长期随访或结局时。 记录里没有这些变量。

§5 怎么拿到

5.1 访问面:三道门槛

门槛 内容 说明
凭据访问 官方页访问策略为「仅签署数据使用协议的凭据用户可访问文件」 需注册 PhysioNet 账号
数据使用协议 PhysioNet Credentialed Health Data Use Agreement 1.5.0 需线上签署
培训 CITI「Data or Specimens Only Research」 需完成并提交证明
区域限制 官方页在文件面板显示因法律或政策限制在部分地区不可用 与账号状态无关

许可为 PhysioNet Credentialed Health Data License 1.5.0。这与开放许可的关键区别在于:不得再分发,也不得用于训练后对外提供服务时绕过协议义务。引用时必须同时写明数据集本身的 DOI 与 PhysioNet 平台综述。

在团队层面推进时,三道门槛的耗时差异很大。CITI「仅数据或标本研究」培训通常需要数小时,完成后要提交证明;协议签署需要机构层面的签署人,这一步常是真正的时间瓶颈;而区域限制一旦命中,前两步做得再完备也无法取得文件。因此动手前的第一件事不是写代码,而是先确认所在地区与所属机构是否在可访问范围内,确认通过后再走培训与签署流程。

5.2 目录结构

官方页的文件面板为动态加载,本次核验时未登录且受区域策略限制,文件清单未能直接列出;以下目录结构系依据官方页 Usage Notes 对文件组织的说明整理,实际目录名以下载后所见为准。

预期路径 内容
任务 1 的训练集 行级段落标签,含 NOTE_ID、line_text、section_label、note_index
任务 1 的验证集 同上,75 份记录规模
任务 1 的测试集 同上,87 份记录规模
任务 3 的训练集 记录编号、评估段落、问题列表三列
任务 3 的验证集 同上
任务 3 的测试集 同上

5.3 读取:两件的分隔符不同

import csv
import io

#-- 任务 1:竖线分隔,两侧空白要剥掉
def read_task1(path):
    rows = []
    with open(path, encoding="utf-8") as f:
        for line in f:
            parts = [p.strip() for p in line.rstrip("\n").split("|")]
            if len(parts) != 4:
                continue
            note_id, text, label, idx = parts
            rows.append((int(note_id), text,
                         label[0], label[1], int(idx)))
    return rows

#-- 任务 3:逗号分列,但问题串里也有逗号,必须用 csv 而不是裸 split
def read_task3(path):
    rows = []
    with open(path, encoding="utf-8") as f:
        for rec in csv.reader(f):
            if len(rec) != 3:
                continue
            note_id, assessment, problems = rec
            rows.append((int(note_id.strip()), assessment,
                         [p.strip() for p in problems.split(";") if p.strip()]))
    return rows

任务 3 的第三列里含分号,分号两侧的问题文本本身可能含逗号,所以整行必须用标准 CSV 解析器读,再用分号切问题。裸 split(",") 会把一个问题切成两半。

5.4 转成通用的表结构

import pandas as pd

#-- 任务 1 转成长表,一条记录一行序列
t1 = pd.DataFrame(read_task1("task1_train.csv"),
                  columns=["note_id", "line_text", "bio", "section", "line_idx"])

#-- 按记录编号与行序排序,这是拼接段落的前置条件
t1 = t1.sort_values(["note_id", "line_idx"])

#-- 聚合成四段文本
def join_section(g, sec):
    return "\n".join(g.loc[g["section"] == sec, "line_text"])

notes = {}
for nid, g in t1.groupby("note_id"):
    notes[nid] = {s: join_section(g, s) for s in "SOAP"}

#-- 任务 3 与任务 1 按记录编号连接
t3 = pd.DataFrame(read_task3("task3_train.csv"),
                  columns=["note_id", "assessment", "problems"])
merged = t3.merge(t1.groupby("note_id")["line_text"].apply(list)
                    .rename("lines").reset_index(), on="note_id", how="left")

5.5 序列标注的标签映射

#-- 两位标签直接拆成 BIO 与类别两列,适配通用序列标注框架
SECTIONS = {"S": "SUBJECTIVE", "O": "OBJECTIVE",
            "A": "ASSESSMENT", "P": "PLAN"}

def to_bio(bio, sec):
    prefix = "B" if bio == "B" else "I"
    return f"{prefix}-{SECTIONS[sec]}"

#-- 用法:to_bio("B", "S") -> "B-SUBJECTIVE"

#-- 解码端一致:把 B-/I- 还原成两位标签
def from_bio(tag):
    p, s = tag.split("-")
    return p + [k for k, v in SECTIONS.items() if v == s][0]

5.6 五个最容易出错的地方

把两件的分隔符搞混。 任务 1 用竖线,任务 3 用逗号。混用会让任务 3 的问题串被逗号切碎。

按行随机划分数据集。 行级文件里同一记录编号下的行全部来自同一份病程记录,随机按行切分会把同一份记录拆进两侧,结果虚高。必须按 NOTE_ID 分组划分。

忽略 note_index。 拼接段落必须按这个列排序,物理行顺序不等于行序。

把 768 当成记录数。 765 是 PhysioNet 版本的去重后数量,768 是 LREC 论文中的数量,差 3 份重复记录。引用哪个数取决于你引的是哪个来源(§3.2)。

以为任务 3 自带全文。 任务 3 只给评估段落,完整记录要用记录编号回任务 1 取。

§6 与库内条目的关系

6.1 关系图谱

相关对象 关系 说明
MIMIC-III 上游父项目 全部病程记录的原始来源,官方页要求同时引用
n2c2 2022 赛道三 同套件的阶段二 承接评估与计划关系标注,不在本数据集内
BioNLP 2023 共享任务 1A 下游共享任务封装 独立 PhysioNet 页面,含 768 加 237 份记录与标准答案
问题列表摘要的序列到序列方法论文 方法来源 COLING 2022,共享任务的基线方法出处
层级标注论文 方法来源 LREC 2022,三阶段标注方案的出处
其他 MIMIC 派生文本资源 同源不同标注 共享上游,标注目标不同

6.2 检索路径

你想找什么 该去哪里 而不是这里
完整病程记录原文 任务 1 的行级文件 任务 3
评估与计划的关系标注 n2c2 2022 挑战赛站点 本数据集
共享任务的测试集标准答案 BioNLP 2023 共享任务 1A 页面 2.0.0 本数据集
患者的人口学与结局变量 MIMIC-III 本数据集
问题列表的输入变体说明 共享任务页的输入选项说明 本数据集页

6.3 与其他病程记录资源的分工判据

判断条件 选它 选别的
需要行级 SOAP 段落标签 是 多数公开病程记录资源无此标注
需要问题列表的成对标准答案 是 自建需标注成本
需要百万级文本做预训练 否 选上游全量记录
需要评估与计划的因果关系 否 选 n2c2 2022 赛道三
需要开放许可免签约 否 选非凭据访问的公开文本资源
需要非重症文本 否 选门诊或专科文本资源

§7 质量评估与局限性

7.0 阅读本节前的一个前置校正

本节的评分是编辑部依据官方页公开信息做的定性判断,不是对数据文件的逐条检查。核验时文件面板因区域策略限制不可见,因此所有关于文件内部的判断都只能停留在官方说明的层面。凡涉及文件内部实际形态的结论,需下载后自行复核。

7.1 五维评分

维度 评价 依据
标注质量 高 指南由两名持专科资质的医师制定;标注者与裁决者一致性 kappa 大于 0.80
任务设计 高 三阶段递进,两件共用记录编号可拼接
规模 低 765 份记录,单一来源
多样性 低 单一医院、单一国家、重症人群
可得性 中偏低 需 CITI 培训与协议签署,部分地区受区域策略限制

7.2 标注质量的两层

共识层。 官方页说明,每名标注者在进入独立标注前需与裁决者达到 kappa 大于 0.80 的一致性,且此前接受了由一名重症医师提供的三周导入与培训。这个门槛对序列标注任务是合格的。

口径层。 任务 3 的问题入选受"能否从源记录中发现"这一条件约束,这是设计选择而非缺陷,但它决定了基于它训练的模型只会做抽取式摘要,不会补足文本外的诊断。

7.3 已知的、可枚举的偏差

偏差 机制 影响
机构偏倚 全部来自一家医疗中心的 ICU 文体、缩略语、书写惯例单一
人群偏倚 重症住院患者 问题列表以急性重症问题为主
记录类型偏倚 只纳入按 SOAP 书写的 84 种类型中的一部分 不适用于其他文体的文本
语言偏倚 源记录为英文 中文场景无法直接迁移
标注者偏倚 执行标注者为两名医学生 复杂病例的判断可能偏向教科书式结论
社会偏倚 官方页明确承认语料会携带社会偏见特征 影响模型训练的公平性与公平表现

最后一条值得展开。官方页的伦理段明确指出:电子病历中的医疗记录本身易受多种偏倚影响,尤其是对弱势人群的隐性偏见,以及在某些疾病(官方点名了物质使用障碍)中的污名化语言,这些特征会转移到语言模型训练中。官方的要求是:在部署任何预训练语言模型之前,研究者与医疗系统有责任审计模型在不同健康群体间表现的公平性。

7.4 外部验证矩阵

验证方式 可行性 说明
在共享任务测试集上评测 可行 有官方主评测指标 ROUGE-L,口径统一
与其他机构数据做跨机构验证 不可行 需另找带同类标注的外部数据
用上游记录做无标注验证 可行但非同类 只能验证文本分布,不能验证标注
人工复标验证 成本高 需具备临床资质
与已发表结果对齐 可行 共享任务综述已发表,可作为参照

7.5 它为何能持续

答案不在数据量,而在链条的完整性。做临床文本的团队很多,但绝大多数只标注链条上的一段——要么标实体,要么标关系,要么标结论。把"证据的组织"与"结论的形态"在同一批文本上分别标注,并公开承认中间那段由别人去做,这个姿态在公开资源里少见。它的规模限制了它的用途,但没有限制它作为一个可对齐的基准存在。

支撑它持续的还有两个不那么显眼的因素。其一,它挂在一条清晰的引用链上:数据集本身的 DOI、上游 MIMIC-III、两篇方法论文、一篇共享任务综述,四者构成了可追溯的来源网络。任何使用它的工作都必须同时引用上游,这在客观上让它的影响路径可被追踪,也让后来的研究者能沿链条找到方法出处。其二,它经历了完整的共享任务周期,从开放注册、发布训练验证数据、发布测试集、接收系统提交、到公开测试集标准答案,每一步都留下了时间记录。一个走过完整周期的任务,比一个只发布数据就沉寂的资源更难被替代。

它也不是没有替代风险。真正威胁它位置的,不是更大的同源数据,而是别的团队在同一批上游记录上做出更细的标注,或者在别的医院系统上做出同样的三阶段标注。前者会让它的标注深度显得不足,后者会让它的单一来源劣势变得突出。这两件事至今没有发生,原因大概还是成本——让有临床资质的人逐行标注推理链,本身就是一件昂贵且难以规模化的工作。

§8 生态位与历史

8.1 历史沿革

阶段 时间 形态
方法成型 2022 年 层级标注方案在 LREC 2022 发表,提出三阶段结构
数据发布 2022 年 9 月 30 日 阶段一与阶段三在 PhysioNet 独立发布,版本 1.0.0
封存期 2023 年 1 月至 7 月 因共享任务需要,文件暂停提供
共享任务期 2023 年 1 月至 11 月 BioNLP 2023 共享任务 1A 分三个版本推进
稳定期 2023 年 11 月之后 共享任务公开测试集标准答案,任务闭环

8.2 与挑战赛的关系

三阶段中,阶段二被 n2c2 2022 挑战赛收为赛道三;阶段三被 BioNLP 2023 研讨会收为共享任务 1A(Problem List Summarization,简称 ProbSum 2023)。两者的关系不是母子,而是同源分流:共享任务使用了同一批标注的产物,但按评测需要重新组织了输入列,并新标注了 237 份测试记录。

官方共享任务页给出的关键数字为:训练部分 768 份病程记录与 2783 个诊断,测试部分 237 份新标注的病程记录;主评测指标为 ROUGE-L,其机制是计算生成摘要与参考摘要之间的最长公共子序列。

8.3 生态位:链条的尺子而不是粮仓

在临床文本资源的生态里,它占据的位置由两个条件共同确定:标注的是推理链而不是表层特征;规模小到无法支撑预训练。这两个条件一起把它的用途限定在评测与对照上——用它做基线、用它做共享任务、用它比较同一批模型在两段任务上的差异,这些是它擅长的;用它做主力训练数据,是它做不到的。

8.4 谁在用它,用来做什么

角色 用法 收益
临床自然语言处理研究者 作为段落切分与摘要生成的对齐全基准 结果可与共享任务综述对齐
共享任务参与者 训练与验证阶段的官方数据来源 口径统一,指标可比
病历结构化工程师 学习 SOAP 四分类的标注口径与后处理方式 便于自建同类标注规范
临床信息学教学 用官方样本行讲解字段与标签设计 材料权威且可直接展示
方法论文作者 作为"文本理解"与"诊断抽象"两个能力的对照数据源 成对标注罕见

§9 使用指引

9.1 三种角色的路径

角色 第一天 第一周 注意事项
算法研究者 读官方页 Usage Notes,抄下两条样本行 跑通任务 1 的序列标注基线与任务 3 的摘要基线 划分按记录编号分组,不要按行
病历结构化工程师 对齐四分类口径,理解段落小标题的后处理方式 评估本机构文本是否适用四分类 非 SOAP 文体的文本不在适用范围
教学人员 用两条官方样本行讲字段 讲三阶段链式设计的意图 说明阶段二需另去挑战赛站点

9.2 一条最短的可用流程

#-- 1. 完成 CITI 培训并签署数据使用协议(PhysioNet 网页端,无命令行替代)
#-- 2. 登录后在官方页文件面板逐文件下载,或用凭据下载工具
#--    注意:部分地区会因法律或政策限制无法列出文件

#-- 3. 用官方给出的下载工具时需带账号凭据,此处仅示意
#--    wget 直接访问会跳登录页,不能用于凭据资源
#-- 4. 读任务 1,按记录编号分组
from collections import defaultdict

buckets = defaultdict(list)
for nid, text, bio, sec, idx in read_task1("task1_train.csv"):
    buckets[nid].append((idx, text, bio, sec))

#-- 5. 组内按行序排序,验证行序号连续
for nid in list(buckets)[:3]:
    rows = sorted(buckets[nid])
    seq = [r[0] for r in rows]
    assert seq == list(range(len(seq))), (nid, seq[:5])

#-- 6. 读任务 3,按记录编号取回完整记录
triples = read_task3("task3_train.csv")
print(len(buckets), len(triples))

第 5 步的断言是关键自检。官方页说明行序号从 0 起、以 0+i 递增到记录末尾,若断言失败,说明解析阶段把某些行丢了,通常是原文里含有分隔符导致的。

9.3 引用方式

引用对象 内容
数据集 Gao, Y., Caskey, J., Miller, T., Sharma, B., Churpek, M., Dligach, D., and Afshar, M. (2022). Tasks 1 and 3 from Progress Note Understanding Suite of Tasks: SOAP Note Tagging and Problem List Summarization (version 1.0.0). PhysioNet. https://doi.org/10.13026/wks0-w041
上游数据 MIMIC-III Clinical Database v1.4,官方页列为父项目并要求同时引用
方法论文 层级标注方案见 LREC 2022 第 5484 至 5493 页;摘要方法见 COLING 2022 第 2979 至 2991 页
共享任务 若使用共享任务数据,另引 BioNLP 2023 共享任务 1A 页面与综述论文
平台 PhysioNet 平台综述论文,按官方页 Cite 按钮生成

写论文时建议同时注明:使用的版本号(1.0.0)、是否单独使用了任务 1 或任务 3、划分方式是否按记录编号分组。

§10 AI 使用声明

项目 声明
文本生成 本文由 AI 辅助撰写,编辑把关结构与事实
数字来源 规模、结构、边界三类数字来自 PhysioNet 官方页与官方共享任务页
文件核验 未直接访问;官方页文件面板显示因法律或政策限制在所在地区不可用,且未登录凭据账号
数量差异 765 与 768 的差异为官方页自述,因 3 份重复记录,已在 §3.2 与 §5.6 说明
论文信息 仅依据官方页与共享任务页列出的参考文献项,未读论文全文
未核验内容 各文件实际目录名与行数、任务 1 各标签的具体条数、任务 3 各记录的问题条数、文件体积
图像 无配图;封面为生成式提示词,不含真实病历内容
免责 本文不构成临床建议;数据使用须遵守 PhysioNet 凭据健康数据许可 1.5.0

常见误读(避坑清单)

说法 实际 证据
「它包含三层标注的全部数据」 只有阶段一与阶段三,阶段二在 n2c2 2022 赛道三 官方页 Release Notes 段明确说明
「它有 768 份记录」 PhysioNet 版本为 765 份,768 是 LREC 论文数量,差 3 份重复 官方页 Annotations 段自述
「两件都是 CSV,分隔符一样」 任务 1 用竖线,任务 3 用逗号 官方页 Usage Notes 的两条样本行
「任务 3 自带完整病程记录」 只有评估段落,完整记录要用记录编号回取 官方页 Usage Notes 段
「可以直接按行随机划分」 同一编号的行来自同一份记录,必须按编号分组划分 任务 1 的 note_index 字段定义
「下载就能用,无需手续」 需 CITI 培训与协议签署 官方页 Access 段
「它评的是医学知识」 只收录能从源记录中发现的问题 官方页 Usage Notes 段对直接与间接的说明
「标注者是资深医师」 执行标注为两名医学生,指南由两名专科医师制定 官方页 Methods 段与致谢
「幻灯片式的四分类适用于所有病历文本」 护理记录与社会工作记录被明确排除 官方页 Methods 段
「它和共享任务是同一件东西」 共享任务是独立页面,另有 237 份新标注测试记录 官方共享任务页摘要与版本历史
「行序可以按文件物理顺序拼接」 必须按 note_index 排序 任务 1 第四列的定义
「它的许可是开放许可,可再分发」 凭据健康数据许可 1.5.0,需签约 官方页 License 段

FAQ

Q1:这套数据集到底有多少份病程记录?
765 份,这是 PhysioNet 版本 1.0.0 的数量。如果你看到 768,那来自 LREC 2022 论文的描述。官方页自己解释了差异:在标注者间一致性评估过程中有若干记录被重复计入,其中 3 份留在了论文描述里,因此 PhysioNet 的最终样本数比论文少 3 份。引用时按你实际使用的是哪个来源来写,并在论文里注明。

Q2:为什么中间那一层不在数据集里?
阶段二是评估与计划关系标注,指定评估段提到的症状问题与计划小节覆盖的诊断之间的因果关系。它被 2022 年美国国家自然语言处理临床挑战赛收为赛道三,按挑战赛的惯例,数据由挑战赛站点发放。官方页明确说,要凑齐这套 NLP 临床诊断推理的任务组,需到挑战赛站点获取。

Q3:任务 1 和任务 3 能一起用吗?
能,而且是设计意图。两件共用记录编号,任务 3 只给评估段落,用编号可以从任务 1 取回完整记录,按行序号排序后拼出主观、客观、评估三段。官方共享任务页提到的输入选项——只用评估、主观加评估、三者全用——正是基于这种拼法。

Q4:用它训练模型,划分该怎么切?
按记录编号分组切,不要按行切。任务 1 是行级文件,同一编号下的若干行同属一份病程记录,随机按行切分会把同一份记录拆进训练与测试两侧。任务 3 本身就是记录级,直接按记录切即可。

Q5:任务 3 的问题列表为什么看起来不全?
这是设计条件而不是遗漏。官方页说明,标注者只收录在第二阶段被标为"直接"或"间接"的问题,因为只有这两类能从源病程记录中抽取或抽象出来;被标为"两者皆非"或"不相关"的问题无法从源记录中发现,已被排除。所以它评测的是抽取与抽象能力,不是医学知识储量。

Q6:评测该用什么指标?
官方共享任务页给出的主评测指标是 ROUGE-L,其机制是计算生成摘要与参考摘要之间的最长公共子序列。用这个口径的好处是结果可以与共享任务综述中的已发表结果对齐;自造指标会失去可比性。

Q7:标注可信吗?
一致性门槛是明确的:每名标注者进入独立标注前需与裁决者达到 kappa 大于 0.80。执行标注的是两名医学生,他们接受了由一名重症医师提供的三周导入与培训,指南由两名持有重症医学、肺科与临床信息学专科资质的医师制定。对序列标注任务而言这个配置是合格的。

Q8:能拿去做商业产品的训练吗?
受 PhysioNet 凭据健康数据许可 1.5.0 约束,使用前提是完成 CITI「仅数据或标本研究」培训并签署数据使用协议 1.5.0。协议义务不以产品是否收费为转移,具体条款以官方许可全文与协议全文为准。

Q9:为什么文件在官方页上显示不可用?
有两个可能的原因,二者可以叠加。其一,本数据集曾因共享任务需要封存,官方公告说明文件提供暂停至 2023 年 7 月 13 日。其二,官方页在文件面板显示因法律或政策限制在部分地区不可用,这与账号状态无关。本次核验遇到的正是后者。

Q10:它和上游 MIMIC-III 是什么关系?
它是 MIMIC-III 的派生标注集。官方页把 MIMIC-III Clinical Database v1.4 列为父项目,要求使用时同时引用。全部病程记录抽样自 MIMIC-III 中包含 SOAP 段落的记录,记录编号就是 MIMIC-III 的住院编号。想要人口学或结局变量,需回到 MIMIC-III 本身,本数据集不含这些。

Q11:它适用于中文病历吗?
不直接适用。源记录为英文,四分类的判定依赖英文病程记录的小标题惯例与缩略语体系。中文病历的段落组织与书写惯例不同,需用中文语料重建标注指南。

Q12:为什么记录类型只取了 84 种中的一部分?
因为只有一部分按 SOAP 格式组织。官方页说明纳入的类型包括住院医师记录、重症医师记录、第一年住院医师病程记录等,排除的是护理病程记录与社会工作病程记录,理由是这两类通常不按 SOAP 格式组织。

Q13:它有没有对应的共享任务可以参加?
有,但已经结束。BioNLP 2023 共享任务 1A(Problem List Summarization)以它的方法与数据为基础,2023 年 1 月 13 日开放注册、4 月 20 日系统提交截止、7 月 13 或 14 日召开研讨会。现在参与的方式是用它的数据复现,并与综述论文中的结果对照。

Q14:官方页说文件曾封存到 2023 年 7 月 13 日,现在还封着吗?
官方页上的那则公告发布于 2023 年 1 月 19 日,说明的是当时的安排,公告本身在后来的页面版本中是否移除需以当前页面为准。需要注意的是,封存与区域限制是两件不同的事:前者是共享任务期间的有意安排,后者是访问策略的持续状态。若你在文件面板看到因法律或政策限制不可用的提示,那属于后者,换时间再试通常不会改变结果,正确做法是核对账号所属机构与所在地区是否在可访问范围内。

Q15:任务 1 的标签里的 B 和 I,与通用 BIO 方案完全一样吗?
语义一致,形态不同。通用 BIO 方案通常把前缀与类别用连字符写成 B-SUBJECTIVE 这样的形式,而这里的两位是紧挨着写的 BS。含义上没有区别:B 表示这一段从这一行开始,I 表示这一行处于段落内部。差异只在解析上——用现成的序列标注工具前,要先把两位拆开并补上连字符,解码后也要还原,具体映射代码见 §5.5。

Q16:它适合拿来评测大语言模型吗?
适合做能力评测,不适合做规模训练。作为评测集,它有一个明显优点:有共享任务综述可对照,能把模型表现放到已有结果的坐标里。需要注意的是它的问题列表只收录能从源记录中发现的问题,因此用外部医学知识补全答案的做法在这个口径下不会得分——评测的是抽取与抽象能力,而不是模型储备了多少医学知识。作为训练数据,765 份记录规模偏小,更适合做少样本评测而不是微调。

术语表

术语 解释
SOAP 病程记录的四段格式:主观、客观、评估、计划
主观段落 描述患者症状、状况与日常照护变化的自由文本
客观段落 检验结果、生命体征、影像报告等结构化数据
评估段落 描述患者并确立本次就诊主要问题或症状的段落
计划段落 针对每个问题给出当日处理方案的段落
病程记录 住院期间每日书写的诊疗记录,是最常见的病历文本类型之一
行级标注 以文本行为单位给出标签的标注粒度
BIO 标注 用 B 表示片段开始、I 表示片段内部的序列标注方案
记录编号 本数据集中为 MIMIC-III 的住院编号,用于跨文件拼接
行序号 每行在所属记录中的顺序号,从 0 起
问题列表摘要 从病程记录中生成诊断与问题清单的摘要任务
三阶段结构 段落标注、关系标注、问题识别构成的链式标注方案
直接问题 能从源病程记录中直接抽取的问题
间接问题 需从源病程记录中抽象才能得到的问题
记录级划分 同一记录的全部数据只进训练或只进测试
ROUGE-L 基于最长公共子序列的摘要评测指标
最长公共子序列 两个序列共有的最长子序列,不要求连续
序列到序列 输入序列到输出序列的生成范式
共享任务 以统一数据与评测指标组织的公开评测活动
n2c2 美国国家自然语言处理临床挑战赛
BioNLP 生物医学自然语言处理研讨会
INCEpTION 官方页提到的自然语言处理标注软件
去标识 移除受保护健康信息的处理过程
凭据访问 需签署协议并通过审核后才能取得数据的访问方式
数据使用协议 规定数据用途与义务的法律文件
污名化语言 官方页指出的、会在特定疾病记录中出现的标签式表述
公平性审计 官方页要求的、部署前对不同群体表现差异的检查

附录 A:核心数字核对表

项 值 来源 来源层级
记录数 765 官方页 Annotations 段 官方页面
训练份数 603 官方页 Annotations 段 官方页面
验证份数 75 官方页 Annotations 段 官方页面
测试份数 87 官方页 Annotations 段 官方页面
论文中的记录数 768 官方页 Annotations 段(说明 LREC 论文数量) 官方页面
版本 1.0.0 官方页版本历史 官方页面
发布日期 2022 年 9 月 30 日 官方页版本历史 官方页面
MIMIC-III 记录类型 84 官方页 Methods 段 官方页面
标注者人数 2 官方页 Methods 段 官方页面
一致性门槛 kappa 大于 0.80 官方页 Methods 段 官方页面
培训周期 3 周 官方页 Methods 段 官方页面
任务 1 字段数 4 官方页 Usage Notes 段 官方页面
任务 3 字段数 3 官方页 Usage Notes 段 官方页面
任务 1 标签类别数 4(S/O/A/P) 官方页 Usage Notes 段 官方页面
共享任务训练记录 768 官方共享任务页摘要 官方页面
共享任务训练诊断数 2783 官方共享任务页摘要 官方页面
共享任务测试记录 237 官方共享任务页摘要 官方页面
DOI 10.13026/wks0-w041 官方页 Discovery 段 官方页面
最新版本日期 单一版本,无修订 官方页版本历史 官方页面

附录 B:数字的来源分层

第一层:官方页面与官方共享任务页。 记录数 765、划分 603/75/87、字段数、标签类别、记录类型 84 种、标注者人数、一致性门槛、共享任务的 768 与 2783 与 237、版本日期、DOI、许可名称。这些数字直接摘自两个页面的正文段落,可逐条回溯。

第二层:官方页列出的参考文献项。 层级标注论文(LREC 2022,5484 至 5493 页)、摘要方法论文(COLING 2022,2979 至 2991 页)、共享任务综述(第 22 届生物医学自然语言处理研讨会,461 至 467 页)。这些文献项的出处为官方页的参考文献表,本文未读全文。

第三层:未核实。 各文件的实际目录名与行数、任务 1 各标签的具体条数、任务 3 各记录的问题条数、文件体积、记录原文的脱敏程度细节。核验时文件面板因区域策略限制不可见,这些需下载后自行统计。

附录 C:完整参考文献

编号 文献 链接 用途
1 Tasks 1 and 3 from Progress Note Understanding Suite of Tasks v1.0.0 https://physionet.org/content/task-1-3-soap-note-tag/1.0.0/ 全部规模、结构、边界数据的来源
2 BioNLP 2023 共享任务 1A:Problem List Summarization https://doi.org/10.13026/mg5c-x807 共享任务规模、评测指标、时间线
3 MIMIC-III Clinical Database v1.4 https://doi.org/10.13026/C2XW26 上游父项目
4 层级标注论文(LREC 2022) 官方页参考文献项,第 5484 至 5493 页 三阶段标注方案与 768 的出处
5 问题摘要方法论文(COLING 2022) https://aclanthology.org/2022.coling-1.264/ 共享任务基线方法
6 共享任务综述(第 22 届 BioNLP 研讨会) 官方共享任务页参考文献项,第 461 至 467 页 共享任务结论参照
7 n2c2 2022 挑战赛赛道三 https://n2c2.dbmi.hms.harvard.edu/2022-track-3 阶段二数据的获取处
8 n2c2 自然语言处理研究数据集 https://portal.dbmi.hms.harvard.edu/projects/n2c2-nlp/ 阶段二数据的获取处
9 项目网站 https://git.doit.wisc.edu/smph/dom/UW-ICU-Data-Science-Lab/049_NLP-Clinical-Diagnostic-Reasoning 官方页给出的项目站点
10 PhysioNet 平台综述(2026,Nature Health) https://doi.org/10.1038/s44360-026-00096-z 托管模式与引用规范

附录 D:任务代码

任务一:从任务 1 构建四分类序列标注样本

import random

#-- 按记录编号分组划分,禁用按行随机划分
def split_by_note(rows, train_ratio=0.79, val_ratio=0.10, seed=13):
    notes = sorted({r[0] for r in rows})
    rng = random.Random(seed)
    rng.shuffle(notes)
    n = len(notes)
    ntr, nva = int(n * train_ratio), int(n * val_ratio)
    tr = set(notes[:ntr])
    va = set(notes[ntr:ntr + nva])
    te = set(notes[ntr + nva:])
    out = {"train": [], "val": [], "test": []}
    for r in rows:
        out["train" if r[0] in tr else
            "val" if r[0] in va else "test"].append(r)
    return out

#-- 每条记录整理成一个序列
def to_sequences(rows):
    seqs = {}
    for nid, text, bio, sec, idx in rows:
        seqs.setdefault(nid, []).append((idx, text, bio + sec))
    for nid in seqs:
        seqs[nid] = [t[1:] for t in sorted(seqs[nid])]
    return seqs

任务二:把两件拼成摘要训练对

#-- 输入构造:只用评估 / 主观加评估 / 三者全用
def build_input(note_id, notes, t3_map, mode="A"):
    secs = notes.get(note_id, {})
    a = t3_map.get(note_id, ("", []))[0]
    if mode == "A":
        return a
    if mode == "SA":
        return secs.get("S", "") + "\n" + a
    if mode == "ALL":
        return (secs.get("S", "") + "\n" + secs.get("O", "")
                + "\n" + a)
    raise ValueError(mode)

#-- 目标构造:问题串以分号连接
def build_target(note_id, t3_map):
    return ";".join(t3_map.get(note_id, ("", []))[1])

任务三:按官方口径的 ROUGE-L 骨架

#-- ROUGE-L 的核心是生成摘要与参考摘要的最长公共子序列
def lcs(a, b):
    m = [[0] * (len(b) + 1) for _ in range(len(a) + 1)]
    for i in range(1, len(a) + 1):
        for j in range(1, len(b) + 1):
            m[i][j] = (m[i - 1][j - 1] + 1) if a[i - 1] == b[j - 1] \
                else max(m[i - 1][j], m[i][j - 1])
    return m[-1][-1]

def rouge_l_single(pred, ref):
    lp, lr = len(pred), len(ref)
    if lp == 0 or lr == 0:
        return {"p": 0.0, "r": 0.0, "f": 0.0}
    l = lcs(pred, ref)
    p, r = l / lp, l / lr
    f = 0.0 if p + r == 0 else 2 * p * r / (p + r)
    return {"p": p, "r": r, "f": f}

上面三段代码给的是骨架,不是可直接对标的实现。真正要与共享任务结果对齐,应使用标准评测实现并按官方口径处理分词与停用词,否则得到的数值不具备可比性。

附录 E:如果只记五件事

序号 记住什么 为什么
1 765 份记录,603/75/87 划分,来源是 MIMIC-III v1.4 这三个数字定义了它的一切用法与限制
2 只有阶段一与阶段三,阶段二在 n2c2 2022 赛道三 引错来源是最常见的错误
3 任务 1 竖线分隔、任务 3 逗号分列 混用会把问题串切碎
4 按记录编号分组划分,不按行划分 行级文件的泄漏会让结果虚高
5 任务 3 只收能从原文发现的问题 它评的是抽取与抽象,不是医学知识

需要更高工程化程度或合规出域的商业版本?

当前展示的公开版本适用于学术研究与原型验证。千方医数集依托三甲医院直采网络,提供经专家标注、符合伦理合规的专病数据集交易服务。

前往商城查看可交易产品 →
返回 AI-Ready 数据集