MIMIC-IV 药物抽取标签集 — 六百份出院小结的用药标注

600 份出院小结 / 6 类用药槽位 / 字符级起止偏移

来源 https://physionet.org/content/medication-labels-mimic-note/1.0.0/发布时间: 2026-10-28最后更新: 2026-10-31 阅读 12
MIMIC-IV 药物抽取标签集 — 六百份出院小结的用药标注

信息速览

数据集名称MIMIC-IV 药物抽取标签集 — 六百份出院小结的用药标注
数据类型文本标注,CSV,字符偏移,实体关系标注,受限获取
规模MIMIC-IV-Note出院小结,600份文档
接入方式https://physionet.org/content/medication-labels-mimic-note/1.0.0/

一份出院小结里,用药信息通常散落在互不相邻的几处:入院前的居家用药写一遍,住院期间的调整写一遍,出院带药再写一遍,中间还夹着一句「因肾功能不全暂停某某药」。把这些句子变成结构化字段,靠的不是更好的分词器,而是标注——而临床文本的标注一直卡在同一个地方:能标的人很贵,能标的人很少。2009 年 i2b2 挑战赛给出过一份药物抽取的黄金标准,但那是几百份文档、另一家医院、另一个年代;MIMIC-IV-Note 手握三十三万余份去标识出院小结,却没有配套的用药抽取标签。

MIMIC-IV 药物抽取标签集正对着这个缺口。Google 团队用 PaLM 2 搭了一条大语言模型标注流水线,为 MIMIC-IV-Note 随机抽出的 600 份出院小结生成字符级用药标注,字段体系沿用 2009 年 i2b2 药物挑战赛的六类槽位,2023 年 12 月 12 日以 1.0.0 版本发布在 PhysioNet 上。它的价值与风险来自同一件事:标签不是人标的,是模型生成之后再结构化的。官方给出的对标结论是「与平均水平的标注专员持平」,而随库发布的文件里没有附任何人工复核结果——这决定了它适合当什么、不适合当什么。一屏速览见下表。

维度 内容
全名 Medication Extraction Labels for MIMIC-IV-Note Clinical Database
发布方 PhysioNet(MIT 计算生理学实验室维护)
作者 Akshay Goel、Almog Gueta、Omry Gilon、Sofia Erell、Amir Feder(均为 Google LLC)
首次发布 2023 年 12 月 12 日,版本 1.0.0
最近改动 2023 年 12 月 12 日,仅一个版本,无后续修订
覆盖文档数 600 份出院小结(MIMIC-IV-Note 的随机子集)
来源语料 MIMIC-IV-Note v2.2,含 331,794 份出院小结、145,915 名患者
原始机构 美国波士顿 Beth Israel Deaconess Medical Center
标注对象 药物名、剂量、给药途径、频次、疗程、用药原因六类槽位
标注粒度 字符级起止偏移 + 用药分组编号
标注生成方式 PaLM 2 少样本提示生成 YAML 实体组,后处理模块转为 NER-RE 结构对象
文件格式 CSV,每份文档一个文件,文件名内含 note_id
主键映射 note_id 对应 MIMIC-IV-Note 的一份文档;原文需另行从父项目取
许可 PhysioNet 凭证健康数据许可 1.5.0 + 数据使用协议 1.5.0
访问前置 凭证账号、签署 DUA、完成 CITI「仅使用数据或标本的研究」培训
版本 DOI 10.13026/ps1s-ab29(最新版本 DOI 10.13026/6d3r-w470)
典型用途 用药抽取模型的训练与外测、LLM 标注质量研究、字段体系迁移对照

§1 它要解决的具体麻烦

1.1 用药抽取卡在标注,不卡在模型

用药抽取(medication extraction)是临床自然语言处理的老任务:从自由文本里找出提到了哪些药、每次多少、怎么吃、多久、为什么吃。任务定义十几年前就写清楚了,2009 年 i2b2 挑战赛把它拆成六类槽位,此后模型换了若干代,瓶颈却始终在标注侧——因为判断「这句话里的 5 毫克是维持剂量还是负荷剂量」需要医学训练背景,而一份出院小结动辄几千字,标一份要花掉一名标注员半小时以上。

于是产生了两个长期存在的空白。第一个是规模空白:能标的人是有限的,一个项目能标几百份就接近预算上限,而训练一个稳健的序列标注模型通常需要更大量级。第二个是语料空白:早年标好的数据来自当年那批文档,与今天主流公开语料(MIMIC-IV-Note)不是同一批文本,字段体系与语言风格都要重新对齐才能迁移。

两个空白叠在一起,就形成了一个谁都不愿先动的僵局:语料方没有预算请人标几十万份,方法方没有理由在一份自己用不上的语料上投入标注。MIMIC-IV-Note 至今保持「文本很多、用药标签很少」的状态,原因不是技术做不到,而是这件事在成本上一直排不上队。大语言模型的出现改变了算式——当生成一份初始标签的边际成本降到接近推理费用,标注的瓶颈就从「人有多贵」变成了「模型有多准」,而这个转变正是本库想要记录的。

本库的做法是把第一个空白换成计算资源:用大语言模型先把标签生成出来,人只在需要时介入。官方页面对这一步的表述相当克制——「与平均水平的标注专员持平」——这句话的含义不是「比人好」,而是「可以作为人工标注的替代品或起点」。理解这一点,是理解它全部用法的前提。

1.2 四条常见的错误期待

第一条,期待它是人工黄金标准。它不是。随库发布的是模型生成的结果,官方页明确写了标签由大语言模型流水线产生。用它去评判别的标注者「标错了」,逻辑上站不住。

第二条,期待它自成一体。它不带原文。CSV 里只有偏移、类型、分组编号,正文必须自己从 MIMIC-IV-Note 的 discharge 表里取。没有父项目的访问权限,这批文件只是一堆数字。

第三条,期待它能按患者切分。官方页面只说 600 份出院小结是随机子集,没有披露对应的患者数。缺少患者口径,就无法做患者级划分,也就无法排除同一患者多份小结同时落在训练与测试两侧的问题。

第四条,期待它覆盖 MIMIC-IV-Note 的全部用药提及。它是随机抽样的一部分,官方页面还写明未来版本希望扩展到更多出院小结——也就是说 1.0.0 是起点而不是全集。

1.3 它能给到的与给不到的

你的需求 它给的 够不够
一份可训练的用药抽取训练集 600 份文档、字符级偏移、六类槽位 够做小样本与迁移实验,不足以训大模型
与 i2b2 2009 同字段体系的现代语料 六类槽位一一对应,语料换成 MIMIC-IV-Note 够,这是它最直接的用途
研究「LLM 标注能不能用」的公开样本 全流程产物(提示→YAML→结构对象→CSV) 够,是目前少见的公开可用实例
实体与关系联合抽取(NER-RE)的评测场 分组编号把同一次用药的多个槽位串起来 够,天然带关系结构
人工黄金标准级别的评测基准 — 不够,无人工复核结果
患者级划分的干净切分 — 不够,未披露患者口径
用药的标准化编码(RxNorm 等) — 不够,只有原文片段与偏移
药物不良事件、过敏、依从性 — 不够,字段体系里没有这些槽位

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

你的处境 它能帮你什么 下一步该做什么
你想在 MIMIC-IV-Note 上做用药抽取,但没有标签 提供 600 份文档的字符级标签,可直接训练序列标注模型 先申请父项目凭证,按 §5.4 把原文回贴,再按句子切分建样本
你在评估「用大模型标注省不省事」 提供一次完整的公开实践及其质量对标结论 把它当作对照案例,在 i2b2 2009 上复算自己的流水线再比较
你有 i2b2 2009 上训好的模型,想看跨语料表现 字段体系一致,可直接做零样本外测 注意语料年代与书写风格差异,报告时分开写清楚
你在做实体关系联合抽取 分组编号天然给出槽位间的关系 按 Group 聚合成实体组,转成关系三元组或表格
你想研究标注错误如何传播 标签来自模型,错误形态与人工不同 抽取少量样本做人工复核,把错误类型列表写进方法节
你只需要一份「有多少种药被提到」的清单 只能给出按 Group 去重的用药提及数 明确这是提及计数而非患者计数,不做人群推断

1.5 一句话判断

它不是一份新的黄金标准,而是一次可复用的标注实践留下的产物:用六百份文档换来一条「大模型能不能替代标注员」的公开证据链。

1.6 不适合谁:四条边界

不适合拿来做严格的临床结论。 标签由模型生成,且原始文本虽经去标识,仍来自单一机构的住院患者。用它统计出的任何用药规律都不能外推为临床事实。

不适合拿来做标注者一致性研究。 一致性研究需要两个及以上独立标注者,这里只有一个生成源。

不适合拿来做患者层面的流行病学问题。 官方没有披露 600 份文档对应的患者数,也无法判断是否含同一患者的多次住院。

不适合拿来做商用产品的一次性训练集。 许可为 PhysioNet 凭证健康数据许可 1.5.0,限定研究用途并有数据使用协议约束,商用前须逐条核对许可条款。

§2 数据构成与规格

2.1 一份文档一个 CSV

官方数据描述写得很直接:标签按文档存放在 CSV 文件里,文件名中的 note id 对应 MIMIC-IV-Note 里的一份文档。这意味着它的组织方式是扁平的、一文档一文件,没有按患者、按科室或按年份分的子目录,也没有一个汇总全部标注的总表。

这个组织方式有三个直接后果。第一,文件数量与文档数量同量级,批量处理必须先把文件名解析成 note_id,再逐个读入。第二,跨文档的统计(比如一共标了多少条)要先做一次全量拼接,官方页面没有提供这个汇总值。第三,note_id 是它与外界唯一的主键,任何与 MIMIC-IV-Note 的对齐都必须经过它。

官方页面给出的文件名示例是 NoteID-12345-DS-01,对应的 note_id 是 12345-DS-01。示例中 -DS- 这一段的含义官方未作说明,正文里凡涉及该段语义的地方都按未核验处理(§10)。

2.2 四个字段的完整字典

官方「CSV File Format」一节只列了四个字段,这也是全部字段:

字段 英文原名 取值形态 含义 使用注意
起始位置 Start Position 整数 标注片段在源文档中的起始字符偏移 相对的是该 note_id 的正文全文,不是段落
结束位置 End Position 整数 标注片段的结束字符偏移 与起始位置构成切片区间,注意是前闭后开还是闭区间需自行验证
标注类型 Annotation 字符串常量 槽位类型,如 MEDICATION、DOSE、REASON 官方列举时用了「例如」,实际取值以文件为准
分组 Group 编号 把同一条用药提及的多个槽位串起来的标识 同一文档内唯一,跨文档可重复
note_id — 形如 12345-DS-01 来自文件名,不在 CSV 列内 拼接全量时必须自己补上这一列

最后一行是容易漏掉的一点:note_id 不在 CSV 的列里,只存在于文件名。任何「读进来就有 note_id」的写法都要自己在读取时回填,否则拼接之后无法回溯到原文。

2.3 六类槽位的含义与对照

字段体系沿用 2009 年 i2b2 药物挑战赛,官方列举的六类如下。i2b2 当年的标注指南还包含必要性等判定,本库页面未提及,正文不做扩展。

槽位 中文 问的问题 典型片段 i2b2 2009 对应
MEDICATION 药物名 提到了哪个药 Ibuprofen、diclofenac m(medication)
DOSE 剂量 一次多少 5 mg、两片 do(dosage)
MODE 给药途径 怎么进去 口服、静脉推注 mo(mode)
FREQUENCY 频次 多久一次 as needed、每日三次 f(frequency)
DURATION 疗程 持续多久 for one month du(duration)
REASON 用药原因 为什么用 abdominal discomfort r(reason)

官方给出的示例中,同一句话「Ibuprofen as needed, and diclofenac for one month as needed, for abdominal discomfort.」被拆成两个用药分组:一组是布洛芬(频次 as needed、原因 abdominal discomfort),另一组是双氯芬酸(频次 as needed、疗程 for one month、原因 abdominal discomfort)。两点值得注意:同一原因文本被两个分组共享,说明槽位文本可以重复出现并分属不同分组;空槽位是合法的,示例里 DOSE 与 MODE 就写成空串,说明 CSV 里不会出现「空值行」,缺哪个槽位就是没有那一行。

2.4 一条标注的解剖

把一份 CSV 的一行展开,信息链条是这样的:文件名给出 note_id → 起始与结束偏移给出原文中的确切字符区间 → 标注类型给出这个区间是什么槽位 → 分组编号给出它属于哪一次用药提及。四者合起来,等价于人工标注里的一对「实体 + 关系」:实体是字符区间与类型,关系是分组编号。

官方在 Usage Notes 里给了一段把原文回贴到标注表的 Python,核心逻辑是先按 note_id 从 MIMIC-IV-Note 的 discharge 表里取出正文,再按起止偏移切片:

import os
import re
import pandas as pd

def extract_note_id(s: str) -> str:
    #-- 官方示例:从文件名 NoteID-12345-DS-01 中取出 12345-DS-01
    match = re.search(r"NoteID-([0-9A-Za-z-]+)", s)
    if match:
        return match.group(1)
    raise ValueError(f"Could not extract note_id from {s}")

def import_mimic_iv_text(mimic_iv_discharge_df, label_dir_path, label_filename):
    #-- 依赖父项目的 discharge 表,列名按 MIMIC-IV-Note 实际表头为准
    note_id = extract_note_id(label_filename)
    document_text = mimic_iv_discharge_df.loc[
        mimic_iv_discharge_df.note_id == note_id
    ].text.iloc[0]
    label_df = pd.read_csv(os.path.join(label_dir_path, label_filename))
    label_df["note_id"] = note_id          #-- 回填主键,避免拼接后丢失来源
    label_df["Text"] = None
    for idx, row in label_df.iterrows():
        text_slice = slice(row["Start Position"], row["End Position"])
        label_df.at[idx, "Text"] = document_text[text_slice]
    return label_df

这段逻辑有两个隐含前提,用之前必须自己验证。第一,document_text 的字符序列必须与生成标注时喂给模型的文本完全一致——如果 MIMIC-IV-Note 的版本不同、或做过换行与空白的清洗,偏移就会整体漂移。第二,切片区间是 Python 的 slice 语义(前闭后开),官方没有单独声明结束位置是否包含在内,首次使用应当抽样打印几条肉眼核对。

还有一个结构性的细节值得单独记住:分组编号不是全局主键。它的作用范围只在单份文档内部,文档 A 的分组 1 与文档 B 的分组 1 毫无关系。任何跨文档的聚合都必须以 note_id + Group 为复合键,只按 Group 分组会把不同文档的用药提及揉成一团。同理,同一分组内的槽位文本可以在同一句里重复出现(如示例中两次出现的 as needed),重复并不表示标注重复,只表示两个分组各自引用了同一段文字。

2.5 与 i2b2 2009 字段体系的对照

对比项 本库 i2b2 2009 药物挑战赛
槽位体系 药物名、剂量、途径、频次、疗程、原因 同六类(另有挑战赛自定的判定项,本库未沿用)
语料 MIMIC-IV-Note 出院小结 当年发布的去标识出院小结
文档规模 600 份(随机子集) 挑战赛规模见其官方发布,本页未引
标注来源 PaLM 2 大模型流水线 人工标注专员
是否附人工复核 未附 本身即人工产物
关系表达 Group 编号串联槽位 挑战赛以同一 medication 条目归组
获取方式 PhysioNet 凭证访问 按其官方渠道申请

这张表要说清的只有一件事:本库真正的增量是语料换了、标注者换了、字段没换。正因为字段没换,它才能直接当迁移与对照的材料;也正因为标注者换了,它不能当评测的尺子。

2.6 与父项目 MIMIC-IV-Note 的结构差异

对比项 本库 MIMIC-IV-Note(父项目)
内容 用药槽位标注(偏移 + 类型 + 分组) 去标识自由文本全文与元数据
基本单位 一份文档一个 CSV 一行一份文档(discharge 表)
主键 note_id(写在文件名里) note_id(写在列里)
规模口径 600 份文档 331,794 份出院小结、145,915 名患者
是否含原文 否 是
许可 凭证健康数据许可 1.5.0 同系列凭证许可(以父项目页面为准)
单独可用性 不可用,须与父项目配对 可单独用

最后两行是理解的钥匙:本库在结构上是一个外挂标签层,不是一个独立数据集。任何把它当成「一份可以单独下载、单独使用的数据」的想法,都会在第一步取不到正文时撞墙。

§3 它是谁的数据:一条 Google 的标注流水线

3.1 贡献者与机构

五位作者 Akshay Goel、Almog Gueta、Omry Gilon、Sofia Erell、Amir Feder 在 PhysioNet 页面上的署名机构均为 Google LLC。官方在「Conflicts of Interest」一节主动写明这点:这些作者受雇于 Google LLC。这是一个应当写进使用说明的事实——流水线所用的 PaLM 2 是 Google 自研模型,数据集的发布方又是 PhysioNet,模型供应方与标注方是同一家。

托管方仍是 PhysioNet,由 MIT 计算生理学实验室维护,并在页面上标注了标准的 PhysioNet 引用要求。数据本身则源自 MIMIC-IV-Note,页面「Parent Projects」一节明确列出派生来源为 MIMIC-IV-Note v2.2,要求使用时一并引用父项目。

3.2 时间线

时间 事件 意义
2023 年 MIMIC-IV-Note v2.2 发布,含 331,794 份出院小结 提供了待标注的语料底座
2023 年 配套论文《LLMs Accelerate Annotation for Medical Information Extraction》被机器学习医疗会议接收 方法论与质量对标结论的来源
2023-12-12 1.0.0 版本在 PhysioNet 上线,DOI 10.13026/ps1s-ab29 首次公开,至今唯一版本
发布后 官方表示未来版本希望扩展到更多出院小结 1.0.0 定位为起点

第三行之后没有修订记录。与其他长期维护的 PhysioNet 库不同,它没有「头文件修订」一类的元数据变更,也没有版本 1.0.1。这既说明它很新,也说明它还没有经历过一轮使用侧反馈推动的修正。

3.3 采集场景:从三十三万份里随机抽六百份

官方对抽样方式的表述只有一句:标签覆盖的是 MIMIC-IV-Note 出院小结的一个随机子集。随机意味着两点:一是没有按科室、病种、年份或文档长度做分层,抽样分布应当接近父项目的自然分布;二是没有做「至少含 N 处用药提及」一类的富集筛选,某些文档可能用药提及很少。

父项目本身的人群边界同样要继承下来。MIMIC-IV-Note 的出院小结来自波士顿 Beth Israel Deaconess Medical Center,共 331,794 份、145,915 名患者,覆盖住院场景,以重症与内科患者为主。因此这批标签反映的是美国单一学术医疗中心的住院文书习惯:用药写在哪些小节、缩写怎么写、剂量单位怎么表达,都带着那家医院的模板痕迹。换一家医院、甚至换成门诊病历,语言分布就会变。

3.4 数据来源的三个层次

理解这份数据要分三层。第一层是原始病历——BIDMC 的电子病历,经去标识后进入 MIMIC-IV-Note,这一步不由本库作者完成,也不随本库发布。第二层是 MIMIC-IV-Note 的出院小结文本——本库的标注对象,需另行申请获取。第三层是大模型生成的标签——本库唯一的新增内容。

这三层带来一个常被忽略的不对称:第二层的去标识与文本清洗规则由 MIMIC-IV-Note 决定,第三层的偏移却必须严格落在第二层的字符序列上。只要两层之间有一次换行归一化或空白折叠的差异,偏移就会错位。这也是为什么「拿到两份数据先抽样核对偏移」应当是使用流程的第一步(§9.2)。

§4 它最独特的东西:一次可复用的大模型标注实践

4.1 稀缺的是「公开的模型产物」而不是「六百份标签」

六百份文档在临床标注里不算大数。真正稀缺的是它的身份:这是少见的把大模型标注流水线的最终产物原样公开的数据集。多数相关工作只发布结论(F1 是多少、省了多少时间),不发布产物;产物不公开,别人就无法在此基础上做二次分析,也无法验证那条结论。

这条流水线本身也写得清楚:用 Google 的 PaLM 2 模型,配一份针对用药抽取任务设计的少样本提示,提示里包含任务背景、完整任务描述、若干输入输出的示例对,并明确指定输出格式——示例里用的是 YAML 语法。文本分段送入模型,模型输出再由一个后处理模块转成 NER-RE(命名实体识别—关系抽取)结构对象,把药物信息与关系信息封装起来。

4.2 质量对标:三个数字与它们的口径

配套论文给出的对标结论,是理解「能不能用」的关键。三个数字按官方页面与论文摘要的口径列出:

口径 数值 说明
大模型生成 + 人工精修的最终 F1 0.907 论文报告的人机协作终态质量
纯人工标注基线 F1 0.910 作为对照的人类水平
仅大模型输出、无人介入的 F1 0.804 说明人工精修这一步仍然不可省
单份文档标注耗时 从 26.67 分钟降到 11.32 分钟 论文报告的人机协作耗时变化

这四行必须连起来读,单独摘任何一行都会误读。0.907 与 0.910 的差距很小,说明人机协作的终态质量接近纯人工;而 0.804 与 0.907 的差距很大,说明省事的是人工精修环节,不是模型自己就能交差。

对本库最关键的推论是:发布出来的这批标签,属于官方页面所称的「初始标签生成」产物,而未声明经过人工精修。因此它的质量定位应当参照第三行而不是第一行。这不是贬低,而是把「它能当什么」说清楚——它可以是一个不错的训练集起点,不是一把尺子。

4.3 案例:一句医嘱如何被拆成六个槽位

官方示例给的是一句英文医嘱:"Ibuprofen as needed, and diclofenac for one month as needed, for abdominal discomfort." 模型被要求输出的 YAML 结构如下(节选):

entities:
  - group: 1
    MEDICATION: {text: Ibuprofen}
    DOSE: {text: ''}
    FREQUENCY: {text: as needed}
    DURATION: {text: ''}
    REASON: {text: abdominal discomfort}
    MODE: {text: ''}
  - group: 2
    MEDICATION: {text: diclofenac}
    DOSE: {text: ''}
    FREQUENCY: {text: as needed}
    DURATION: {text: for one month}
    REASON: {text: abdominal discomfort}
    MODE: {text: ''}

落到 CSV 之后,这段 YAML 会变成若干行「偏移 + 类型 + 分组」,同一分组下的多个槽位靠 Group 列重新聚合。把这个过程拆开看:

步骤 输入 输出 谁负责
分段 整份出院小结 若干文本片段 流水线预处理
提示 文本片段 + 少样本提示 YAML 生成文本 PaLM 2
解析 YAML 生成文本 NER-RE 结构对象 后处理模块
回贴 结构对象 + 原文 字符级起止偏移 解析器(论文称 resolver)
落成 偏移 + 类型 + 分组 单文档 CSV 发布流程

这张表里最脆弱的一环是第四步。模型生成的是文本,不是指针;把它还原成原文里的字符位置,需要一次匹配。当模型改写、缩写或补全了原文片段(这类情况在生成式模型里并不罕见),匹配就会失败或偏移。官方页面没有说明匹配失败时的处理策略,这是一处应在使用时自行抽样验证的空白。

从示例还能读出标注口径的两个取向。第一个是允许共享:abdominal discomfort 这一句同时出现在两个分组的 REASON 里,说明同一段文字可以同时属于两个分组,不做互斥处理。第二个是允许留空:DOSE 与 MODE 在示例里是空串,说明「这份文本里没写剂量」不会被强行补出一个值,也不会因为缺项而丢掉整条用药记录。这两条取向对下游很关键——共享意味着去重时不能按文本去重,留空意味着做统计时不能把「缺项」当成「为零」。

4.4 标注的粒度:字符级清楚,语义级由你自己补

它的粒度在物理层面非常清楚——精确到字符的起止偏移,任何片段都能被原样取回。但在语义层面,它只给到「这段文字属于某个槽位」,不给标准化。药物名是原文里怎么写就怎么标,没有做同义词归并,也没有编码映射。想要 RxNorm 或 ATC 一类的标准编码,要自己接一层术语归一。

分组编号提供的是同一层语义:同一分组里的槽位属于同一次用药提及。它不提供跨句的共指消解——如果同一药物在文档的前后两处各被提及一次,那通常是两个分组,而不是一个。把两次提及合并成「一个药」,是下游任务自己的事。

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

条件 是否适用 判断依据
训练一个用药抽取的小模型 适用 600 份文档、字符级标签、六类槽位齐备
当评测基准给别的模型打分 不适用 标签本身由模型生成,无人工复核
做患者级的数据集划分 不适用 官方未披露 600 份对应的患者数
研究大模型标注的错误形态 适用,且是少见的公开样本 产物随库发布,可抽样复核
做跨机构泛化评测 只算半边 语料来自单一机构,只有一个中心
统计某类药物的使用频率 不适用 只标提及,不代表处方或患者数
迁移到门诊病历或中文病历 不适用 语言分布与文书模板不同
需要标准化药物编码 不适用 未提供编码映射

§5 怎么拿到:从凭证到可训练样本

5.1 目录结构与下载面

官方页面在受限环境下会显示「数据在当前地区不可用」,文件目录需要登录后访问。依据页面描述可以确定的结构如下:

路径/对象 内容 是否可独立访问
/files/medication-labels-mimic-note/1.0.0/ 标注文件目录,按文档分 CSV 需凭证,且受地域限制
NoteID-<note_id>.csv 单份文档的标注行 需凭证
项目页 /content/medication-labels-mimic-note/1.0.0/ 摘要、方法、字段说明、示例代码 公开可读
父项目 MIMIC-IV-Note v2.2 出院小结正文 需另行申请凭证

文件总数、是否存在 SHA256 校验清单、是否有 README 随库发布,官方页面未作说明,本条按未核验处理(§10)。

5.2 获取前置:三道门槛

步骤 要求 说明
注册 PhysioNet 凭证账号 需实名并通过身份核验
培训 CITI「Data or Specimens Only Research」课程 页面标注为 Required training
签署 PhysioNet 凭证健康数据使用协议 1.5.0 签署后方可下载
父项目 另需 MIMIC-IV-Note 的访问权限 两份数据的凭证要各自到位
地域 部分地区不可下载 以登录后目录响应为准

这里最容易踩的是第四行:多数人以为签了本项目的 DUA 就能拿到全部所需,实际上正文在父项目那边,两个凭证缺一不可。

5.3 批量下载

#-- 凭证登录后用 wget 递归拉取标注目录
wget -r -N -c -np --user <USERNAME> --ask-password \
     https://physionet.org/files/medication-labels-mimic-note/1.0.0/

#-- 只用 CSV,不递归抓取索引页
wget -r -N -c -np -A "*.csv" --user <USERNAME> --ask-password \
     https://physionet.org/files/medication-labels-mimic-note/1.0.0/

命令行里出现密码有泄露风险,更稳的做法是把凭据放进 ~/.netrc,再用 curl --netrc 或 wget 默认读取。下载前先确认目录返回的是 200 而不是 403——403 通常意味着凭证未生效或地域受限,不是路径写错。

5.4 拼接与原文回贴

import os
import re
import pandas as pd

LABEL_DIR = "medication-labels-mimic-note/1.0.0"

def iter_label_files(d):
    #-- 只取以 NoteID- 开头的 CSV,跳过目录里可能的其他文件
    for fn in sorted(os.listdir(d)):
        if fn.startswith("NoteID-") and fn.endswith(".csv"):
            yield fn

frames = []
for fn in iter_label_files(LABEL_DIR):
    note_id = re.search(r"NoteID-([0-9A-Za-z-]+)", fn).group(1)
    df = pd.read_csv(os.path.join(LABEL_DIR, fn))
    df["note_id"] = note_id             #-- 回填主键
    df["file"] = fn
    frames.append(df)

labels = pd.concat(frames, ignore_index=True)
print(labels.columns.tolist(), len(labels))
#-- 与 MIMIC-IV-Note 的 discharge 正文对齐,注意版本必须一致
texts = pd.read_csv("mimic-iv-note/2.2/discharge.csv.gz")
text_by_id = dict(zip(texts["note_id"], texts["text"]))

def slice_text(row):
    #-- 切片语义需自行抽样确认前闭后开
    return text_by_id[row["note_id"]][row["Start Position"]:row["End Position"]]

sample = labels.head(20).copy()
sample["span"] = sample.apply(slice_text, axis=1)
print(sample[["note_id", "Annotation", "Group", "span"]].head(20))

抽样打印这一步不能省。它同时验证三件事:note_id 能否在父项目里命中、偏移是否落在正确片段上、结束位置是否包含在内。三件事里任何一件不成立,后续全部结果都不可信。

5.5 转成序列标注或关系结构

#-- 按分组聚合成实体组,是做 NER-RE 的起点
groups = (
    labels.sort_values(["note_id", "Group"])
    .groupby(["note_id", "Group"])["Annotation"]
    .apply(list)
)
print(groups.head(10))

#-- 转成一条记录一个药物提及的宽表
wide = (
    labels.pivot_table(index=["note_id", "Group"],
                       columns="Annotation", values="Start Position",
                       aggfunc="min")
    .reset_index()
)
print(wide.columns.tolist())

转成 BIO / IOB 标签序列则需要先把正文按字符展开,再按偏移把标签打到对应字符上。这一步要处理两个现实问题:不同分组的槽位片段可能重叠(比如共享的原因文本),重叠时如何取舍要事先定规则;以及原文的空白与换行是否被计入偏移,这决定了切片对不对得上。

重叠问题没有标准答案,但必须写清楚。可选的做法有三种:先到先得(按起始位置排序,先占的字符不再改)、长者优先(长片段覆盖短片段)、或把重叠字符标成多标签。三种做法会得到不同的标签序列,训练出的模型也不同,论文里若不交代,结果就不可复现。这也是本库在使用侧要求「二次加工要留痕」的地方:从 CSV 到 BIO 的这一步,是使用者自己加的假设。

5.6 五个最容易出错的地方

坑 表现 办法
忘记回填 note_id 拼接后无法回溯原文 读取时从文件名解析并补列
父项目版本不一致 偏移整体漂移,切片拿到错句 锁定 MIMIC-IV-Note v2.2,与标注生成时对齐
把闭区间当开区间 片段多一个或少一个字符 抽样打印肉眼核对
把 Group 当跨文档唯一 跨文档编号重复导致合并错误 分组只在单文档内唯一,聚合时带上 note_id
把提及数当患者数 结论被放大 官方未披露患者口径,只报提及层面

§6 与库内资源的关系

6.1 关系图谱

资源 关系 检索路径
mimic-iv-note 父项目,提供被标注的正文 临床文本 + 电子健康记录
i2b2-n2c2-nlp 字段体系来源,2009 药物挑战赛 评测基准 + 标注规范
immunosuppressive-annotations 同为 MIMIC 文本的用药相关人工标注 人工标注 + 用药状态
annotation-opioid-use-notes 同为出院小结标注,人工协议驱动 人工标注 + 用药语境
labelled-notes-hospital-course MIMIC-IV 派生文本标注 临床文本 + 片段级标注
mimic-iii-ext-notes MIMIC-III 侧的概念标注 临床文本 + 标注规范
discq 同为 MIMIC 出院小结的人工标注产物 人工标注 + 出院小结
ann-pt-summ 同为大语言模型相关标注,人工协议严格 大模型标注质量
med-palm2-mimic-cxr 同为 Google 医疗大模型产物 大模型 + 人工裁定
task-1-3-soap-note-tag 同为临床文本标注任务 标注规范 + 临床文本

6.2 检索路径

按主题标签走,三条路径都能到它:**「临床文本 → 用药抽取」是最短的一条,落点就是本库;「大模型标注 → 质量研究」这条会先经过 ann-pt-summ 一类人工协议严格的数据集,再到本库,因为本库的角色是「被比较的一方」而不是「比较的尺子」;「MIMIC 派生 → 标注层」**这条则要先确认父项目凭证,再决定要不要取标注。

第二条路径值得单独说。任何「用大模型标注替代人工」的研究,都需要一个人工侧参照物。本库提供的是模型侧产物,人工侧参照物要到别处找——这正是它与 ann-pt-summ、immunosuppressive-annotations 这类人工标注数据集在库内形成互补的地方。

6.3 与同类资源的分工判据

你的问题 该选谁 理由
我要字段体系与现代语料都齐备的用药抽取训练数据 本库 六类槽位 + MIMIC-IV-Note 语料
我要人工黄金标准做评测 immunosuppressive-annotations 或 ann-pt-summ 人工协议明确,可当尺子
我要研究阿片类用药的社会语境 annotation-opioid-use-notes 专门的标注协议
我要原始的大规模文本自己标 mimic-iv-note 三十三万余份出院小结
我要看 2009 年那批经典挑战语料 i2b2-n2c2-nlp 原任务原语料
我要对比不同模型在同一批文本上的标注 本库 + 自跑流水线 官方产物可作对照基线

§7 质量评估与局限性

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

先纠正一个常见误判:把「标签由模型生成」直接读成「质量不可信」。官方给出的对标结论是质量与平均水平的标注专员相当,配套论文里人机协作终态的 F1 与纯人工基线只差千分之三。真正需要区分的不是「能不能用」,而是用在哪个环节:用作训练起点,它划算;用作评测标尺,它不合格。

7.1 五维评分

按数据可用性的常用维度打分,每项 1–5 分,分数针对「作为用药抽取研究数据」这个用途:

维度 分数 理由
数据规模 2 600 份文档,够小样本与迁移,不够训大模型
标注质量 3 与人工持平为官方对标结论,但无逐条复核结果随库发布
任务适配 5 字段体系与 i2b2 一致,直接可用于 NER-RE
文档完整 4 方法、字段、示例、回贴代码都写清楚,抽样细节有缺
可获取性 2 双重凭证 + 地域限制 + 依赖父项目

五项合计 16 分(满分 25)。这个分数结构说明它是方法验证型资源而不是通用训练资源:适配性拉满,规模与获取性拖后腿。

7.2 标注质量的两层

第一层是类型对不对——这段文字是不是药物名、是不是剂量。官方页面明确说标签由大语言模型流水线生成,并通过在 i2b2 2009 数据上的评测来说明质量水平。这一层的质量由整体指标背书,而不是逐条背书。

第二层是位置准不准——偏移是否精确落在原文片段上。模型输出的是文本而非指针,位置由解析器回贴得到,官方页面未说明匹配失败与歧义的处理策略。这一层没有任何背书,只能自行抽样验证。

用途 位置误差的影响 建议
训练序列标注模型 大,标签直接进监督信号 先抽样核对偏移再训练
统计用药提及数量 小,只看有无不看重边界 可直接用,但须说明口径
做关系抽取评测 中,槽位边界影响关系判定 人工复核小样本后再下结论
迁移到 i2b2 做对照 中,两边边界口径可能不同 明确写法,不跨口径比较

7.3 已知的、可枚举的偏差

偏差 表现 影响
单一机构语料 全部文本来自 BIDMC 文书模板与用药表达单一
抽样口径未披露 只说随机子集,未说患者数 无法做患者级划分
标注者单一 只有一个生成源 不能算一致性,不能当金标准
模型侧系统性错误 生成式模型可能改写或补全片段 偏移回贴可能失败或错位
空槽位不落行 缺失的槽位没有对应行 计数时不能按行数推断完整性
无标准化编码 只有原文片段 需自行做术语归一
地域可及性 部分地区不可下载 复现性受访问条件影响
无后续版本 只有一个 1.0.0 已知问题未被修订

7.4 外部验证矩阵

验证角色 做法 讲得通的地方 风险
训练数据来源 在本库上训练,在 i2b2 2009 上测试 字段一致,可直接比 两边语料年代与风格不同,差异来源不清
迁移起点 在本库上预训练,人工标注数据上微调 用大模型产物换标注成本 模型侧错误会被微调数据放大或掩盖
大模型标注研究的对象 抽样复核本库标签,估计错误形态 产物公开,可逐条查 抽样量小时结论不稳
基线对照 自己跑一条流水线,与本库产物比较 同为公开可用对照 提示词与模型版本不同,比较要写清

这四种角色里,第四种最容易被写歪:如果自己的流水线用了更强的模型或更细的提示,然后得出「比本库好」的结论,这个结论说明的是模型代际差异,不是方法优劣。

7.5 它为何值得关注:稀缺的不是六百份,是那条证据链

六百份标注在量上并不突出,突出的是它把「提示 → YAML → 结构对象 → 偏移 → CSV」这条链路的产物原样交了出来。有了产物,别人才能复查、才能二次标注、才能估错误。多数同类工作停在指标上,而指标是没有办法被复查的。

这也解释了它为什么值得在只有 1.0.0 一个版本、且没有后续修订的情况下被使用:它的价值不在于覆盖多少文档,而在于把一次方法论实践变成了可检验的对象。

§8 生态位与历史

8.1 历史沿革

阶段 状态 说明
任务定义期(2009 年前后) i2b2 挑战赛确立六类槽位 字段体系奠定
语料积累期(至 2023 年) MIMIC-IV-Note 提供三十三万余份出院小结 有大量文本但无用药标签
方法验证期(2023 年) 大模型标注流水线在 i2b2 上完成对标 论文给出 F1 与耗时数字
产物发布期(2023-12-12) 1.0.0 上线,覆盖 600 份文档 从方法走向公开产物
扩展预期 官方表示希望覆盖更多出院小结 未落地为具体版本

8.2 与 i2b2 挑战赛的关系

它不是挑战赛的延续数据集,而是沿用挑战赛字段体系的另一批语料。这个区别很重要:i2b2 2009 的价值在于它是人工标定的基准,本库的价值在于它把基准的字段搬到了现代大规模语料上。两者不能直接互换——前者是尺子,后者是材料。

因此常见的一种误用是:在本库上测出一个 F1,然后与 i2b2 2009 上的公开成绩并列比较。这两个数字不可比,因为参照标准不同:一个是人工标签,一个是模型标签。

8.3 生态位:材料而不是尺子

把它放在临床标注资源的光谱上看,位置很清楚。光谱的一端是人工协议严格、规模较小的数据集,另一端是规模巨大、无标签的原始语料。本库处在中间的偏材料一侧:规模比人工数据集大,可信度比原始语料高,但可信度不及人工数据集。

它的生态位因此可以概括为一句话:用来做材料,不用来做尺子。

8.4 谁在用它,用来做什么

从用途而非引用量看,四类使用者最可能对它感兴趣:需要用药抽取训练数据但拿不到人工标注的团队;研究大模型标注质量、需要公开产物做复查的团队;做 NER-RE 联合建模、需要天然带关系结构语料的研究者;以及需要一份现代语料与 i2b2 2009 做迁移对照的人。

第四类使用者要格外小心:迁移对照的目的是分离「语料变化」与「标注者变化」两种效应,而本库同时含这两种变化。要分离,就得再加一组对照,例如在同一批 MIMIC-IV-Note 文本上做人工标注。

§9 使用指引

9.1 三种角色的路径

角色 最短路径 要避开的坑
算法工程师 取凭证 → 拉 CSV → 回贴原文 → 建序列标注样本 偏移未抽样核对就训练
方法研究者 读官方方法与示例提示 → 在 i2b2 上复算 → 与本库产物对照 拿本库当金标准评测
数据治理人员 先看许可与 DUA → 确认父项目凭证 → 评估地域可及性 以为签一个 DUA 就够

9.2 一条最短的可用流程

  1. 注册 PhysioNet 凭证账号,完成 CITI 培训,签署数据使用协议 1.5.0。
  2. 同时申请父项目 MIMIC-IV-Note v2.2 的访问权限——正文在那边。
  3. 登录后确认文件目录返回 200,而不是 403。
  4. 下载标注 CSV 与 discharge 表,两边版本锁死。
  5. 按 §5.4 拼接标注表并回填 note_id。
  6. 抽样二十条,肉眼核对偏移切片是否落在正确的词上。
  7. 确认无误后再批量生成训练样本或做统计。

第六步是整条流程里唯一无法跳过的手工环节。跳过它,后面所有数字都可能建立在错的对齐上。

9.3 引用方式

场景 引用内容
引用本库 Goel, A., Gueta, A., Gilon, O., Erell, S., & Feder, A. (2023). Medication Extraction Labels for MIMIC-IV-Note Clinical Database (version 1.0.0). PhysioNet. https://doi.org/10.13026/ps1s-ab29
引用平台 Pollard, T. 等 (2026). PhysioNet as a global platform for biomedical research. Nature Health. https://doi.org/10.1038/s44360-026-00096-z
引用父项目 Johnson, A. 等 (2023). MIMIC-IV-Note: Deidentified free-text clinical notes (version 2.2). PhysioNet. https://doi.org/10.13026/1n74-ne17
引用字段体系 Uzuner, Ö., Solti, I., & Cadag, E. (2010). Extracting medication information from clinical text. JAMIA, 17(5), 514–518.
引用方法论文 Goel, A. 等 (2023). LLMs Accelerate Annotation for Medical Information Extraction. MLHC, PMLR.

四份引用缺一不可:本库、平台、父项目、字段体系来源。方法论文在使用其质量结论时必须引——那些数字出自论文,不出自数据页面。

§10 AI 使用声明

项目 声明
文本生成 本文由 AI 辅助撰写,编辑把关结构与事实
数字来源 规模、结构、边界三类数字来自 PhysioNet 官方页面(项目页与 1.0.0 版本页)
文件核验 官方页面可公开访问;文件目录在当前环境下返回 403,未逐一核验文件清单
论文信息 质量与耗时数字来自配套论文摘要,未读全文
未核验内容 标注文件总数、是否存在校验清单、600 份文档对应的患者数、-DS- 段含义、空槽位是否落行、偏移切片区间开闭
图像 无配图;封面为生成式提示词,不含真实病历内容
免责 本文不构成临床建议;数据使用须遵守 PhysioNet 凭证健康数据许可 1.5.0

常见误读(避坑清单)

说法 实际 证据
「它是人工标注的黄金标准」 标签由 PaLM 2 流水线生成 官方 Methods 段写明使用大语言模型生成
「下载标注就够了」 不含原文,须另取 MIMIC-IV-Note 正文 官方 Data Description 只描述标签字段
「600 份文档就是 600 名患者」 官方未披露患者口径 页面只说随机子集,未给患者数
「可以拿它给别的模型打分」 它是模型产物,不是尺子 官方对标结论是「与标注专员持平」而非「高于」
「CSV 里有 note_id 列」 note_id 只在文件名里 官方示例代码从文件名正则提取
「缺哪个槽位就有一行空值」 空槽位以空串出现在 YAML 示例,落成 CSV 的写法未说明 官方示例 DOSE 与 MODE 为空串
「Group 是全局唯一编号」 分组在单文档内唯一,跨文档可重复 官方称其用于把标注连到各自用药分组
「它和 i2b2 2009 可以直接比分数」 一边人工标签一边模型标签,不可比 官方明确本库标签为大模型生成
「它覆盖了 MIMIC-IV-Note 全部用药」 只覆盖 600 份随机子集 官方称未来希望扩展到更多小结
「签了本项目的 DUA 就能用」 父项目凭证另需申请 官方 Parent Projects 指向 MIMIC-IV-Note v2.2

FAQ

Q1:这些标签到底是人工标的还是模型标的?
模型标的。官方页面写明使用 Google 的 PaLM 2 配合少样本提示生成,再经后处理模块转成结构对象。官方的对标说法是质量与平均水平的标注专员相当,这组结论来自在 i2b2 2009 数据上的评测,而不是对这 600 份文档的逐条复核。

Q2:600 份出院小结对应多少名患者?
官方页面没有给出这个数字,只说明是从 MIMIC-IV-Note 随机抽取的出院小结。因此不能用它做患者级划分,也不能把「用药提及数」说成「患者数」。需要患者口径时,可以在取到 note_id 后回父项目查 subject_id,但那属于二次加工。

Q3:为什么标注文件里没有原文?
因为它设计成一个外挂标签层:只记录偏移、类型与分组,正文留在父项目里。这样避免了重复发布受控文本,代价是使用者必须两份凭证都拿到手。

Q4:六类槽位具体是哪六类?
药物名(MEDICATION)、剂量(DOSE)、给药途径(MODE)、频次(FREQUENCY)、疗程(DURATION)、用药原因(REASON),与 2009 年 i2b2 药物挑战赛的字段体系一致。官方列举时用了「例如」的表述,实际取值以文件为准。

Q5:偏移会不会对不上原文?
有可能。模型输出的是文本,偏移由解析器回贴得到;只要父项目版本不一致、或做过换行与空白清洗,偏移就会漂移。使用前务必抽样打印切片核对,同时确认结束位置是开区间还是闭区间。

Q6:它能不能当评测基准?
不适合当尺子。它的标签本身来自模型,用它给别的模型打分等于用一个模型的输出当标准答案。做评测应当找人工标注的数据集,本库更适合当训练材料或对照材料。

Q7:许可证允许商用吗?
许可为 PhysioNet 凭证健康数据许可 1.5.0,配合数据使用协议 1.5.0,官方定位是研究用途的凭证访问数据。商用前须逐条核对许可与协议条款,不能按开放数据默认处理。

Q8:为什么只有 1.0.0 一个版本?
它发布于 2023 年 12 月 12 日,至今没有修订记录。官方在数据描述里表示未来希望把标签扩展到更多 MIMIC-IV-Note 出院小结,但这一预期尚未落地为具体版本。

Q9:配套论文的 F1 数字能直接引用到这批标签上吗?
要分清口径。论文的 0.907 是人机协作终态(模型生成加人工精修)的成绩,0.804 是模型单独输出的成绩。官方页面对本批标签的表述是「初始标签生成」产物,未声明经过人工精修,因此引用时更贴近后者,并须注明出处。

Q10:我想研究大模型标注的错误形态,它能用吗?
能用,而且是少见的公开样本。产物随库发布,可以抽样做人工复核,把错误类型列表写出来。要注意抽样量足够、复核协议先行写定,否则结论不稳。

术语表

术语 解释
用药抽取 从临床自由文本中识别药物及其属性字段的信息抽取任务
i2b2 2009 药物挑战赛 2009 年举行的临床自然语言处理评测,确立六类用药槽位
MIMIC-IV-Note MIMIC-IV 的去标识自由文本子集,含三十三万余份出院小结
出院小结 discharge summary,患者出院时书写的诊疗与用药总结文书
字符偏移 以字符为单位标注片段在全文中的起止位置
槽位 一条结构化记录里的一个字段,如剂量、频次
分组编号 Group,把同一次用药提及的多个槽位串起来的标识
NER-RE 命名实体识别与关系抽取的联合任务
少样本提示 few-shot prompting,在提示中给出若干示例引导模型输出
PaLM 2 Google 的大语言模型,本库标注流水线所用
YAML 一种结构化文本格式,本库提示中指定为模型输出格式
解析器 resolver,把模型生成的文本回贴为原文字符位置的模块
去标识 移除可识别个人信息的处理过程
DUA 数据使用协议,凭证数据的法律约束文件
CITI 培训 人体研究伦理与数据使用的在线培训课程
凭证访问 需实名核验、培训与签署协议后才能下载的数据访问方式
标注专员 受过训练、按协议执行标注的人员
F1 精确率与召回率的调和平均,信息抽取常用指标
RxNorm 美国国立医学图书馆的临床药物标准命名体系
共指消解 判断文中不同提及是否指向同一实体的任务

附录 A:核心数字核对表

项 值 来源 来源层级
全名 Medication Extraction Labels for MIMIC-IV-Note Clinical Database 官方项目页 官方页面
版本号 1.0.0 官方项目页与版本页 官方页面
发布日期 2023 年 12 月 12 日 官方项目页 官方页面
覆盖文档数 600 份出院小结 官方摘要段 官方页面
父项目规模 331,794 份出院小结 官方 Background 段 官方页面
父项目患者数 145,915 名 官方 Background 段 官方页面
父项目版本 MIMIC-IV-Note v2.2 官方 Parent Projects 段 官方页面
原始机构 Beth Israel Deaconess Medical Center,波士顿 官方 Background 段 官方页面
槽位数 6 类 官方 Data Description 段 官方页面
CSV 字段数 4 个(起始、结束、类型、分组) 官方 CSV File Format 段 官方页面
标注模型 Google PaLM 2 官方 Methods 段 官方页面
输出格式 提示中指定 YAML 官方 Methods 段与示例 官方页面
版本 DOI 10.13026/ps1s-ab29 官方引用块 官方页面
最新 DOI 10.13026/6d3r-w470 官方页面 DOI 区 官方页面
许可 PhysioNet 凭证健康数据许可 1.5.0 官方 License 区 官方页面
数据使用协议 1.5.0 官方页面 官方页面
必需培训 CITI「Data or Specimens Only Research」 官方 Required training 区 官方页面
作者数 5 人,均属 Google LLC 官方署名与利益冲突声明 官方页面
人机协作 F1 0.907 配套论文摘要 论文
纯人工 F1 0.910 配套论文摘要 论文
仅模型输出 F1 0.804 配套论文摘要 论文
单份标注耗时 26.67 分钟降至 11.32 分钟 配套论文摘要 论文

附录 B:数字的来源分层

第一层:官方页面。 全名、版本、日期、600 份文档、父项目规模与版本、六类槽位、四个 CSV 字段、所用模型、许可、培训要求、DOI。这些全部来自项目页与 1.0.0 版本页的公开段落。

第二层:配套论文摘要。 三个 F1 数字与标注耗时的变化。论文与数据页是两回事,引用时必须分开标注,不能把论文的质量结论写成数据页的声明。

第三层:未核验。 标注文件总数、是否存在校验清单、600 份文档对应的患者数、文件名中 -DS- 段的含义、空槽位在 CSV 中的落成方式、偏移切片的开闭区间。这些需要凭证登录后逐文件确认,本篇按未核验处理,正文凡涉及处均作定性表述。

附录 C:完整参考文献

编号 文献 链接 用途
1 Medication Extraction Labels for MIMIC-IV-Note Clinical Database v1.0.0 https://physionet.org/content/medication-labels-mimic-note/1.0.0/ 全部规模、结构、边界数据的来源
2 MIMIC-IV-Note: Deidentified free-text clinical notes v2.2 https://doi.org/10.13026/1n74-ne17 父项目与语料规模
3 Uzuner, Solti & Cadag (2010), Extracting medication information from clinical text, JAMIA 17(5) https://doi.org/10.1136/jamia.2010.003947 i2b2 2009 字段体系来源
4 Goel 等 (2023), LLMs Accelerate Annotation for Medical Information Extraction, MLHC, PMLR https://proceedings.mlr.press/ 质量与耗时数字来源
5 Anil 等 (2023), PaLM 2 Technical Report, arXiv:2305.10403 https://arxiv.org/abs/2305.10403 所用模型的背景
6 PhysioNet 平台综述(2026,Nature Health) https://doi.org/10.1038/s44360-026-00096-z 托管模式与引用规范

附录 D:任务代码

任务一:把分组聚合成结构化用药记录

import pandas as pd

#-- labels 由 §5.4 的拼接流程得到,含 note_id/Start Position/End Position/Annotation/Group/Text
def to_records(labels):
    out = []
    for (note_id, group), g in labels.groupby(["note_id", "Group"]):
        rec = {"note_id": note_id, "group": group}
        for _, row in g.iterrows():
            rec[row["Annotation"]] = row["Text"]     #-- 槽位名作列,文本作值
        out.append(rec)
    return pd.DataFrame(out)

records = to_records(labels)
print(records.head(10).to_string())

任务二:抽样核对偏移是否落在正确的词上

def audit(labels, text_by_id, n=20, window=30):
    #-- 打印片段及其左右上下文,肉眼判断边界是否合理
    for _, row in labels.head(n).iterrows():
        t = text_by_id[row["note_id"]]
        s, e = int(row["Start Position"]), int(row["End Position"])
        left = t[max(0, s - window):s]
        span = t[s:e]
        right = t[e:e + window]
        print(f"[{row['note_id']}] {row['Annotation']:<11} g{row['Group']:<3} "
              f"{left!r}|{span!r}|{right!r}")

任务三:转成字符级 BIO 序列

def to_bio(text, spans):
    #-- spans: [(start, end, type)],重叠时按先到先得,规则需事先写定
    tags = ["O"] * len(text)
    for s, e, t in sorted(spans, key=lambda x: (x[0], -(x[1] - x[0]))):
        if any(tag != "O" for tag in tags[s:e]):
            continue                      #-- 已有标签则跳过,避免覆盖
        tags[s] = f"B-{t}"
        for i in range(s + 1, e):
            tags[i] = f"I-{t}"
    return tags

三段代码的共同前提是偏移已经核对无误。没有这一步,后续任何训练或统计都建立在可能错位的对齐上。

附录 E:如果只记五件事

序号 记住什么 为什么
1 600 份出院小结、六类槽位、字符级偏移、四个 CSV 字段 这四个数字定义了它的全部用法
2 标签由 PaLM 2 生成,不是人工黄金标准 决定它能当材料不能当尺子
3 不含原文,须另取 MIMIC-IV-Note v2.2 双重凭证是使用前的硬门槛
4 note_id 只在文件名里,Group 只在单文档内唯一 两个最容易出错的结构细节
5 官方未披露患者口径 不能做患者级划分,不能把提及数当患者数

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

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

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