信息速览
电子病历里那一栏"种族"和"族裔",几乎是健康公平研究里最常用、也最不可靠的两个字段。它常用,是因为疾病风险估计、医疗质量指标、健康差异识别这几类研究几乎都要按它分层;它不可靠,是因为在真实数据库里这一栏经常是空的、填错的,或者粗到没有用——美国联邦标准的五个种族类目把亚裔、拉美裔内部差异巨大的亚群压进同一格,而这些亚群在语言可及性、癌症发病率、精神卫生服务利用上的差别恰恰是研究最想看的东西。补的办法有两个:回去问患者,或者从临床文本里把信息挖出来。前者最准但做不动,后者便宜却带着一个绕不开的问题——你挖出来的是照护者写下的东西,不是患者自己说的。
C-REACT 把这个矛盾原样摆在了台面上,而不是替使用者抹平它。它从 MIMIC-III 的重症病历里抽出 17,281 句话,交给四名非临床标注者做片段级标注(这句话里有没有提到原籍国、有没有提到语言、有没有直接说种族、有没有直接说族裔),再交给十名临床医生做句级标签(这句话指向哪个种族类目、哪个族裔类目)。两层标注覆盖同一批句子,用句子编号对齐,让你既能拿到粗粒度的类别,也能回到被标出的那几个词上看清楚判断是怎么来的。
它最有价值的地方,是官方在页面里把限制性写到了明处:主要局限是所有信息都来自书写病历的照护者的主观视角,无法保证是患者自报;类目体系是美国中心的建构;伦理声明里明确要求自报数据更忠实于患者身份,研究者要谨慎决定何时该用抽取的数据、何时不该。一个用来补齐人口学缺口的语料愿意这样自我设限,比它多几万句更有说服力。一屏速览见下表。
| 维度 | 内容 |
|---|---|
| 全名 | C-REACT: Contextualized Race and Ethnicity Annotations for Clinical Text |
| 发布方 | PhysioNet;数据由哥伦比亚大学欧文医学中心等机构的研究团队贡献 |
| 首次发布 | 2024 年 10 月 21 日,版本 1.0.0 |
| 最近改动 | 无后续版本;版本列表仅有 1.0.0 |
| 句子数 | 17,281 句(两层标注共用同一批句子) |
| 患者数 | 12,000 名 |
| 来源病历数 | 13,507 份 |
| 时间跨度 | 源病历为 2001 年至 2012 年 |
| 原始来源 | MIMIC-III 临床数据库 v1.4,贝斯以色列女执事医疗中心重症监护单元 |
| 第一层标注 | 片段级指示标注,四类:原籍国、语言、种族、族裔 |
| 第二层标注 | 句级种族族裔标签,由十名临床医生标注 |
| 标注规模 | 全部 17,281 句均有双层标注;另有每位标注者的原始文件 |
| 标注方式 | Prodigy 片段标注 + 医生句级标注,共享子集按多数票汇总 |
| 文件格式 | JSON Lines(.jsonl)与 Excel(.xlsx) |
| 许可 | PhysioNet Credentialed Health Data License 1.5.0,须签 DUA 并持证访问 |
| 典型用途 | 种族族裔信息抽取模型、结构化字段缺失补齐方法研究、健康公平与标注偏差方法学 |
§1 它要解决的具体麻烦
1.1 结构化人口学字段的三重缺口
把"种族族裔不准"拆开看,其实是三个不同的问题,各自需要不同的解法,而这个区分决定了 C-REACT 该被用在哪个环节。
第一重是缺失。患者没填、登记员没问、系统迁移时字段丢了,结果就是这一栏为空。缺失的危害不平均:空值集中的人群往往正是研究最想覆盖的人群,于是"缺失"本身成为选择偏差的来源——有完整人口学信息的患者进了队列,没有的被静默丢掉,队列看起来完整,实际上少了最难触达的那一批人。
第二重是不准。登记员按外貌猜、按姓氏猜、按口音猜,与患者自报不一致的情况在多份研究中反复出现。这类错误的隐蔽之处在于它不表现为空值,而表现为一个看起来正常的错误取值,任何下游的按组分层都会把这个错误一路带到底。
第三重是粒度不够。这是最难修的一重,因为前两重是"有没有"和"对不对",第三重是"够不够细"。把亚裔内部的华裔、印度裔、越南裔、菲律宾裔压进同一个类目,把拉美裔内部的墨西哥裔、古巴裔、波多黎各裔压进同一个类目,语言可及性、饮食相关慢性病风险、移民代际差异全部被抹掉。官方页面举出的正是这类例子:亚裔群体内部因英语熟练度不同,精神卫生服务的可及性差异很大;因原籍国不同,癌症发病率也不同。
1.2 为什么"回到文本里找"是唯一现实的补法
三条路里,重新采集自报数据最准,但在回顾性数据库上做不动——患者早已出院,有的已经去世,伦理审批与联系成本都不允许。用姓氏或居住地区做推断(比如基于姓氏的族裔推断、基于地理编码的人口学插补)便宜,但推断的是概率而不是身份,而且这类方法本身已经被反复指出会放大刻板印象。
剩下的一条路是读文本。临床病历的社会史、既往史、主诉里本来就写着"患者近期从法国移民"“需要西班牙语翻译”“患者是一名二十三岁的韩裔女性”。这些信息不是为研究写的,是照护过程中自然留下的,粒度远高于选择框。代价是它散落在自由文本里,靠人力逐条读不现实,必须靠模型;而训练模型需要参考标准标注——这恰恰是 C-REACT 要提供的东西。
1.3 三条常见的错误期待
第一条,期待它是"MIMIC-III 的族裔字段修正版"。它不是修正,是另外一份句子级证据。它给出的标签仍然出自照护者的书写,与结构化字段可能是同一来源的两种记录,也可能互相矛盾。想用它"校验"结构化字段,必须先定义清楚两者不一致时该信谁,而这个决定官方不会替你做。
第二条,期待标签等同于患者身份。官方把这一点写成了主要局限:所有信息来自书写病历的照护者的主观视角,无法保证是患者自报。把"文本里说患者是黑人"当成"患者自认是黑人",是把记录行为当成身份声明,两者之间隔着登记场景、照护者偏见、以及患者当时愿不愿意说。
第三条,期待它能直接改善下游临床预测模型。它能改善的是"信息抽取"这一环,不是"临床预测"这一环。把抽取出的族裔作为一个特征塞进风险预测模型,等于把照护者的主观判断固化成模型的输入,临床上可能转化为差异化的处置建议。官方的伦理声明专门针对这一点做了提醒。
1.4 它能给到的与给不到的
| 你的需求 | 它给的 | 够不够 |
|---|---|---|
| 训练句子级种族族裔分类器 | 17,281 句带句级标签,共享子集为多数票结果 | 够做方法与基线,句子量不足以支撑大规模预训练 |
| 训练片段级指示词抽取模型 | 17,281 句带片段级跨度标注,四类指示 | 够,且跨度标注可直接做序列标注 |
| 研究"从文本推断"与"自报"的差距 | 双层标注 + 原始标注文件 + 标注指南 | 够,这是它设计上最支持的用法 |
| 补齐 MIMIC-III 缺失的结构化字段 | 句子级标签可聚合到患者级 | 可做,但聚合口径要自己定并写清 |
| 研究标注者之间的一致性与分歧 | 共享子集有十位医生的原始标注文件 | 够,可复算一致度并分析分歧来源 |
| 评估临床风险评分中的族裔系数 | 无此项 | 不够,也不应该用它做这件事 |
| 非美国人群的族裔研究 | 类目为美国联邦标准 | 不够,类目体系本身是美国中心的建构 |
| 门诊病历或其他文书类型 | 仅出院小结 | 不够,文体与信息密度差异大 |
1.5 你的处境与它能帮到的事
| 你的处境 | 它能帮你什么 | 下一步该做什么 |
|---|---|---|
| 你有一个 MIMIC-III 队列,结构化族裔字段缺得厉害 | 提供同一批患者的句子级证据,可按患者编号聚合补齐 | 先定聚合规则(例如患者任一句被标为某类即算该类),把规则写进方法章节 |
| 你在做临床信息抽取,缺参考标准 | 两层标注各 17,281 句,且公开了标注指南 | 用指示标注做跨度任务,用句级标签做分类任务,分开报告 |
| 你在做健康公平的方法学研究 | 分歧本身是研究对象:十位医生对同一句的不同判法都在文件里 | 从共享子集的原始文件复算一致度,重点看非拉美裔与"无信息"类的低一致 |
| 你在审计一个已有的族裔推断模型 | 提供独立于姓氏与地理编码的标注来源 | 用它做外部测试,并单独报告在"无信息"类上的表现 |
| 你想用它做下游临床预测 | 官方不建议这样直接用 | 若要使用,先做偏差审计,并在论文里显式声明标签非自报 |
| 你要教医学自然语言处理的标注方法学 | 标注指南、双层标注、原始分歧文件三样齐全 | 用共享子集讲一致度,用单一子集讲"只有一人标"的局限 |
1.6 一句话判断与四条边界
它不适合当"身份的替代来源",而适合当"记录行为的一面镜子":让你看清临床文本里究竟写了什么、不同医生会从中读出什么,以及这两者离患者自报有多远。
不适合拿它当患者自报数据。 官方把"无法保证是患者自报"写成数据集的主要局限。任何把标签当作身份声明使用的研究设计,都需要在论文里显式说明这一层中介。
不适合直接喂给临床预测模型。 用它训练出的族裔变量本质是照护者判断的压缩,把它作为风险模型的输入,会把记录环节的主观性带进临床决策环节。
不适合做非美国人群的族裔研究。 类目体系源自美国联邦标准与人口普查口径。其他国家与地区对种族、族裔、民族的定义不同,强行映射会得到名义上可比、实质上不可比的结果。
不适合对单一子集做一致性分析。 单一标注子集的 11,447 句每句只有一名医生标注,官方未做多数票汇总。一致度只能在共享子集上算。
§2 数据构成与规格
2.1 两层标注压在同一批句子上
C-REACT 的结构可以概括成"一个中心语料、两套标注、三类文件"。中心语料是 17,281 句,官方称为 central corpus;两套标注都覆盖这全部 17,281 句,而不是各标一半;三类文件是两份整理好的 jsonl、一批 xlsx 原始标注文件,以及标注指南。
这个设计的用意在于可比性。如果两套标注各标一批句子,就无法回答"这句话里明明提到了原籍国,为什么医生没给出族裔标签"这类问题;标在同一批句子上,两层之间可以逐句对照,分歧才成为可分析的对象。句子编号(整理文件中为 sentence_id,原始 xlsx 中为 ID)是唯一的对齐键。
2.2 目录结构与文件组成
官方的数据描述段给出了明确的目录划分:
| 路径 | 内容 | 规模 |
|---|---|---|
collected_data/indicators_df.jsonl |
Prodigy 输出的片段级跨度标注,附句子文本 text 与词元 tokens,另附 MIMIC NOTEEVENTS 的就诊号、患者号、病历号 |
17,281 句 |
collected_data/all_re_assignments_df.jsonl |
句级种族族裔标签,每个类目一列,种族列以 RACE 为前缀、族裔列以 ETH 为前缀,附 sentence_id 与子集标记 |
17,281 句 |
raw_race_ethnicity_assignment_annotations/ |
每位标注者的原始种族族裔标注文件,共享子集为 6 个以 all_clinician_sentences_ 为前缀、编号 0–5 的 xlsx |
6 个文件 |
| 上述目录下的子目录 | 单一标注子集分配给各标注者的句子,每人一个 xlsx,格式与共享子集一致 | 按标注者数量而定 |
两份 jsonl 是"整理过"的版本:指示标注来自 Prodigy 导出,标签是多数票结果。原始 xlsx 是"没整理"的版本:每位医生自己的判断都在里面,被标上的单元格有字符(最常见是 x),空白单元格(含只有空格的单元格)表示未标。
2.3 字段字典
下表把官方点名字段逐条列出。需要注意:C-REACT 没有传统意义上的"表头清单",字段含义是从数据描述段与文件命名规则归纳出来的,实际列名以下载到的文件首行为准。
| 字段 | 所在文件 | 取值形态 | 含义 | 使用注意 |
|---|---|---|---|---|
sentence_id |
all_re_assignments_df.jsonl |
整数编号 | 句子主键 | 与原始 xlsx 的 ID 对应 |
ID |
原始 xlsx | 整数编号 | 同一主键的另一种写法 | 跨文件对齐时须改名为 sentence_id |
text |
两份 jsonl | 字符串 | 句子原文 | 已去标识化,来自 MIMIC-III |
tokens |
indicators_df.jsonl |
词元列表 | 分词结果 | 由标注流程产生,不一定等于你自己的分词 |
spans |
indicators_df.jsonl |
跨度列表 | Prodigy 输出的片段标注,含起止位置与类别 | 偏移量相对于该句,不是整篇病历 |
visit_id |
indicators_df.jsonl |
编号 | 就诊标识,来自 MIMIC NOTEEVENTS | 与 MIMIC-III 的住院号对齐 |
patient_id |
indicators_df.jsonl |
编号 | 患者标识 | 患者级划分的分组键 |
note_id |
indicators_df.jsonl |
编号 | 病历标识 | 一句可能对应多篇病历中的一篇 |
RACE_* 系列列 |
all_re_assignments_df.jsonl |
标记字符 | 句级种族标签,每个类目一列 | 多个类目可同时被标 |
ETH_* 系列列 |
all_re_assignments_df.jsonl |
标记字符 | 句级族裔标签,每个类目一列 | 与种族独立标注 |
shared_subset |
all_re_assignments_df.jsonl |
布尔标记 | 该句是否属共享标注子集 | 共享子集才有多数票标签 |
single_subset |
all_re_assignments_df.jsonl |
布尔标记 | 该句是否属单一标注子集 | 单一子集只有单人标注 |
Sentence |
原始 xlsx | 字符串 | 句子原文 | 与 jsonl 的 text 同源 |
| 各类目列 | 原始 xlsx | 字符或空 | 该标注者给该句标的类目 | 空白含纯空格单元格,读取时要先清洗 |
2.4 一句句子的完整解剖
把两份文件按 sentence_id 内连接之后,一句句子的完整形态是:原文 + 词元序列 + 零到四个指示跨度(各自带类别与起止)+ 七个种族列与四个族裔列的标记状态 + 它属于哪个子集。
关键在"零到四个"和"多个类目可同时被标"这两点。前者说明指示标注是多标签而非单标签——一句里可以同时出现原籍国与语言两类跨度;后者说明句级标签同样不是互斥的,官方也明确说 Not Covered 与 No Information Indicated 两类在种族和族裔两个维度上是独立使用的。把标签当成单分类做 softmax,是对这套体系最常见的误读。
另一个容易忽略的点是空白单元格的处理。官方专门写明:被标上的单元格有任意字符,最常见是 x,而空白单元格(包括只含空格的单元格)不算标注。用 Excel 或 pandas 读取时,只含空格的单元格常被读成非空字符串,直接 notna() 判断会把它们误算成正向标注。
2.5 主键映射:三层编号通往 MIMIC-III
C-REACT 本身不含临床变量,全部临床信息要靠编号回到 MIMIC-III 去取。映射关系分三层:
| 层级 | 键 | 通向哪里 | 用途 |
|---|---|---|---|
| 句子 | sentence_id / ID |
C-REACT 内部两份文件与原始 xlsx | 双层标注对齐、原始分歧复算 |
| 病历 | note_id |
MIMIC-III NOTEEVENTS 的病历编号 |
取回完整病历原文与文书类型 |
| 就诊 | visit_id |
MIMIC-III 的住院号 | 与诊断、用药、实验室检查对齐 |
| 患者 | patient_id |
MIMIC-III 的患者编号 | 患者级划分、与结构化人口学字段对照 |
患者级划分是这里最要紧的一件事。17,281 句来自 12,000 名患者、13,507 份病历,也就是说平均每名患者贡献一句以上、每份病历抽出的句子也不止一句。同一患者的多个句子共享同一个人的语言习惯、同一个照护团队的书写风格、同一次住院的背景。按句子随机切分,等于把同一个人放进训练集和测试集两侧,模型只要记住这个人的表述方式就能拿分——而这分在真实场景里一文不值。正确做法是先用 patient_id 分组,再做 GroupKFold 或按编号区间切。
2.6 标签体系:十一个列与它们的来源
句级标签的类目沿用美国联邦标准,另加两个官方自建的类目。
| 维度 | 类目 | 官方说明 |
|---|---|---|
种族 RACE_* |
美洲印第安人或阿拉斯加原住民 | 美国行政管理和预算局五类之一 |
种族 RACE_* |
黑人或非裔美国人 | 同上,官方常写作 Black/AA |
种族 RACE_* |
亚裔 | 同上 |
种族 RACE_* |
夏威夷原住民或其他太平洋岛民 | 同上 |
种族 RACE_* |
白人 | 同上 |
种族 RACE_* |
Not Covered | 该句应被赋予种族标签,但上述类目都不够用 |
种族 RACE_* |
No Information Indicated | 唯一的负类,该句信息不足以赋予种族标签 |
族裔 ETH_* |
西班牙裔或拉美裔 | 美国联邦标准两个族裔类目之一 |
族裔 ETH_* |
非西班牙裔或非拉美裔 | 同上 |
族裔 ETH_* |
Not Covered | 该句应被赋予族裔标签,但上述类目都不够用 |
族裔 ETH_* |
No Information Indicated | 唯一的负类,该句信息不足以赋予族裔标签 |
指示标注的类目则是四个,官方把它们分成"间接"与"直接"两组:
| 组 | 类目 | 描述 | 官方给的例子 |
|---|---|---|---|
| 间接 | Country | 讨论患者的原籍国、民族或地理祖先 | “患者近期从法国移民”;“患者是一名二十三岁的韩裔女性” |
| 间接 | Language | 讨论主要语言、偏好语言或所说的语言 | “患者需要西班牙语翻译”;“患者俄语流利” |
| 直接 | Race | 直接提及美国人口普查的种族类目 | “患者是一名美洲印第安老人”;“患者是一名四十二岁的非裔女性” |
| 直接 | Ethnicity | 直接提及美国人口普查的族裔类目 | “患者二十三岁,拉美裔”;“患者的母亲是拉美裔” |
"间接"与"直接"的划分是本套标注最值得琢磨的地方。官方承认,语言与原籍国并不是族裔,而是可能被用来推断族裔的线索。把它们单独标出来,等于把"事实"与"推断"在数据层面分开存放:你可以只用直接类目训练一个保守的模型,也可以把间接类目一起用上换召回率,而代价由你自己权衡并在论文里写清。
§3 它是谁的数据
3.1 贡献者与机构
官方页面列出十七位作者,机构分布集中在美国东海岸的几家学术医学中心与国家医学图书馆。
| 角色 | 人员与机构 |
|---|---|
| 第一作者与共同维护人 | Oliver Bear Don’t Walk IV,华盛顿大学生物医学信息学与医学教育系 |
| 共同维护人(通讯侧) | Noémie Elhadad,哥伦比亚大学欧文医学中心生物医学信息学系 |
| 主要贡献机构 | 哥伦比亚大学欧文医学中心生物医学信息学系 |
| 其他参与机构 | 哈佛医学院、布莱根妇女医院急诊医学系、纽约长老会医院、One Fact Foundation、美国国家医学图书馆 |
| 资助 | 国家医学图书馆 T15LM007079、医疗研究与质量署 T32HS026121、ACM SIGHPC 计算与数据科学奖学金、国家医学图书馆与国立卫生研究院院内研究项目 |
官方在致谢里点名了 Adler Perotte 与 Karthik Natarajan 对本项目的指导,以及 Alistair Johnson 与 Travis Goodwin 在发表流程上的协助;并明确 OBDW 与 NE 是数据集的主要维护者,负责后续维护与更新。
3.2 时间线
| 时间 | 事件 |
|---|---|
| 2001–2012 | 源病历产生:贝斯以色列女执事医疗中心重症监护单元的临床记录 |
| MIMIC-III v1.4 时期 | 出院小结进入 MIMIC-III,成为抽句来源 |
| 标注阶段 | 四名非临床标注者完成片段级标注;十名临床医生完成句级标注 |
| 2024 年 | 配套论文发表于 Scientific Data |
| 2024 年 10 月 21 日 | 版本 1.0.0 在 PhysioNet 发布,发布说明写"第一版" |
一个值得注意的细节:官方正文里提到"经更正后的新版 C-REACT 反映了这一改动",指的是共享子集中有一句、单一子集中有五句,在后续核对中被更正为含正向指示。这说明 1.0.0 已经是更正后的状态,比配套论文所描述的数据略有更新。引用论文与使用数据之间因此存在细微差异,写方法章节时应以 1.0.0 的实际文件为准。
3.3 采集场景:重症监护单元的出院小结
源病历的范围是明确的:MIMIC-III v1.4 的出院小结(discharge summaries),来自贝斯以色列女执事医疗中心的重症监护单元,时间为 2001 年至 2012 年。
这个场景带来三个直接推论。第一,人群是危重症住院患者,不是普通门诊人群,年龄结构、疾病谱、住院时长都与一般人群不同。第二,文书类型只有出院小结一种,社会史与既往史章节的信息密度高于护理记录或手术记录,换成其他文体后模型的表现不能直接套用。第三,时间跨度十二年,这期间电子病历系统的模板、临床书写习惯、机构的人口学采集规范都在变,十二年是被合并进同一个语料的。
3.4 来源层次:从六万份病历到一万七千句
官方把抽取过程写成了一个漏斗,四个数字层层收窄:
| 层级 | 规模 | 说明 |
|---|---|---|
| MIMIC-III v1.4 出院小结 | 59,652 份 | 抽句的原始池 |
| 对应患者 | 41,127 名 | 官方页面给出的口径 |
| 候选句 | 794,841 句 | 含患者相关人口学关键词或特定章节标题的句子 |
| 中心语料 | 17,281 句 | 实际标注的句子,来自 13,507 份病历、12,000 名患者 |
收窄靠的是启发式规则:先用 NLTK 从出院小结里抽句,并用规则处理用药清单与诊断清单这类医学列表;再筛出含患者相关人口学关键词(如 male、female、patient)或章节标题(如 Past Medical History、PMH、Social History、SHX)的句子,得到 794,841 句候选;最后对候选句按是否含种族族裔关键词(如 Black、AA、Native American、Latino、Spanish)做优先级排序并采样,同时也有意采入不含种族族裔关键词的句子。
采样策略决定了语料的性质:它是一个按关键词富集的样本,不是自然分布样本。这一点对下游影响极大——在这批句子上训练出的模型,见到的是"已经被判定为可能相关"的句子,把它直接丢到整篇病历上做全量扫描,遇到的是完全不同的先验。官方没有给出候选句到中心语料的具体抽样概率,因此任何"从比例反推总体"的做法都不可行(§10)。
§4 它最独特的东西
4.1 稀缺性:公开临床文本的种族族裔标注极少
种族与族裔标注语料稀缺的原因不是技术,是隐私。官方在背景段里把这一点说得很直白:临床病历的种族族裔标注涉及个体患者的隐私风险,很难公开。相比之下,其他领域的族裔数据(住房抵押贷款披露数据、基于姓氏的族裔推断、临床试验汇总数据)要么不涉及个人临床文本,要么是聚合层面的。
结果就是一个明显的不对称:临床上最需要细粒度人口学信息的场景,恰恰是最难拿到公开标注的场景。共享任务平台提供了大量临床文本标注(命名实体、关系、时序、共指),但种族族裔这一项始终缺位——官方明确写到,国家 NLP 临床挑战赛提供了各类临床文本标注,但没有 C-REACT 这种层级的种族族裔标注。
| 数据形态 | 能否公开 | 粒度 | 与患者身份的关系 |
|---|---|---|---|
| 结构化人口学字段 | 可,随数据库发布 | 粗,联邦标准类目 | 登记来源不明,可能是自报也可能是代填 |
| 临床文本原文 | 需认证访问 | 细,自由文本 | 照护者的书写 |
| 临床文本的种族族裔标注 | 极少公开 | 细,跨度级与句级 | 标注者对书写的解读 |
| 基于姓氏或地理的推断 | 可 | 概率性 | 与身份无关,是统计量 |
| C-REACT | 需认证,但已公开 | 跨度级与句级双层 | 非自报,官方已声明 |
4.2 差异化证据:它给的比"多标了几句"更多
如果只比句子数,17,281 句在临床自然语言处理语料里不算大。它的差异化在另外三处。
第一处是双层标注的对偶结构。绝大多数标注语料只给一种粒度的标签,而 C-REACT 给的是同一批句子的两种视角:非临床标注者标"这句话里提到了什么",临床医生标"这句话指向哪个类目"。这两者之间的一致与不一致本身就是研究对象。
第二处是原始分歧的完整保留。多数公开语料只发布汇总后的金标准,个体差异被抹掉。C-REACT 把每位医生的原始 xlsx 一并发布,十位医生对同一句的不同判法都在文件里。这让"标注者分歧"从一句方法论声明变成了可计算的对象。
第三处是标注指南的公开。官方提供了两套指南(指示标注指南与种族族裔标注指南),作为论文的补充材料。指南让其他团队能够复现标注口径,或者明确声明自己在哪些地方改了口径——这在敏感变量上比在普通变量上重要得多。
4.3 具体案例:四类指示词各长什么样
官方给的例子(§2.6 表格)值得逐条读,因为它们划出了标注的边界。"患者是一名二十三岁的韩裔女性"被归入 Country(原籍国或地理祖先),而不是 Race——说明官方把"韩裔"理解为地理祖先线索,而不是直接的人口普查种族类目。"患者需要西班牙语翻译"被归入 Language,说明语言线索被单独存放,不同族裔推断混在一起。
这条边界的意义在于它守住了"事实"与"推断"的分界。如果"韩裔"被直接标成亚裔,那么模型学到的是"看到韩裔就输出亚裔",而这个映射在某些语境下成立、在另一些语境下不成立(比如韩裔拉美裔)。把它标成 Country,等于把映射权交给下游使用者,并在数据里留下"这是一个地理祖先线索"的记号。
4.4 标注粒度:跨度级与句级的分工
| 层 | 标注者 | 单位 | 类目 | 汇总方式 |
|---|---|---|---|---|
| 指示标注 | 四名非临床标注者 | 句子内的字符跨度 | Country、Language、Race、Ethnicity | 双人标注至达成充分一致,官方口径为 macro F1 超过 0.85 |
| 种族族裔标签 | 十名临床医生 | 整句 | 五个种族类目 + 两个族裔类目 + Not Covered + No Information Indicated | 共享子集按多数票汇总,门槛为至少五人一致 |
两层用了一致性度量的不同工具,这个选择本身就说明了问题的性质。指示标注是跨度级任务,负例数量未知,Cohen’s kappa 需要知道真实负例数才能算,官方因此改用 macro F1,并说明用 macro 而不是 micro 是为了不让多数类主导分数。句级标签是有限类目的分类任务,负例明确,所以用 Cohen’s kappa,做法是拿每位医生与另外九人的多数票比对。
官方报告的一致度结论是:在 Black/AA、Asian、white、Latino 这几类上,医生之间的一致性从"中等"到"几乎完全一致";在被标注句数达到 300 句以上的所有类目中,半数标注者达到几乎完全一致(0.81–1.00),全部标注者至少达到 substantial(0.61–0.80)。同时官方也指出,医生在非拉美裔与"No Information Indicated"这两个族裔类目上的一致度较低。
4.5 边界条件:两个子集的分工与它们的代价
| 子集 | 句数 | 构成 | 标注方式 | 使用边界 |
|---|---|---|---|---|
| 共享标注子集 | 5,834 | 4,834 句含至少一个正向指示 + 1,000 句不含正向指示(后有一句被更正为含正向指示) | 十名医生全部标注,多数票汇总 | 一致度只能在此子集上算;标签为多数票结果 |
| 单一标注子集 | 11,447 | 未获得正向指示标注的句子(后有五句被更正为含正向指示) | 平均分配给各医生,每人标自己那份 | 每句仅单人标注,无多数票,不能算一致度 |
两个子集的构成是有意设计的:把所有含正向指示的句子放进共享子集,让最"有料"的句子获得十人交叉标注与多数票;把剩下的句子分给单人,用有限的人力覆盖更大的句子量。代价是语料内部出现了两种可信度——共享子集的标签有十人背书,单一子集的标签只有一人。
按句子数看,共享子集约占三分之一,单一子集约占三分之二。这意味着如果你不加区分地使用全部 17,281 句,实际上大部分标签只经过一个人的判断。合理的做法是至少把 shared_subset 作为分层变量报告分组结果,或者只用共享子集做需要高可信标签的实验。
§5 怎么拿到
5.1 访问门槛:四道手续
| 手续 | 内容 | 说明 |
|---|---|---|
| 账号 | PhysioNet 认证用户 | 需要完成身份验证 |
| 培训 | CITI Data or Specimens Only Research | 官方列为必需培训 |
| 协议 | PhysioNet Credentialed Health Data Use Agreement 1.5.0 | 签署后方可下载 |
| 许可 | PhysioNet Credentialed Health Data License 1.5.0 | 与 ODC-BY 类开放许可不同,属受控访问 |
此外还有一个现实限制:官方页面在文件区显示"数据在当前区域不可用,因法律或政策限制"。也就是说即使完成了上述手续,所在地区也可能无法访问数据本体。这与 MIMIC-III 本身的访问政策一脉相承——C-REACT 是 MIMIC-III 的派生产物,官方在"父项目"处明确要求同时引用 MIMIC-III Clinical Database v1.4。
5.2 目录结构总览
| 目录 | 内容 | 访问方式 |
|---|---|---|
collected_data/ |
两份整理后的 jsonl | 持证后逐文件下载或整体同步 |
raw_race_ethnicity_assignment_annotations/ |
共享子集的 6 个 xlsx,编号 0–5 | 同上 |
| 上述目录下的子目录 | 单一标注子集各标注者的 xlsx | 同上 |
| 项目主页 | 摘要、背景、方法、数据描述、使用说明、伦理声明 | 无需认证即可阅读 |
一个实操建议:先读主页。因为文件访问受地区限制,而主页全文(含数据描述段的字段说明、目录结构与文件命名)是不受限制的,绝大多数规划工作——决定用哪一层标注、要不要算一致度、如何做患者级划分——都能在拿到数据之前完成。
5.3 批量下载
#-- 1. 建立本地目录
mkdir -p creact && cd creact
#-- 2. 用 PhysioNet 官方工具同步(需先完成认证与 DUA)
wget -r -N -c -np --user=<用户名> --ask-password \
https://physionet.org/files/race-ethnicity-clinical-text/1.0.0/
#-- 3. 查看落盘结构(受地区限制时此步会返回 403)
find . -maxdepth 3 -type f | sort | head -40
官方没有提供整库压缩包,是逐文件目录。若所在地区受限,第 2 步会直接返回 403,此时应联系 PhysioNet 或通过机构合规渠道申请,不要尝试绕过。
5.4 流式读取两份 jsonl
import json
import pandas as pd
#-- 逐行读,避免一次性载入;jsonl 一行一句
def read_jsonl(path):
with open(path, encoding='utf-8') as f:
for line in f:
line = line.strip()
if line:
yield json.loads(line)
rows = []
for r in read_jsonl('collected_data/indicators_df.jsonl'):
rows.append({
'sentence_id': r.get('sentence_id'),
'patient_id': r.get('patient_id'),
'note_id': r.get('note_id'),
'n_span': len(r.get('spans') or []),
'span_label': ','.join(sorted({s.get('label') for s in (r.get('spans') or [])})),
})
ind = pd.DataFrame(rows)
print(ind.shape, ind['n_span'].max())
5.5 对齐两层标注并把 xlsx 的空白洗干净
import pandas as pd
lab = pd.read_json('collected_data/all_re_assignments_df.jsonl', lines=True)
df = ind.merge(lab, on='sentence_id', how='inner')
#-- 原始 xlsx 里"只有空格"的单元格不算标注,必须先清洗
raw = pd.read_excel('raw_race_ethnicity_assignment_annotations/all_clinician_sentences_0.xlsx')
for c in raw.columns:
if raw[c].dtype == object:
raw[c] = raw[c].astype(str).str.strip().replace({'': None, 'nan': None})
#-- 按患者编号分组划分,绝不按句子随机切
from sklearn.model_selection import GroupKFold
gkf = GroupKFold(n_splits=5)
for tr, te in gkf.split(df, groups=df['patient_id']):
assert set(df.loc[tr, 'patient_id']).isdisjoint(set(df.loc[te, 'patient_id']))
break
上面这段里最关键的是最后几行:分组键必须是 patient_id。17,281 句对应 12,000 名患者,同患者的句子高度相关,随机按句切分会把同一患者放到两侧。
5.6 五个坑
| 坑 | 表现 | 规避 |
|---|---|---|
| 空白单元格被误判为正向标注 | xlsx 里只含空格的单元格被读成非空字符串 | 先 strip() 再判空(§5.5) |
| 按句子随机切分 | 同一患者的句子分到训练与测试两侧 | 用 patient_id 做 GroupKFold(§2.5) |
| 把标签当单分类 | 多类目可同时被标,Not Covered 与 No Information Indicated 在种族族裔上独立 | 用多标签二分类而不是 softmax(§2.4) |
| 忽略子集差异 | 约三分之二的句子只有单人标注 | 用 shared_subset 分层报告(§4.5) |
| 用关键词富集样本估计总体 | 中心语料是富集采样,不是自然分布 | 不做任何比例外推(§3.4、§10) |
§6 与库内条目的关系
6.1 关系图谱
| 站内条目 | 数据形态 | 与 C-REACT 的关系 |
|---|---|---|
| MIMIC-III 重症监护临床数据库 | 结构化 + 自由文本,含人口学字段 | 父项目:C-REACT 的句子全部来自它的出院小结 |
| MIMIC-IV-Note 去标识化临床自由文本语料库 | 去标识化自由文本 | 同源不同代:新的文本语料,无种族族裔标注 |
| MIMIC-III 社会决定因素标注集 | 病历句子的社会决定因素标注 | 近邻任务:同为句子级社会属性标注,变量不同 |
| MIMIC 性别多元污名标注集 | 出院小结的污名标注 | 近邻任务:同为敏感社会变量的文本标注 |
| 孕期社会决定因素标注集 | 出院记录的社会决定因素标注 | 同类方法,人群与变量不同 |
| i2b2/n2c2 临床自然语言处理共享任务语料 | 多任务临床文本标注 | 对照任务:任务丰富但不含种族族裔标注 |
| 本数据集 | 句子级种族族裔双层标注 | 唯一把敏感人口学变量做到跨度级与句级的 |
6.2 检索路径
| 你要找的东西 | 检索词 | 会落到哪里 |
|---|---|---|
| 句子从哪儿来 | MIMIC-III、NOTEEVENTS、discharge summary |
§3.3 与 §2.5 的编号映射 |
| 同类敏感变量标注 | SDoH、stigma、gender |
§6.1 表与 §8.3 |
| 通用临床文本标注 | n2c2、i2b2、NER |
§4.1 的稀缺性对照 |
| 标注一致性方法 | Cohen's kappa、macro F1、majority vote |
§4.4 与 §7.2 |
| 去标识化与合规 | HIPAA、deidentification、DUA |
§5.1 的访问门槛 |
6.3 与其他语料的分工判据
| 任务 | 主粮仓该用什么 | C-REACT 的位置 | 原因 |
|---|---|---|---|
| 临床命名实体识别 | 大规模多任务临床语料 | 不适用 | 它的标注只有种族族裔相关四类 |
| 社会决定因素抽取 | 专门的社会决定因素标注集 | 辅助 | 变量相邻但定义不同 |
| 种族族裔信息抽取 | 无可替代 | 主力 | 公开语料里几乎唯一的选择 |
| 标注者分歧与偏差方法学 | 无可替代 | 主力 | 原始分歧文件与指南齐全 |
| 自由文本预训练 | 大规模去标识化临床语料 | 不适用 | 1.7 万句量级远远不够 |
| 结构化字段缺失补齐研究 | MIMIC-III 本身 | 主力证据源 | 需要两层人口学来源做对照 |
| 非美国人群族裔研究 | 本地化语料 | 不适用 | 类目体系是美国中心的建构 |
§7 质量评估与局限性
7.0 阅读本节前的一个前置校正
先纠正一个容易发生的误判:把"标签不是自报"当成"数据质量差"。这两件事完全不同。C-REACT 一开始就没打算记录患者身份,它记录的是临床文本里写了什么、以及不同医生会从中读出什么。用"它不等于自报"来否定它,等于用一把它从未声称要对的尺子去量它。
这个校正会改变五维评分的读法。它在"与身份的接近程度"上拿不到高分,但在"对记录行为的可观测性"上几乎无可替代。把这两件事分开看,才能得出该在什么环节用它的结论。
7.1 五维评分
按常用数据质量维度打分,每项 1–5 分,分数针对"作为种族族裔信息抽取与健康公平方法学研究数据"这个用途:
| 维度 | 分数 | 理由 |
|---|---|---|
| 数据规模 | 3 | 17,281 句、12,000 名患者,做方法学与基线够,做大规模训练不够 |
| 标注质量 | 4 | 双层标注、多数票汇总、一致度达标并公开;但约三分之二句子仅单人标注 |
| 任务适配 | 5 | 公开语料里几乎唯一的跨度级加句级种族族裔标注 |
| 文档完整 | 5 | 官方页面写清了抽样漏斗、类目定义、目录结构、局限与伦理声明 |
| 可获取性 | 2 | 需认证、培训、DUA,且部分地区不可访问 |
五项合计 19 分(满分 25)。分数结构很清楚:方法与文档这一侧很硬,获取与规模这一侧有明确的坎。
7.2 标注质量的两层
第一层是跨度标得准不准。四名非临床标注者双人标注至达成充分一致,官方口径为 macro F1 超过 0.85。选 macro 而非 micro F1 是官方的有意选择,理由是不让多数类主导分数——这同时也意味着这个 0.85 是四类指示的平均水平,个别类的实际一致度可能低于它。
第二层是句级标签稳不稳。十名医生在共享子集上交叉标注,官方报告 Black/AA、Asian、white、Latino 这几类的一致度从"中等"到"几乎完全一致",并明确非拉美裔与"No Information Indicated"这两类的一致度较低。低一致本身是有信息量的:它说明"这句到底算不算没信息"是一个连医生都难以统一判断的问题,把它当成一个干净的金标准类目使用会有风险。
| 用途 | 标签稳定的影响 | 建议 |
|---|---|---|
| 高一致类目的分类建模 | 小,类目边界清晰 | 可直接用多数票标签 |
| 非拉美裔与无信息类的判定 | 大,医生之间分歧明显 | 单独报告这两类的表现,不要混进总指标 |
| 一致度研究 | 正是研究对象 | 从原始 xlsx 复算,与官方口径对照 |
| 单一子集上的任何结论 | 大,仅单人标注 | 标注为探索性结果 |
7.3 已知的、可枚举的偏差
| 偏差 | 表现 | 影响 |
|---|---|---|
| 来源主观性 | 全部信息来自照护者的书写,官方明确无法保证自报 | 标签是记录行为,不是身份声明 |
| 富集采样 | 按种族族裔关键词优先级采样,非自然分布 | 不能外推总体,也不能估计各类目在病历中的出现频率 |
| 类目美国中心 | 沿用美国联邦标准与人口普查类目 | 非美国人群不可直接映射 |
| 单一文书类型 | 仅出院小结 | 换文体的表现不可套用 |
| 单一机构 | 一家医疗中心的重症监护单元 | 书写习惯与人群构成单一 |
| 十二年跨度 | 2001–2012 | 期间模板与采集规范可能变化 |
| 子集可信度不均 | 约三分之二句子仅单人标注 | 混合使用会稀释标签可信度 |
| 更正痕迹 | 六句被更正为含正向指示 | 与配套论文描述略有差异,以文件为准 |
7.4 下游建模的偏差风险:本条最要紧的一节
用 C-REACT 做下游建模时,偏差不是"数据里有一点噪声",而是沿着一条明确的链路传导。把这条链路拆开,每一环都可以审计:
| 环节 | 发生了什么 | 后果 | 可做的审计 |
|---|---|---|---|
| 记录 | 照护者在病历里写下关于原籍国、语言、种族、族裔的内容 | 写什么取决于照护者是否认为相关 | 无,源头不可观测 |
| 标注 | 非临床标注者标跨度、医生标句级类目 | 判断带标注者的先验 | 用原始分歧文件量化 |
| 汇总 | 共享子集按多数票,单一子集单人 | 少数判断被抹掉 | 分层报告共享与单一子集 |
| 聚合 | 句子级标签聚合到患者级 | 聚合规则本身是一种假设 | 换规则做敏感性分析 |
| 建模 | 以聚合结果为特征训练预测模型 | 照护者的主观判断被固化为模型输入 | 与结构化字段对照,报告不一致率 |
| 部署 | 模型输出影响临床处置 | 差异被制度化 | 部署前做亚组审计 |
这条链路上最危险的一步是最后两步。前四步的产物仍然可以被称为"文本里写了什么",第五步之后它变成了"模型认为患者是什么",第六步之后它变成了"系统据此给出不同处置"。官方的伦理声明正是针对这一条链路发声:自报数据更忠实于患者身份,研究者应当谨慎决定何时该用抽取的数据、何时不该,并且无论用哪个粒度的类目,都应对种族与族裔的定义保持明确和透明。
具体到操作层面,有三件事值得写进方法章节:其一,明确写出标签来自文本推断而非自报;其二,把从文本推断的结果与结构化字段做对照,报告两者不一致的情况,而不是只报推断结果;其三,不做任何从本语料外推到总体的比例估计——因为它是关键词富集样本。
7.5 它为何能持续:稀缺的不是句子数,是那个组合
它没有后续版本、句子量不算大、访问还有门槛,但它的位置不容易被替代。要复制它,需要同时具备三样东西:一个可公开认证访问的临床文本库、一批愿意做敏感变量标注的标注者、以及一个愿意把分歧与局限一并公开的团队。第三样最难——多数标注项目只发布金标准,不发布分歧,更不会把"这不是自报"写成数据集的主要局限。只要这三样东西仍然难得,它作为方法学参照物的价值就不会被更大的语料取代。
§8 生态位与历史
8.1 沿革:从结构化字段的抱怨到一份公开语料
C-REACT 的动机在官方背景段里交代得很清楚,它承接的是一条延续多年的批评线:结构化种族族裔数据常常缺失、不充分、不准确;联邦标准的粗类目不足以传达重要的亚群差异;缺失人口学数据的患者因此变得不可见,无法被完整纳入研究,也无从受益于研究。
这条批评线此前缺少一个可操作的出口。指出"结构化字段不好用"的论文很多,能让人动手做点什么的公开资源很少。C-REACT 的做法是把问题切成一个可标注的任务:不去争论该用哪套类目,而是把文本里的线索(原籍国、语言)与直接类目(种族、族裔)分开标好,把选择权留给下游。
8.2 与共享任务生态的关系
官方明确把 C-REACT 与共享任务生态做了区分:国家 NLP 临床挑战赛提供了各类临床文本的标注,但不含 C-REACT 这种层级的种族族裔标注。这个差异不是任务难度的问题,而是任务性质的问题——共享任务通常追求可比的评测指标与清晰的金标准,而种族族裔标注的核心难点恰恰是金标准本身的争议性。
这也解释了它为什么不适合被改造成一个"挑战赛任务":如果强行用多数票标签做排行榜,参赛系统会去拟合那套类目假设,而这套假设官方自己都承认可能有争议。它更适合作为方法学研究的材料,而不是打榜的靶子。
8.3 生态位:证据源而不是金标准
| 角色 | 金标准 | 证据源 |
|---|---|---|
| 典型用法 | 训练与排名 | 方法学研究、对照、偏差审计 |
| 需要的前提 | 标签唯一且无争议 | 分歧可观测、局限已声明 |
| 代表语料 | 常规临床命名实体标注 | C-REACT、其他敏感社会变量标注 |
| 失败模式 | 标注假设被默默继承 | 被当成无争议标签直接使用 |
C-REACT 坐在右边这一列。把它当金标准用,会立刻遇到"标签到底代表谁的判断"这个问题;把它当证据源用,这个问题反而成为研究的起点。
8.4 谁在用,用来做什么
从官方自述的定位看,预期使用者集中在三类:做临床文本种族族裔信息抽取的自然语言处理研究者(用它训练与测试抽取模型)、做健康公平研究的人群科学团队(用它补齐缺失的结构化人口学信息)、以及做标注方法学研究的团队(用它研究一致度、分歧与敏感变量的标注规范)。官方在致谢与资助信息里显示团队背景横跨生物医学信息学、急诊医学、儿科学与国家医学图书馆,这也与上述三类用途吻合。
§9 使用指引
9.1 三种角色的路径
| 角色 | 第一天 | 第一周 | 注意事项 |
|---|---|---|---|
| 自然语言处理研究者 | 读官方数据描述段,确认用哪层标注 | 建立按患者分组的多标签基线,分共享与单一子集报告 | 序数不要做成 softmax(§2.4) |
| 健康公平研究者 | 明确自己的种族族裔定义,与官方类目对照 | 做文本推断与结构化字段的一致性对照 | 不做比例外推(§3.4) |
| 标注方法学研究者 | 取共享子集的原始 xlsx | 复算一致度,重点看非拉美裔与无信息类 | 空格单元格先清洗(§5.5) |
9.2 一条最短的可用流程
#-- 1. 先读项目主页(无需认证即可读全文)
curl -sL https://physionet.org/content/race-ethnicity-clinical-text/1.0.0/ > home.html
#-- 2. 完成认证、CITI 培训与 DUA 签署后同步数据
wget -r -N -c -np --user=<用户名> --ask-password \
https://physionet.org/files/race-ethnicity-clinical-text/1.0.0/
#-- 3. 校验两份 jsonl 的行数与官方规模是否一致
wc -l collected_data/indicators_df.jsonl collected_data/all_re_assignments_df.jsonl
import pandas as pd
ind = pd.read_json('collected_data/indicators_df.jsonl', lines=True)
lab = pd.read_json('collected_data/all_re_assignments_df.jsonl', lines=True)
df = ind.merge(lab, on='sentence_id', how='inner')
#-- 先按患者去重,看清楚患者级规模再决定划分方式
print('句子数', len(df), '患者数', df['patient_id'].nunique(),
'病历数', df['note_id'].nunique())
print('共享子集句数', int(df['shared_subset'].sum()),
'单一子集句数', int(df['single_subset'].sum()))
9.3 引用方式
| 引用对象 | 内容 |
|---|---|
| 数据集 | C-REACT: Contextualized Race and Ethnicity Annotations for Clinical Text, version 1.0.0, PhysioNet, 2024 |
| 数据集标识 | DOI 10.13026/z8tq-v658(版本 1.0.0) |
| 配套论文 | Contextualized race and ethnicity annotations for clinical text from MIMIC-III,Scientific Data,2024 |
| 父项目 | MIMIC-III Clinical Database v1.4,官方要求同时引用 |
| 平台 | PhysioNet 平台论文,按官方页面 Cite 按钮生成 |
写论文时建议同时注明:使用的版本号、使用的是共享子集还是全部句子、患者级聚合规则、以及标签来自文本推断而非自报这一声明。
§10 AI 使用声明
| 项目 | 声明 |
|---|---|
| 文本生成 | 本文由 AI 辅助撰写,编辑把关结构与事实 |
| 数字来源 | 规模、结构、边界三类数字来自 PhysioNet 官方项目页 v1.0.0 的摘要、方法、数据描述与使用说明段 |
| 文件核验 | 文件目录(/files/race-ethnicity-clinical-text/1.0.0/)在当前区域返回 403,文件名、目录结构与字段含义以官方数据描述段的文字说明为准,未逐文件核对 |
| 不一致说明 | 官方提及共享子集一句、单一子集五句被更正为含正向指示,1.0.0 与配套论文描述存在细微差异,本文以 1.0.0 为准 |
| 论文信息 | 配套论文仅通过检索获得题名、作者、PMID 与 DOI,未读全文;引用细节以论文原文为准 |
| 未核验内容 | 各文件字节大小与确切行数、单一子目录内 xlsx 的确切数量、各类目的标注句数与占比、候选句到中心语料的抽样概率、每位标注者的具体分工、标注指南补充文件的确切文件名 |
| 图像 | 无配图;封面为生成式提示词,不含真实病历内容 |
| 免责 | 本文不构成临床建议;种族与族裔属敏感变量,数据使用须遵守 DUA 1.5.0 与官方伦理声明 |
常见误读(避坑清单)
| 说法 | 实际 | 证据 |
|---|---|---|
| 「它的族裔标签是患者自报的」 | 否,来自照护者的书写,官方明确无法保证自报 | 官方使用说明段把它列为数据集的主要局限 |
| 「17,281 句就是 17,281 名患者」 | 17,281 句来自 12,000 名患者、13,507 份病历 | 官方摘要与数据描述段 |
| 「可以外推各类目在病历中的出现频率」 | 中心语料是按种族族裔关键词富集采样,非自然分布 | 官方方法段说明按关键词优先级采样 |
| 「标签是单分类,一句只能有一个类目」 | 多个类目可同时被标;Not Covered 与 No Information Indicated 两维独立 | 官方说明这两个类目在种族与族裔上独立使用 |
| 「全部句子都经过十位医生交叉标注」 | 仅共享子集 5,834 句;单一子集 11,447 句为单人标注 | 官方方法段给出两个子集的句数 |
| 「一致度可以在全语料上算」 | 一致度只在共享子集上有意义 | 单一子集每句仅一名医生标注 |
| 「韩裔应被标成亚裔」 | 官方把这类表述归入 Country(原籍国与地理祖先),不是直接种族类目 | 官方指示类目示例表 |
| 「它可以替代结构化人口学字段」 | 它是另一份句子级证据,与结构化字段可能矛盾 | 官方使用说明段把它定位为 MIMIC-III 种族族裔数据的扩展 |
| 「拿到数据就能做临床预测」 | 官方要求谨慎决定何时用抽取数据,并提醒自报更忠实于身份 | 官方伦理声明段 |
| 「下载只要注册就行」 | 需认证账号、CITI 培训、签署 DUA 1.5.0,且部分地区不可访问 | 官方访问区与文件区提示 |
FAQ
Q1:C-REACT 里的种族族裔标签是患者自报的吗?
不是,这一点官方写得非常明确。所有信息都来自最初书写病历的照护者的主观视角,官方在数据集的主要局限里直接写明无法保证是患者自报。因此这些标签应当被理解为"临床文本里记录了什么"以及"标注者从中读出了什么",而不是患者对自己身份的声明。任何把它当作自报身份使用的研究设计,都需要在论文里显式说明这层中介,并说明为什么在这个场景下可以接受。
Q2:17,281 句、12,000 名患者、13,507 份病历,这三个数字什么关系?
它们是三个不同层级的计数。抽句的原始池是 MIMIC-III v1.4 的 59,652 份出院小结,对应 41,127 名患者;从中按启发式规则筛出 794,841 句候选句;最后采样得到 17,281 句,官方称为中心语料。这 17,281 句分布在 13,507 份病历中、来自 12,000 名患者。所以一句不等于一名患者,一名患者也不止一句。做数据集划分时必须先按 patient_id 聚合,不能按句子随机切分。
Q3:为什么官方要分共享子集和单一子集?对我用数据有什么影响?
这是人力约束下的设计:把含正向指示的 4,834 句加上 1,000 句不含正向指示的句子组成 5,834 句的共享子集,由十名医生全部标注并按多数票汇总,用来保证核心句子有多人背书并可以算一致度;剩下的 11,447 句平均分配给各医生,每人只标自己那份,用来扩大覆盖。影响是直接的——如果你不加区分地使用全部 17,281 句,其中约三分之二的标签只经过一个人的判断。至少应当把 shared_subset 作为分层变量分别报告结果。
Q4:能直接用它训练下游临床预测模型吗?
能训练"信息抽取模型",但要极其谨慎地对待"临床预测模型"。官方伦理声明的原文是:虽然用基于这类数据集训练的自然语言处理模型去识别患者的种族族裔信息是有用的,但使用时必须带上一个前提——自报数据更忠实于患者身份,研究者应当仔细考虑何时适合使用抽取的数据、何时不适合。把照护者的主观判断固化成风险模型的输入特征,可能转化为差异化的临床处置,因此在部署前必须做亚组审计。
Q5:它有几个版本?访问需要什么手续?
官方版本列表只有 1.0.0,发布于 2024 年 10 月 21 日,发布说明写的是 C-REACT 的第一版,此后没有后续版本。访问需要 PhysioNet 认证账号、完成 CITI Data or Specimens Only Research 培训,并签署 PhysioNet Credentialed Health Data Use Agreement 1.5.0,许可为 PhysioNet Credentialed Health Data License 1.5.0。此外文件区提示数据在某些地区因法律或政策限制不可用。由于它是 MIMIC-III 的派生产物,官方要求使用与引用时同时标注父项目 MIMIC-III Clinical Database v1.4。
术语表
| 术语 | 解释 |
|---|---|
| 种族族裔(RE) | race and ethnicity,本研究领域对种族与族裔的合称 |
| 片段级标注 | span-level annotation,标出句子中具体哪几个词承载信息 |
| 句级标签 | sentence-level label,对整句赋予一个类目 |
| 指示词 | indicator,官方四类:原籍国、语言、种族、族裔 |
| 中心语料 | central corpus,被两层标注共同覆盖的 17,281 句 |
| 共享标注子集 | 由十名医生共同标注并按多数票汇总的 5,834 句 |
| 单一标注子集 | 分配给单个医生标注的 11,447 句 |
| 多数票 | majority vote,官方定义为至少五名医生一致 |
| Cohen’s kappa | 排除偶然一致后的一致性系数,用于有限类目分类 |
| macro F1 | 各类 F1 的算术平均,用于避免多数类主导分数 |
| OMB 类目 | 美国行政管理和预算局的五个种族类目与两个族裔类目 |
| Not Covered | 该句应被赋予标签但既有类目都不够用 |
| No Information Indicated | 唯一的负类,信息不足以赋予标签 |
| Prodigy | 官方使用的标注软件,产出跨度标注 |
| NLTK | 官方用于从病历中抽取句子的 Python 工具包 |
| 富集采样 | 按关键词优先级抽取样本,不代表自然分布 |
| 自报数据 | self-reported data,患者自己报告的身份信息 |
| DUA | Data Use Agreement,数据使用协议 |
| 去标识化 | deidentification,移除可识别个人身份的信息 |
| 分组划分 | GroupKFold,按分组键把同一组整体放入一侧 |
| 偏差审计 | bias audit,在亚组上系统性检查模型表现差异 |
附录 A:核心数字核对表
| 项 | 值 | 出处 | 来源层级 |
|---|---|---|---|
| 句子数(中心语料) | 17,281 | 官方摘要与数据描述段 | 官方页面 |
| 患者数 | 12,000 | 官方摘要 | 官方页面 |
| 病历数 | 13,507 | 官方方法段 | 官方页面 |
| 源出院小结数 | 59,652 | 官方方法段(MIMIC-III v1.4) | 官方页面 |
| 源患者数 | 41,127 | 官方方法段 | 官方页面 |
| 候选句数 | 794,841 | 官方方法段 | 官方页面 |
| 共享标注子集句数 | 5,834 | 官方方法段 | 官方页面 |
| 其中含正向指示的句子 | 4,834 | 官方方法段 | 官方页面 |
| 其中不含正向指示的句子 | 1,000 | 官方方法段 | 官方页面 |
| 单一标注子集句数 | 11,447 | 官方方法段 | 官方页面 |
| 指示标注者人数 | 4(非临床) | 官方方法段 | 官方页面 |
| 句级标注医生人数 | 10 | 官方方法段 | 官方页面 |
| 指示标注一致度门槛 | macro F1 超过 0.85 | 官方方法段 | 官方页面 |
| 多数票门槛 | 至少 5 名医生一致 | 官方方法段 | 官方页面 |
| 高一致类目的 kappa 区间 | 0.81–1.00(半数标注者)、0.61–0.80(全部标注者) | 官方方法段 | 官方页面 |
| 指示类目数 | 4 | 官方方法段与示例表 | 官方页面 |
| 种族列数 | 5 个联邦类目 + Not Covered + No Information Indicated | 官方方法段 | 官方页面 |
| 族裔列数 | 2 个联邦类目 + Not Covered + No Information Indicated | 官方方法段 | 官方页面 |
| 共享子集原始文件数 | 6 个 xlsx,前缀 all_clinician_sentences_,编号 0–5 |
官方数据描述段 | 官方页面 |
| 作者数 | 17 | 官方页面作者列表 | 官方页面 |
| 时间跨度 | 2001–2012 | 官方摘要 | 官方页面 |
| 版本与发布日期 | 1.0.0,2024 年 10 月 21 日 | 官方页面版本区与发布日期 | 官方页面 |
| 版本 DOI | 10.13026/z8tq-v658 | 官方页面 Discovery 区 | 官方页面 |
| 许可 | PhysioNet Credentialed Health Data License 1.5.0 | 官方页面 Access 区 | 官方页面 |
| 父项目 | MIMIC-III Clinical Database v1.4 | 官方页面 Parent Projects 区 | 官方页面 |
附录 B:数字的来源分层
第一层:官方页面正文。 句子数、患者数、病历数、源出院小结数、候选句数、两个子集的句数、标注者人数、一致度口径、类目构成、时间跨度、版本与日期、许可与 DOI。这些数字直接来自项目主页的摘要、方法、数据描述与使用说明段。
第二层:官方页面的结构性描述。 目录结构、文件名与前缀、字段名称(sentence_id、patient_id、note_id、visit_id、shared_subset、single_subset、RACE 与 ETH 前缀)、xlsx 的标注写法。这些来自数据描述段的文字说明,未逐文件核对——文件目录在当前区域返回 403。
第三层:检索获得的论文元信息。 配套论文题名、作者列表、PMID 39638783、DOI 10.1038/s41597-024-04183-2。仅取元信息,未读全文。
第四层:未核实。 文件字节大小、行数的逐文件确认、单一子目录内 xlsx 的确切数量、各类目被标注的句数、候选句到中心语料的抽样概率、标注指南补充文件的确切文件名。这些需要持证下载后统计,本文按要求只写规模、结构、边界三类数字,不做任何分布性统计。
附录 C:完整参考文献
| 编号 | 文献 | 链接 | 用途 |
|---|---|---|---|
| 1 | C-REACT: Contextualized Race and Ethnicity Annotations for Clinical Text v1.0.0 | https://physionet.org/content/race-ethnicity-clinical-text/1.0.0/ | 全部规模、结构、边界数据的来源 |
| 2 | Contextualized race and ethnicity annotations for clinical text from MIMIC-III(Sci Data, 2024) | https://doi.org/10.1038/s41597-024-04183-2 | 配套论文,PMID 39638783 |
| 3 | PhysioNet 平台综述(Nature Health, 2026) | https://doi.org/10.1038/s44360-026-00096-z | 托管模式与引用规范 |
| 4 | MIMIC-III 重症监护临床数据库 | https://www.qianfanghub.com/ai-ready-dataset/mimic-iii/106 | 父项目,句子来源 |
| 5 | MIMIC-IV-Note 去标识化临床自由文本语料库 | https://www.qianfanghub.com/ai-ready-dataset/mimic-iv-note/47 | §6.1 对照 |
| 6 | MIMIC-III 社会决定因素标注集 | https://www.qianfanghub.com/ai-ready-dataset/annotation-dataset-sdoh/1500 | 近邻任务对照 |
| 7 | MIMIC 性别多元污名标注集 | https://www.qianfanghub.com/ai-ready-dataset/mimic-iv-ext-gender-stigma/1689 | 敏感变量标注对照 |
| 8 | i2b2/n2c2 临床自然语言处理共享任务语料 | https://www.qianfanghub.com/ai-ready-dataset/i2b2-n2c2-nlp/14 | §4.1 与 §8.2 对照 |
附录 D:任务代码
任务一:只做指示跨度的序列标注基线
import json
import pandas as pd
#-- 把 Prodigy 的跨度摊平成逐句标签集合
def spans_of(r):
out = set()
for s in (r.get('spans') or []):
lab = s.get('label')
if lab:
out.add(lab)
return out
rows = []
with open('collected_data/indicators_df.jsonl', encoding='utf-8') as f:
for line in f:
line = line.strip()
if not line:
continue
r = json.loads(line)
rows.append({'sentence_id': r.get('sentence_id'),
'patient_id': r.get('patient_id'),
'labels': sorted(spans_of(r))})
ind = pd.DataFrame(rows)
print(ind.shape)
任务二:把句级标签聚合到患者级,并做敏感性分析
import pandas as pd
from sklearn.model_selection import GroupKFold
lab = pd.read_json('collected_data/all_re_assignments_df.jsonl', lines=True)
race_cols = [c for c in lab.columns if c.startswith('RACE')]
eth_cols = [c for c in lab.columns if c.startswith('ETH')]
def has_label(v):
#-- xlsx 与 jsonl 都可能出现只有空格的单元格
return isinstance(v, str) and v.strip() != ''
#-- 聚合规则一:患者任一句被标为该类即算该类;规则二:至少两句
def aggregate(df, min_sent=1):
long = []
for c in race_cols + eth_cols:
sub = df[df[c].apply(has_label)]
cnt = sub.groupby('patient_id').size()
long.append(pd.DataFrame({'patient_id': cnt.index,
'category': c, 'n_sentence': cnt.values}))
long = pd.concat(long, ignore_index=True)
return long[long['n_sentence'] >= min_sent]
for k in (1, 2):
agg = aggregate(lab, min_sent=k)
print('规则:至少', k, '句 →', len(agg), '条患者-类目记录')
#-- 按患者分组划分,确保同一患者不跨两侧
gkf = GroupKFold(n_splits=5)
for tr, te in gkf.split(lab, groups=lab['patient_id']):
assert set(lab.iloc[tr]['patient_id']).isdisjoint(set(lab.iloc[te]['patient_id']))
break
第二段代码里的敏感性分析是这套数据上最值得做的一件事:换一个聚合规则,看结论是否翻转。如果规则一与规则二给出的患者级结论差别很大,那说明结论对聚合口径高度敏感,论文里就必须把这个口径作为主要方法学声明写出来,而不是放在附录里。
附录 E:如果只记五件事
| 序号 | 记住什么 | 为什么 |
|---|---|---|
| 1 | 17,281 句、12,000 名患者、13,507 份病历,2001–2012 | 这四个数字定义了一切用法与限制 |
| 2 | 标签来自文本推断,不是患者自报 | 官方把它写成数据集的主要局限 |
| 3 | 共享子集 5,834 句有十人标注,单一子集 11,447 句只有一人 | 混合使用会稀释标签可信度 |
| 4 | 按关键词富集采样,不能外推总体 | 任何比例估计都不可行 |
| 5 | 它是证据源不是金标准 | 分歧与局限都被公开,这正是它的价值 |
需要更高工程化程度或合规出域的商业版本?
当前展示的公开版本适用于学术研究与原型验证。千方医数集依托三甲医院直采网络,提供经专家标注、符合伦理合规的专病数据集交易服务。
前往商城查看可交易产品 →
