信息速览
INFOBOX — SimSUM(SynSUM)一屏速览
维度 内容 正名 / 曾用名 SimSUM(Simulated)/ 旧名 SynSUM(Synthetic),2025 年 5 月改名,同物异名 本质 结构化表格 + LLM 生成临床笔记 + 症状 span 的全合成基准 团队 根特大学(Ghent University)– Imec:Paloma Rabaey、Stefan Heytens、Thomas Demeester 论文 J Biomed Semantics 2025;16(1):20,doi:10.1186/s13326-025-00341-6;预印本 arXiv:2409.08936(v1 2024-09-13,v4 2025-12-09) 规模 10,000 条虚构就诊 × 16 个表格变量 × 2 版笔记 文本均长 正常笔记 970 字符 / 精简笔记 504 字符(实抓统计) 标注 41,570 个症状 span(正常笔记),覆盖 5 个症状 生成链 专家贝叶斯网络 → 采样表格 → 拼 prompt(症状+描述符+基础疾病)→ GPT-4o 写笔记 → 再压缩成精简版 → GPT-4o 抽 span 专家评分 一致性 4.69 / 临床准确性 4.92(5 分制,5 位全科医生 × 30 篇) 基线 文本模型 F1 0.79-0.96,表格模型最低 0.028(pain)——文本远胜表格 获取 GitHub prabaey/SimSUM直下SimSUM.csv;HFprabaey/simsum镜像许可 数据 CC BY 4.0;论文 CC BY-NC-ND 4.0 库内互链 i2b2-n2c2-nlp(14)、mimic-iv-note(47)、mednli(648)、aci-bench(810)、synthea(460)
SimSUM 是一个「反向工程」式数据集:真实世界的困境是「病历文本里写了什么,谁也说不清」,于是它先构造一个已知全部真相的世界——用专家画的贝叶斯网络随机抽出一个病人的全部表格变量,再让大模型把这些变量写成一份像模像样的门诊笔记。真相与文本同时可得,临床信息抽取(Clinical Information Extraction, CIE)从此有了一个可以精确对账的靶场。
它的学术价值不在规模(一万条在合成数据里并不算大),而在于三件事同时被控制住了:病因结构(贝叶斯网络的有向无环图)、文本表达(GPT-4o,且刻意分成「正常」与「精简」两种难度)、概念定位(症状 span 精确到字符下标)。研究者第一次可以在「文本漏说了某个症状」的情况下,反问一句:如果我知道这个病人的哮喘史,能不能把漏掉的症状推回来?论文的基线实验给出的答案是:能,但只在难例上明显。
导语读法三则:
- 只想下数据:直奔 §6。GitHub 根目录一个
SimSUM.csv(15.4 MB)就是全部表格+文本,span 在data/spans/两个 JSON 里。 - 想理解它为什么这么设计:§4 讲生成链,§5 讲标注,两节连读才看得懂那些「看起来奇怪」的 prompt 约束(比如禁止提诊断、禁止写性别年龄)。
- 想直接对标或引用结论:§7 的基线表与 §8 的专家评分是引用率最高的两块;注意「文本模型远胜表格模型」这个结论有前提(表格里没有真实症状以外的强证据),别过度推广。
§0 导读:这个数据集解决什么问题
0.1 一个被反复绕开的缺口
临床信息抽取的教科书问题是:给定一份自由文本病历,把症状、诊断、用药等概念结构化出来。这个任务在真实数据上极难评估,因为没有金标准——要判定「这段文字是否提到呼吸困难」,必须先有人逐字标注,而逐字标注的前提是标注者自己知道病人到底有没有呼吸困难。真实病历里这个前提常常不成立:医生写了「否认气促」,但病人三天后确诊肺炎;或者病人确实气促,医生忘了写。
论文把这个缺口拆成三条理由,逐条指向为什么 MIMIC-III / MIMIC-IV 不适合做这件事的入门级研究:
- 范围太宽:ICU 数据覆盖的临床领域极其庞杂,很难隔离出一个足够小、能把领域知识完整列出来的用例。
- 表格变量被计费驱动:MIMIC 中编码成表格的那部分主要由账单需求推动,追求的是「有记录可收费」,而不是完整或准确——更关键的是,它根本不编码症状,而症状恰恰是要从文本里抽取的目标概念。
- 表格与文本可能不一致:受系统设计与人为错误影响,结构化字段与文本所述可能互相矛盾(论文引 Kwon 等 2024 的实证)。
- 时序复杂度:MIMIC 的电子病历是时间序列,再叠一层难度。
四条合起来的意思是:想做「用结构化的背景知识帮助理解文本」这种机制性研究,真实数据是过度复杂且噪声不可控的载体。于是作者选择自建一个"足够真实但完全可控"的世界。
0.2 三层设计:可控真相 → 可控文本 → 可控标注
SimSUM 的全部设计可以压缩成一句话:让真相先于文本存在。
| 层 | 产物 | 可控点 | 不可控点 |
|---|---|---|---|
| 第一层:表格 | 16 个变量的取值 | 因果结构(DAG)、条件概率(专家设定)、样本量(10,000) | 无——完全由采样器决定 |
| 第二层:文本 | 正常笔记 + 精简笔记 | 哪些症状被提及(按专家给的概率采样)、用什么措辞描述(描述符库)、不得提及诊断/性别/年龄 | GPT-4o 的自由发挥(会臆造额外症状) |
| 第三层:标注 | 症状 span(字符级) | 抽取规则(LLM + 精确匹配 + 二次纠正) | LLM 抽取误差(精确率约 94%) |
三层之间的缝隙正是研究价值所在:
- 第一层与第二层之间:表格说「有咳嗽」,文本可能不提——这个缝隙就是「文本未明说的症状能否由背景知识补回」。
- 第二层与第三层之间:文本提了「咳嗽」,span 抽取可能漏——这个缝隙是标注噪声。
- 第一层内部:诊断(肺炎/感冒)不进 prompt,却通过症状描述符影响措辞——这个设计让「诊断」成为隐藏变量,考验模型能否从症状组合反推病因。
0.3 与同类数据集的位置关系
| 数据集 | 结构化表格 | 非结构化文本 | 真相可控 | 症状级标注 | 时序 |
|---|---|---|---|---|---|
| SimSUM | 有(16 变量,BN 采样) | 有(GPT-4o 双版本) | 是 | 有(span 级) | 否(静态快照) |
| MIMIC-III/IV | 有(计费驱动) | 有(真实) | 否 | 否(需自行标注) | 是 |
| Synthea | 有(规则模拟) | 无(不生成笔记) | 是 | 无 | 是 |
| i2b2/n2c2 | 弱(部分任务有) | 有(真实去标识) | 否 | 有(人工) | 部分 |
| ACI-Bench | 无 | 有(合成对话+笔记) | 部分 | 无 | 否 |
这张表说明了 SimSUM 的定位:它不是「更大的合成数据集」,而是唯一同时具备「已知真相 + 自由文本 + 字符级概念标注 + 无时序」四个属性的公开资源之一。代价是它离真实临床有多远,就有多不适合做部署评估——作者自己在结论里反复强调这一点。
§0 读法三则:
- 本条目正文所有数字分三类来源:论文期刊版(Table 1-6、附录)、实际下载文件的统计(标「实抓」)、README/HF 卡片元数据。三者冲突时以论文表格与实抓为准,冲突点全部收在 §10。
- 检索时若只搜「SynSUM」会漏掉 2025 年 12 月之后的全部更新(期刊版、GitHub 改名、HF 仓),只搜「SimSUM」会漏掉 IEEE DataPort 存档与早期引用——两个词都要搜(坑 1)。
- 不要把本文的「1 万条」理解成「1 万个病人」:数据集没有患者 ID,每一行都是一次独立的虚构就诊,同一「病人」在行与行之间没有连续性。
§1 数据集速览:十问十答
Q1:SimSUM 和 SynSUM 是两个数据集吗?
不是。SynSUM 是 2024 年 9 月 arXiv v1 发布时的名字;2025 年 5 月 GitHub 仓库执行了名为 change name 的提交,2025 年 12 月的 arXiv v4 与期刊版都改称 SimSUM。作者在 arXiv 的 Comments 里写明改名理由:避免与「从真实数据生成的合成数据」混淆,并强调本数据集是「模拟(simulated)」而非「由真实数据合成」。IEEE DataPort 上 2025 年 1 月的存档仍叫 SynSUM,是旧名的化石层。
Q2:数据到底有多少?
10,000 条记录。每条记录含 16 个表格变量、一份正常版英文笔记(均长 970 字符)、一份精简版笔记(均长 504 字符)。CSV 共 19 列(16 变量 + 行号 + text + advanced_text),文件 15.4 MB。
Q3:表格变量具体有哪些?
分六类共 16 个:基础疾病 4 个(asthma、smoking、COPD、hay_fever)、诊断 2 个(pneumonia、common cold)、症状 5 个(dyspnea、cough、pain、fever、nasal,其中 fever 为 high/low/none 三档)、非临床外部影响 3 个(policy 高/低、self_employed、season 夏/冬)、治疗 1 个(antibiotics)、结局 1 个(days_at_home,0-15 天)。
Q4:文本是怎么生成的?
拼一个 prompt,里面只放三样东西:这个病人有哪些症状(按专家给的概率决定提不提)、每个症状配一句专家写的描述符、以及基础疾病列表。不放诊断、治疗、结局、非临床变量,也不许模型猜诊断、写性别年龄。然后让 GPT-4o 按「病史 + 体格检查」两段式写一份门诊笔记。之后再用一条 prompt 把这份笔记压缩成满是缩写与简写的「精简版」。
Q5:标注是什么形式?
字符级 span。JSON 里每条记录对应一个数组,每个元素是 {"symptom": "cough", "text": "persistent dry cough", "start": 412, "end": 433}。正常笔记与精简笔记各一份文件。
Q6:span 是人工标的吗?
不是。用 GPT-4o 抽取,再把抽出的短语拿去和原文做精确匹配(忽略大小写与标点),配不上就再叫一次 LLM 纠正。质量靠 100 篇人工对照来评估:正常笔记精确率 94.06%、召回 98.78%;精简笔记 93.55%、94.50%。
Q7:这份数据能用来训练临床模型吗?
不能,作者明确反对。原话是「we strongly advise against using SimSUM to evaluate clinical model performance or to train models intended for production」。它适合做方法研究:在已知真相的条件下验证「结构化知识能否改善文本抽取」这类机制性问题。
Q8:专家评估结果如何?
5 位全科医生评 30 篇:一致性 4.69、病史真实性 4.53、体检真实性 4.15、临床准确性 4.92(满分 5)。扣分集中在「模型爱编造额外症状」,以及「格式不像真实病历」。
Q9:基线模型有哪些?
四个:BN-tab(在 SimSUM 上学参数的贝叶斯网络)、XGBoost-tab(纯表格梯度提升树)、neural-text(BioLORD-2023 句向量 + MLP)、neural-text-tab(文本向量拼表格特征)。外加一个「span 嵌入」作为上界参考。
Q10:许可怎么用?
数据 CC BY 4.0——可以商用、可以改、只需署名。论文 CC BY-NC-ND 4.0——不可商用、不可改。两个许可管的是不同对象,别混着引。
§2 数据构成与规格
2.1 字段总表
| 列名 | 类别 | 取值 | 实抓分布(n=10,000) |
|---|---|---|---|
asthma |
基础疾病 | yes / no | yes 949(9.5%) |
smoking |
基础疾病 | yes / no | yes 1,932(19.3%) |
COPD |
基础疾病 | yes / no | yes 201(2.0%) |
hay_fever |
基础疾病 | yes / no | yes 145(1.5%) |
pneumonia → 列名 pneu |
诊断 | yes / no | yes 103(1.0%) |
common cold → 列名 common_cold |
诊断 | yes / no | yes 2,335(23.4%) |
dyspnea → dysp |
症状 | yes / no | yes 2,008(20.1%) |
cough |
症状 | yes / no | yes 3,400(34.0%) |
pain |
症状 | yes / no | yes 1,351(13.5%) |
fever |
症状 | high / low / none | high 535、low 1,616、none 7,849 |
nasal |
症状 | yes / no | yes 2,513(25.1%) |
policy |
非临床 | high / low | high 6,538、low 3,462 |
self_empl |
非临床 | yes / no | yes 1,089(10.9%) |
season |
非临床 | summer / winter | summer 5,998、winter 4,002 |
antibiotics |
治疗 | yes / no | yes 2,044(20.4%) |
days_at_home |
结局 | 0-15 整数 | 0 天 2,437、1 天 2,918、2 天 2,065 为前三档 |
text |
文本 | 英文笔记 | 均长 970 字符,中位 961.5,区间 488-1,836 |
advanced_text |
文本 | 英文精简笔记 | 均长 504 字符,中位 498.5,区间 222-1,028 |
(分布数字由本次实抓 SimSUM.csv 逐列计数得出,非论文表格;论文未给出单变量边际分布表。)
2.2 分布特征:一张「不均衡到需要小心」的剖面
三个观察值得单独说:
- 诊断极度稀有:肺炎只有 103 例,占 1.0%。这意味着任何以肺炎为标签的下游任务,测试集里大概只有 20 例左右的正例,指标方差极大。作者对此的态度是明确的——诊断不是这个数据集的主任务。
- 症状的频率差近 7 倍:cough 34.0% 对 pain 13.5%。pain 同时是基线里最难预测的症状(表格模型 F1 只有 0.028-0.407),两个事实互相印证:样本少 + 文本里提得少 + 语义模糊(「胸痛」与「呼吸时不适」的边界),三重叠加。
- season 与常见病的耦合:summer 6,000 / winter 4,000 的 6:4 比例直接进入条件概率表(common cold 依赖 season、pneumonia 依赖 asthma/COPD/season),所以「冬季感冒更多」这类真实世界的季节效应在数据里是被显式建模的,而不是碰巧出现。
2.3 文本规格:两版笔记的差异
| 维度 | 正常版 text |
精简版 advanced_text |
|---|---|---|
| 结构 | 强制两段:「History」+「Physical Examination」 | 同两段,但更短 |
| 均长 | 970 字符 | 504 字符(约 52%) |
| 风格 | 完整句,描述性 | 缩写、简写、更密的句法(模拟真实病历的书写习惯) |
| 每 span 均词数 | 8.46 | 5.17 |
| span 抽取质量 | P 94.06% / R 98.78% | P 93.55% / R 94.50% |
精简版的生成方式不是「重新写一遍」,而是把正常版喂回 GPT-4o 并指令「用缩写与简写压缩」。这带来一个副作用:精简版的内容忠实度很高(专家评分 4.88),但可读性下降明显(4.02)——评估者把可读性问题归因于大量缩写。
2.4 文件清单与体量
| 文件 | 体量 | 内容 |
|---|---|---|
SimSUM.csv |
15,412,710 B | 主表,分号分隔,UTF-8 |
data/df_simsum.p |
— | 与 CSV 等价的 Pandas pickle |
data/df_prompts.p |
— | 扩展版:含每条记录的 prompt 及其构造素材(症状提及、描述符) |
data/df_train.p / df_test.p |
— | 8,000 / 2,000 划分 |
data/spans/normal_span_annotations.json |
7.9 MB | 正常笔记 span |
data/spans/adv_span_annotations.json |
— | 精简笔记 span |
data/emb/、data/emb/span/*.npy |
— | 预计算嵌入(history / physical examination 两段、span 级) |
eval/notes/Evaluator_{i}.csv |
— | 5 位评估者的逐篇打分明细 |
eval/notes/Instructions_clinical_evaluation.pdf |
— | 给评估专家的书面说明 |
eval/spans/span_eval_dataset.txt / span_eval_results.csv |
— | 100 篇人工 span 对照的样本与结果 |
| HF 仓总占用 | 15,509,017 B | 含 README 等 |
注意 CSV 是分号分隔且首列是无名列(行号),用 pandas.read_csv 时必须显式指定 sep=';',否则整行会被读成一列(坑 6)。
2.5 一条记录长什么样(结构示意)
行号 | policy | self_empl | asthma | smoking | COPD | season | hay_fever | pneu | common_cold |
| dysp | cough | pain | fever | nasal | antibiotics | days_at_home | text | advanced_text
0 | yes | no | no | no | no | summer | no | no | no |
| no | no | no | high | no | yes | 2 | "**History** ..." | "..."
第 0 行的解读:一位夏天就诊的病人,policy 为 high(医生对开抗生素的倾向偏高),无任何基础疾病、无肺炎与感冒诊断,表格里唯一出现的症状是「高热」(其余症状均 no);最终开了抗生素、居家 2 天。抗生素与居家天数都是由 downstream 模型按症状和 policy 推出来的,因此「只有高热却开了抗生素」在数据生成逻辑里完全自洽——logistic 模型里高热(fever=high)的权重为 2.25,是最重的单项。对应的正常笔记开头是「患者主诉过去 48 小时内体温显著升高……」,并在同段明确写了「没有胸痛、呼吸困难或咳嗽等呼吸道症状」。这一条同时展示了三个设计细节:fever 可以是唯一症状、抗生素由 policy + 症状经 logistic 模型决定、「否认某症状」也会被标注为 span(该句同时被标为 dyspnea、cough、respiratory pain 三个 span)。
§3 生成链解剖:从一张有向无环图到一份门诊笔记
3.1 四个阶段
整个数据生成过程有四步,顺序不可颠倒:
┌────────────────┐ ┌──────────────┐ ┌────────────────┐ ┌──────────────┐
│ 1. 贝叶斯网络 │ ──> │ 2. 采样 1 万次 │ ──> │ 3. GPT-4o 写笔记 │ ──> │ 4. LLM 抽 span │
│ 专家定义 DAG+CPT│ │ 16 个变量取值 │ │ 正常版+精简版 │ │ 字符级定位 │
└────────────────┘ └──────────────┘ └────────────────┘ └──────────────┘
↓ ↓ ↓ ↓
因果结构与条件概率 结构化表格(真值) 非结构化文本(观察) 概念标注(对齐层)
论文用一张流程图(Fig. 3)把这四步串起来,并在正文里强调:第 3 步的输入刻意删掉了第 1 步产出的诊断、治疗、结局与非临床变量。这不是疏忽,而是为了模拟「医生写病历那一刻,诊断还没确立」。
3.2 第 1 步:专家画图
一位「30 年以上初级保健经验、且有临床应用贝叶斯网络背景」的专家定义了有向无环图(Directed Acyclic Graph, DAG)。图的核心是两条诊断(肺炎、普通感冒)与五个症状;基础疾病(哮喘、吸烟、COPD、花粉症)作为易感因素指向诊断与症状;非临床变量(季节、政策、自雇身份)从外部影响诊断、治疗与结局。
变量间的依赖关系并非全连,而是经过裁剪的,主要边如下:
| 子变量 | 父变量(条件依赖) |
|---|---|
| COPD | smoking |
| common cold | season |
| pneumonia | asthma、COPD、season |
| dyspnea | asthma、smoking、COPD、pneumonia、hay fever |
| cough | asthma、smoking、COPD、pneumonia、common cold |
| nasal | common cold、hay fever |
| pain | cough、pneumonia、COPD、common cold |
| fever | pneumonia、common cold |
| antibiotics | policy、dyspnea、cough、pain、fever |
| days_at_home | antibiotics、dyspnea、cough、pain、fever、nasal、self-employed |
这张表的读法:fever 只有两个父节点,意味着这个模型认为「发热只由肺炎或感冒引起」——真实世界当然不成立(尿路感染、药物热比比皆是),但作为受控基准,这样的简化让真相可枚举、误差可归因。
3.3 第 2 步:三种参数化方式
条件分布不是全部手工填表,而是按父节点数量的多少分三种方式设定:
(一)条件概率表(CPT)——父节点少、取值组合有限的变量直接填表:asthma、smoking、hay fever、COPD、season、pneumonia、common cold、fever、policy、self-employed 共 10 个。概率的来源是专家自身经验加比利时当地全科诊所的人口学,论文坦承「不指望这些概率能推广到全球人群」。
(二)Noisy-OR 分布——父节点多的症状(dyspnea、cough、pain、nasal)用手工填表不可行,于是采用 Noisy-OR:假设每个父节点都有独立的致病机制,任一机制被激活则症状出现,另有一个「泄漏概率」代表未被建模的其他原因。四组参数(摘录)如下:
| 症状 | 泄漏 p₀ | 各父节点激活概率 |
|---|---|---|
| dyspnea | 0.05 | asthma 0.90、smoking 0.30、COPD 0.90、hay fever 0.20、pneumonia 0.30 |
| cough | 0.07 | asthma 0.30、smoking 0.60、COPD 0.40、pneumonia 0.85、common cold 0.70 |
| pain | 0.05 | COPD 0.15、cough 0.20、pneumonia 0.30、common cold 0.10 |
| nasal | 0.10 | hay fever 0.85、common cold 0.70 |
这组数字本身就很有信息量:哮喘对呼吸困难的激活概率 0.90、COPD 同样 0.90,而吸烟对咳嗽的激活 0.60——专家的临床直觉被直接编码成了概率。
(三)logistic 回归——抗生素处方用 Sigmoid 函数建模,模拟医生「疑诊肺炎的把握随症状数上升、到阈值就开药」的过程:
P(antibiotics=yes) = Sigmoid(-3 + 1×policy + 0.8×dyspnea + 0.665×cough + 0.665×pain
+ 0.9×[fever=low] + 2.25×[fever=high])
偏置 -3 与 policy 系数 1 的设计目标很明确:无症状且 policy 低时,开药概率约 5%;policy 高时约 10%——也就是「纯粹出于其他未建模原因的处方率」。
(四)Poisson 回归——居家天数用两个独立的 Poisson 模型(开药 / 未开药),因为作者认为抗生素对居家天数有非线性效应:
未开药: λ₀ = exp(0.010 + 0.64×dyspnea + 0.35×cough + 0.47×pain + 0.011×nasal
+ 0.81×[fever=low] + 1.23×[fever=high] - 0.5×self_employed)
已开药: λ₁ = exp(0.16 + 0.51×dyspnea + 0.42×cough + 0.26×pain + 0.0051×nasal
+ 0.24×[fever=low] + 0.57×[fever=high] - 0.5×self_employed)
系数由专家标注的训练案例经梯度下降拟合,self-employed 的 -0.5 是手工设定——「自雇者无论症状如何,都会少请假几天」。
3.4 第 3 步:prompt 里有什么、没有什么
这一节是整个数据集最需要细看的地方,因为它决定了「文本与表格之间的缝隙」有多大。
prompt 里放的三样东西:
- 症状清单(不穷举):不是把 5 个症状的存在与否全部写进去,而是按专家定义的概率采样「这个症状要不要提」。真实病历不会逐条罗列「有/无」所有症状,而是跟着病人叙述与医生追问的节奏走——这个采样机制就是为了模仿这种节奏。
- 每个症状配一个描述符:描述符是从专家定义的短语库中随机抽取的,且与症状的成因相关。这一个设计解决的问题很关键:诊断不进 prompt,但诊断可以通过「这个咳嗽是肺炎式还是感冒式」的描述符影响措辞,从而让诊断成为可从文本间接推断的隐藏变量。
- 基础疾病清单:视为就诊前已知信息,可以随意提及。
prompt 里不放的四类变量:
- 诊断(肺炎、感冒)——医生写病历那一刻还没有确诊结论;
- 治疗与结局(抗生素、居家天数)——写病历时未知或不相关;
- 非临床变量(政策、自雇、季节)——同样不进入医生的笔头;
- 性别与年龄——明确禁止提及。
附加指令三条:笔记必须分「History」与「Physical Examination」两段;不得提及任何可能诊断的怀疑;不得写患者性别与年龄。此外还有一个针对「无呼吸症状」特例的备用 prompt——约三分之一的记录里病人没有任何呼吸道症状,此时允许模型想象一个与呼吸系统无关的就诊理由(比如皮肤问题、常规随访),以免所有笔记千篇一律。
3.5 一致性自检:52 篇被重写
生成完成后,作者又把同样的病人信息与生成的笔记一起喂回 GPT-4o,让它判断二者是否一致。10,000 篇里有 52 篇被判为不一致,全部重新生成并人工复核。这个数字(0.52%)与后面专家评估里的一致性得分 4.69 相互印证:LLM 在这一步的自我审查相当可靠,但也并非零错。
3.6 第 4 步:span 抽取的两条不同路径
正常笔记与精简笔记的 span 抽取策略不一样,这是论文里容易被忽略的一个工程细节:
| 环节 | 正常笔记 | 精简笔记 |
|---|---|---|
| 起点 | 告诉 LLM 病人有哪些症状、没有哪些,让它从笔记里抽短语 | 先给出正常笔记里已抽到的短语,让 LLM 到精简笔记里找对应表达 |
| 后处理 | 与原文精确匹配(忽略大小写与标点) | 同左 |
| 匹配失败 | 再调一次 LLM,要求它把短语映射到原文中的确切片段 | 同左 |
| 效果 | P 94.06% / R 98.78% | P 93.55% / R 94.50% |
为什么精简版不能从头抽?作者的解释是实测出来的:拿正常版的短语去对齐精简版,比让模型从精简版里凭空找效果好得多。原因可能是精简版缩写太多,模型容易把「SOB」(shortness of breath)之类的缩写漏掉或错判。
§4 表格网络:把临床直觉写成概率
4.1 一张图的三种读法
贝叶斯网络既是统计模型,也是临床知识的显式表达。同一张图可以从三个角度读:
| 读法 | 问题 | 用途 |
|---|---|---|
| 因果读法 | 改变季节,肺炎概率会怎样变? | 因果效应估计、混杂控制 |
| 诊断读法 | 已知病人有咳嗽与高热,肺炎的后验概率是多少? | 临床推理自动化研究 |
| 生成读法 | 从根节点往下采样,能生成多少种「合理」病人? | 合成数据生成、压力测试 |
SimSUM 的设计使这三种读法都成立,这正是它能被列为一类通用基准而非单一任务数据集的原因。
4.2 观测到的边际分布说明了什么
实抓的边际分布(§2.1)与模型设定之间可以互相校验,举三个例子:
- COPD 仅 2.0%、hay fever 仅 1.5%:这两个基础疾病的低患病率与「初级保健人群」的设定相符(COPD 在真实全科诊所的登记患病率也是低个位数)。副作用是:任何以 COPD 为关键变量的分析都会因样本少而不稳定。
- common cold 23.4% 对 pneumonia 1.0%:两者相差 23 倍,符合「感冒常见、肺炎少见」的真实流行病学比例。
- antibiotics 20.4%:比利时是欧洲抗生素使用偏高的国家之一,20% 的处方率在初级保健呼吸道感染中属于可信区间。
三处都对得上,说明概率表虽然出自单一专家,但不是随手填的。
4.3 一个值得警惕的循环:pain 的父节点里包含 cough
在图中,pain 的父节点包括 cough(Noisy-OR 参数 0.20)。这意味着「咳嗽」会因果性地增加「胸痛/呼吸痛」的概率——临床上说得通(剧烈咳嗽导致胸壁疼痛)。但对建模者有一个副作用:pain 与 cough 不是条件独立的,任何把两者当作独立标签的多标签分类器都会低估它们的相关性。这也是为什么 pain 在基线里表现最差:它既稀有、又受其他症状影响、语义边界还模糊。
4.4 生成器代码的可复用性
src/data_generating_process.py 里封装了 RespiratoryData 类,完整实现了上述网络。这个类的实际用途不止于复现 SimSUM:
- 改 CPT 或 Noisy-OR 参数,可以生成不同严重程度分布的人群;
- 加节点(比如加入「空气污染指数」),可以扩展成更复杂的因果结构;
- 把采样器接上别的文本生成器,就得到一个新版本的「表格+文本」基准。
换句话说,SimSUM 交付的不只是一个静态 CSV,而是一台可调参的虚拟诊所。这一点在同类合成数据集中并不常见——Synthea 也有生成器,但它不生成自由文本。
§5 标注体系:41,570 个 span 的来历
5.1 数字核对
本次实抓 normal_span_annotations.json(7.9 MB)并逐条统计,得到:
| 指标 | 实抓值 | 论文值 | 一致性 |
|---|---|---|---|
| span 总数 | 41,570 | 未直接给总数 | — |
| 每篇均 span | 4.16 | 4.16 | 完全一致 |
| 有 span 的笔记数 | 8,372(83.7%) | 16.3% 无 span(即 83.7% 有) | 完全一致 |
| cough | 10,349(24.9%) | 每篇 1.03、占比 24.9% | 一致 |
| dyspnea | 9,627(23.2%) | 每篇 0.96、占比 23.2% | 一致 |
| nasal symptoms | 8,458(20.3%) | 每篇 0.85、占比 20.4% | 舍入差 0.1 pp |
| fever | 7,904(19.0%) | 每篇 0.79、占比 19.0% | 一致 |
| respiratory pain | 5,232(12.6%) | 每篇 0.52、占比 12.6% | 一致 |
这组核对很有价值:它证明论文 Table 3 的统计确实是从公开的 span 文件直接算出来的,没有"论文一套、数据另一套"的漂移。做二次分析的人可以放心用原始 JSON。
5.2 span 的四字段结构
{
"0": [
{"symptom": "fever", "text": "significant increase in body temperature over the last 48 hours, exceeding normal ranges, indicating a high fever", "start": 30, "end": 143},
{"symptom": "dyspnea", "text": "There have been no respiratory symptoms such as pain, dyspnea, or cough", "start": 145, "end": 216}
]
}
四个字段各有坑:
symptom:取值是dyspnea/cough/respiratory pain/fever/nasal symptoms——不是 CSV 列名(pain、nasal)。直接拿去做 join 会全军覆没(坑 4)。text:抽出的短语原文。注意上例中同一句「没有呼吸道症状如疼痛、呼吸困难或咳嗽」被同时标成了三个 span(dyspnea、cough、respiratory pain)——否定句也会被标注。start/end:字符级下标,左闭右开(text恰好等于note[start:end])。中文用户容易误以为是字节下标或词下标,实际是 Python 字符串索引——对英文笔记等价于字符数。
5.3 「否定提及」为什么也标
上例揭示了一个关键设计:span 标注的是短语的出现,不是症状的存在。所以 there have been no ... cough 这句会触发 cough 的 span。这带来两个后果:
- 不能把「有 span」等同于「有症状」。论文 Table 4 明确显示:症状为 no 的笔记里,仍有 26.6%-66.5% 会提到该症状(多为否定式)。
- span 对否定检测任务是现成的语料。句子层面的否定识别(negation detection)可以拿这批 span 做弱监督起点——虽然只有「提到」标签,没有「肯定/否定」标签,但否定句大量出现在「症状=no」的记录里,可以按记录级标签反推。
5.4 质量边界
100 篇人工对照的结论值得逐字理解:正常笔记召回 98.78% 意味着几乎不遗漏,但精确率 94.06% 意味着约 6% 的 span 是抽错的——通常是边界划多了(把整句而非短语标为 span)或把泛指当成了症状(如把「一般不适」标为 pain)。精简笔记召回掉到 94.50%,说明缩写与省略确实让模型漏抽增加。
对使用者的建议:
- 做监督训练时,把 span 当作「弱标签」并配噪声鲁棒的损失函数,别当金标准;
- 做评测时,若要精确的边界,取
eval/spans/span_eval_results.csv里那 100 篇人工标注作为验证子集; - 做统计描述时(比如「pain 在文本里被提及的比例」),94% 的精确率足够,因为误差在症状间大致均匀。
5.5 span 描述统计的临床解读
论文 Table 3/4 的数字里,有三个可以直接翻译成临床语言的发现:
- cough 最容易被写进「病史」段(92.5%),而 nasal 只有 63.0%——因为鼻塞流涕常被写进体格检查(37.0% 在体检段),符合「问诊问咳嗽、查体看鼻子」的真实习惯。
- pain 的提及率与存在率脱节最严重:pain 存在时有 81.7% 被提及,不存在时仍有 39.9% 被提及(多是否定句)。这意味着单靠文本判断 pain,天然存在大量假阳性诱因。
- fever 三档的提及梯度干净:high 95.9% → low 71.6% → none 44.4%,说明发热这一变量的文本表达与真实取值高度耦合——这也解释了为什么 fever 的基线 F1(0.91)明显高于 pain(0.81)。
§5A 双向视角:表格侧能看到什么,文本侧会丢什么
5A.1 从表格看文本:哪些变量「一定会被写」
把 5 个症状按「存在时被提及的概率」(论文 Table 4)排序,能得到一张「可写性阶梯」:
| 症状 | 存在时提及率 | 不存在时提及率 | 可写性判断 |
|---|---|---|---|
| dyspnea | 99.1% | 66.5% | 几乎必写,但阴性时也常被否认句带到 |
| cough | 97.0% | 64.5% | 必写 |
| nasal | 95.7% | 26.6% | 必写,阴性时很少提 |
| fever(high) | 95.9% | — | 必写 |
| pain | 81.7% | 39.9% | 最不稳定 |
| fever(low) | 71.6% | — | 常被弱化表达(「低烧」「微热」) |
这张表解释了两件事:为什么 pain 的 F1 最低(文本对它最不忠实),以及为什么 nasal 一旦存在就非常容易被检出(阴性时几乎不提,信噪比高)。
5A.2 从文本看表格:哪些变量「根本写不进去」
| 变量 | 是否进 prompt | 文本可推断性 | 说明 |
|---|---|---|---|
| 基础疾病 4 项 | 是 | 高 | 明确告知,模型可以自然带入 |
| 症状 5 项 | 部分(按概率采样) | 中 | 未被告知的症状可能在文本中完全缺失 |
| 诊断 2 项 | 否 | 中低 | 只能通过描述符间接体现 |
| policy / self_empl / season | 否 | 低 | 季节偶尔可从上呼吸道症状推断,其余基本无痕 |
| antibiotics | 否 | 低 | 病历通常不写「我决定开抗生素」的理由 |
| days_at_home | 否 | 低 | 结局发生在就诊之后,文本里通常只有「建议休息」 |
结论:表格的 16 个变量里,只有约 9 个(4 基础疾病 + 5 症状)能被文本可靠反映。这是 SimSUM 能被用于「文本 → 表格」任务的边界;超出的 7 个变量,任何文本模型学到的都只是相关性幻觉。
5A.3 一个反直觉的设计:诊断不进 prompt 反而更真实
看似是「信息丢失」,实际是最贴近真实工作流的处理:医生写病历那一刻,诊断尚未确立;病历里出现的是「咳嗽三天、低热」而不是「感冒」。这种处理让 SimSUM 能支持「从症状组合反推诊断」的研究,且诊断标签不受文本污染(不会出现「病历里直接写了肺炎」这种标签泄漏)。
如果反过来把诊断写进 prompt,模型几乎必然会在笔记里提到「疑似肺炎」,那么所有基于该数据的诊断预测实验都会严重高估性能——这是合成数据集常见的设计陷阱,SimSUM 规避了它。
§5B 数据质量自检:用公开文件能查出的五件事
5B.1 自检一:字段取值是否越界
用一行代码即可确认所有离散变量都在论文定义的取值集合内:
ok = True
for col, vals in {"dysp": {"yes","no"}, "cough": {"yes","no"}, "pain": {"yes","no"},
"nasal": {"yes","no"}, "fever": {"high","low","none"},
"season": {"summer","winter"}, "policy": {"high","low"}}.items():
bad = set(df[col].unique()) - vals
if bad:
ok = False
print(col, "越界值:", bad)
print("全部字段合法" if ok else "存在越界")
实抓结果:全部合法,无空值、无拼写变体(如 Yes / YES 混用)。这一点看似琐碎,但大量公开医疗数据集恰恰在这一点上翻车(同一字段出现三四种拼写),SimSUM 的整洁度明显高于平均。
5B.2 自检二:文本与表格是否矛盾
最容易查的矛盾是「诊断与症状严重不符」。例如 pneu=yes 但 fever=none 且 cough=no 且 dysp=no 的记录,在生成逻辑上是可能的(贝叶斯网络允许罕见组合),但数量应该很少。若这类记录占比异常高,说明采样或拼接环节有问题。
实抓显示 pneu=yes 仅 103 条,属于稀有组合,无法做有意义的分布检验。这类自检更适合在 COPD、hay_fever 等高患病率变量上做。
5B.3 自检三:span 下标是否与文本对齐
for k, spans in list(data.items())[:50]:
note = df.loc[int(k), "text"]
for s in spans:
assert note[s["start"]:s["end"]] == s["text"], (k, s)
实抓抽检 50 条记录全部对齐。这意味着 start/end 是可靠的 Python 字符串索引,可以直接用于切片、高亮、序列标注转换。
5B.4 自检四:两版笔记的配对是否完整
正常版与精简版应当一一对应。若某条记录只有正常版没有精简版(或反之),说明生成流水线有缺口。实抓 10,000 条全部配对完整,advanced_text 无空值。
值得注意的是,精简版的平均长度是正常版的 52%,但最短的精简笔记只有 222 字符——这类极短样本在训练时容易成为噪声主导,做难度分层实验时可以单独拿出来看。
5B.5 自检五:类别不平衡是否影响划分
官方划分是 8,000/2,000 随机划分。随机划分在 pain(13.5%)这类稀有类别上,测试集正例约 270 例,足够做 F1 估计;但在 pneumonia(1.0%)上只有约 20 例,任何以肺炎为目标的指标都会有巨大方差。
建议:若你的研究涉及稀有诊断,改用分层划分(stratified split)并明确报告,同时说明与论文口径不同。
§5C 一条记录从生成到标注的完整轨迹
以实抓 CSV 第 0 行为例,把四个阶段串起来看:
| 阶段 | 发生了什么 | 可观察的产物 |
|---|---|---|
| ① 贝叶斯采样 | 从根节点开始:policy=high、self_empl=no、season=summer 先定;再定基础疾病(全 no);再定诊断(全 no);再定症状(fever=high,其余 no);最后定 antibiotics=yes、days_at_home=2 | 16 个变量的取值 |
| ② prompt 构造 | 症状清单只写「高热」并配一个高热描述符;基础疾病一栏为空;附加指令要求两段式、不提诊断与性别年龄 | 一条提示文本(在 df_prompts.p 里) |
| ③ 文本生成 | GPT-4o 写出约 1,000 字符的笔记:先叙述发热时长与程度,再写否认呼吸道症状,体格检查段给体温 103°F、心率 98、血氧 98% 等 | text 字段 |
| ④ 压缩与标注 | 同一笔记被压缩成精简版;再用 GPT-4o 抽 span,得到 fever 4 个、dyspnea/cough/pain 各 1 个(共用同一句否认句) | advanced_text + span JSON |
这条轨迹的价值在于:任何一个环节都能被单独检查、单独替换。想验证「换一个 LLM 生成文本会怎样」只需替换第 ③ 步;想验证「换一种 span 抽取器会怎样」只需替换第 ④ 步;而第 ① 步的表格真值始终不变。这种模块化正是 SimSUM 作为研究基础设施的核心竞争力。
§5D 与其他「表格-文本双模态」基准的坐标
5D.1 一张二维坐标图
把常见的临床文本数据集放在「结构化信息完备度」×「文本真实度」两个轴上:
文本真实度(高)
│
│ MIMIC-IV-Note ● ● i2b2/n2c2(人工标注、真实、局部结构化)
│ ● MIMIC-CXR(影像报告 + 标签)
│ ● MedNLI(推理,非抽取)
│
│ ★ SimSUM(合成、完全结构化、真值已知)
│ ● ACI-Bench(对话→笔记,合成)
│ ● MedDialog(对话)
│
低└─────────────────────────────────────────────── 结构化信息完备度(高)
低
(示意图,非严格量化。)
解读:右上象限(真实 + 完全结构化)是空白的——现实中不存在这样的公开数据集,因为真实病历的结构化字段永远不完整,而完整结构化的必然是合成数据。SimSUM 落在右下:结构化完备度最高、文本真实度中等。它的价值不是「像真实病历」,而是「恰好补上了右上角那个不存在的格子」。
5D.2 为什么这个位置是稀缺的
大多数合成临床数据集中在左下(结构化但无文本)或中下(有文本但无结构化真值):
- 只有结构化:Synthea、CMS DE-SynPUF、Synthetic MIMIC-III Health Gym——能训练表格模型,但做不了文本任务;
- 只有文本:MedDialog、各类对话数据——能训练文本模型,但没有逐字段真值;
- 有文本也有标签但无因果结构:MIMIC-CXR(报告 + 影像标签)、各类影像报告数据集——标签是单点的(有没有病灶),不是 16 个互相关联的变量。
SimSUM 是少数同时具备「16 个变量的联合分布 + 文本 + 概念级标注」的资源,且这 16 个变量之间的因果关系是显式写出来的。
5D.3 坐标位置的代价
越靠右下,越要接受三个代价:
- 不能用它评价真实世界性能——文本真实度中等;
- 不能把它当作真实数据的替代品——它只是补上了真实数据无法提供的实验条件;
- 不能假设它的分布在别的医疗机构也成立——单一专家的设定。
理解了这三个代价,就不会误用。误用的典型形态是:拿 SimSUM 上 0.96 的 F1 去说服临床方「我们的系统已经可用」。这个数字衡量的是「在已知真相、干净文本、单中心设定下的抽取能力」,与临床可用性之间还隔着数据漂移、工作流集成、监管合规三重大山。
§6 获取与许可:一张表、两个 JSON、三个入口
6.1 三条下载路径
| 入口 | 地址 | 适合谁 | 备注 |
|---|---|---|---|
| GitHub 主仓 | github.com/prabaey/SimSUM |
要代码 + 全量附件的复现研究者 | 根目录 SimSUM.csv 15.4 MB 直下;data/、eval/、results/ 分目录 |
| 旧名重定向 | github.com/prabaey/SynSUM |
从旧论文/旧引用页过来的检索者 | 会重定向到新仓;别误以为数据集已下线 |
| HuggingFace | huggingface.co/datasets/prabaey/simsum |
想用 datasets 库直接加载的人 |
只有 CSV + 两个 span JSON + README,没有 代码与嵌入 |
| IEEE DataPort | doi:10.21227/3sk0-2015 |
需要正式 DOI 存档引用的场景 | 2025-01-21 登记,文件名 SynSUM.csv(旧名) |
国内网络环境访问 HuggingFace 主站受限时,可走镜像;镜像对非中国大陆 IP 会自动跳回原站,这不是镜像故障。
6.2 许可对照:三个对象、三套规则
| 对象 | 许可 | 能做什么 | 不能做什么 |
|---|---|---|---|
| 数据集(CSV、JSON、pickle、npy) | CC BY 4.0 | 商用、修改、再分发、训练模型 | 需署名(引用论文)并标示修改 |
生成与评测代码(src/、utils/) |
README 与 HF 卡片未单列,仓内无 LICENSE 文件 |
按 CC BY 4.0 精神使用(遗留疑点) | 无明确法律文本支撑商用 |
| 论文(期刊版) | CC BY-NC-ND 4.0 | 阅读、下载、非商业转载(须署名、不得改) | 商用、改编、把图表改绘后商用 |
这个组合有一个容易踩的坑:数据可以商用,论文配图不可以商用。若要在商业宣传材料里放论文的贝叶斯网络示意图,需自己按数据重新绘制,或向版权方另行取得许可(坑 8)。
6.3 下载与加载实操
CSV 是分号分隔、首列为无名行号列,直接 read_csv 会出错。推荐写法:
import pandas as pd
df = pd.read_csv("SimSUM.csv", sep=";", index_col=0)
# index_col=0 吸收无名行号列;若省略,会多出一列 "Unnamed: 0"
print(df.shape) # (10000, 18) —— 16 变量 + text + advanced_text
print(df.columns.tolist())
注意 df.shape 的第二维是 18 而不是 19:CSV 的 19 列里有 1 列是行号,读入后成为索引。
从 HuggingFace 加载:
from datasets import load_dataset
ds = load_dataset("prabaey/simsum") # 只有 default split(train),10,000 行
sample = ds["train"][0]
# sample["text"] -> 正常笔记
# sample["advanced_text"] -> 精简笔记
# sample["dysp"] / ["cough"] / ["pain"] / ["fever"] / ["nasal"] -> 症状标签
span 标注不在 HuggingFace 仓的 datasets 配置里,需要从 GitHub 的 data/spans/ 单独获取并自行按键连接。
6.4 复现路径
想从零复现整条流水线,需要的顺序是:
- 表格:跑
src/data_generating_process.py,内置的 CPT 与 Noisy-OR 参数已固化,直接采样即可得到 10,000 条——但由于随机种子未在论文中说明,重跑会得到不同的 10,000 条,与公开 CSV 不完全一致。 - 文本:跑
src/text_generation.ipynb,会调用 OpenAI API 请求 GPT-4o。论文未披露具体模型快照版本,2026 年之后重跑几乎必然得到不同措辞(坑 5)。 - span:跑
src/span_annotations.ipynb,同样依赖 GPT-4o,且分正常版与精简版两条路径。 - 基线:跑
src/symptom_predictor_baselines.ipynb,需要data/emb/下的预计算嵌入,否则要自己重算。
四个环节里,只有第 1 步能够完全原样复现(参数固定),第 2、3 步受 LLM 版本与采样随机性影响,第 4 步可复现但依赖嵌入文件是否与当前版本一致。
6.5 AI-Ready 评估
| 检查项 | 结论 | 说明 |
|---|---|---|
| 机器可读 | 通过 | CSV + JSON + pickle 三种格式,字段语义在 Table 1 完整定义 |
| 公开直链 | 通过 | GitHub 与 HF 均可匿名下载,无需申请或注册 |
| 许可明确 | 基本通过 | 数据 CC BY 4.0 明确;代码许可缺独立文本 |
| 文档完整 | 通过 | 论文 30 页含附录 prompt、CPT 表、评估说明 |
| 可复现 | 部分 | 表格可复现;文本与 span 受 LLM 版本漂移影响 |
| 版本可追溯 | 部分 | arXiv 四版、GitHub 改名、IEEE 存档并存,但无统一版本号(坑 2、坑 3) |
§7 基线实验:文本压倒表格,但只在难例上「1+1>2」
7.1 四个基线各自在测什么
| 模型 | 输入 | 考察什么 |
|---|---|---|
| BN-tab | 表格特征 | 如果只给定因果结构,能推多准?用变量消元(variable elimination)做精确推断,参数从 SimSUM 数据里用最大似然重新学习 |
| XGBoost-tab | 表格特征 | 不假设结构,纯数据驱动的表格上限。每个症状 × 每种证据设置各训一个分类器(共 15 个),5 折交叉验证调参 |
| neural-text | 文本 | 文本里有多少信息?用 BioLORD-2023 临床句向量编码,接一层隐层的 MLP |
| neural-text-tab | 文本 + 表格 | 拼接两者能否互补?均值文本嵌入与表格特征拼接后送入同一网络 |
三种证据设置的区别是给模型多少背景信息:
all:所有其他表格变量都可见(包括其他症状、诊断、治疗、结局);no-sympt:把其他症状遮住,其余可见;realistic:只给真实临床场景中「写病历时确实知道」的变量(基础疾病、季节、诊断、治疗),去掉 policy、self-employed、days_at_home。
realistic 是三个设置里最有现实意义的,也是表格模型表现最差的——因为真实场景可用的信息本来就少。
7.2 结果总表
正常笔记(F1)
| 模型 | dyspnea | cough | pain | nasal | fever |
|---|---|---|---|---|---|
| BN-tab (all) | 0.737 | 0.782 | 0.239 | 0.715 | 0.486 |
| BN-tab (no-sympt) | 0.715 | 0.778 | 0.131 | 0.715 | 0.438 |
| BN-tab (realistic) | 0.670 | 0.776 | 0.028 | 0.715 | 0.359 |
| XGBoost-tab (all) | 0.664 | 0.785 | 0.407 | 0.713 | 0.411 |
| XGBoost-tab (no-sympt) | 0.661 | 0.778 | 0.364 | 0.715 | 0.402 |
| XGBoost-tab (realistic) | 0.663 | 0.780 | 0.370 | 0.715 | 0.395 |
| neural-text | 0.962 | 0.960 | 0.814 | 0.963 | 0.910 |
| neural-text-tab (all) | 0.954 | 0.956 | 0.819 | 0.961 | 0.909 |
| neural-text-tab (no-sympt) | 0.959 | 0.958 | 0.816 | 0.961 | 0.900 |
| neural-text-tab (realistic) | 0.957 | 0.960 | 0.827 | 0.959 | 0.903 |
精简笔记(F1)
| 模型 | dyspnea | cough | pain | nasal | fever |
|---|---|---|---|---|---|
| neural-text | 0.944 | 0.940 | 0.794 | 0.962 | 0.901 |
| neural-text-tab (all) | 0.953 | 0.940 | 0.787 | 0.959 | 0.896 |
| neural-text-tab (no-sympt) | 0.943 | 0.946 | 0.786 | 0.963 | 0.897 |
| neural-text-tab (realistic) | 0.938 | 0.948 | 0.792 | 0.963 | 0.903 |
7.3 五个可以直接引用的结论
- 文本压倒表格,差距高达 29 个百分点。pain 上 BN-tab(realistic)F1 = 0.028,neural-text = 0.814。这个极端落差说明:在「症状」这个标签上,文本是唯一的一手信息来源,表格变量只是配角。
- 因果结构并没有救回表格模型。BN-tab 用的是精确推断,理论上不该比 XGBoost 差太多,但它在 pain 上反而最差——因为 Noisy-OR 参数里 pain 的泄漏概率(0.05)与各父节点权重都很低,模型先天就认为「pain 很罕见」,于是大量漏检。
- 「全部证据」通常最好,但优势不大。三档设置在文本模型上差异都在 3 个百分点以内,说明文本已经把大部分信息吃掉了,额外表格变量的边际价值有限。
- 表格信息的价值集中在难例。neural-text-tab 在正常笔记上没有超过纯文本模型(0.954 vs 0.962),但在精简笔记上,
no-sympt与realistic两种设置在 cough 与 nasal 上都超过了纯文本——正是文本被压缩、症状被省略的那些笔记,背景知识才帮上忙。 - pain 与 fever 是所有模型公认的难点。pain 的文本提及率最低(存在时也只有 81.7%),fever 要判三档(high/low/none),两者都是语义最模糊、边界最不清的目标。
7.4 嵌入类型的消融:span 嵌入是「作弊上界」
| 嵌入 | dyspnea | cough | pain | nasal | fever |
|---|---|---|---|---|---|
| 仅病史段(hist) | 0.952 | 0.965 | 0.809 | 0.950 | 0.904 |
| 仅体检段(phys) | 0.897 | 0.823 | 0.696 | 0.957 | 0.852 |
| 均值(mean) | 0.962 | 0.960 | 0.814 | 0.963 | 0.910 |
| 拼接(concat) | 0.950 | 0.957 | 0.827 | 0.959 | 0.904 |
| span 嵌入 | 0.973 | 0.979 | 0.873 | 0.971 | 0.923 |
三点解读:
- 仅体检段明显最差(除 nasal 外全线落后 5-13 个百分点)。这符合常识:症状主要在病史里叙述,体格检查段描述的是客观体征。
- 均值略优于拼接,说明两段的语义有冗余,简单平均即可,拼接反而引入噪声维度。
- span 嵌入最好不要当成「模型能力」来看。它用的是已经标注好的症状短语,相当于开卷考试——而且这个标注本身是 GPT-4o 抽的,商用场景要自己标或本地小模型跑。作者明说这是「best-case reference」而非可达目标。
7.5 与同类基准的可比性提醒
直接把 SimSUM 上的 F1 与 i2b2/n2c2 的 NER F1 对比是不成立的:
- 任务不同:SimSUM 判的是「记录级症状存在与否」,不是「文本里的实体边界」;
- 数据不同:SimSUM 文本由 LLM 生成,句式规整度远高于真实病历;
- 标签不同:SimSUM 的标签来自抽样器,不是人类标注者的判断。
可以对比的只有「同数据集内的模型排序」,比如「文本模型 > 表格模型」「mean > concat」「span 嵌入 > 全文嵌入」这三条排序关系。跨数据集引用必须先说明口径。
§8 质量评估:专家怎么打分,分数意味着什么
8.1 评估设计
- 评估者:5 位全科医生(general practitioners)
- 样本:随机 30 篇笔记(正常版与精简版同时评,评估者能看到生成用的 prompt)
- 量表:1-5 分
- 维度:一致性、真实性(病史段/体检段分开评)、临床准确性、精简版内容与可读性
- 一致性计分规则:每处不符或缺失的症状扣分,扣罚超过 3 处记 1 分,零扣罚记 5 分——这是一个相当严苛的阶梯式规则,4.69 的平均分说明绝大多数笔记只有 0-1 处偏差。
8.2 结果
| 指标 | 均值 | 评估者间标准差 | 解读 |
|---|---|---|---|
| 一致性(正常版) | 4.69 | 0.12 | 极高,且评估者之间意见高度一致 |
| 真实性-病史(正常版) | 4.53 | 0.21 | 病史叙述像真的 |
| 真实性-体检(正常版) | 4.15 | 0.30 | 体检描述偏弱,但仍在「较可信」区间 |
| 临床准确性(正常版) | 4.92 | 0.07 | 几乎无虚假信息 |
| 精简版内容 | 4.88 | 0.10 | 压缩后信息保留得很好 |
| 精简版可读性 | 4.02 | 0.31 | 明显下降,缩写太多 |
8.3 分数背后的三个信号
信号一:不一致主要来自「多说了」,不是「少说了」。 论文指出,扣分大多源于模型违反了附加指令——即编造了 prompt 里没有的症状。这与「一致性」的高分并不矛盾:核心信息基本都对,但会多出几处细节。
信号二:体检段的真实性明显低于病史段(4.15 vs 4.53)。 合理推测是:病史段的信息来自 prompt 里明确列出的症状与描述符,模型只需转述;体检段没有对应输入,模型必须自行编造听诊、触诊、生命体征,编造的质量自然更差。这也解释了为什么「仅体检段嵌入」的预测能力最弱——那部分文本与真实症状的关联本来就弱。
信号三:临床准确性 4.92 与格式真实性缺失并存。 多名评估者明确指出「格式不像真实病历」。这意味着数据在医学内容上可信,在书写习惯上不可信。做文本风格研究(如病历书写规范化)的人要特别注意这一点——你研究的对象是 GPT-4o 的写作习惯,不是医生的。
8.4 评估的局限
- 样本只有 30 篇,占 10,000 的 0.3%,抽样误差不可忽略;
- 5 位评估者均来自比利时全科医学背景,判断标准与其它医疗体系可能不同;
- 评估者能看到 prompt,可能产生「确认偏误」(更容易把与 prompt 吻合的文本判为一致);
- 未评估「文本与表格之间隐含推理是否正确」(比如咳嗽描述符是否与肺炎诊断相符),这是一个更细但更关键的质量维度。
§9 使用场景:它能做什么,不能做什么
9.1 作者列出的四类用途
| 用途 | 具体做什么 | 需要的输入 |
|---|---|---|
| 主用途:临床信息抽取 | 在已知表格背景下判断文本是否提及/包含某症状,研究「背景知识 + 文本」的融合机制 | 文本 + 表格 + span |
| 临床推理自动化 | 基于表格与文本推断诊断或治疗决策(如是否该开抗生素) | 表格 + 文本(诊断不进 prompt,可做隐藏标签) |
| 因果效应估计与文本混杂 | 把「病历里写了什么」当作混杂变量,评估药物/治疗的真实效应 | 治疗 + 结局 + 文本 |
| 多模态合成数据生成 | 作为靶场,比较不同的「表格+文本」联合生成方法 | 全表 |
9.2 五类不适合的用途(作者明确反对 + 本文补充)
- 训练临床决策支持系统:作者原话反对。
- 评估临床模型性能:作者原话反对。原因是数据没有真实临床噪声,模型在这里表现好不代表在真实病历上好。
- 病历书写风格研究:评估者已指出格式不真实。
- 时序建模 / 重症监护研究:静态快照,无时间维度。
- 罕见病或少见并发症研究:COPD 仅 201 例、肺炎仅 103 例,做不出有统计意义的结论。
9.3 按角色推荐的使用路径
| 你的角色 | 建议路径 | 预计耗时 |
|---|---|---|
| 信息抽取算法工程师 | 下载 CSV → 取 text 与 5 个症状标签 → 复现 neural-text 基线 → 试新模型 → 再试拼接表格 |
半天跑通基线 |
| 合成数据研究者 | 读 data_generating_process.py → 改 CPT → 改文本生成 prompt → 对比新旧数据的专家评分 |
需 API 预算 |
| 因果推断研究者 | 用 antibiotics 作处理、days_at_home 作结局、text 作潜在混杂 → 检验方法能否恢复真实效应(真值由生成模型已知) |
数天 |
| 教学用途 | 取 100 行做课堂练习,让学生手标 span,再与自动标注对比 | 1 课时 |
| 医学 NLP 入门者 | 从「用 TF-IDF + 逻辑回归预测 cough」开始,把它作为第一个完整的 pipeline 练习 | 2-3 小时 |
9.4 一个具体的「正确用法」示例
假设你想验证一个假设:「加入基础疾病信息能提升症状抽取」。SimSUM 是少数能直接做这个实验的数据集,因为:
- 基础疾病(asthma、COPD 等)是表格变量,与症状的真实因果关联已知;
- 文本里有时提基础疾病、有时不提,模型必须学会从「哮喘病人主诉夜间干咳」这类线索里推断;
- 对照实验很简单:neural-text 与 neural-text-tab 的差值,就是「表格信息的边际贡献」,而论文已经给出了基准值(正常笔记上几乎没有提升,精简笔记上有小幅提升)。
反例:如果你想验证「我们的模型在真实病历上比 SOTA 好 3 个点」,SimSUM 帮不上忙——它衡量的是「模型在受控分布上的能力」,不是「模型在真实世界的表现」。
§10 与库内条目的关系
10.1 上游:真实病历类
| 条目 | rid | 关系 | 差异要点 |
|---|---|---|---|
| i2b2-n2c2-nlp | 14 | 同属临床文本信息抽取基准 | i2b2/n2c2 用真实去标识病历 + 人工标注;SimSUM 用合成文本 + 自动标注,但提供表格真值 |
| mimic-iv-clinical-database | 4 | 论文明确点名的「太复杂」对照物 | 重症监护、计费驱动、时序;SimSUM 是初级保健、静态快照 |
| mimic-iv-note | 47 | 真实临床笔记 + 结构化表格的代表 | 笔记长度、复杂度、噪声均远高于 SimSUM |
| mimic-cxr-jpg | 617 | 表格/标签 + 文本报告的多模态对照 | 影像 + 报告,SimSUM 无影像 |
| mednli | 648 | 临床文本推理 | 任务为推理蕴含,SimSUM 为抽取 |
| meddialog | 210 | 医患对话 | 对话体裁 vs 书写体裁 |
| phenotype-annotations-mimic | 594 | 表格与文本的概念对齐问题 | 同为「同一概念在两种模态中如何对齐」,但基于 MIMIC |
10.2 平行:其它合成数据类
| 条目 | rid | 关系 | 差异要点 |
|---|---|---|---|
| synthea | 460 | 合成 EHR 表格数据 | 有生成器、有时序、无自由文本;SimSUM 的表格部分在方法论上与其同源(规则/概率生成) |
| synthea-covid | 714 | Synthea 的 COVID 变体 | 同上 |
| cms-de-synpuf | 467 | 基于真实统计模拟的理赔数据 | 真实人口统计 + 模拟个体,无文本 |
| synthetic-mimic-iii-health-gym | 597 | 用真实数据训练生成器产出的合成 ICU 数据 | 评估重点是隐私与分布相似性,非信息抽取 |
| synthrad | 671 | 合成放射影像 | 影像侧的同位课题:合成数据能否替代真实数据做训练 |
| synthoct | 935 | 合成 OCT 影像 | 同上 |
| mimic-ext-synnotes | 1002 | MIMIC 衍生的合成笔记 | 「由真实数据生成」vs SimSUM 的「从零模拟」——正是改名想区分的两类 |
10.3 下游:任务类
| 条目 | rid | 关系 |
|---|---|---|
| aci-bench | 810 | 反向任务:由对话生成临床笔记;SimSUM 是「由表格生成笔记」,两者可互补做「生成→抽取」闭环 |
| ehr-reasoncon | 1007 | 表格 + 文本的临床推理 |
| ehrsql | 713 | 结构化查询,可视为 SimSUM 表格部分的「查询侧」应用 |
| ehrxqa | 646 | EHR 多模态问答 |
| archehr-qa-bionlp-task-2025 | 1000 | EHR 问答基准 |
| primekg / drkg / rtx-kg2 | 831 / 834 / 1137 | 领域知识图谱——与论文「用领域知识连接表格与文本概念」的核心主张直接呼应 |
10.4 建议互链点
- 强相关(正文互链):i2b2-n2c2-nlp(14)、mimic-iv-note(47)、synthea(460)、aci-bench(810)、mimic-ext-synnotes(1002)
- 中相关(正文提及):mimic-iv-clinical-database(4)、mednli(648)、phenotype-annotations-mimic(594)、synthetic-mimic-iii-health-gym(597)
- 弱相关(列表提及):synthrad(671)、synthoct(935)、cms-de-synpuf(467)、synthea-covid(714)、ehr-reasoncon(1007)
- 所有 rid 均为写作时实查 DB(
status=1 AND del_sign=0)所得,入库前应由主会话复核(R018:不猜 rid)。
§7A 方法细节补遗:基线模型怎么搭的
7A.1 文本编码器为什么选 BioLORD-2023
BioLORD-2023 是在生物医学本体与临床文本上训练的句向量模型,特点是把「概念的同义表达」映射到相近位置。对 SimSUM 这类「同一症状有多种措辞」的任务,这一点很关键:span 文本里有「shortness of breath」「difficulty breathing」「feeling winded」等十余种说法,通用句向量未必能拉开与「疲劳」「乏力」的距离。
论文只用了这一个编码器,没有做编码器间的横向对比——这是一个明确的研究空白,也是后续工作最容易补的一块(换成 ClinicalBERT、PubMedBERT、或通用大模型嵌入都可直接对标)。
7A.2 MLP 头的结构
三个要点:
- 一层隐层的 MLP,输入是句向量均值(或拼接)。
- 二分类症状用 Sigmoid 输出;fever 因为三档,用三头 Softmax。
- 表格变量的处理:类别变量 one-hot,
days_at_home标准化——后者的必要性在于它的量纲为 0-15,而嵌入维度通常在 768 左右,不标准化会被直接淹没。
7A.3 BN-tab 的推断方式
BN-tab 是「在学习到的贝叶斯网络上做精确推断」,具体步骤:
- 用最大似然从 SimSUM 数据重新学习各条件分布参数(因为真值参数不公开);
- 对 CPT 变量直接估计频数;对 Noisy-OR 变量用期望最大化拟合;对 logistic 与 Poisson 变量用对应回归;
- 给定证据(其他变量取值),用变量消元(variable elimination)计算目标症状的后验概率,再按 0.5 阈值判定。
这条路径的理论优势是「利用了因果结构」,实测劣势是「结构里没有的信息一点也补不进来」——这正是 pain 在 BN-tab 上只有 0.028 F1 的原因:pain 的 Noisy-OR 参数把所有父节点权重都设得很低(0.10-0.30),模型先天不认为它常见。
7A.4 三档证据设置的现实映射
| 设置 | 可见变量 | 对应真实场景 |
|---|---|---|
| all | 全部 16 个(含其他症状、诊断、治疗、结局) | 事后回顾性研究:所有数据都已录入 |
| no-sympt | 除其他症状外的全部 | 只做单症状筛查,不看其他症状 |
| realistic | 基础疾病、诊断、season、antibiotics | 写病历当时可用的信息 |
realistic 是最值得关注的:它代表了「如果我想在真实诊疗场景里做一个症状抽取助手,我能拿到哪些背景信息」。在这个设置下,表格模型全面崩塌(pain 0.028、fever 0.359),文本模型则几乎不受影响(0.814、0.910)——这个对比是 SimSUM 最有说服力的实验结果之一。
7A.5 为什么没有报 AUROC / AUPRC
论文统一报 F1,原因推测有二:一是与临床信息抽取的惯例对齐(抽取任务惯用 P/R/F1);二是 F1 对类别不平衡的惩罚更直观(pain 的 13.5% 正例率下,AUROC 会显得虚高)。代价是无法与大量报 AUROC 的表格模型文献直接对比——这也是跨数据集比较困难的原因之一(见 §7.5)。
§8A 质量评估的复现要点
8A.1 如果要自己做一次专家评估
论文的评估协议是可以直接搬用的最小可用版本,四步:
- 抽样:从 10,000 条中随机抽 30 条,同时取每条的 prompt(
df_prompts.p里有)与正常版/精简版笔记; - 说明:把
eval/notes/Instructions_clinical_evaluation.pdf作为评估指南发给评估者,里面定义了一致性的阶梯扣分规则; - 打分:1-5 分,四个维度独立打分,不做总体合并;
- 汇总:取 5 位评估者的均值,并报评估者间标准差(论文的做法),而不是只报均值。
关键的一点是把 prompt 也交给评估者看。如果不给 prompt,评估者无法判断「一致性」,只能评「真实性」与「可读性」。
8A.2 阶梯扣分规则的实际效果
一致性用「扣罚处数」映射到 1-5 分:0 处 = 5 分,超过 3 处 = 1 分,中间线性。这个规则的特点是对少量错误很宽容、对系统性错误很严厉:一篇笔记多写了 1 个症状仍可得 5 分,多写 4 个直接掉到 1 分。
实测均值 4.69、标准差 0.12,说明 30 篇笔记里绝大多数落在「0-1 处扣罚」区间,且 5 位评估者几乎给出同样的判断——这是很高的可靠性,比单纯「平均分高」更有说服力。
8A.3 未覆盖的评估维度
论文的评估没有触及以下四项,做二次研究时可以补:
- 内部一致性:同一病人的多份笔记之间是否自洽(本数据集每人只有一份,故无法评);
- 描述符-诊断对应:咳嗽的描述符是否真的与肺炎/感冒的诊断相容(这需要一个懂概率模型的评估者逐条核对);
- 跨评估者文化差异:5 位评估者全部来自比利时,若换成亚洲或北美医生,评分会变吗;
- 长尾病例质量:30 篇样本里 COPD 与 hay fever 的病例大概率不足 2 例,罕见病的文本质量实际上没有被评估。
8A.4 与自动指标的关系
由于有 41,570 个 span,可以构造自动化的「文本-真值一致性」指标(比如「表格里 pain=yes 的笔记中,pain span 出现率」)。论文 Table 4 实际上就是这个指标的变体。这类指标的优点是零成本、可全量计算,缺点是只能反映「提没提」,不能反映「提得对不对」。
一个实用的组合是:自动指标做全量筛查,人工评估做抽样校验。先用 span 统计找出异常记录(比如 pain=yes 但完全没有 pain span 的 18.3%),再从中抽样请专家判断是「文本漏写」还是「标注漏抽」。
§9A 从论文到产品:三条落地路径的可行性
9A.1 路径一:作为内部 Prompt 工程的回归测试集
想法:把 SimSUM 当作「病历书写助手」的验收集——给定结构化输入,看模型写出的笔记是否覆盖了全部关键信息。
可行性:高。SimSUM 恰好提供了「结构化输入 → 文本」的配对,且有 41,570 个 span 可作为自动比对基准。具体做法是:让待测模型按相同输入写笔记,再用同样的 span 抽取管线抽一遍,比较 span 集合与真值的重合度。
风险:SimSUM 的写作风格是 GPT-4o 的,若待测模型风格差异大(比如中文病历、模板化写法),span 抽取管线本身就会失效。
9A.2 路径二:作为信息抽取模型的压力测试
想法:用「精简版笔记」测试模型在信息稀疏条件下的鲁棒性。
可行性:中高。精简版的困难是真实的(缩写、省略),且同一真值有难易两版,可以做配对比较(paired comparison),统计上更稳健。
风险:精简版的生成也是 GPT-4o,缩写习惯可能与真实病历不同(真实病历的缩写有强地域性,如「s/p」「c/o」在英式与美式病历中用法不同)。
9A.3 路径三:作为合成数据生成器的对标基准
想法:如果你在做「表格+文本」联合生成,SimSUM 是现成的对照。
可行性:中。需要三项对齐才能比:相同的变量集(16 个)、相同的评估方式(专家评分 + 基线 F1)、相同的规模(10,000 条)。任何一项不对齐,比较都会失真。
风险:SimSUM 的生成器是贝叶斯网络 + prompt,你的生成器若是端到端深度模型,比较的其实不只是「生成质量」,还有「可解释性」的差异——这在论文里很难公平呈现。
§11 避坑清单:十个已踩过的坑
坑 1:把 SynSUM 和 SimSUM 当成两个数据集
现象:检索「SynSUM」只找到 2024 年的 arXiv v1 与 IEEE DataPort 2025-01 的存档,误以为数据集已经停止维护;或在综述里把两者列为两条独立条目。
根因:2025-05-28 仓库执行了 change name 提交,2025-12 的 arXiv v4 与期刊版全面改称 SimSUM;但 arXiv 的 v1 页面、大量第三方镜像(如数据集聚合站)仍保留 SynSUM 标题,搜索引擎会把旧标题排在前面。
处置:认准三个锚点——arXiv 2409.08936 的任意版本页、GitHub prabaey/SimSUM、期刊 doi 10.1186/s13326-025-00341-6。这三个指向的是同一份数据。写文献综述时建议首次出现写作「SimSUM(原名 SynSUM)」,并在参考文献里同时给出新旧两个入口。
本条目为何 slug 用 synsum:按派发口径与旧名可检索性取 synsum,但正文与 frontmatter 均以 SimSUM 为正名,并在 title 里保留「曾用名 SynSUM」以保证两路检索都能命中。
坑 2:只搜 arXiv 会拿到 2024 年的旧结论
现象:引用「10,000 条记录、GPT-4o 生成、span 标注」这些信息时,误以为数据在 2024 年 9 月就已定稿。
根因:arXiv v1(2024-09-13)只有表格生成与文本生成的描述,没有权威的专家评估表、没有 Table 6 的嵌入消融、没有 52 篇重写的细节。这些内容在 v2(2025-03)、v3(2025-07)、v4(2025-12)逐步补齐,最终定型于期刊版。
处置:任何数字类引用都注版本。本文所有评估数字均取自期刊版(2025;16:20),与 v4 一致;若必须引 arXiv,请写明 v4。
坑 3:把「arXiv v4 早于期刊发表」当成版本冲突
现象:发现 arXiv v4 的上传时间是 2025-12-09,而 Crossref 记录的期刊 published 是 2025-12-18,于是怀疑「预印本比正式版还新」。
根因:作者在期刊定稿后先把 arXiv 更新到期刊版标题与内容,期刊正式上线晚了 9 天。这是正常的出版流程,不是版本矛盾。
处置:引用时统一写「J Biomed Semantics 2025;16(1):20,doi:10.1186/s13326-025-00341-6」,需要预印本链接时补 arXiv:2409.08936v4。
坑 4:CSV 是分号分隔,且首列是没有名字的行号
现象:
df = pd.read_csv("SimSUM.csv") # 读成一列
# 或
df = pd.read_csv("SimSUM.csv", sep=";") # 多出一列 "Unnamed: 0"
根因:文件用 ; 作分隔符(文本字段里有很多英文逗号,用逗号会破坏解析);首列无名,是 0-9999 的行号。
处置:pd.read_csv("SimSUM.csv", sep=";", index_col=0)。另外文本字段用双引号包裹且内部含换行,Pandas 默认的引号解析能正确处理,但若用 csv 模块需显式 quoting=csv.QUOTE_MINIMAL。
坑 5:span 的 symptom 取值与 CSV 列名对不上
现象:
spans = json.load(open("normal_span_annotations.json"))
# 想按列名过滤
[x for x in spans["0"] if x["symptom"] == "pain"] # 空列表
根因:JSON 里用的是完整表述——respiratory pain、nasal symptoms,而 CSV 列名是 pain、nasal。论文 Table 3 的列标题写的是 pain / nasal(沿用 CSV 口径),进一步加深混淆。
处置:建映射表 {"respiratory pain": "pain", "nasal symptoms": "nasal", "dyspnea": "dysp", "cough": "cough", "fever": "fever"},全部 join 前先过一遍。
坑 6:以为用 GPT-4o 重跑就能复现原始数据
现象:跑 text_generation.ipynb,得到 10,000 条新笔记,与公开 CSV 完全不同,困惑「是不是代码有 bug」。
根因:两个不可控因素——表格采样的随机种子未公开;GPT-4o 的具体快照版本未披露,且模型会持续更新。文本生成本身也是非确定性的(除非显式设 temperature=0,论文未说明是否如此)。
处置:把公开 CSV 当作唯一的数据版本,重跑只用于「生成方法的再实现」实验,不要指望逐字复现。做对比实验时,固定公开 CSV 作为基准,新生成数据作为处理组。
坑 7:把 span 当作「症状存在的标签」
现象:用「某条记录是否有 pain 的 span」来近似「该记录 pain=yes」,发现准确率只有 60% 出头。
根因:span 标的是短语出现,不是症状存在。否定句「 denies chest pain」也会产生 pain 的 span。论文 Table 4 已经给出精确的混淆结构:pain 不存在时仍有 39.9% 的笔记提到它。
处置:需要「症状是否被肯定陈述」时,必须自己做否定检测,或退一步用记录级表格标签 pain 列。若研究目标就是「文本是否提及」,那 span 是正确工具——这正是两个不同的研究问题。
坑 8:把数据集许可与论文许可混用
现象:在商业产品里直接使用论文中的贝叶斯网络示意图(Fig. 3),或转载评估结果表格,认为「数据集是 CC BY 4.0,所以论文图也能用」。
根因:数据集 CC BY 4.0(可商用),但论文 CC BY-NC-ND 4.0(不可商用、不可改编)。两者是不同作品、不同许可。
处置:需要图时按数据与代码自行重绘;需要表格时自己从公开 CSV 重算(本文 §7 的表格即为重算/整理版)。商用场景尤其注意 ND 条款禁止「分享改编材料」。
坑 9:用 SimSUM 的 F1 去和真实病历基准比
现象:写「我们的 NER 模型在 SimSUM 上 F1 0.96,超过 i2b2 上的 0.87」,得出「模型提升 9 点」的结论。
根因:任务定义、数据来源、标签来源、文本复杂度四方面都不同(§7.5)。SimSUM 的 0.96 是记录级症状判定,不是实体边界识别;文本是 LLM 写的,句式规整度远高于真实病历。
处置:跨数据集只比排序关系(同类模型谁强),不比绝对数值。若一定要比,必须在同一数据集上重跑所有对比模型。
坑 10:忽视「无呼吸道症状」的三分之一
现象:训练症状分类器时发现大量「五个症状全无」的样本,以为是标注错误或数据缺失,把它们剔除,结果模型在测试集上的召回大幅下降。
根因:约三分之一的记录里病人没有任何呼吸道症状,文本写的是与呼吸系统无关的就诊理由(作者专门为此设计了备用 prompt)。这些「阴性样本」是数据分布的重要组成部分,剔除会破坏类别平衡。
处置:保留全部样本。如果研究只关心「有症状的病人」,可以用 dysp+pneu+common_cold 组合筛子集,但要在报告中说明筛选逻辑与样本量变化。
§12 案例解剖:三条记录的三堂课
从实抓 CSV 中抽取三条有代表性的记录,逐层拆解「表格 → prompt → 文本 → span」的传导链。
12.1 案例一:只有高热的夏天病人
| 字段 | 值 |
|---|---|
| policy / self_empl / season | high / no / summer |
| 基础疾病 | 全无 |
| 诊断 | 无肺炎、无感冒 |
| 症状 | fever=high,其余四症状均为 no |
| 治疗 / 结局 | antibiotics=yes / days_at_home=2 |
| 文本开头 | 「患者主诉过去 48 小时内体温显著升高,超出正常范围,提示高热……」 |
| 文本中的否认句 | 「没有胸痛、呼吸困难或咳嗽等呼吸道症状」 |
| span | fever 4 个;dyspnea / cough / respiratory pain 各 1 个(共用同一句否认句) |
这堂课教什么:即使表格里只有一个症状,文本也会写到四个症状——三个是以否认句出现的。这就是「span ≠ 症状存在」的最直观例证。同时,抗生素的处方在这个案例里由 fever=high(权重 2.25)+ policy=high(权重 1.0)共同推动,与诊断无关——因为这个病人根本没有肺炎或感冒诊断。
12.2 案例二:一个典型的「感冒 + 咳嗽」组合
| 字段 | 值 |
|---|---|
| 症状 | cough=yes、nasal=yes、fever=low |
| 诊断 | common_cold=yes |
| 文本特征 | 病史段描述「持续三天的干咳与鼻塞」,体检段写「咽部轻度充血」 |
| span 分布 | cough 2 个(均在病史段)、nasal 2 个(1 个在病史、1 个在体检)、fever 1 个 |
这堂课教什么:感冒这类「轻症」的文本表达高度程式化,模型很容易学。这也是为什么 cough 的基线 F1 能到 0.96——不是模型聪明,是这类文本太好认。真正的挑战在 pain 这种「有时提有时不提、提了也说不清」的症状上。
12.3 案例三:一个「看起来毫无线索」的记录
某些记录里,四个症状全为 no、fever=none,也没有任何诊断——按生成规则,模型会被告知「想象一个与呼吸系统无关的就诊理由」。这类笔记的内容可能涉及皮疹、随访、疫苗接种咨询等。它们对症状预测模型是纯阴性样本,但对域外检测研究很有价值:模型能否识别出「这份笔记根本不属于呼吸系统主题」。
这堂课教什么:数据的「阴性侧」也有独立的研究价值。作者设计备用 prompt 的初衷是提升真实感,但客观上造出了一批可用于「主题分类 / 域外检测」的样本。
§13 方法学启示:四条可迁移的经验
13.1 「先有真值,再生成观察」是可评估性的前提
SimSUM 最根本的方法论贡献,是把「真值」放在「观察」之前。真实数据里我们永远只能拿到观察(文本),真值要靠人标注;合成数据里真值由生成器决定,观察由模型生成。这个顺序一旦确立,「文本漏说了什么」就不再是未知数,而是可计算量。
这条经验可以迁移到任何「某一模态缺失」的研究:只要你能先构造出完整真值,再降采样出不完整观察,就能精确量化「缺失造成的损失」。
13.2 难度要可调,而不是靠运气
正常版与精简版的设计是关键:同一份真值、两种难度的文本。这让研究者能做难度梯度实验——模型在容易的文本上表现如何、在困难的文本上退化多少、背景信息能否弥补难度带来的损失。
对比之下,真实数据集只有一种难度(真实病历),且难度分布不可控。想做梯度实验只能人工简化文本,成本高且不可比。
13.3 单一专家 vs 多专家:精度与一致性的取舍
SimSUM 的概率表出自一位专家。作者的理由是「作为简化受控基准,单一专家足以指导概率分布设计」。这带来的是内部一致性高(不会出现两位专家对同一 CPT 分歧)但外部效度低(无法保证代表全球人群)。
这是一个明确的工程取舍,不是疏漏。使用者在引用时应同时说明这一点——尤其是做跨医疗体系比较时。
13.4 用 LLM 标注 LLM 生成文本:噪声的同源风险
span 由 GPT-4o 抽取,文本也由 GPT-4o 生成。两者同源意味着:模型自己写的句子,自己最容易认出。这解释了 98.78% 的极高召回——但这不代表同样的抽取规则能在真实病历上达到 98.78%。
作者对此是清醒的(在 span 嵌入的讨论里明确说 GPT-4o 只因其文本是人工生成才可用)。使用者的推论应该是:把 SimSUM 的 span 质量当作上限参考,真实场景要打折。
§14 与真实临床的距离:一张差距量化表
| 维度 | SimSUM | 真实初级保健病历 | 差距方向 | 影响 |
|---|---|---|---|---|
| 文本长度 | 970 字符(约 150 词) | 通常 500-3,000 词,含大量模板 | SimSUM 显著短 | 长文本的跨段落指代、信息分散问题被回避 |
| 句式复杂度 | 规整、完整句为主 | 缩写、省略、错别字、模板化混排 | SimSUM 过于干净 | 真实场景的分词与语法错误鲁棒性未被考察 |
| 时间维度 | 无(单次快照) | 多次就诊、慢性病随访 | SimSUM 完全缺 | 无法做纵向建模 |
| 多模态 | 无(纯文本+表格) | 含检验、影像、处方、生命体征曲线 | SimSUM 仅两模态 | 多模态融合研究不适用 |
| 患者身份连续性 | 无 ID | 有 | SimSUM 无 | 无法做患者级划分与个体化建模 |
| 临床噪声 | 极低(52 篇被判不一致后重写) | 高(写错、漏写、复制粘贴) | SimSUM 过于干净 | 模型在真实数据上的错误率被低估 |
| 隐私风险 | 零(全合成) | 需去标识与合规审查 | SimSUM 优势 | 适合教学与公开分享 |
| 分布代表性 | 比利时初级保健(单专家设定) | 因机构、国家而异 | SimSUM 单点 | 跨体系迁移未验证 |
这张表的核心结论:SimSUM 的价值与它的"不真实"成正比。它越是干净、越可控、越规整,就越能精确地隔离出你要研究的变量;同时也越不能代表真实世界的混乱程度。用它做方法研究是合适的,用它做能力宣称是危险的。
§14A 与其他合成临床文本资源的两两比较
14A.1 与合成笔记生成类资源对比
| 资源 | 输入 | 输出 | 真值可见性 | 标注 |
|---|---|---|---|---|
| SimSUM | 结构化表格(16 变量) | 临床笔记(双版本) | 完全可见 | span 级(自动) |
| aci-bench(rid 810) | 医患对话(真实录音转写) | 临床笔记 | 对话中信息可见,但无结构化字段 | 无 |
| mimic-ext-synnotes(rid 1002) | MIMIC 真实病历 | 合成笔记 | 真实病历为参照 | 无 |
| 通用 LLM 直出 | 自由 prompt | 自由笔记 | 不可控 | 无 |
四者的核心区别在输入的可控性。SimSUM 的输入是 16 个取值的确定组合,可以精确到「这条记录的咳嗽是肺炎引起的、那条是感冒引起的」;aci-bench 的输入是自然对话,信息密度与结构都不可控;通用 LLM 直出则完全没有真值锚点。
14A.2 与合成 EHR 表格类资源对比
| 资源 | 生成方式 | 文本 | 时间维度 | 可编辑性 |
|---|---|---|---|---|
| SimSUM | 贝叶斯网络(专家 CPT) | 有 | 无 | 高(改 CPT 即可) |
| Synthea(rid 460) | 规则 + 统计模型 | 无 | 有(多年就诊) | 高(改模块) |
| CMS DE-SynPUF(rid 467) | 真实统计抽样 | 无 | 有(多年理赔) | 低 |
| Synthetic MIMIC-III Health Gym(rid 597) | 深度生成模型 | 无 | 有 | 低 |
SimSUM 在这张表里的独特之处是「同时有文本与可编辑的因果链」。Synthea 可以编辑但没文本;深度生成模型有数据但不可解释;真实抽样数据则完全不可编辑。这个组合解释了为什么它在信息抽取研究里能占住一个位置。
14A.3 一条容易被忽视的对照:与真实数据做「同任务不同源」
如果你的目标任务是「判断病历里有没有提到呼吸困难」,可以在三个源上同时跑同一模型:
- SimSUM(合成、干净、真值已知)——测能力上限;
- i2b2/n2c2(真实、人工标注)——测真实表现;
- MIMIC-IV-Note(真实、需自标注少量验证集)——测跨机构泛化。
三点连成一条「合成 → 人工标注真实 → 未标注真实」的梯度线,能画出模型能力的衰减曲线。这条曲线本身比任何一个点的分数都更有信息量,也是 SimSUM 最该被使用的姿势。
§14B 局限性的分条拆解
14B.1 生成侧的局限
- 单专家设定:CPT、Noisy-OR、logistic 与 Poisson 的全部参数出自一人。论文的自辩是「作为简化受控基准足够」,但这意味着数据里的「临床常识」是某一位比利时全科医生的常识。
- GPT-4o 的写作偏好:模型倾向于写完整句、爱加背景故事、爱总结,这些习惯与真实病历的「电报体」相反。精简版缓解了一部分,但没根治。
- 描述符库的覆盖:每个症状的描述符是从专家定义的短语集合里抽的,集合规模论文放在附录 Table B4。若描述符数量有限,文本的措辞多样性会被低估。
- 无性别年龄:明确禁止提及,好处是消除了人口学混杂,坏处是丢掉了真实病历中最基本的两个标识字段。
14B.2 标注侧的局限
- LLM 标注同源:生成与抽取都是 GPT-4o,召回率 98.78% 的「高分」部分来自「自己写的句子自己好认」。
- 无否定标签:span 只标「提到」,不标「肯定/否定」。
- 边界精度:94% 的精确率意味着约 6% 的 span 边界不准,做 BIO 序列标注时需要额外清洗。
- 精简版召回下降:94.50% 的召回意味着每 20 个 span 就漏一个,长尾表达(罕见缩写)漏得更多。
14B.3 评估侧的局限
- 样本量:30 篇专家评估、100 篇 span 评估,对 10,000 条的数据集而言都是极小样本。
- 单一文化背景:评估者全在比利时。
- 无下游任务验证:论文没有做「用 SimSUM 预训练、在真实数据微调」的迁移实验,因此「这个数据集对真实任务是否有帮助」在论文里是未被直接证明的。这是整篇论文最大的空白,也是引用时必须诚实说明的一点。
14B.4 一句话总结
SimSUM 是一个在受控条件下极其精确、在真实条件下完全未经检验的基准。它的每一条局限都指向同一个使用原则:拿它做机制研究、做方法对比、做教学,不要拿它做能力宣称。
§15 常见误解澄清
误解一:「合成数据 = 假数据 = 没用」
「合成」只描述来源,不描述用途。SimSUM 的合成性质恰恰是它的核心资产:真值已知,才能计算「文本抽取模型的上限在哪里」这类问题。真实数据里这个问题无解,因为没有金标准的「完全真相」。
判断一个合成数据集有没有用,标准不是「像不像真的」,而是「它要检验的假设是否需要在真值已知的条件下才能检验」。SimSUM 的假设——「背景表格变量能否补偿文本信息缺失」——恰好需要。
误解二:「10,000 条在 LLM 时代太少了」
规模不是这个数据集的卖点。10,000 条足够做 8,000/2,000 的训练测试划分,足够让 5 个症状的 F1 收敛到 ±0.01 的稳定性,足够让专家抽 30 篇做质量评估。真正稀缺的是每条记录同时具备 16 个表格真值 + 2 版文本 + 4.2 万个字符级 span这种三重对齐,而不是条数。
对比:MIMIC-III 有百万级记录,但要构造同等的「已知真值 + 标注对齐」需要数年人工。规模与可控性在这里是此消彼长的关系。
误解三:「贝叶斯网络是过时的模型,不如深度学习」
网络在这里的用途不是做预测,而是做数据生成器。它需要的是可解释的因果结构、可编辑的参数、可采样的联合分布——这三项恰是深度生成模型的弱项。用 GAN 或扩散模型生成表格数据,你将得到一个无法说明「为什么这个病人有咳嗽」的黑箱,而 SimSUM 的设计意图恰恰是「每个病人的每个症状都能追溯到一条因果路径」。
论文的基线实验也印证了这个分工:BN-tab 作为预测模型表现很差(pain F1 0.028-0.239),但作为生成器它无可替代。
误解四:「GPT-4o 写的病历,医学上肯定不靠谱」
专家评估给出了 4.92 的临床准确性(5 分制,评估者间标准差仅 0.07)。这说明在「内容是否医学上说得通」这个维度上,模型的表现远超直觉预期。不靠谱的地方是书写格式(多名评估者指出)与偶尔多写的症状(一致性扣分的主因)。
两件事要分开:医学内容的可信度 ≠ 病历格式的真实度。前者高、后者低。
误解五:「有了 span 标注就可以直接做 NER」
可以做,但要注意三个边界:
- span 标的是症状词条,不是完整的医学实体体系(没有药名、检验值、解剖部位);
- 边界精度约 94%,做严格的 BIO 标注训练会有噪声;
- 30% 左右的 span 出现在否定句中,没有独立的否定标签。
更适合的用法是「弱监督预训练 + 少量人工精标微调」。
误解六:「它和 Synthea 是一类东西」
Synthea 生成的是结构化 EHR 时间序列(就诊、用药、检验),没有自由文本;SimSUM 生成的是单次快照 + 自由文本 + 概念标注。两者在「合成 EHR」这个大类下是互补的两极:一个纵向、一个横向;一个重结构、一个重文本。库内引用时不要合并。
§16 下游实操清单
16.1 上手检查单(30 分钟内完成)
- [ ] 从 GitHub 下载
SimSUM.csv,确认文件 15,412,710 字节 - [ ] 用
sep=";"、index_col=0读入,确认 shape 为 (10000, 18) - [ ] 检查 5 个症状列的取值集合:
dysp/cough/pain/nasal ∈ {yes,no},fever ∈ {high,low,none} - [ ] 下载两个 span JSON,确认顶层键 0-9999 齐全,总 span 数 41,570(正常版)
- [ ] 随机抽一条记录,人工把
text与text的 span 切片对齐,验证note[start:end] == span["text"] - [ ] 统计「有 span 的笔记比例」,应得 83.7%
16.2 建模前的数据准备
| 步骤 | 操作 | 注意 |
|---|---|---|
| 标签编码 | fever 三档转 0/1/2,其余 yes/no 转 1/0 | fever 的 0 是「none」,不是缺失 |
| 文本选择 | 决定用 text 还是 advanced_text |
两版真值相同,可做难度对照实验 |
| 划分 | 用官方 df_train.p/df_test.p 的 8,000/2,000 |
自划分会与论文基线不可比 |
| 类不平衡 | cough 34% vs pain 13.5% | 不要盲目上 SMOTE,先看 PR 曲线 |
| 文本清洗 | 保留「History」「Physical Examination」段标记 | 段标记本身就是强特征(§7.4) |
16.3 评测时的三个硬要求
- 报 F1 不报准确率。pain 的正例只占 13.5%,全判阴性也能有 86.5% 的准确率——毫无意义。
- fever 报三分类 macro-F1。论文口径如此,报二分类会高估。
- 多次随机种子取均值。论文用 5 个种子,单次结果在 pain 上波动可达 ±0.02。
16.4 常见失败模式与对策
| 失败现象 | 可能原因 | 对策 |
|---|---|---|
| 模型在 pain 上 F1 < 0.5 | 直接用了表格特征而没给文本 | 检查输入管线,文本是不是没接上 |
| 验证集很好、测试集崩 | 自己随机划分导致同一「句式模板」跨集泄漏 | 改用官方划分 |
| cough F1 0.99 但 pain 0.6 | 正常——文本里咳嗽太容易认 | 别以为模型有问题,是任务难度本来就不均 |
| neural-text-tab 不如 neural-text | 表格特征未标准化(days_at_home 量纲大) | 标准化连续变量、类别变量 one-hot(论文做法) |
| 重跑 GPT 生成后 F1 全变 | 用了自己生成的数据而非公开 CSV | 固定公开 CSV 作基准 |
§17 一页速查卡
┌────────────────────────── SimSUM(原名 SynSUM)速查 ──────────────────────────┐
│ 是什么 全合成的「表格 + 临床笔记 + 症状 span」三重对齐基准 │
│ 谁做的 根特大学–Imec:Rabaey / Heytens / Demeester │
│ 论文 J Biomed Semantics 2025;16:20 doi:10.1186/s13326-025-00341-6 │
│ 规模 10,000 条 × 16 表格变量 × 2 版笔记(970 / 504 字符) │
│ 标注 41,570 个 span(正常版),P 94.06% / R 98.78% │
│ 下载 github.com/prabaey/SimSUM → SimSUM.csv(15.4 MB) │
│ huggingface.co/datasets/prabaey/simsum │
│ 许可 数据 CC BY 4.0 | 论文 CC BY-NC-ND 4.0 │
│ 读入 pd.read_csv("SimSUM.csv", sep=";", index_col=0) → shape (10000,18) │
│ 基线 neural-text 0.81-0.96 | 表格模型 0.03-0.79 │
│ 能做 信息抽取机制研究 / 合成数据方法对比 / 因果与文本混杂 / 教学 │
│ 不能做 训练生产模型 / 评估临床性能 / 时序建模 / 病历书写风格研究 │
│ 最大的坑 SynSUM≠SimSUM(同物异名)、span≠症状存在、CSV 是分号分隔 │
└─────────────────────────────────────────────────────────────────────────────┘
§18 参考资料与来源
18.1 一手来源
| 编号 | 类型 | 引用 | 用途 |
|---|---|---|---|
| S1 | 期刊论文 | Rabaey P, Heytens S, Demeester T. SimSUM – simulated benchmark with structured and unstructured medical records. J Biomed Semantics. 2025;16(1):20. doi:10.1186/s13326-025-00341-6(30 页,含附录 A 贝叶斯网络表、附录 B prompt 细节) | 变量定义、CPT/Noisy-OR/logistic/Poisson 参数、专家评估、基线表、span 统计、局限性 |
| S2 | 预印本 | arXiv:2409.08936v4(2025-12-09),v1 标题为 SynSUM(2024-09-13) | 改名说明、版本时间线 |
| S3 | 代码仓 | github.com/prabaey/SimSUM(含 SimSUM.csv、data/、src/、utils/、eval/、results/) |
文件结构、变量列名、引用格式、数据可用性声明 |
| S4 | 数据镜像 | huggingface.co/datasets/prabaey/simsum(API:license cc-by-4.0,createdAt 2026-01-09,usedStorage 15,509,017 B,downloads 67 / likes 1 @2026-10-17) | 许可、体量、元数据 |
| S5 | 存档 DOI | IEEE DataPort, doi:10.21227/3sk0-2015(2025-01-21 登记,文件名 SynSUM.csv,14.71 MB,资助号 FWO 1170124N) | 旧名存档、资助信息、体积双口径 |
| S6 | 书目记录 | biblio.ugent.be/publication/01KE702MV1MBTZYKH70S46PPEB(卷期 16(1)、文章号 20、30 页、项目 FAIR 二期) | 卷期与项目信息 |
| S7 | 元数据 API | Crossref works/10.1186/s13326-025-00341-6(published 2025-12-18,license CC BY-NC-ND 4.0) |
发表时点与论文许可 |
| S8 | 实抓数据 | SimSUM.csv(15,412,710 B,10,000 行 × 19 列)、normal_span_annotations.json(7.9 MB,41,570 span) |
边际分布、文本长度、span 计数、字段名 |
18.2 论文内部引用(节选,用于交叉核对)
论文引用 MIMIC-III/IV(Johnson 等,Sci Data 2016)、Kwon 等 2024(表格与文本不一致)、Rudin 2019(可解释模型)、Noisy-OR 的原始文献等。本文未逐条列出全部 40 余篇参考文献,需要者请查阅期刊版参考文献表。
18.3 本文档的引用纪律
- 所有「实抓」数字标注来源为 S8,与论文表格的差异在 §5.1 与 §10 逐条对照;
- 所有评估分数取自 S1(与 S2 v4 一致);
- 所有许可表述以 S3/S4(数据)与 S1/S7(论文)为准,不用第三方聚合站的说法;
- 未在来源中出现的推断均以「合理推测」「可能是」标注,不与事实混写。
§19 附录
附录 A:文件目录树(GitHub 主仓)
SimSUM/
├── SimSUM.csv # 主表,分号分隔,15,412,710 B
├── README.md # 变量说明、引用格式、文件清单
├── data/
│ ├── df_simsum.p # Pandas pickle,与 CSV 等价
│ ├── df_prompts.p # 含 prompt 与构造素材
│ ├── df_train.p / df_test.p # 8,000 / 2,000
│ ├── spans/
│ │ ├── normal_span_annotations.json
│ │ └── adv_span_annotations.json
│ └── emb/
│ ├── (history / physical examination 段嵌入)
│ └── span/*.npy # 形如 dysp_normal_ann_emb.npy
├── src/
│ ├── data_generating_process.py # RespiratoryData 类(BN 定义)
│ ├── text_generation.ipynb # prompt 构造 + GPT-4o 调用
│ ├── symptom_predictor_baselines.ipynb
│ ├── expert_evaluation.ipynb
│ └── span_annotations.ipynb
├── utils/
│ ├── prompt_generation.py
│ ├── bayesian_network.py
│ └── neural_classifier.py
├── eval/
│ ├── notes/Evaluator_{1..5}.csv
│ ├── notes/Instructions_clinical_evaluation.pdf
│ ├── spans/span_eval_dataset.txt
│ └── spans/span_eval_results.csv
└── results/ # 各症状 × 各设置的基线结果表
附录 B:DAIMS 评估全表
| 维度 | 评分(1-10) | 依据 |
|---|---|---|
| D 可发现性 | 8 | GitHub 主仓 + HuggingFace 镜像 + IEEE DataPort DOI + arXiv 四版,多入口可检索;扣分在旧名 SynSUM 与新名 SimSUM 并存导致检索分散 |
| A 可获取性 | 9 | 匿名直链下载,无注册、无申请、无 gated 标记;CSV 单文件即可用;扣分在 span 与嵌入需另到 GitHub 取 |
| I 可互操作 | 8 | CSV/JSON/pickle/npy 全部为通用格式;字段语义有完整 Table 1;扣分在分号分隔与首列无名属非标准 CSV 习惯 |
| M 元数据质量 | 8 | 论文 30 页含 CPT 全表、prompt 附录、评估说明;扣分在生成时的模型快照与随机种子未披露(可复现性元数据缺失) |
| S 可持续性 | 7 | 依托 GitHub + HuggingFace 双平台 + 期刊 DOI 存档,长期可寻;扣分在单一作者维护、仓内无 LICENSE 文件 |
| 综合评级 | 8.0/10(良好) | 可获取性与文档质量显著高于同类合成数据集均值;可复现性受 LLM 版本漂移拖累 |
附录 C:逐项证据链自证
| 关键数字 | 来源 | 位置 |
|---|---|---|
| 10,000 条记录 | S1 摘要 / S3 README | 全文多处一致 |
| 16 个表格变量 | S1 Table 1 + Eq.(1) 因子分解 | Construction and content |
| 19 列 CSV / 15,412,710 B | S8 实抓 | 文件统计 |
| 970 / 504 字符均长 | S8 实抓 | len(text) / len(advanced_text) 统计 |
| 41,570 个 span / 每篇 4.16 | S8 实抓 + S1 Table 3 | 与论文 Table 3 完全吻合 |
| 16.3% 笔记无 span | S1 Table 4 段落 + S8 实抓(83.7% 有 span) | Analysis of generated notes with symptom spans |
| 52 篇不一致重写 | S1 | Generating unstructured text with a large language model |
| 专家评分 4.69 / 4.53 / 4.15 / 4.92 | S1 Table 2 | Evaluation results |
| span 质量 P94.06/R98.78(正常)、P93.55/R94.50(精简) | S1 | Manual evaluation |
| 基线 F1 全表 | S1 Table 5 | Symptom predictor results |
| 嵌入消融全表 | S1 Table 6 | 同上 |
| CC BY 4.0(数据) | S4 API license: cc-by-4.0 + S3 README |
HF card |
| CC BY-NC-ND 4.0(论文) | S7 Crossref license + S1 页脚 | 期刊版首页 |
| 2025-12-18 发表 | S7 published.date-parts |
Crossref |
| 2026-01-09 建 HF 仓 | S4 createdAt |
HF API |
| downloads 67 / likes 1 | S4 | HF API @2026-10-17 |
附录 D:数据获取决策树
你的需求是什么?
├── 只想跑通一个临床信息抽取 pipeline
│ └── GitHub 下 SimSUM.csv(15.4 MB)→ sep=";" index_col=0 → 用 text + 5 个症状列
├── 想做「背景知识能否补文本」的机制实验
│ ├── 1) 拉 CSV + 两个 span JSON
│ ├── 2) 复现 neural-text 与 neural-text-tab 两个基线
│ └── 3) 在精简笔记子集上重点比较(难例上差异才明显)
├── 想做因果效应估计 / 文本混杂
│ └── 用 antibiotics 作处理、days_at_home 作结局、text 作潜在混杂
│ (真值由生成模型的 logistic/Poisson 公式已知,可校验方法)
├── 想做合成数据生成方法对比
│ └── 读 src/data_generating_process.py → 自己的生成器产出 10,000 条
│ → 与公开 CSV 在同一基线管线里对比 F1 与专家评分
├── 只是教学演示
│ └── 取 100 行,让学生手标 span,与 JSON 对比
└── 想用它替代真实数据证明模型好用
└── 不适合:作者明确反对用于临床模型评估与生产训练
附录 E:术语表
| 术语 | 英文 | 含义 |
|---|---|---|
| 临床信息抽取 | Clinical Information Extraction (CIE) | 从自由文本病历中抽取结构化概念 |
| 有向无环图 | Directed Acyclic Graph (DAG) | 变量间因果结构,无环约束保证可采样 |
| 条件概率表 | Conditional Probability Table (CPT) | 父节点取值组合到子节点分布的映射表 |
| 噪声或 | Noisy-OR | 多父节点独立致病机制的合成模型,含泄漏概率 p₀ |
| 跨度 | span | 文本中一段连续字符区间,用起止下标表示 |
| 精简笔记 | compact / advanced note | 用缩写与简写压缩后的笔记,模拟真实病历密度 |
| 证据设置 | evidence setting | 基线模型可见的表格变量子集(all / no-sympt / realistic) |
| 患者快照 | static snapshot | 单次就诊的静态记录,无时间维度 |
| 对话式生成 | dialogue-to-note | 由医患对话生成病历(对照:aci-bench) |
附录 F:版本与改名时间线(速查)
| 日期 | 事件 | 名称 |
|---|---|---|
| 2024-09-13 | arXiv v1 上线 | SynSUM |
| 2025-01-21 | IEEE DataPort 存档登记 | SynSUM |
| 2025-03-07 | arXiv v2 | SynSUM |
| 2025-05-28 | GitHub change name + 数据文件入库 |
过渡期 |
| 2025-07-10 | arXiv v3 | SynSUM → SimSUM 过渡 |
| 2025-12-09 | arXiv v4 | SimSUM |
| 2025-12-18 | 期刊正式发表(16:20) | SimSUM |
| 2026-01-09 | HuggingFace 仓建立 | SimSUM |
| 2026-01-14 | HF 仓最后修改 | SimSUM |
相关数据集导航
以下为站内 AI-Ready 数据集百科中与本词条共享多个主题标签的相关数据集,按相关度降序排列:
- mednli — 共享标签:电子健康记录 / 医疗NLP / 临床文本 / 医学问答与基准 / 评测基准
- er-reason — 共享标签:电子健康记录 / 医疗NLP / 临床文本 / 医学问答与基准 / 评测基准
- medagentbench — 共享标签:电子健康记录 / 临床电子病历 / 医疗NLP / 医学问答与基准 / 评测基准
- medsecid — 共享标签:电子健康记录 / 临床电子病历 / 医疗NLP / 临床文本 / 评测基准
- tcm-sd — 共享标签:电子健康记录 / 医疗NLP / 临床文本 / 医学问答与基准 / 评测基准
- labelled-notes-hospital-course — 共享标签:电子健康记录 / 临床电子病历 / 医疗NLP / 临床文本 / 评测基准
- mietic — 共享标签:电子健康记录 / 医疗NLP / 临床文本 / 医学问答与基准 / 评测基准
- mediqa — 共享标签:电子健康记录 / 临床电子病历 / 医疗NLP / 临床文本 / 评测基准
- ehrsql — 共享标签:电子健康记录 / 临床电子病历 / 医疗NLP / 临床文本 / 评测基准
- deidentified-medical-text — 共享标签:电子健康记录 / 临床电子病历 / 医疗NLP / 临床文本 / 评测基准
导航说明:本章节由全站统一标签体系自动计算生成(标签重合度算法),双向可达;点击链接可跳转至对应数据集词条。

