孕期社会决定因素标注集:257 份出院记录

社会支持、职业、物质使用三项,逐份人工标注,从 MIMIC-III 训到 MIMIC-IV 验——这份数据的价值在于它诚实地暴露了一件事:临床记录里写下的社会信息,是被谁、为什么写下的,而不是病人真实处境

来源 约翰霍普金斯大学医学院(Johns Hopkins University School of Medicine);数据源为 MIMIC-III 与 MIMIC-IV 出院摘要发布时间: 2026-10-19最后更新: 2026-10-20 阅读 16
孕期社会决定因素标注集:257 份出院记录

信息速览

数据集名称孕期社会决定因素标注集:257 份出院记录
数据类型社会决定因素,孕期结局,出院摘要,临床文本标注,信息抽取,健康公平,产科
规模257
接入方式约翰霍普金斯大学医学院(Johns Hopkins University School of Medicine);数据源为 MIMIC-III 与 MIMIC-IV 出院摘要
AI 就绪度

临床记录里有一类句子,对诊断没有用,对社会却很有信息量:「患者与母亲同住,可获得照护支持」「患者为全职护理助理」「患者否认吸烟饮酒」。这些话是医生为了下一班的同事、为了出院计划、为了说明某个决定而写下的。写不写、怎么写,取决于当时的医生觉得什么重要。所以从这些句子里抽出来的东西,测的不是病人的处境,而是记录者的注意。

这个区别,是理解这份数据的起点。约翰霍普金斯的一个团队,从 MIMIC-III 与 MIMIC-IV 的出院摘要里筛出孕期记录,人工标了三项:社会支持、职业、物质使用。然后用三种方法——规则关键词、词向量加分类器、临床 BERT——训练抽取模型,在 MIMIC-III 上训、在 MIMIC-IV 上验。规模不大:MIMIC-III 八十六份,MIMIC-IV 一百七十一份,合计二百五十七份。但标注做得细,协议写得清楚,一致性用 Cohen kappa 量过,代码公开。作为「如何把社会决定因素变成可训练标签」的示范,它比很多大得多的数据集更有参考价值。

想知道三项标签的具体定义,读 §1.4;想知道类别不平衡有多严重,读 §2.3;想直接训模型,读 §8;只想搞清楚能不能拿到,读 §3。

§1 它是什么:三项标签与一个结局

1.1 一句话定义与四条边界

这是一份标注数据集:257 份孕期出院摘要,每份带原文、三项社会决定因素二值标签、一个妊娠结局标签。

四条边界。

第一,标签测的是记录,不是现实。 「社会支持」标 1 的意思是摘要里写了同住或强家庭支持,不是病人真的有支持网络。这个区分贯穿全篇。

第二,只有三项。 社会决定因素在文献里有几十个维度——收入、教育、住房、食品保障、交通、邻里安全、种族歧视。这份数据只做三项,是取舍的结果。

第三,类别极不平衡。 MIMIC-III 的八十六份里,正常妊娠不足十份;MIMIC-IV 的一百七十一份里,正常十七份。这个比例决定了任何分类结果都要小心解读。

第四,派生自 MIMIC,访问受双重约束。 除了 PhysioNet 的凭证式协议,还要遵守 MIMIC 自身的协议。这意味着不能自由再分发,不能与其他数据随意合并后公开。

1.2 社会决定因素为什么值得单独做数据

先回答「为什么这件事重要」,否则后面的技术细节没有落点。

不良妊娠结局——早产、低出生体重、子痫前期——在美国是显著的公共卫生问题,且分布极不均衡。不同群体之间的差距,用生物学解释不了多少,剩下的大部分落在社会条件上:能不能按时产检、有没有人照顾其他孩子、工作是否允许请假、住房是否稳定、有没有食物保障。

这些信息在结构化字段里几乎没有。收入不录、教育不录、社会支持不录。它们只出现在自由文本里,散落在社会史、出院计划、病程描述的角落。

于是有了一个明确的技术需求:能不能用 NLP 把这些信息从文本里抽出来,变成可用于研究的变量。

这份数据就是这个需求的一个具体实现。

1.3 筛选条件是怎么定的

入选条件有三条,全部要满足。

第一条,ICD-9 编码提示妊娠。 正常妊娠用 650 至 659,妊娠并发症用 630 至 639 与 660 至 669。这三段覆盖了妊娠、分娩与产褥期的主要编码。

第二条,社会史章节非空。 这一条最关键,也最容易被忽略。它意味着只有那些医生真的写了社会史的记录才进入样本。没写社会史的病人被系统性地排除在外。

第三条,多次妊娠时取末次。 一位病人如果有多次妊娠记录,只保留最后一次的出院摘要。理由是避免同一个人被重复计数。

这三条合起来,决定了样本的构成:产科住院、医生写了社会史、以末次妊娠为准的女性患者。

要记住的是第二条的后果。社会史写得越详细,越可能入选。 而社会史写得详细,本身就跟医生的关注点、病人的复杂程度相关。所以样本从第一步起就不是随机抽样。

1.4 三项标签各自怎么定义

这是全篇最需要精确的部分,因为所有后续分析都建立在这三个定义上。

社会支持(social_support):摘要中提到同住(cohabitation)或强家庭支持(strong familial support)记 1,否则记 0。关键词是「同住」与「强」。这两个词在标注指南里应当有更细的判定规则,条目页只给了概括。

值得注意的是这个定义的窄。一个人可能有广泛的朋友网络、有社区支持、有教会团体,但如果摘要里没写「同住」或「家庭支持」,就是 0。所以这个标签实际测的是「医生是否记录了一个同居的或家庭的支持者」,不是「病人是否有社会支持」。

职业(occupation):有在职证据记 1;未提及或记为失业记 0。这里有一个重要的合并——「未提及」与「明确失业」被归为同一类。

这个合并在建模上是必要的(否则要变成三分类),但在解释上是危险的。因为「未提及」占多数,而「未提及」的原因可能是医生没问、可能是病人没工作但医生没写、也可能是病人有工作但医生觉得不相关。把这三者与「失业」放在一起,等于把一个混合体命名为「无业」。

物质使用(substance_use):当前或既往使用记 1;否认或未记录记 0。同样是合并——「否认」与「未记录」都是 0。

这个合并的问题更大。明确否认吸烟的人,与医生根本没问的人,被标成同一个值。前者是阴性信息,后者是缺失信息。在统计上,把缺失当阴性会系统性低估使用率。

条目页在 Usage Notes 里承认了这一点:「为保持数据一致性,缺失与不可得的值被并入每个变量的单一类别」。这句是坦白的,但坦白不等于无害,使用时要自己记住。

1.5 结局标签只有两级

complication 字段是二值的:1 表示有并发症,0 表示正常。

这个粒度很粗。不良妊娠结局在临床上分很多种——早产、低出生体重、子痫前期、妊娠糖尿病、胎盘早剥、产后出血——每一种的机制与社会决定因素的关联都不同。合成一个二值标签,等于假设它们可以互相替代。

对做「社会因素与不良结局的关联」这类研究,这个粗粒度会掩盖异质性。对做「抽取模型」这类研究,它只是个协变量,粗一点影响不大。

1.6 两个库的标注方式不一样

这一点在方法上很关键,容易被跳过。

MIMIC-III 部分:单一标注者。 按预设指南标注。条目页没有给这一部分的一致性数据——因为只有一个标注者,算不出 kappa。

MIMIC-IV 部分:三名标注者独立标注,每份至少两人复核。 分歧经共识讨论裁定。一致性用 Cohen kappa 衡量,具体数值在论文里。

所以两个库的标签质量不同。MIMIC-IV 的标签有复核、有分歧裁定,理论上更可靠;MIMIC-III 的标签没有第二人核对,一致性未知。

这带来一个反直觉的推论:用 MIMIC-III 训练、MIMIC-IV 验证的设计,测试集的标签质量可能高于训练集。 这会让模型性能被低估——因为模型学到的是单标注者的判定习惯,而测试标准是三人共识。

1.7 它不适合回答什么

不适合回答「这位病人有没有社会支持」——标签测的是记录,不是现实。

不适合回答「社会决定因素与不良妊娠结局的因果关系」——样本小、类别不平衡、且筛选条件本身引入了选择偏倚。

不适合回答「不同种族或收入群体的差异」——种族、保险、收入都不在标注范围内。

不适合直接部署到临床——二百五十七份的规模,且来自两个特定医学中心的重症监护数据库。

适合回答的是方法学问题:三种抽取方法在同一个标注集上表现如何?跨库迁移时性能掉多少?标注定义的变化如何影响抽取难度?

1.8 为什么偏偏是妊娠

社会决定因素与许多疾病都相关,为什么这份数据选了妊娠?这个选择不是随意的,背后有三层理由。

第一层,孕期是观察社会条件的天然窗口。 一次妊娠通常意味着九个月内至少十次产检、一次住院分娩、若干次随访。这期间医疗系统与病人的接触密度远高于一般慢病管理。接触越密,记录越多,可抽的信息也越多。

第二层,结局明确且有时间边界。 早产、低出生体重、子痫前期,都有明确的判定标准,且发生在分娩这个明确的时点上。相比之下,「高血压控制得好不好」这类结局,既没有清晰的判定时点,也混杂了无数医疗与依从性因素。

第三层,社会条件与结局的关联在文献里有大量支持。 从收入到教育到邻里环境,都与不良妊娠结局有报道过的关联。这给标注提供了理论依据——不是为了标而标,是因为这些变量在既有研究里确实重要。

但反过来看,这三层理由也划出了这份数据的适用边界。换一个病种,接触密度、结局清晰度、文献支持都可能完全不同,方法要重新设计。

1.9 三项标注之间的相关性

三项标的是不同维度,但它们在现实中并不独立,在记录里也不独立。

一个住了院的孕妇,如果家庭支持不好,医生更可能在出院计划里写清楚;如果她有工作,医生可能写「需请假休养」;如果她吸烟,社会史里一定会有记录。也就是说,三项的「被记录」这件事,可能由同一个因素驱动——这次的住院是否复杂。

这带来一个建模上的问题:若把三项当成独立任务,模型可能学到共享的「记录详略」特征,而不是各自的语义。一个症状是:三项的预测结果高度相关,甚至一个模型的输出可以近似另外两个。

若要做严谨的多任务学习,应当显式建模这种相关性(比如共享底层表示、各自输出头),而不是三个独立模型各跑一遍。

§2 数据构成:二百五十七份与三列零一

2.1 六个字段

每行六个字段。

subject_id 是与原出院摘要关联的匿名标识。它本身来自 MIMIC,不携带任何身份信息,但可以用于跨表连接。

text 是出院摘要原文。这是最长的一列,也是模型真正的输入。

social_support、occupation、substance_use 三个是二值标注。

complication 是结局二值标注。

结构简单到不需要数据字典——但条目页仍然建议使用者先读标注指南,因为三个二值标签的判定边界不在字段名里。

2.2 两个库的规模

MIMIC-III 八十六份,MIMIC-IV 一百七十一份,合计二百五十七份。

单看这个数字,会低估它的复杂度。因为每份出院摘要通常两三千字,二百五十七份是几十万字的文本,而每一份都要人工读完、按三个维度判定。三人复核的设计意味着实际阅读量是文本量的两到三倍。

2.3 类别不平衡有多严重

这是使用这份数据时最需要先看的数字。

MIMIC-III 的八十六份里,七十八份是并发症,正常不足十份。也就是说正类占比约九成。

MIMIC-IV 的一百七十一份里,一百五十四份并发症,十七份正常。正类占比同为九成。

这个比例意味着:一个永远预测「有并发症」的模型,准确率就有九成。 任何报准确率的结果都必须配上基线,否则毫无信息量。

更麻烦的是分层分析。若想在「正常妊娠」子集上评估抽取性能,MIMIC-III 只有不到十份可用——这个量级做不了任何统计推断。

2.4 三项社会决定因素的实际分布

这组数字是这份数据最核心的描述性事实。

项 MIMIC-III(86 份) MIMIC-IV(171 份)
提及社会支持 41(47.7%) 86(50.3%)
提及职业 19(22.1%) 41(24.0%)
提及物质使用 34(39.5%) 47(27.5%)

三个比例都在一半以下。也就是说,对多数记录,这三项社会决定因素根本没有出现在文本里。

这个观察有两层含义。

第一层是技术上的:抽取模型面对的主要困难不是「判断对错」,而是「识别缺席」。一份没提职业的记录,「职业」这一项的真实状态是未知,不是「无业」。

第二层是方法上的:三项的提及率差异很大。社会支持约一半,职业约四分之一,物质使用在三成到四成之间。提及率越低,可训练的正例越少,抽取越难。

2.5 两个库的差异说明了什么

对比两列,社会支持与职业的比例几乎一致(47.7 对 50.3,22.1 对 24.0),物质使用则差得多(39.5 对 27.5,降了十二个百分点)。

这个差异值得停一下。若两个库的人群构成相似,为什么物质使用的提及率差这么多?

可能的解释有三。一是 MIMIC-IV 的记录习惯变了,医生更少写物质使用;二是两库的人群构成不同(MIMIC-IV 覆盖的年份更近,患者构成有别);三是标注标准的执行有细微差别——注意 MIMIC-III 是单标注者,MIMIC-IV 是三人共识,共识过程可能让边界案例被判为 0。

第三种解释最值得警惕,因为它意味着这个差异有一部分是标注流程的产物,不是记录习惯的变化。但条目页没有给分项的一致性数据,无法判断。

2.6 体量估算

文本量可以粗估。若每份出院摘要平均两千五百字,二百五十七份约六十四万字。若按英文词计,约十万词量级。

这个体量对现代 NLP 来说是小的——一个中等规模的预训练模型微调,十万词大约几千条样本的级别,足以过拟合。

这也是为什么作者要比较三种方法而不是直接上大模型:样本量不支持复杂模型,简单方法可能就是最优。

2.7 缺失被并进了零

条目页明说:缺失与不可得的值被并入每个变量的单一类别。

具体地,社会支持的 0 包含「未提及」;职业的 0 包含「未提及」与「失业」;物质使用的 0 包含「否认」与「未记录」。

这在数据表上看不出来——只有 0 和 1。所以使用者如果不知道这条,会把 0 当成阴性,而实际上 0 里混着大量缺失。

后果一:抽取模型的召回率会虚高。因为模型只要学会「没提到就输出 0」,就能在多数样本上正确。

后果二:任何基于这三列做的流行病学估计都会偏低。因为缺失被当成了阴性。

后果三:无法从这份数据反推真实的提及率。表中 47.7% 的社会支持,是「标注为 1 的比例」,不是「有社会支持的比例」,也不是「提及社会支持的比例」——因为提到「无社会支持」的记录也被标为 0。

2.8 与 MIMIC 的关系

这份数据不是独立的——它是 MIMIC 的派生集。

这带来三层约束。

访问层:要拿这份数据,先要能拿 MIMIC。PhysioNet 的凭证式协议之外,还有 MIMIC 自己的协议。

使用层:不能把这份数据与别的数据合并后公开,因为原文是 MIMIC 的。

引用层:除了引用本数据集,还应引用 MIMIC-III 与 MIMIC-IV 的原始文献。

2.9 代码仓库里有什么

作者给了 GitHub 仓库地址,含数据预处理、模型开发与验证的全部脚本。

从条目页描述看,仓库里应当有:筛选脚本(按 ICD-9 编码与社会史章节过滤)、标注格式、三种模型的训练脚本、评估脚本。

实际内容需要打开仓库核对——此处只据条目页表述记录,未验证仓库内容。

§3 访问:凭证式,两道协议

3.1 门槛比受限访问更高

PhysioNet 的访问分几档。这一份属于凭证式(Credentialed),要求完成 CITI 培训并签署凭证式数据使用协议。

具体步骤通常包括:注册账号、完成 CITI 的「Data or Specimens Only Research」课程、提交培训证书、签署协议、等待审批。

因为派生自 MIMIC,还要满足 MIMIC 的访问条件——这意味着可能需要在 PhysioNet 上单独申请 MIMIC-III 与 MIMIC-IV 的访问权。

3.2 时间预期

从零开始到拿到数据,通常需要数天到数周。CITI 课程本身要几个小时,审批排队时间不定。

若已经有 MIMIC 的访问权与 CITI 证书,这一步会快得多——只差签一份新协议。

3.3 不能做什么

不能重新识别。这条是底线,违反会导致访问权被撤销并通报。

不能再分发。不能把数据传给合作者,除非对方也完成了同样的审批。

不能公开原文片段。论文里引用示例时要做处理,具体规则按 MIMIC 的约定。

3.4 引用的正确写法

数据本身:Soley、Bentil、Shah、Rouhizadeh、Taylor 五人,2025 年,版本 1.0.0,DOI 10.13026/qk2y-wx30。

还应引用 MIMIC-III 与 MIMIC-IV 的原始文献,以及 PhysioNet 平台文献。

§4 局限:小样本、坏标签、与看不见的人

4.1 二百五十七份能支撑什么

这个规模可以做方法学比较,做不了人群推断。

具体地:可以比较三种抽取方法的相对优劣;可以估计跨库迁移的性能落差;可以分析哪些句式最难抽。

不可以估计社会决定因素在孕期人群中的真实患病率;不可以做亚组分析(每个亚组只有几十份);不可以训练深度模型(会过拟合)。

4.2 标注测的是记录行为

这是最根本的一条,前面提过多次,这里说透。

医生写社会史,动机至少有四类:一是入院常规表格要求,二是为了出院计划(需要知道有没有人照顾),三是为了说明某个临床决策(比如为什么建议社工介入),四是为了记录风险因素(比如吸烟)。

这四类动机对应四种写作风格,也对应四种被标注的概率。一个没人照顾、没有工作的病人,如果医生觉得这些与本次住院无关,就不会写;一个有好工作、家庭和睦的病人,如果入院表格要求填社会史,也可能被写下来。

所以标签的分布,反映的是记录行为与被记录者的交集,不是被记录者的分布。

这个限制不是这份数据独有的,所有从临床文本派生的标注都有。区别在于,社会决定因素这个领域里,记录行为本身就跟社会地位相关——边缘群体的社会信息可能被更多记录(作为风险标记),也可能被更少记录(因为沟通障碍)。方向不确定,这更麻烦。

4.3 三分类被压成二分类

每项都是二值。但现实至少是三态:有、无、未知。

压成二值之后,「未知」被塞进「无」。这个操作在机器学习里叫「把缺失当阴性」,在流行病学里叫「错分」。错分的方向是系统性的——所有估计都向零偏。

若一定要用这三列做统计,可以考虑把「未提及」单独标出来(通过检查文本是否出现相关关键词),做三态分析。但这样一来,就回到了需要人工判读的老问题。

4.4 结局标签的粗粒度

§1.5 说过。补充一点:合并不同结局的后果,是稀释关联。

若社会支持与早产强相关、与子痫前期无关,合并成一个「并发症」标签后,相关性会被稀释到两者之间。样本越小,稀释越严重。

4.5 选择偏倚从筛选就开始

§1.3 说过第二条筛选条件的影响。这里补充另两条。

ICD-9 编码筛选会漏掉编码不规范或缺失的病例。这在转院病人、急诊入院病人身上更常见——而这些恰恰是社会条件不稳定的人群。

末次妊娠原则会排除多次妊娠者。多次妊娠本身与社会条件相关(生育间隔、家庭计划),排除后样本会偏向首次或单次妊娠者。

三条筛选叠加,样本已经离「孕期人群」很远了。

4.6 单一机构与两个库的时代差

MIMIC-III 覆盖 2001 至 2012 年,MIMIC-IV 覆盖 2008 至 2019 年(这是两个库的公开时间范围,本页未逐一核对)。两者都来自贝斯以色列女执事医疗中心。

单一机构意味着记录习惯高度一致,一致性好的同时也意味着外部效度低。时代差则意味着电子病历系统、入院表格、临床指南都变过——这些变化会改变社会史的写作方式。

所以「跨库验证」这件事,实际上同时检验了三样东西:模型泛化、记录习惯变化、时代变化。三者的效应无法分离。

4.7 三项之外的社会决定因素

这份数据没有覆盖的,恰恰是文献里最常讨论的几项。

种族与族裔:MIMIC 里有,但这份数据没标。
保险类型:同上。
收入或贫困线:MIMIC 里通常没有。
教育程度:偶尔出现在社会史里,没标。
住房稳定性:偶尔出现,没标。
食品保障:很少出现。
交通与就医可及性:很少出现。

选这三项的理由大概是:它们在文本里出现频率相对高,且与妊娠结局的关联在文献里有支持。但这个选择也意味着,这份数据无法用来研究健康公平里最核心的种族差异问题。

4.8 一致性的透明度

MIMIC-IV 部分用 Cohen kappa 衡量一致性,数值在论文里。条目页没给具体数字。

这一点值得注意:kappa 是多少,直接决定了标签的可信上限。若 kappa 在 0.6 左右,说明标注有实质分歧,模型性能的天花板就在那里。若在 0.85 以上,标签较可靠。

本页无法给出这个数字(未读论文原文),使用时应当先查。

4.9 小样本下性能估计的方差

这一点常被忽略,但对二百五十七份的数据尤其重要。

测试集只有一百七十一份(跨库验证)。若某一项的 F1 是零点七,它的置信区间有多宽?按二项分布粗算,一百七十一份里若正例四十份,F1 的标准误大约在零点零七量级。也就是说,零点七与零点六三可能没有区别。

这意味着两件事。第一,不同方法之间的性能差异,若小于十个百分点,多半是噪声。第二,同一方法换一个随机种子,结果可能差好几个点。

做法:报结果时给出多次划分的均值与标准差,或者用自助法给出置信区间。只报一个数字的做法,在这么小的样本上是不负责任的。

4.10 数据质量清单(DAIMS)

按数据与人工智能就绪度评估的二十四个常见维度逐项判定。

判为「是」的十四项:有明确许可与协议;有 DOI 与版本号;有引用格式;有筛选条件详述(三条都给了编码范围);有标注协议描述;有一致性度量方法;有伦理说明(约翰霍普金斯 IRB 编号 IRB00467867,且沿用 MIT 与贝斯以色列的原始批准);有字段说明;有描述性统计(两库三项的比例都给了);有配套代码仓库;有已知局限的披露(缺失合并、定义可能不一致);有变量定义;数据来源可核实;发布时间明确。

判为「部分」的七项:MIMIC-III 部分的一致性问题(单标注者,无 kappa);kappa 的具体数值未在条目页给出;标注指南的完整文本未在条目页给出;类别不平衡的处理建议未给;样本量对下游任务是否足够的讨论未展开;两库时代差的影响未讨论;代码仓库内容未在条目页描述细节。

判为「否」的四项:无独立测试集(用另一个库代替,但两库分布不同);无原始 MIMIC 记录之外的补充信息;无外部复现报告被引用;无三态标注(缺失与阴性未分离)。

§5 它能用来做什么

5.1 比较三类抽取方法

这是作者的主要用途,也是最直接的用法。

同一批标注,跑三种方法:规则关键词、词向量加分类器、临床 BERT 微调。三者各有特点。

规则方法透明、可解释、无需训练,但对表述变体敏感——「与母亲同住」和「住在母亲家」需要两条规则。

词向量方法能捕捉语义相似性,把「与母亲同住」和「住在母亲家」映射到相近的向量,但对上下文不敏感。

临床 BERT 能利用上下文,比如区分「否认吸烟」与「吸烟」,但需要足够的训练样本,而这里只有八十六份。

在这个规模上,三者谁更好不是一个显然的问题——这正是这份数据值得做的原因。

5.2 研究跨库迁移

在 MIMIC-III 上训,在 MIMIC-IV 上验。这个设计的好处是两个库来自不同时期,能暴露时代漂移。

具体可研究:性能掉多少?掉在哪一项上最多?是召回掉还是精确率掉?

这类结论对任何要在真实医院部署抽取系统的人都有用,因为它给出了一个「换环境会损失多少」的经验值。

5.3 作为标注协议的设计案例

这份数据的标注协议有几个值得学的设计。

按维度分开判定。 三项各自独立标,不要求标注者给整体印象。

边界案例靠共识。 三人标注、两人复核、分歧讨论。这比多数标注项目严格。

定义写到可操作。 「同住或强家庭支持」比「有社会支持」可操作得多。

对正在做标注项目的人,这份数据的协议描述可以直接当模板。

5.4 用于临床 NLP 教学

二百五十七份、六个字段、三种方法、一个仓库。结构清晰,规模适中。

适合作为「临床文本信息抽取」课程的完整案例:从筛选、标注、建模到验证,全链条都有。

5.5 作为 SDoH 抽取的基线

若手上有一份更大的 SDoH 标注数据,可以拿这份当外部验证集,或者当基线性能的参照。

注意两点:一是定义要对齐(这份的三项定义很窄);二是标签是二值且缺失并入零,与别的数据的标注方式可能不同。

5.6 不能用来做什么

不能用来估计社会决定因素的真实患病率。

不能用来做因果推断。

不能用来训练生产级抽取系统(样本太小)。

不能用来研究种族或经济差异(这些变量没有)。

不能直接用于临床决策(标签测的是记录,不是病人)。

5.7 用之前必须做的三件事

第一,查 kappa。 打开论文,找到一致性数值。这个数字决定了你能期待的性能上限。

第二,确认缺失的处理。 三列的 0 里混着缺失。若要做统计分析,必须先把这一点写进限制,或者自己用关键词重新分成三态。

第三,核对两个库的分布差异。 特别是物质使用那一项的十二个百分点差距,要判断它是记录习惯变化还是标注流程差异。

§6 常见误读

6.1 误读一:把标签当成病人的真实处境

§4.2 已说透。这里给一个具体的错误例子。

若研究报告「本队列中 47.7% 的孕妇有社会支持」,这个结论是错的。正确的表述是「47.7% 的出院摘要包含了对同住或家庭支持的记录」。

两者的差别不是措辞问题,是实质问题。前者是关于人的,后者是关于文档的。

6.2 误读二:把 0 当成阴性

三列的 0 包含大量「未提及」。

症状:报告「本队列中 22.1% 的孕妇有工作」——这句话的补集不是「77.9% 无工作」,而是「77.9% 未记录在职证据」。

6.3 误读三:把 257 当成大样本

相对于很多标注数据集,257 不算小。但分成两库、再分三项、再分正负类,每个格子只有几十份。

症状:在某项上报出小数点后两位的 F1,仿佛精度可信到百分位。

6.4 陷阱一:用准确率评估

九成正类,全预测为正就有九成准确率。必须用 F1、召回率或曲线下面积,并且必须给基线。

6.5 陷阱二:随机划分同一库的数据

条目页的设计是跨库验证,这已经规避了随机划分的问题。但若自己重新划分,要注意同一病人的多份记录不能跨集合——虽然筛选时已经取末次妊娠,但一位病人仍可能在两个库都出现。

6.6 陷阱三:把词向量模型的性能当上限

词向量加分类器在二零一零年代是主流,现在看是弱基线。若只用它做对比,会高估「方法已够用」的结论。

合理做法是把它当低基线,把临床 BERT 当主基线,再考虑要不要加更强的模型。

6.7 陷阱四:忽略两个库的分布差异

物质使用比例差十二个百分点。若模型在 MIMIC-IV 上召回率低,可能是模型不好,也可能是这个库的正例本来就少。

6.8 陷阱五:把 complication 当单一疾病

§4.4 说过稀释问题。补充一句:若研究的问题是「社会支持与早产的关系」,就不该用这个合并标签,应当回到 MIMIC 原始编码里取早产。

6.9 抽取准确率高不等于能用来做公平性研究

这一条要单独说。

即使模型在测试集上 F1 很高,也不意味着抽出来的变量能用于研究健康公平。原因有二。

第一,抽取的准确性在不同群体上可能不同。若边缘群体的社会史写得更隐晦(比如用委婉语、用缩写),模型的召回率在这些群体上会更低。这会造成系统性的漏抽。

第二,即使抽得准,抽出来的仍是「被记录的社会因素」,而记录行为本身与社会地位相关。用这样的变量去研究社会不平等,等于用一面有偏的镜子照社会。

§7 与相邻数据的定位

7.1 与 MIMIC 生态里其他标注集的关系

MIMIC 上有一批派生标注集,各做一件事:有的标实体,有的标关系,有的标事件。

这份的位置是「社会决定因素」这一格。它与临床实体标注的区别在于:实体标注找的是「文中提到的病名药名」,社会决定因素标注找的是「文中提到的生活处境」,后者的边界更模糊、表述更自由。

7.2 与 n2c2 社会决定因素任务的关系

n2c2 在 2022 年办过一次社会决定因素抽取的共享任务,规模比这份大得多,覆盖的维度也更全。

两者的差别:共享任务追求覆盖广度与规模,这份数据追求标注精度与跨库验证。做方法对比时,可以把这份当小规模精标集,把共享任务当大规模训练集。

7.3 与孕期专病数据的差别

多数孕期数据集关注的是临床指标——超声、胎心监护、分娩记录。

这份数据关注的是社会背景。它与临床指标数据是互补的:一份说「发生了什么」,一份说「为什么会发生」。

7.4 规模在 SDoH 领域的位置

SDoH 标注数据普遍不大,因为标注成本高、定义难统一。这份二百五十七份,在这个领域里属于中等。

它的价值不在规模,在于标注协议的严谨程度与跨库设计。

7.5 与中文临床文本的对应

中文临床记录里也有社会史章节,但写作习惯差别很大。

中医医院的入院记录常有「家庭情况」一项,西医医院的社会史则更简略。表述方式也不同:「家属陪护」对应的是「family support」,「务农」对应的是「occupation」。

若要把这份数据的方法搬到中文,需要重做标注指南。三个维度的定义可以借鉴,关键词必须重建。

7.6 适合谁用

做临床 NLP 抽取的方法研究者、做 SDoH 数据治理的研究者、需要一份小而精的标注案例做教学的人。

不适合:需要大样本做流行病学估计的人、需要种族与收入变量做公平性研究的人、需要直接部署系统的人。

7.7 一个常被问起的问题:能不能用它做筛查工具

有人会想:既然能从记录里抽出社会风险,能不能做个工具,自动提示「这位孕妇有社会风险,需要社工介入」?

这个想法方向是对的,但这份数据不支持。

第一个障碍是标签。工具要输出的是「病人有没有这个风险」,而这份数据的标签是「记录里有没有写」。一个没被记录但确实缺乏支持的病人,会被工具判为无风险。

第二个障碍是覆盖率。三项的提及率都在一半以下,意味着对多数记录,模型即使完美工作,也只能输出「未知」。一个多数时候输出「未知」的筛查工具,临床上没有用。

第三个障碍是样本。二百五十七份里,正例最多的社会支持也只有八十多例。要训练一个可靠的筛查工具,这个数量差一到两个数量级。

更现实的做法是把这类模型当「辅助检索」:帮研究者从大量记录里找出可能相关的那些,再人工核对。这个用法不要求高精确率,只要求召回,而且人工在环,可以承受错误。

§8 怎么用:从文本到三项标签

8.1 三种任务设置

设置一,库内划分。 在 MIMIC-III 内部按比例分训练与测试。样本小,性能方差大。

设置二,跨库迁移。 MIMIC-III 训、MIMIC-IV 测。这是作者的设计,也是最接近真实部署的设置。

设置三,合并训练。 两个库合起来做交叉验证。样本量翻倍,但掩盖了时代差异。

三者的结论会有差别,报结果时应说明用的是哪一种。

8.2 为什么跨库验证更有意义

同一库内划分,训练与测试共享记录习惯、共享系统、共享时代。模型学到的可能是这些共享的东西,而不是真正的语义。

跨库验证强制模型在两个不同的记录环境里都工作。掉多少性能,就是「环境变化」的代价。

这个数字对工程实践的价值,比库内的 F1 高得多。

8.3 指标怎么选

主指标用正类的 F1 与召回率。因为临床场景里漏抽的代价通常高于误抽。

辅助指标用曲线下面积,用于比较不同方法的排序能力。

不要用准确率。若一定要报,必须同时报全正基线。

分项报告:三项各自的 F1 分开给,不要只给平均。因为三项的难度不同(§2.4 的提及率差异)。

8.4 基线与它的意义

三个必给的基线。

基线一,全预测为正。 给出准确率的上界参照(约九成)。

基线二,关键词匹配。 每个维度列五到十个关键词,直接匹配。这是最朴素的方法,若复杂模型超不过它,说明任务不难或者模型不行。

基线三,只预测多数类。 给出 F1 的下界。

8.5 过拟合的典型表现

八十六份训练集,临床 BERT 有上亿参数。过拟合几乎是必然的。

典型表现:训练集 F1 零点九五以上,跨库测试掉到零点六以下。或者三项里有一项特别好、两项特别差——说明模型记住了那一项的关键词,而不是学会了语义。

8.6 具体的数据处理建议

按顺序做。

一,先做描述统计:三项的正例数、文本长度分布、两个库的差异。

二,把「未提及」与「阴性」分开。方法是检查文本里是否出现该维度的相关词根(比如职业类找 work、employ、job、occupation),若无则标为「未提及」。

三,分层划分时保持三项的正例比例。

四,训练前检查是否有同一病人的记录跨集合。

五,记录每次实验的划分方式与随机种子,因为这个规模的性能对划分极敏感。

8.7 五条失败模式

失败一,用准确率报结果。 九成基线会让一切看起来都很好。

失败二,三项合起来算一个平均 F1。 掩盖了难度差异。

失败三,不做缺失分离。 模型学会「没提到就输出 0」,召回虚高。

失败四,在小训练集上微调大模型而不做早停。 必然过拟合。

失败五,把跨库性能下降解释为「模型不够好」。 也可能是两库分布真的不同(§2.5)。

8.8 结果该怎么读

三个问题。

一,三项的 F1 差异有多大? 若某项接近随机,说明这个维度的表述太自由,需要更好的标注指南或更多数据。

二,跨库掉了多少? 若掉超过二十个点,说明模型严重依赖环境特征。

三,误抽的例子长什么样? 人工看二十个假阳性,往往能发现系统性问题(比如把「母亲有糖尿病」误判为「与母亲同住」)。

8.9 与人工标注的比较

这份数据本身就是人工标注,所以「与人比」实际上是「模型与标注者的一致性」。

可以做的比较:模型与单个标注者的一致率,对比标注者之间的一致率。若模型达到人际一致的水平,就算成功。

这个比较需要一个前提:知道人际一致性是多少(即 kappa)。§4.8 说过,这个数值要查论文。

8.10 一个实用的顺序:先做错误分析再调模型

在这么小的数据上,调参的收益往往不如看错例。

建议的顺序是:先用最简单的关键词方法跑一遍,人工看三十个错误(假阳性与假阴性各一半),归类错误类型。常见的类型有四类。

否定未识别:「否认吸烟」被「吸烟」命中。这类错误用规则可以修。

主体错位:「母亲有糖尿病」被判为「与母亲同住」。这类错误需要句法分析。

时态错位:「曾经吸烟,已戒十年」被判为当前使用。这取决于标注指南怎定,若指南认为既往使用也算,则不是错误。

章节错位:社会史里没提,但在病程描述里提到「患者工作中突发腹痛」。这类错误说明抽取范围不该限于社会史章节。

做完这四类归类,再决定要不要上复杂模型。很多时候,前三类修完,性能就够用了。而且这些修正都是可解释、可维护的,比一个黑箱模型更适合临床场景。

§9 三条技术路线

9.1 规则与关键词

最朴素的路。为每个维度建词典,匹配即判正。

优点:完全透明、无需训练、在小样本上不劣于复杂方法。
缺点:对否定与假设语气无能为力(「否认吸烟」会被「吸烟」命中),对委婉表述无能为力。

改进方向:加否定检测(检查关键词前后若干词内是否有 deny、no、negative),加句法约束(要求关键词出现在社会史章节内)。

9.2 词向量加分类器

把文本的平均词向量作为特征,接逻辑回归或支持向量机。

优点:能捕捉语义相似性,对同义表述有一定容忍。
缺点:丢失词序与上下文,对否定仍然无力(平均之后「否认」与「吸烟」混在一起)。

9.3 临床 BERT 微调

用临床语料预训练的 BERT,在下游任务上微调。

优点:能利用上下文,理论上能区分否定与肯定。
缺点:八十六份训练样本对微调来说太少,容易过拟合;推理成本高于前两者。

改进方向:用提示学习或少样本微调;或者把三个任务合成多任务学习,共享表示。

9.4 一条被忽略的中间路线

既想要上下文,又受限于样本量,可以走「规则加语言模型的混合」。

做法:先用规则找出候选句(含相关词根的句子),再用一个小型语言模型判断这句是肯定、否定还是假设。规则负责召回,模型负责精确。

这条路的好处是分工明确:召回交给透明的规则,判定交给能理解上下文的模型。样本需求比端到端微调低得多。

9.5 选择建议

要可解释性与可维护性,走 §9.1。要快速基线,走 §9.2。有足够算力且接受过拟合风险,走 §9.3。样本有限又想要上下文,先试 §9.4。

§10 术语

社会决定因素:影响健康状况的社会与环境条件,包括收入、教育、职业、社会支持、住房、食品保障等。

不良妊娠结局:早产、低出生体重、子痫前期、妊娠糖尿病、胎盘早剥等妊娠相关的不良结果。

出院摘要:患者出院时由医生撰写的总结性文书,含入院原因、住院经过、出院诊断与出院计划。

社会史:病历中记录患者社会背景的章节,通常含吸烟、饮酒、职业、居住情况、家庭支持。

ICD-9:国际疾病分类第九版,MIMIC-III 使用的编码体系。

Cohen kappa:衡量两名标注者一致性程度的统计量,扣除随机一致的成分。

词向量:把词映射为稠密向量的表示方法,语义相近的词向量距离较近。

Word2Vec:一种经典的词向量训练方法,基于上下文预测。

临床 BERT:在临床文本上预训练的 BERT 变体,如 ClinicalBERT、BioBERT。

精确率 / 召回率 / F1:精确率是判为正的样本中真正为正的比例,召回率是真正为正的样本中被判出的比例,F1 是两者的调和平均。

类别不平衡:正负类样本数量相差悬殊的情形。

缺失并入零:把「未记录」与「阴性」合并为同一个值的数据处理方式。

凭证式访问:需要完成培训、签署协议并获批准的受限数据访问方式。

§11 事实清单

11.1 核心事实

项 值
标题 Annotated Social Determinants of Health Dataset for Adverse Pregnancy Outcomes
作者 Nidhi Soley、MaKhaila Bentil、Jash Shah、Masoud Rouhizadeh、Casey Taylor
发布 PhysioNet,2025 年 8 月 4 日,版本 1.0.0
DOI 10.13026/qk2y-wx30
样本 MIMIC-III 86 份 + MIMIC-IV 171 份 = 257 份
结局分布 III:并发症 78、正常不足 10;IV:并发症 154、正常 17
社会支持提及 III 41(47.7%)、IV 86(50.3%)
职业提及 III 19(22.1%)、IV 41(24.0%)
物质使用提及 III 34(39.5%)、IV 47(27.5%)
筛选条件 ICD-9 孕期编码(650–659、630–639、660–669)+ 社会史非空 + 末次妊娠
标注 III 单标注者;IV 三人独立、至少两人复核、共识裁定
一致性 Cohen kappa(具体数值在论文)
模型 规则关键词、Word2Vec 加分类器、临床 BERT
字段 subject_id、text、social_support、occupation、substance_use、complication
伦理 沿用 MIT 与贝斯以色列原始批准;约翰霍普金斯 IRB00467867
许可 PhysioNet Credentialed Health Data License 1.5.0,另受 MIMIC 协议约束
代码 github.com/tirilab/SDoH-Pregnancy-NLP-MIMIC

11.2 六个可立即验证的疑问

一,三项各自的 Cohen kappa 是多少?条目页未给,需查论文。这个数字决定了标签质量的上下限。

二,「不足十例」具体是几例?MIMIC-III 的正常妊娠数被写作「fewer than 10」,精确值影响分层分析的可行性。

三,每份出院摘要的平均长度是多少?这一条决定文本量与建模策略。

四,社会史章节是怎么定位的?MIMIC 的出院摘要没有严格的结构化章节,作者用的规则值得核对。

五,MIMIC-IV 部分的具体 kappa 是否分维度给出?三项的难度不同,一致性也可能不同。

六,代码仓库里是否包含标注指南的完整文本?条目页只说「预设指南」,未公开全文。

11.3 一条记录的读取与检查

import pandas as pd, re

df = pd.read_csv('sdoh_mimic_iii.csv')   # 实际文件名需按仓库核对

need = ['subject_id','text','social_support','occupation','substance_use','complication']
assert all(c in df.columns for c in need), df.columns.tolist()

print(df[['social_support','occupation','substance_use','complication']].mean())
print('n =', len(df), '| text len median =', df.text.str.len().median())

均值就是标注为 1 的比例。先跑这段,再看正文 §2.4 的数字是否对得上——对不上说明手里的是另一个版本或另一种切分。

11.4 附录 A:把「未提及」与「阴性」分开

PAT = {
 'occupation':   r'\b(work|worked|works|employ|job|occupation|unemploy|retired)\b',
 'substance':    r'\b(smok|tobacco|alcohol|drink|drug|heroin|cocaine|marijuana|cannabis|substance)\b',
 'social':       r'\b(lives with|live with|support|husband|partner|mother|family|lives at)\b',
}

def tri_state(row, dim):
    if row[dim] == 1:
        return 'present'
    return 'mentioned_negative' if re.search(PAT[dim], row.text, re.I) else 'not_mentioned'

for d in ['occupation','substance_use_social']:
    pass

上面这段只做示范:对每一维,若标注为 0,再用词根检查文本里有没有提及。有提及的归为「明确阴性」,无提及的归为「未提及」。

三段正则只是起点,实际使用前要在标注集上验证:用标为 1 的样本检验召回,用标为 0 但含词根的样本检验误判。

11.5 附录 B:跨库评估的骨架

from sklearn.metrics import f1_score, recall_score, roc_auc_score

def cross_db(train_df, test_df, featurize, fit_predict, dim):
    Xtr, ytr = featurize(train_df, dim), train_df[dim].values
    Xte, yte = featurize(test_df, dim), test_df[dim].values
    p = fit_predict(Xtr, ytr, Xte)
    return {
        'f1':        f1_score(yte, (p>0.5).astype(int), zero_division=0),
        'recall':    recall_score(yte, (p>0.5).astype(int), zero_division=0),
        'auc':       roc_auc_score(yte, p) if len(set(yte))>1 else float('nan'),
        'pos_rate':  yte.mean(),
    }

pos_rate 一定要报。跨库性能下降时,若测试库的正例比例也低,那部分下降是分布差异,不是模型退化。

11.6 附录 C:证据链

  • 数据集条目页:https://physionet.org/content/sdoh-adverse-pregnancy/1.0.0/,含 Abstract、Background、Methods、Data Description、Usage Notes、Release Notes、Ethics、Conflicts of Interest、References
  • 筛选条件:条目页 Methods 段「Data Extraction & Inclusion Criteria」,三条逐条给出
  • 标注协议:条目页 Methods 段「Annotation Protocol & Agreement Analysis」,含三人复核与共识裁定
  • 三项定义:条目页 Methods 段「Annotation Categories」,逐项给出记 1 与记 0 的条件
  • 描述统计:条目页 Data Description 段「Descriptive Analysis」与「Dataset Statistics」两处,百分比与计数均已给
  • 缺失处理:条目页 Usage Notes 段明示「missing and NA values have been consolidated under a single category」
  • 伦理:条目页 Ethics 段,约翰霍普金斯 IRB00467867
  • 代码仓库:https://github.com/tirilab/SDoH-Pregnancy-NLP-MIMIC
  • 文件清单:条目页 Files 段在部分地区的访问受限,本页未取得完整文件清单,故不含按文件核对的统计

凡属分析性内容(§2.6 的体量估算、§2.5 的差异归因推断、§4.9 的判定、§8 与 §9 的方案与代码)为基于条目页描述与领域常识的推演,非官方结论,代码亦未实际运行验证。凡标注「条目页」的均为该页原文表述。

编辑说明

本页数值来自 PhysioNet 条目页(版本 1.0.0)与其列出的参考文献,未做数据下载与实测。四处需提示:一是文本量为量级推测;二是物质使用提及率的两库差异归因属推断,条目页未讨论;三是 Cohen kappa 的具体数值本页未取得,使用时须查论文;四是附录代码仅为示范,未在真实数据上运行。三项标签的定义均照录条目页原文,未做引申。


相关数据集导航

以下为站内 AI-Ready 数据集百科中与本词条共享多个主题标签的相关数据集,按相关度降序排列:

  • oecd-health — 共享标签:电子健康记录 / 公共卫生与流行病学 / 评测基准
  • ucdp — 共享标签:电子健康记录 / 公共卫生与流行病学 / 评测基准
  • arxiv — 共享标签:医疗NLP / 公共卫生与流行病学 / 评测基准
  • world-bank-open-data — 共享标签:电子健康记录 / 公共卫生与流行病学 / 评测基准
  • medagentbench — 共享标签:电子健康记录 / 临床电子病历 / 医疗NLP / 评测基准
  • medsecid — 共享标签:电子健康记录 / 临床电子病历 / 医疗NLP / 评测基准
  • labelled-notes-hospital-course — 共享标签:电子健康记录 / 临床电子病历 / 医疗NLP / 评测基准
  • emergency-complaint-gout — 共享标签:临床电子病历 / 医疗NLP / 公共卫生与流行病学
  • vaers — 共享标签:医疗NLP / 公共卫生与流行病学
  • mediqa — 共享标签:电子健康记录 / 临床电子病历 / 医疗NLP / 评测基准

导航说明:本章节由全站统一标签体系自动计算生成(标签重合度算法),双向可达;点击链接可跳转至对应数据集词条。

返回 AI-Ready 数据集