信息速览
CARMEN-I — 西班牙语临床文本匿名化语料 AI-Ready Wikipedia
INFOBOX
| 字段 | 内容 |
|---|---|
| 数据集名称 | CARMEN-I(西班牙语/加泰罗尼亚语匿名化临床病历语料) |
| 英文全称 | CARMEN-I: A resource of anonymized electronic health records in Spanish and Catalan for training and testing NLP tools(CARMEN = Corpus of Anonymized Records for Medical information Extraction) |
| 别名/简称 | CARMEN-I 语料库;CARMEN-I |
| 疾病分类(ICD-11 编码+中文名) | RA01(COVID-19,新型冠状病毒感染);BA00-BE2Z(循环系统疾病);2A00-5F(肿瘤)——覆盖以 COVID-19 为主的合并症谱 |
| SNOMED CT | 840539006(COVID-19);49601007(心血管系统疾患);363346000(恶性肿瘤性疾病) |
| 数据模态 | 临床文本(电子病历文书,非影像非时序信号) |
| AI 任务类型 | 命名实体识别(NER)、医学脱敏/PHI 匿名化、临床概念抽取、文档分类 |
| 样本总数 | 2,000 份临床文书(其中 500 份含 6 类临床实体标注) |
| 数据格式 | TXT(masked 与 replaced 双版本)、brat .ann、TSV |
| 许可证 | PhysioNet Contributor Review Health Data License 1.5.0 |
| 访问级别 | 申请审核(PhysioNet 认证账号 + CITI 培训 + 用途申请 + DUA,作者审批) |
| 语言 | 西班牙语为主,含加泰罗尼亚语及双语混排(es/cat/bi 三类) |
| 首发日期 | 2023(PhysioNet v1.0) |
| 最后更新 | 2024-04-20(v1.0.1,截至 2026-09 仍为最新版本) |
| 发布机构 | 巴塞罗那超级计算中心(BSC)NLP4BIA、巴塞罗那医院诊所(HCB)、巴塞罗那大学(UB)CLiC |
| 官方主页 | https://physionet.org/content/carmen-i/1.0.1/ |
| 下载地址 | https://physionet.org/content/carmen-i/1.0.1/(认证与 DUA 通过后下载) |
| DOI | 10.13026/x7ed-9r91(v1.0.1);数据论文 DOI 10.1038/s41597-025-05320-1 |
| AI 就绪度评分 | ⭐⭐⭐(3/5)— 官方标注完整、21 个基线模型公开,但 standoff 标注需自行解析、无官方固定划分文件且获取有审核门槛,扣分明显 |
| 页面状态 | published |
§0 E-E-A-T 审核与声明
医学审核:[千方病案医学编辑部] 交叉审核:§2 医学背景(COVID-19 与合并症谱系、ICD-11/SNOMED CT 映射)、§7 偏倚分析。
数据工程审核:[千方病案医学编辑部交叉审核] 医疗 AI 数据工程师,审核范围:§4 DAIMS 数据字典、§5 数据划分策略、§6 预处理 Pipeline 和坑点。
审核日期:2026-09-05
医疗免责声明:本页面提供的医学信息仅供研究和教育目的,不构成医疗建议、诊断或治疗方案。数据集的医学描述基于公开发表的文献,未经逐一临床验证。任何基于该数据集训练的 AI 模型在应用于临床决策前,必须经过独立的临床验证和监管审批。
技术免责声明:本页面的代码示例、预处理建议和基准性能数据基于公开资料整理,不保证在特定环境下的准确性和适用性。使用者应自行验证代码安全性和数据预处理流程的正确性。千方病案医数集不对因使用本页面信息而导致的任何直接或间接损失承担责任。
数据使用合规:使用本页面描述的数据集前,请务必阅读并遵守数据集原始许可协议。CARMEN-I 要求用户完成 CITI Program 的 “Data or Specimens Only Research” 培训、通过 PhysioNet 凭证化认证、向作者提交使用申请并签署数据使用协议(DUA)。具体使用限制以 PhysioNet Contributor Review Health Data License 1.5.0 与官方协议为准。
§1 数据集概览
§1.0 📌 30 秒速览
这是什么? CARMEN-I 是巴塞罗那超级计算中心(BSC)NLP4BIA 团队与巴塞罗那医院诊所(HCB)联合发布的西班牙语/加泰罗尼亚语匿名化电子病历语料库,托管于 PhysioNet。它包含 2,000 份真实临床文书——出院报告、影像报告、转诊信、病程记录与死亡报告——全部由临床专家完成敏感信息(PHI)匿名化,其中 500 份还带有六类临床实体(疾病、症状/发现、操作、药物、物种、人类)的专家标注。数据发布于 COVID-19 大流行高峰期(2020 年 3 月至 2022 年 3 月),因此 COVID-19 及其合并症(心血管疾病、恶性肿瘤、肾衰竭、免疫抑制等)是文本的主要临床背景。
为什么重要? 在 CARMEN-I 之前,公开可用的完整西班牙语临床病历语料几乎为零——非英语临床 NLP 长期受制于「有模型、没数据」的困境,而全球西班牙语母语者超过 9 亿,加泰罗尼亚语作为少数语言更是几乎无临床资源。CARMEN-I 是首个公开的、完整覆盖多种文书类型、同时提供「脱敏标注 + 临床实体标注」双层金标准的多语言临床语料,其匿名化协议与标注指南(Zenodo 公开)本身就是可复用的方法论资产。
我能用它做什么? 训练与评测西班牙语/加泰罗尼亚语临床 NER 模型、开发医学脱敏(PHI 检测)系统、构建临床文档分类器、研究语码混排(西语-加泰语)文本的处理策略,或作为临床 NLP 教学的金标准教材。官方同时在 HuggingFace 发布了 21 个基线模型,可直接对比复现。注意:由于敏感值已被替换为合成值,它不能用于临床研究或流行病学推断。
§1.1 摘要
CARMEN-I 的构建流程分五步:第一,从 HCB 医院信息系统(HIS)以 XML 格式导出 COVID-19 高峰期(2020-03 至 2022-03)的真实电子病历,按章节拆分后共 172,575 份片段;第二,以文本特征、文书类型与临床内容为维度的半自动策略精选出 2,000 份代表性文书;第三,依据公开的匿名化协议(MEDDOCAN 指南扩展版),由 NLP 专家、语言学家与临床医生协作完成 PHI 标注(18 类、8,228 项),并产出 masked(类别占位符)与 replaced(合成等价值)两个文本版本;第四,抽取 500 份文书,按 (合成等价值)两个文本版本;第四,抽取 500 份文书,按 DisTEMIST/LivingNER/MedProcNER 沿革的指南标注六/LivingNER/MedProcNER 沿革的指南标注六类临床实体共 26,545 条;第五,以 PhysioNet Contributor Review 级许可发布 v1.0.1,配套 21 个基线模型与 HuggingFace 合集。数据论文于 2025 年发表于 Scientific Data(Lima-López et al., 2025)。
§1.2 战略价值
非英语临床 NLP 的破冰样本。临床 NLP 的主流资源(英语临床 NLP 的破冰样本**。临床 NLP 的主流资源(MIMIC-III/IV 笔记、n2c2/i2b2 系列几乎全部为英语)与全球/IV 笔记、n2c2/i2b2 系列几乎全部为英语)与全球语言分布严重错位。CARMEN-I 用真实(而非合成生成)的南欧医院病历补上了罗曼语系的关键一环,且其「真实 EHR + 双层标注 + 公开协议」的组合,使其成为把英语世界的脱敏与信息抽取技术迁移到西语世界的基准底座。对于面向拉丁美洲与西班牙市场的医疗 AI 团队,这是目前少数可直接合规使用的金标准之一。
脱敏方法论的活教材。CARMEN-I 公开的不只是数据,还有一整套可复制的匿名化生产线:18 类 PHI 的标注指南、Zenodo 双语协议、masked/replaced 双版本设计。masked 版训练检测器、replaced 版训练生成式脱敏与下游语言模型的思路,为任何准备发布临床文本数据的机构提供了范本。对研究「数据可用性 vs 隐私保护」权衡的团队,双版本差异本身就是实验素材。
§1.3 同类数据集横向对比
| 数据集 | 规模 | 语言/模态 | 标注层 | 与 CARMEN-I 的差异 |
|---|---|---|---|---|
| CARMEN-I | 2,000 份文书 | 西语+加泰语,真实 EHR | PHI 8,228 项 + 6 类实体 26,545 条 | 唯一多语言真实完整病历,双版本脱敏 |
| MEDDOCAN | 约 1,000 份临床病例 | 西语,合成病例报告 | PHI 匿名化(18 类) | 文本为合成病例,非真实 HIS 导出 |
| 8 类) | 文本为合成病例,非真实 HIS 导出 | |||
| CANTEMIST | 501 份临床病例 | 西语,肿瘤学 | 肿瘤命名实体 | 501 份临床病例 |
| DisTEMIST | 大规模西语临床病例 | 西语 | 疾病实体 | 单一实体类型,无脱敏金标准 |
| n2c2/i2b2 2014 | 790 份出院小结 | 英语 | PHI 匿名化 | 英语世界对照物,文书类型单一 |
| MIMIC-III 笔记 | 约 200 万份出院小结 | 英语 | 无实体金标准 | 规模大但无专家标注层 |
§1.4 版本时间轴
| 版本/事件 | 日期 | 说明 |
|---|---|---|
| PhysioNet v1.0 | 2023 | 首次发布,DOI 10.13026/bxrx-y344 |
| PhysioNet v1.0.1 | 2024-04-20 | 修正部分错误实体、修订描述文档、补充双语匿名化协议链接,DOI 10.13026/x7ed-9r91 |
| 数据论文 | 2025 | Scientific Data 12:1088,DOI 10.1038/s41597-025-05320-1 |
| HF 模型合集更新 | 2025-07(截至 2026-09 查证) | 21 个基线模型公开可下载 |
§1.5 典型应用场景
- 西语临床 NER 基准:用 500 份标注文书训练/评测疾病、症状、操作、药物、物种、人类六类抽取器,与官方 21 个基线对比(详见 §8)。
- 医学脱敏系统开发:以 PHI 层(18 类 8,228 项)训练检测器,masked 版做输入、replaced 版做生成目标。
- 多语言与语码混排研究:利用 CARMEN1_mappings.tsv 的 es/cat/bi 标签,评估多语言模型在混排临床文本上的鲁棒性。
- 临床文档分类与章节解析:5 种报告类型 × 9 种章节类型的结构天然支持文书类型分类、章节切分与信息定位任务。
- 脱敏协议教学与落地:作为医院数据出科/出域项目的参考流程——协议、指南、双版本设计均可直接借鉴。
§2 医学背景
§2.1 ICD-11 编码表
CARMEN-I 的文书以 COVID-19 为主线、合并症为重要背景。下表列出语料中高频出现的临床主题与 ICD-11 对应关系(标注层的 6 类实体并非疾病分类学概念,故此处映射的是文书内容的疾病谱)。
| 临床主题/标签 | ICD-11 编码 | 中文名称 | 术语说明 |
|---|---|---|---|
| COVID-19(virus identified) | RA01 | COVID-19,病毒已鉴定 | 语料核心场景,2020-2022 大流行期文书 |
| 循环系统疾患 | BA00-BE2Z | 循环系统疾病章节 | 官方声明的心血管合并症大类 |
| 恶性肿瘤 | 2A00-5F | 肿瘤章节 | 官方声明的恶性肿瘤合并症 |
| 肾衰竭 | GB61 | 慢性肾脏病 | 官方声明的肾衰竭合并症主题 |
| 免疫抑制状态 | 4A40(HIV 病期除外,免疫缺陷相关编码域) | 免疫缺陷相关疾病 | 官方提及 immunosuppression,具体编码按文书而定 |
| 影像学检查所见 | X 类扩展码(非疾病) | 医学影像所见 | 1,201 份影像报告的主导内容 |
注:ICD-11 编码域(如 BA00-BE2Z、2A00-5F)表示章节/块级范围,用于描述语料疾病谱覆盖,不等于语料内置编码;CARMEN-I 本身不含 ICD-11 归一化字段,作者计划在后续版本中加入 SNOMED CT 归一化。
§2.1b SNOMED CT 映射表
| 标签/概念 | ICD-11 | SNOMED CT 码 | 术语 |
|---|---|---|---|
| COVID-19 | RA01 | 840539006 | COVID-19(Disease caused by SARS-CoV-2) |
| 心血管疾病 | BA00-BE2Z | 49601007 | 心血管系统疾患(Disorder of cardiovascular system) |
| 恶性肿瘤 | 2A00-5F | 363346000 | 恶性肿瘤性疾病(Malignant neoplastic disease) |
| 疾病(实体类型) | — | 64572000 | 疾患(Disease,NER 实体类型对应的上位概念) |
| 药物(实体类型) | — | 105590001 | 物质(Substance,药物成分标注对应的上位概念) |
| 操作(实体类型) | — | 71388002 | 操作(Procedure,NER 实体类型对应的上位概念) |
注:前三行为语料疾病谱的主题映射;后三行为 NER 六类实体类型与 SNOMED CT 上位概念的对应,供实体链接(entity linking)系统做类型对齐参考。官方在构建期曾用 TEMUNormalizer 提供到 ICD-10 与 SNOMED CT 的初步映射,但该归一化层未随 v1.0.1 发布。
§2.2 疾病简介与流行病学
CARMEN-I 的临床语境是 COVID-19 大流行的急性期。2020 年初 SARS-CoV-2 在西班牙迅速传播,加泰罗尼亚地区的医院承受了多波重症压力,巴塞罗那医院诊所(HCB)作为欧洲最大教学医院之一,其信息系统在这一时期沉淀了大量以 COVID-19 及其合并症为主诉的真实病历。语料文书覆盖 COVID-19 确诊与疑似患者的多类病程:从影像报告(占 60%)、出院总结到死亡报告,合并症谱包括肾衰竭、心血管疾病、恶性肿瘤与免疫抑制——这与 COVID-19 重症高危因素的经典画像一致。从研究视角看,这批文书同时是「大流行期临床语言」的快照:大量缩写、非规范表达、拼写错误与急诊语境下的口语化描述,正是临床 NLP 最难处理的分布。西班牙语全球母语者超过 9 亿(PhysioNet 官方页引用的数字为罗曼语系 9 亿以上母语者),而公开西语临床语料长期稀缺,这使得 CARMEN-I 的疾病谱虽以 COVID-19 为主,其方法论价值却远超单一病种。
§2.3 临床任务定义
| 任务 | 输入 | 输出 | 评估口径 |
|---|---|---|---|
| PHI 检测与脱敏(匿名化) | 原始临床文本 | 18 类敏感信息提及的 span + 类别,掩蔽或替换 | strict/relaxed micro F1(PHI 层) |
| 临床实体抽取(NER) | 匿名化临床文本 | 6 类实体提及的 span + 类别 | strict/relaxed micro F1(NER 层) |
| 文档/章节分类 | 文本片段 | 报告类型(CC/IA/IT/IE/IR)或章节类型 | 文档级准确率(非官方任务,社区实践) |
| 语言识别 | 文本片段 | es/cat/bi | 文档级(mappings.tsv 为金标准) |
| 实体归一化(未来) | 实体提及 | SNOMED CT/ICD 编码 | 待官方后续版本定义 |
其中 PHI 脱敏与临床 NER 是官方定义的两个金标准任务,均有公开指南(Zenodo 双语版)与基线模型;文档分类与语言识别是 mappings.tsv 元数据直接支持的任务;实体归一化被作者列为未来版本目标。
§2.4 患者人群
| 维度 | 内容 |
|---|---|
| 数据来源 | 巴塞罗那医院诊所(HCB)医院信息系统,单中心 |
| 时间窗口 | 2020 年 3 月至 2022 年 3 月(COVID-19 大流行期) |
| 文书构成 | 影像报告 1,201、出院报告 617、转诊信 172、死亡报告 5、病程记录 5 |
| 年龄 | 语料含 815 处患者年龄 PHI 标注;个体级年龄分布未公开(替换为合成值) |
| 性别 | 语料含 458 处性别 PHI 标注;个体级分布未公开 |
| 种族 | 未公开、未标注 |
| 就医类型 | 住院、影像检查、转诊与死亡结局文书,覆盖急诊-住院-出院-死亡全流程 |
| 患者级信息 | 因拆节防重识别设计,语料不含患者 ID,患者总数官方未披露 |
§2.5 临床价值
对临床信息学而言,CARMEN-I 证明了一件事:在符合欧洲与西班牙数据保护法规的前提下,真实临床叙事可以以「全量脱敏 + 金标准标注」的形态安全出域。它为三件事提供杠杆——其一,脱敏流水线的质检基准:任何西语脱敏系统都可在同一 PHI 金标准上量化召回缺口(官方基线显示跨语料迁移可致多数标签崩塌,见 §7.8);其二,病历结构化的前置能力:疾病/症状/操作/药物抽取是从自由文本到真实世界数据(RWD)库的关键一步;其三,教育价值:双层标注 + 公开协议让它成为临床 NLP 课程罕见的「真数据」教材。
§2.6 金标准表
| 属性 | 说明 |
|---|---|
| 划分 | 官方未随数据发布固定 train/dev/test 划分;基线研究采用随机划分(见 §5 泄漏讨论) |
| 标注方式 | 人工标注:PHI 层 18 类由 NLP 专家 + 语言学家 + 临床医生完成;NER 层 6 类由专家按公开指南标注,HCB 临床医生参与校准 |
| 标注者资质 | BSC NLP4BIA 专业标注团队 + HCB 临床专科医生(大流行期一线贡献者),语言学背景成员参与文本修复 |
| 一致性 | 官方未公布标注者间一致性系数(Cohen kappa 等);以「双版本交叉 + 基线模型 F1」间接佐证质量 |
| 性质 | 金标准(gold standard):官方明确其定位为训练与测试 NLP 工具的金标准,非人群队列 |
| 可复现支持 | 21 个 HuggingFace 基线模型 + Zenodo 双语指南 + PhysioNet 引用格式 |
§3 数据集规格
§3.0 版本抉择矩阵
| 你的需求 | 推荐版本/组件 | 大小 | 理由 |
|---|---|---|---|
| 训练 PHI 检测器(类别输出可解释) | masked/ 文本 + ann/masked/anon/ | 未公开(认证后可见) | 敏感值已替换为类别占位符(如 FECHAS),标签即输出空间 |
| 训练生成式脱敏/替换模型 | replaced/ 文本 + ann/replaced/anon/ | 未公开(认证后可见) | 敏感值替换为合成等价值,可学「替换策略」本身 |
| 训练临床 NER | 任意文本版本 + ann/*/ner/ | 未公开(认证后可见) | NER 标注与文本版本解耦,两个文本版本均带 ner 层 |
| 快速筛选子集/做分层 | CARMEN1_mappings.tsv | 数百 KB 量级(单表) | 一行一文件:语言(es/cat/bi)+ 是否含 NER 标注 |
| 引用与合规审查 | PhysioNet v1.0.1 页 + Sci Data 论文 | 网页 | v1.0.1 为当前最新,v1.0 已被取代 |
存储大小说明:CARMEN-I 为受限资源,PhysioNet 公开页不披露压缩包体积(Files 页需认证登录)。文本语料通常在百 MB 量级以内,具体以认证后 Files 页为准;本页不猜测具体数字。
§3.1 模态详情
CARMEN-I 为纯文本模态(临床叙事文书),不包含影像像素、波形或结构化时序数据。文书类型以五个代码编码于文件名:
| 代码 | 西语全称 | 中文名称 | 文书数量 |
|---|---|---|---|
| IR | informe de radiología | 影像报告 | 1,201 |
| IA | informe de alta | 出院报告 | 617 |
| IT | informe de traslado | 转诊/迁移报告 | 172 |
| IE | informe de exitus | 死亡报告 | 5 |
| CC | curso clínico | 病程记录 | 5 |
- 章节类型(9 类,出院与转诊报告拆分所得):病史(antecedentes)189、病程记录(evolución)154、查体(exploración clínica)72、辅助检查(exploración complementaria)61、手术(intervención quirúrgica)25、治疗计划(plan terapéutico)31、现病(proceso actual)176、影像(radiografía)40、随访(seguimiento)41。
- 文本版本(2 套):masked(敏感值→类别占位符,如 01/01/2020→FECHAS)与 replaced(敏感值→合成等价值,如 01/01/2020→03/07/2013)。
- 标注层(2 层 × 2 版本):anon(PHI,18 类)与 ner(6 类临床实体),分别以 brat .ann 与 .tsv 双格式提供。
- 语言:西班牙语(es)为主 + 加泰罗尼亚语(cat)+ 双语混排(bi),mappings.tsv 逐文件标注。
§3.2 按子集样本数
| 子集 | 数量 | 占比 | 备注 |
|---|---|---|---|
| 影像报告 IR | 1,201 | 60.05% | 住院/门诊影像所见描述 |
| 出院报告 IA | 617 | 30.85% | 按节拆分后另产生 789 个章节片段 |
| 转诊信 IT | 172 | 8.60% | 同为长报告,拆节处理 |
| 死亡报告 IE | 5 | 0.25% | 极稀有文书类型 |
| 病程记录 CC | 5 | 0.25% | 极稀有文书类型 |
| 含 NER 标注子集 | 500 | 25% | 6 类实体共 26,545 条 |
| PHI 标注 | 2,000 份全覆盖 | 100% | 18 类共 8,228 项 |
§3.3 格式
| 内容 | 格式 | 说明 |
|---|---|---|
| 临床文本 | .txt(UTF-8) | masked/ 与 replaced/ 双版本 |
| 实体标注(brat) | .ann standoff | 每文本文件一个同名 .ann;含 annotation.conf 与 visual.conf |
| 实体标注(表格) | .tsv | 列:name(文件名)、tag(标签)、span(字符起止,逗号分隔)、text(标注文本) |
| 元数据索引 | CARMEN1_mappings.tsv | 列:filename、language、ner_annotations |
| 打包 | .zip | 下载为单一压缩包,解压后目录树见 §4.0 |
§3.4 存储大小
官方公开页未披露压缩包体积。语料为纯文本 + standoff 标注,无影像或波形文件;受限资源的 Files 页在完成认证与访问审批后可见确切大小。规划存储时按「百 MB 以内」估列即可,最终以认证后下载页为准。
§3.5 标注方式
- PHI 层(anon):人工标注。基于 MEDDOCAN 匿名化指南的定制扩展,先以 BiLSTM(MEDDOCAN 匿名化指南的定制扩展,先以 BiLSTM(PharmacoNER Tagger 架构,以 MEDDOCAN/DisTEMIS Tagger 架构,以 MEDDOCAN/DisTEMIST/LivingNER 开放语料预训练)做预标注,再由标注团队修订、临床专家终审;随后分别生成 masked 与 replaced 两种文本版本。
- NER 层(ner):人工标注 500 份文书,依据延续 DisTEMIST(疾病)、MedProcNER/ProcTEMIST(操作)、LivingNER(物种/人类)传统的六实体指南(Zenodo 西语/英语双语版),HCB 临床医生参与。共 26,545 条标注。
- 性质:两层均为金标准人工标注,非弱监督;预标注仅用于提效,最终标签以人工为准。
§3.6 标注者资质与一致性
标注由三类角色完成:NLP4BIA 专业标注/文本挖掘研究员(Salvador Lima-López、Eulàlia Farré-Maduell 等)、HCB 临床专科医生(Helena Ariño、Elisa Asensio、Elena Calvo、María Ángeles Marcos 等,均为大流行期一线贡献者)、巴塞罗那大学 CLiC 组的语言学家(Montse Nofre、Laura Tañá、M. Antònia Martí)。官方页与数据论文均未公布标注者间一致性系数(如 kappa);以基线模型 F1(PHI 0.954、疾病 0.777,见 §8)作为标注可学习性的间接证据。
§3.7 采集周期
临床文书生成于 2020-03 至 2022-03(HCB 的 COVID-19 高峰期);语料构建与标注期为 2021 年初至 2023 年中;PhysioNet 发布于 2023(v1.0)与 2024-04-20(v1.0.1)。
§3.8 地域覆盖
单中心:西班牙加泰罗尼亚自治区巴塞罗那的巴塞罗那医院诊所。语言分布反映当地医疗环境现实——西语为主,加泰罗尼亚语与双语混排为少数(逐文件语言标签见 CARMEN1_mappings.tsv)。
§3.9 设备规格
文本语料不涉及采集设备参数。源数据为 HCB 医院信息系统(HIS)的结构化 XML 导出,构建时修复了 HIS 导出伪影(编码错误、词间随机空格、段落丢失),长报告按 XML 节标题拆分为章节片段。
§3.10 深度溯源链
| 层级 | 内容 | 说明 |
|---|---|---|
| L0 源头 | HCB HIS XML 导出 | 真实电子病历,含文档元数据与结构化敏感字段(导出时已剥离出生日期、病史号等) |
| L1 拆分 | 172,575 份章节片段 | 按节标题拆分长报告,同时增加同患者重识别难度 |
| L2 精选 | 2,000 份文书 | 半自动策略:文本特征(长度分布)× 文书类型 × 临床内容,NER 预标注辅助,人工复核 |
| L3 匿名化 | 18 类 PHI、8,228 项标注 | 公开 Zenodo 协议 + 人工标注 + masked/replaced 双版本生成 |
| L4 实体标注 | 500 份、26,545 条、6 类 | 双语公开指南 + 专家标注 + 临床校准 |
| L5 发布 | PhysioNet v1.0 → v1.0.1 | Contributor Review 级许可,DUA + 认证 + 作者审批 |
| L6 基线 | 21 个 HuggingFace 模型 | PHI 与六类实体任务的官方基线 |
§4 数据结构
§4.0 目录树
carmen-i-1.0.1/
├── CARMEN1_mappings.tsv # 逐文件元数据:language(es/cat/bi)+ ner_annotations(True/False)
├── README.md
├── txt/ # 临床文本(两套版本)
│ ├── masked/ # 敏感值→类别占位符,如 01/01/2020 → FECHAS
│ │ └── CARMEN-I_IA_ANTECEDENTES_2.txt
│ └── replaced/ # 敏感值→合成等价值,如 01/01/2020 → 03/07/2013
│ └── CARMEN-I_IA_ANTECEDENTES_2.txt
├── ann/ # brat standoff 标注(与 txt 同名配对)
│ ├── masked/
│ │ ├── anon/ # PHI 标注(18 类)
│ │ │ └── CARMEN-I_IA_ANTECEDENTES_2.ann
│ │ └── ner/ # 临床实体标注(6 类,仅 500 份文档)
│ │ └── CARMEN-I_IA_ANTECEDENTES_2.ann
│ ├── replaced/
│ │ ├── anon/
│ │ └── ner/
│ ├── annotation.conf # brat 配置
│ └── visual.conf
└── tsv/ # 表格版标注(两套版本)
├── masked/
└── replaced/
文件命名规则:CARMEN-I_{report_type}_{section_type}_{number}.{ext},report_type ∈ {CC, IA, IT, IE, IR};section_type 仅出院/转诊类长报告有值(ANTECEDENTES、EVOLUCION、EXPLORACION、COMPLEMENTARIA、CIRUGIA、PLAN、PROCESO、RADIOGRAFIA、SEGUIMIENTO 等)。
§4.1 DAIMS 字段字典
下表覆盖三类核心数据对象:文本文件、brat .ann 行、tsv 行。
| 字段名 | 类型 | 说明 | 示例值 | AI 用途 | 观测误差 | 信息性缺失编码 | 取值范围 |
|---|---|---|---|---|---|---|---|
| filename | 文本 | 文件唯一名(含报告/章节类型与序号) | CARMEN-I_IA_ANTECEDENTES_2.txt | 主键、按类型分层抽样 | HIS 伪影已在构建期修复 | 无 | 2,000+ 个唯一值 |
| report_type | 枚举 | 报告类型码 | IA | 文档分类、任务分层 | 极稀有类(IE/CC 各 5 份) | 无 | CC/IA/IT/IE/IR |
| section_type | 枚举 | 章节类型(仅拆分报告有值) | ANTECEDENTES | 章节解析、信息定位 | 章节粒度依 HIS 标题质量 | 空值=整报告型文书 | 9 类 |
| language | 枚举 | 文件语言标签 | bi | 多语言分层评估 | 混排判定为文档级 | 无 | es/cat/bi |
| ner_annotations | 布尔 | 是否含临床实体标注 | True | 子集筛选 | 仅 500 份为 True | False=无 NER 标注(信息性缺失:可用于无监督/预训练) | True/False |
| T1(.ann 标注 ID) | 文本 | brat 标注行 ID | T15 | 标注去重与对齐 | 无 | 无 | T 后递增整数 |
| label(.ann 类别) | 枚举 | PHI 18 类或 NER 6 类 | NOMBRE_PERS_SANIT | 分类标签空间 | 稀有类别支持度低(见坑点 4) | 无 | 18+6 类 |
| start_offset | 整数 | 提及起始字符偏移(0 起) | 142 | span 抽取、BIO 转换 | 对文本清洗极敏感(坑点 2) | 无 | 0 至文本长度 |
| end_offset | 整数 | 提及结束字符偏移(不含) | 167 | 同上 | 同上 | 无 | ≥start_offset |
| text(.tsv 标注文本) | 文本 | 标注提及原文 | 12/03/2021 | 快速统计、质检 | masked 版中可能为占位符 | 无 | 任意片段 |
| span(.tsv) | 文本 | 「起,止」逗号分隔对 | 142,167 | 与 .ann 等价的表格访问 | 同 offset | 无 | 同上 |
§4.2 标签分布
PHI 层 18 类完整清单(依官方指南体系与数据论文 Table 4;个别标签名在论文表中为缩写形式):
| 标签 | 中文含义 | 已知数量 |
|---|---|---|
| FECHAS | 日期(就诊、检查、出院等) | 5,384 |
| EDAD_SUJETO_ASISTENCIA | 患者年龄 | 815 |
| SEXO_SUJETO_ASISTENCIA | 患者性别 | 458 |
| URL_WEB | 网址 | 1 |
| CALLE | 街道地址 | 官方未逐类公布 |
| CENTRO_SALUD | 初级保健中心 | 官方未逐类公布 |
| FAMILIARES_SUJETO_ASIST | 患者亲属相关 | 官方未逐类公布 |
| HOSPITAL | 医院名称 | 官方未逐类公布 |
| ID_CONTACTO_ASISTENCIA | 接触者/联系人 ID | 官方未逐类公布(测试集 0 样本) |
| ID_SUJETO_ASISTENCIA | 患者 ID | 官方未逐类公布(测试集 0 样本) |
| INSTITUCION | 机构 | 官方未逐类公布 |
| NOMBRE_PERS_SANIT | 医护人员姓名 | 官方未逐类公布 |
| NUMERO_IDENTIF | 身份证件号 | 官方未逐类公布 |
| NUMERO_TELEFONO | 电话号码 | 官方未逐类公布 |
| OTROS_SUJETO_ASIST | 其他患者 | 官方未逐类公布 |
| PAIS | 国家 | 官方未逐类公布 |
| PROFESION | 职业 | 官方未逐类公布 |
| TERRITORIO | 地区/行政区 | 官方未逐类公布 |
NER 层 6 类实体定义(延续 DisTEMIST/LivingNER/MedProcNER 指南传统):
| 实体类型 | 定义要点 | 数量 | 占比 |
|---|---|---|---|
| FINDING(发现/症状) | 体征、症状与临床发现,含主观描述 | 8,137 | 30.7% |
| PROCEDURE(操作) | 手术、诊断检查与医疗操作 | 6,520 | 24.6% |
| DISEASE(疾病) | 疾病与诊断命名,含综合征与病理状态 | 5,402 | 20.3% |
| MEDICATION(药物) | 药品名与活性成分 | 3,547 | 13.4% |
| SPECIES(物种) | 病原体与生物物种(LivingNER 传统) | 1,564 | 5.9% |
| HUMAN(人类) | 患者、家属与第三人提及,含家庭成员 | 1,375 | 5.2% |
PHI 层分布呈长尾:少数高频类(日期/年龄/性别)主导,大量类别样本稀少——这是脱敏任务的主要难点。NER 层六类分布相对均衡,但 strict F1 上症状与操作仍显著低于疾病(基线 79% vs 更高,见 §8),长提及与嵌套是主因。
§4.3 关键统计
- 文档总数 2,000;章节片段另计 789 个(出院/转诊拆分产生);源池为 172,575 份片段,精选率约 1.16%。
- 标注总量 34,773 条(PHI 8,228 + NER 26,545)。
- NER 标注密度:500 份文档平均每份约 53 条实体。
- 语言构成:es 为主,cat 与 bi 为少数(官方未公布三者精确文件数)。
- 报告类型极端不均衡:最大类 IR 占 60.05%,IE 与 CC 各仅 5 份。
- PHI 前三类(日期/年龄/性别)合计 6,657 项,占 PHI 总量的 80.9%。
- 出院与转诊类长报告 789 份占文书总数 39.45%(617 + 172),拆分后仍按文件级管理。
§4.4 数据层级
语料 CARMEN-I
└── 文档 document(2,000 份,报告类型 5 类) # 唯一稳定单位
└── 章节 section(出院/转诊长报告拆分,9 类) # 拆分后的存储单位
└── 提及 mention(PHI 或实体标注,34,773 条) # 字符 span 级
与影像或 ICU 时序数据集不同,CARMEN-I 没有患者层级:拆节是防重识别设计的一部分,患者总数官方未披露。任何需要「按患者划分/聚合」的实验设计在此语料上不可行(见 §5.3 与坑点 3)。
§4.5 缺失值与信息性缺失
| 现象 | 表现 | 是否信息性 | 处理建议 |
|---|---|---|---|
| ner_annotations=False | 1,500 份文档无实体标注 | 是——官方有意构建的「仅 PHI」子集,可作无监督/领域适应语料 | 不要当作「标注丢失」;训练 NER 时自动过滤 |
| 稀有 PHI 标签 | URL_WEB 全语料 1 项;多个标签支持度 <20 | 是——真实长尾 | 评估时报告支持度,避免宏平均虚高(坑点 4) |
| section_type 空值 | IE/CC 等整报告文书无章节类型 | 是——文书类型差异 | 管线中对空值显式分支 |
| masked 版占位符 | FECHAS、EDAD_SUJETO_ASISTENCIA 等 | 是——masked 设计本身 | NER 任务建议用 replaced 版以保留语言自然度 |
| 语言混排 | bi 类文档内部西/加泰切换 | 是——加泰罗尼亚医疗环境现实 | 分语言评估;对 bi 单独报告 |
§5 划分与使用建议
§5.1 官方划分
官方未随 v1.0.1 发布固定的 train/dev/test 划分文件。基线研究(Sci Data 2025)采用随机划分训练 21 个模型,并在论文中披露了测试集评估结果;论文明确指出随机划分导致三个 PHI 标签(ID_CONTACTO_ASISTENCIA、ID_SUJETO_ASISTENCIA、URL_WEB)在测试集中样本数为 0 而无法评估。
§5.2 社区惯例划分
社区(含官方基线)通行做法是:文档级随机划分 + 在论文中报告支持度;对 NER 任务常以 500 份标注文书按约 70/10/20 或 80/10/10 切分,并以语言(es/cat/bi)与报告类型(IR/IA/IT 等)做分层,保证稀有文书类型进入各子集。无官方划分意味着跨论文数值天然不可比(见 §8.1 注记)。
| 划分方案 | 操作方式 | 防泄漏强度 | 适用场景 |
|---|---|---|---|
| 随机文件划分 | 按文件名随机 70/10/20 | 弱(跨片段/跨患者泄漏) | 快速基线、对齐官方论文口径 |
| 聚类划分 | 同一原始报告的全部拆节片段同侧 | 中 | 论文发布、可复现实验 |
| 时间窗划分 | 2020-03~2021-09 训练、2021-10~2022-03 测试 | 较强(患者级近似隔离) | 部署前评估、泛化估计 |
| 分层交叉验证 | 语言 × 报告类型双层分层 5 折 | 中 | 500 份 NER 小样本调参 |
§5.3 泄漏风险(重点)
- 同源拆节泄漏:出院/转诊长报告被拆成多个章节片段,同一原始文档的片段可能跨训练/测试集,片段间共享措辞与上下文——按「文件」随机划分会高估性能。缓解:以报告类型 + 文档序号聚类,确保同一原始报告的所有片段同侧;或按时间窗划分。
- 同患者跨文档泄漏(不可完全消除):语料无患者 ID,无法按患者划分。同一患者多次就诊的文书若分居两侧,模型可借合成值之外的措辞习惯「记忆」患者。缓解:接受为语料固有局限并在论文中声明;用时间窗划分(如 2020-03~2021-03 训练)最大化隔离。
- masked 版信息泄漏到 NER:masked 版的类别占位符(如 FECHAS)本身就是强特征,若在 masked 文本上训练 NER 再在 replaced 上测试(或反向),分布漂移会污染评估。缓解:训练与评估固定同一文本版本。
- 预训练语料重叠:PlanTL 系西语模型曾在大规模语料上预训练,理论上可能见过 HCB 公开报告类文本;对 CARMEN-I 这种小语料需在讨论中声明。
§5.4 交叉验证建议
小语料(500 份 NER)建议 5 折分层交叉验证(语言 × 报告类型双层分层)并报告折间方差;PHI 任务因类别长尾,建议对稀有类单独做留出评估或合并为「高频/稀有」两组分别报告。所有划分固定随机种子并在发布代码中附带划分清单。
§5.5 外部验证建议
严格的外部验证应使用与 HCB 无重叠的来源:MEDDOCAN(合成西语病例)与 CARMEN-I 的双向迁移已被官方基线量化(跨语料迁移显著掉点,见 §7.8);生成式 NER 研究已把 CARMEN-I(458 个片段)用作外部测试集(F1 0.610-0.659)。面向生产部署的团队应另建本地留出集,切勿以 CARMEN-I 内部划分直接预估院内真实性能。
§5.6 划分实践核对清单
发布基于 CARMEN-I 的实验前,逐项核对:
- 划分单位是「文件」,且同一原始报告的拆节片段已聚类同侧(坑点 3)。
- 划分清单(文件名列表)已随代码持久化,随机种子已固定。
- 每个子集的语言(es/cat/bi)与报告类型分布已打印并存档。
- 稀有标签(支持度 <20)在各子集的支持度已报告,零支持度标签已显式声明。
- 使用的文本版本(masked/replaced)与标注层(anon/ner)已写进实验配置。
- 若做跨语料实验,训练语料组合与官方 Table 4/5 的设置可一一对应。
§6 AI 就绪指南 ⭐
§6.0 云端快速启动
CARMEN-I 未提供 PhysioNet BigQuery 或 S3 镜像(文本语料不适用波形/影像云工具链)。云端使用路径:在本地或 Colab 完成认证下载后,将 zip 上传至自有对象存储或挂载 Drive;注意 DUA 禁止将数据集公开再分发,云端存储桶必须私有并限制访问。实践建议:把解压目录放在持久盘(Colab 的临时盘会在会话结束清空);把 data_root 抽象为环境变量,使本地与云端脚本零改动迁移;在共享集群上使用组级访问控制,避免把认证 Cookie 写进镜像或 notebook 输出。
§6.1 快速上手
以下代码假设数据已下载解压至 data/carmen-i-1.0.1/(zip 解压后的目录,即 §4.0 目录树的根);data_root 变量与目录结构一一对应;最小可用子集为 txt/replaced/ 中的 .txt 文件 + ann/replaced/anon/ 中同名 .ann 文件。
# 目录结构预期(data_root 指向解压根目录):
# data/carmen-i-1.0.1/
# ├── txt/{masked,replaced}/*.txt
# ├── ann/{masked,replaced}/{anon,ner}/*.ann
# ├── tsv/{masked,replaced}/*.tsv
# └── CARMEN1_mappings.tsv
# data_root 拼接关系:所有路径 = data_root + 子目录 + 同名文件(仅扩展名不同)
# 最小可用子集:replaced 版文本 + anon 层标注(PHI 任务)
from pathlib import Path
import csv
from collections import Counter
data_root = Path("data/carmen-i-1.0.1")
def parse_brat_ann(ann_path):
"""解析 brat standoff .ann,返回实体标注列表。
每行格式:T<id>\t<LABEL> <start> <end>[;...] \t<mention text>
"""
entities = []
for line in ann_path.read_text(encoding="utf-8").splitlines():
if not line.startswith("T"):
continue # 跳过属性行(A)与备注行(#)
head, _, text = line.partition("\t")
ann_id, _, spans_str = head.partition(" ")
spans = []
for piece in spans_str.split(";"):
parts = piece.split()
spans.append((int(parts[1]), int(parts[2]))) # 起止偏移,不含 end
entities.append({"id": ann_id, "spans": spans, "text": text})
return entities
# 读取 mappings.tsv 建立语言/标注索引
lang_index = {}
with open(data_root / "CARMEN1_mappings.tsv", encoding="utf-8") as f:
for row in csv.DictReader(f, delimiter="\t"):
lang_index[row["filename"]] = (row["language"], row["ner_annotations"])
# 最小示例:统计 replaced 版 PHI 标注类别分布(anon 层)
label_counter = Counter()
for ann_path in sorted((data_root / "ann/replaced/anon").glob("*.ann")):
for line in ann_path.read_text(encoding="utf-8").splitlines():
if line.startswith("T"):
label = line.split("\t")[1].split()[0]
label_counter[label] += 1
print(label_counter.most_common(5))
# 预期输出前几位(与官方一致):[("FECHAS", 5384), ("EDAD_SUJETO_ASISTENCIA", 815), ...]
§6.2 数据获取
| 步骤 | 操作 | 要求/耗时 |
|---|---|---|
| 1 | 注册 PhysioNet 账号并完成身份认证(credentialed user) | 需上传身份与职业证明,人工审核 |
| 2 | 完成 CITI「Data or Specimens Only Research」课程并上传证书 | 首次约 2-4 小时,证书长期有效 |
| 3 | 在 访问申请页 提交用途说明 | 需描述研究用途;作者团队审批(Contributor Review 级) |
| 4 | 签署数据使用协议(DUA),承诺维持匿名化并报告疑似可识别信息 | 在线同意 |
| 5 | 从官方页下载 zip(约百 MB 量级以内,确切大小认证后可见) | 登录后下载 |
| 6 | 本地校验:解压后核对 §4.0 目录树完整性与 mappings.tsv 行数 | 防下载截断 |
# 下载示意:PhysioNet 受限资源下载需携带登录会话。
# 请从环境变量读取凭据,切勿硬编码进脚本或提交到仓库。
import os
import requests
session = requests.Session()
# 1) 用浏览器登录 PhysioNet 后导出会话 Cookie,或在 CI 中使用官方推荐的下载令牌流程
session.cookies.update({"physionet": os.environ["PHYSIONET_SESSION_COOKIE"]})
url = "https://physionet.org/content/carmen-i/1.0.1/"
resp = session.get(url, timeout=60)
resp.raise_for_status() # 若返回登录页说明会话失效,请重新认证
# 实际文件链接在审批通过后的 Files 页获取,此处仅演示访问校验
print("Access OK:", "carmen-i" in resp.text.lower())
合规提醒:DUA 要求使用者维持匿名化状态,发现疑似可识别表达须立即通知 CARMEN-I 作者;不得公开再分发数据。
§6.3 预处理全流程
# 预处理三步:读取配对(txt+ann)→ 校验 span 对齐 → BIO 序列化
# 关键原则:读取后不得对文本做任何增删字符的清洗(见坑点 2),
# 空格/编码伪影由数据集构建期处理完毕,下游只做只读解析。
from pathlib import Path
from dataclasses import dataclass
@dataclass
class Mention:
label: str
start: int
end: int
text: str
def load_pair(data_root, version, layer, filename_stem):
"""读取同名 txt+ann 配对。version in {masked, replaced}; layer in {anon, ner}。"""
txt = data_root / f"txt/{version}/{filename_stem}.txt"
ann = data_root / f"ann/{version}/{layer}/{filename_stem}.ann"
text = txt.read_text(encoding="utf-8")
mentions = []
for line in ann.read_text(encoding="utf-8").splitlines():
if not line.startswith("T"):
continue
head, _, ann_text = line.partition("\t")
_, spans_str = head.split(" ", 1)
for piece in spans_str.split(";"): # 处理 brat 多段 span(discontinuous)
p = piece.split()
start, end = int(p[1]), int(p[2])
mentions.append(Mention(p[0], start, end, text[start:end]))
return text, mentions
def verify_alignment(text, mentions):
"""span 对齐校验:标注文本必须与文本切片一致,错位即报错。"""
bad = [m for m in mentions if text[m.start:m.end] != m.text]
if bad:
raise ValueError(f"span misaligned: {bad[:3]}")
return True
def to_bio(text, mentions, tokenizer=None):
"""将 mention span 转为字符级 BIO 序列(tokenizer 级转换见 §6.4)。"""
labels = ["O"] * len(text)
for m in mentions:
labels[m.start] = f"B-{m.label}"
for i in range(m.start + 1, m.end):
labels[i] = f"I-{m.label}"
return labels
text, mentions = load_pair(Path("data/carmen-i-1.0.1"), "replaced", "anon",
"CARMEN-I_IA_ANTECEDENTES_2")
assert verify_alignment(text, mentions)
bio = to_bio(text, mentions)
print(len(text), len(bio), mentions[0])
verify_alignment 检查(对每份文件执行):
- 文本以 UTF-8 解码无错误;存在 BOM 则记录并保留原字节。
- 每个 .ann 的 T 行 span 均满足
text[start:end] == mention_text,否则该文件进异常清单人工复核。 - 多段 span(分号分隔)逐一展开校验;空格类伪影(HIS 遗留)不做修复、只记录。
- masked 版与 replaced 版的同名文件字符数差异只允许来自敏感值替换区段。
§6.4 PyTorch DataLoader(完整可运行)
以下 Dataset 将 500 份 NER 标注文书转为 token 级 BIO 序列(HuggingFace tokenizer 的 offset mapping 对齐),可对接任意 transformers 模型。
<details>
<summary>点击展开完整 Dataset 代码(约 80 行)</summary>
import csv
import random
from pathlib import Path
from dataclasses import dataclass
from typing import List
import torch
from torch.utils.data import Dataset, DataLoader
from transformers import AutoTokenizer
NER_LABELS = ["DISEASE", "FINDING", "PROCEDURE", "MEDICATION", "SPECIES", "HUMAN"]
LABEL2ID = {"O": 0}
for lab in NER_LABELS:
LABEL2ID[f"B-{lab}"] = len(LABEL2ID)
LABEL2ID[f"I-{lab}"] = len(LABEL2ID)
ID2LABEL = {v: k for k, v in LABEL2ID.items()}
@dataclass
class Example:
stem: str
text: str
spans: List[tuple] # (label, start, end)
class CarmenNerDataset(Dataset):
"""CARMEN-I 500 份 NER 标注文书的 token 分类数据集。
data_root: 解压根目录(含 txt/ ann/ CARMEN1_mappings.tsv)
version: 文本版本,NER 任务推荐 replaced(语言自然度高)
max_length: 长章节按 512-64 滑窗切块(overlap 保留上下文)
"""
def __init__(self, data_root: str, version: str = "replaced",
tokenizer_name: str = "PlanTL-GOB-ES/roberta-base-biomedical-clinical-es",
max_length: int = 512, split_stems=None):
self.root = Path(data_root)
self.version = version
self.tok = AutoTokenizer.from_pretrained(tokenizer_name)
self.max_length = max_length
self.examples: List[Example] = []
for ann_path in sorted((self.root / f"ann/{version}/ner").glob("*.ann")):
stem = ann_path.name.removesuffix(".ann")
if split_stems is not None and stem not in split_stems:
continue
text = (self.root / f"txt/{version}/{stem}.txt").read_text(encoding="utf-8")
spans = []
for line in ann_path.read_text(encoding="utf-8").splitlines():
if not line.startswith("T"):
continue
head, _, _ = line.partition("\t")
_, spans_str = head.split(" ", 1)
for piece in spans_str.split(";"):
p = piece.split()
spans.append((p[0], int(p[1]), int(p[2])))
self.examples.append(Example(stem, text, spans))
def __len__(self):
return len(self.examples)
def __getitem__(self, idx):
ex = self.examples[idx]
enc = self.tok(ex.text, return_offsets_mapping=True, truncation=True,
max_length=self.max_length)
char_labels = ["O"] * len(ex.text)
for lab, s, e in ex.spans:
char_labels[s] = f"B-{lab}"
for i in range(s + 1, e):
char_labels[i] = f"I-{lab}"
token_labels = []
for (ts, te) in enc["offset_mapping"]:
if te <= ts: # special token
token_labels.append(-100)
else:
# token 级标签取该 token 覆盖的首个非 O 字符标签,
# B- 优先于 I-,避免首 token 丢失实体起点
covered = {char_labels[c] for c in range(ts, te)}
chosen = "O"
for cl in covered:
if cl.startswith("B-"):
chosen = cl
break
if cl.startswith("I-") and chosen == "O":
chosen = cl
token_labels.append(LABEL2ID[chosen] if chosen != "O" else 0)
return {
"input_ids": torch.tensor(enc["input_ids"]),
"attention_mask": torch.tensor(enc["attention_mask"]),
"labels": torch.tensor(token_labels),
}
def collate(batch, pad_id=1):
maxlen = max(len(b["input_ids"]) for b in batch)
out = {"input_ids": [], "attention_mask": [], "labels": []}
for b in batch:
n = maxlen - len(b["input_ids"])
out["input_ids"].append(torch.cat([b["input_ids"], torch.full((n,), pad_id)]))
out["attention_mask"].append(torch.cat([b["attention_mask"], torch.zeros(n, dtype=torch.long)]))
out["labels"].append(torch.cat([b["labels"], torch.full((n,), -100)]))
return {k: torch.stack(v) for k, v in out.items()}
# 划分:按文件名稳定排序后随机分层(生产中请固定种子并持久化划分清单)
ds = CarmenNerDataset("data/carmen-i-1.0.1")
stems = [ex.stem for ex in ds.examples]
random.Random(42).shuffle(stems)
n_val = max(1, int(0.2 * len(stems)))
val_set = CarmenNerDataset("data/carmen-i-1.0.1", split_stems=set(stems[:n_val]))
train_set = CarmenNerDataset("data/carmen-i-1.0.1", split_stems=set(stems[n_val:]))
train_loader = DataLoader(train_set, batch_size=8, shuffle=True,
collate_fn=collate, num_workers=2)
batch = next(iter(train_loader))
print({k: v.shape for k, v in batch.items()}, len(ID2LABEL))
</details>
配套的最小训练与评估循环如下(与上面 Dataset 同进程使用):
# 训练循环(精简版):单卡即可;验证用 strict/relaxed 双口径(§6.9 函数)
import torch
from torch.utils.data import DataLoader
from transformers import AutoModelForTokenClassification, get_linear_schedule_with_warmup
device = "cuda" if torch.cuda.is_available() else "cpu"
model = AutoModelForTokenClassification.from_pretrained(
"PlanTL-GOB-ES/roberta-base-biomedical-clinical-es",
num_labels=len(ID2LABEL), id2label=ID2LABEL,
label2id={v: k for k, v in ID2LABEL.items()},
).to(device)
optim = torch.optim.AdamW(model.parameters(), lr=2e-5)
total = len(train_loader) * 5
sched = get_linear_schedule_with_warmup(optim, int(0.1 * total), total)
for epoch in range(5):
model.train()
for step, batch in enumerate(train_loader):
batch = {k: v.to(device) for k, v in batch.items()}
loss = model(**batch).loss
loss.backward()
torch.nn.utils.clip_grad_norm_(model.parameters(), 1.0)
optim.step(); sched.step(); optim.zero_grad()
if step % 20 == 0:
print(f"epoch {epoch} step {step} loss {loss.item():.4f}")
# 验证:解码预测 span 后调用 strict_micro_f1 / relaxed_micro_f1,
# 并打印每标签测试集支持度(坑点 4 的强制动作)
torch.save(model.state_dict(), "carmen_ner_roberta_es.pt")
§6.5 坑点 8 个
⚠️ 坑点 1:masked 与 replaced 双版本混用导致评估口径漂移(分类:预处理陷阱)
问题:语料对每个文本提供 masked(敏感值→类别占位符如 FECHAS)与 replaced(敏感值→合成等价值)两个版本,标注也按版本分开存放。混用两版本训练/评估(例如 masked 训练、replaced 测试),模型面对的表面分布完全不同。
症状:跨版本评估时 F1 异常暴跌(masked 版中「日期」已被字面替换为 FECHAS,模型在 replaced 版找不到该特征);或论文间数值无法复现。
解决:
- 简单方法:任务开始前固定版本——PHI 检测用 masked,NER 与语言模型下游用 replaced——并在配置文件中记录版本字段。
- 进阶方法:把 version 写进实验跟踪(MLflow/W&B tag),数据加载函数加断言
assert version in {"masked", "replaced"},杜绝隐式默认。- SOTA 方法:双版本各训练一套模型,把「版本间性能差」作为脱敏信息量的度量上报,让 masked/replaced 差异成为实验变量而非噪声。
参考:PhysioNet 官方 Files format and structure;Sci Data 2025 论文 Table 5
⚠️ 坑点 2:brat standoff 字符偏移在文本清洗后整体错位(分类:工程陷阱)
问题:.ann/.tsv 标注以 0 起字符偏移锚定原文。任何改变字符位置的操作——strip 行首空格、lowercase、正则压缩空白、NFKC 归一化、修复 HIS 伪影的重写——都会让后续所有 span 全体错位,且不报错。
症状:text[start:end] != mention_text;BIO 序列实体率接近 0;训练 loss 不降或标签全 O;tsv 与 ann 在同一文件上给出不同实体。
解决:
- 简单方法:只读原则——加载后禁止任何改写文本的预处理;清洗需求改为在 tokenizer 层处理。
- 进阶方法:确需清洗时,构建「旧偏移→新偏移」映射表再转换标注;每份文件跑
verify_alignment(见 §6.3)作为单元测试。- SOTA 方法:统一改用 HuggingFace
return_offsets_mapping的 token 级对齐(见 §6.4),字符级清洗与标注对齐在同一映射层完成;CI 中加入全语料对齐校验 job。
参考:brat standoff 格式;Sci Data 2025 论文 Methods
⚠️ 坑点 3:拆节文档与无患者 ID 下的随机划分跨片段泄漏(分类:数据泄漏)
问题:出院/转诊长报告被拆成多个章节片段独立成文件,且语料不提供患者 ID(拆节本身是防重识别设计)。按文件名随机划分会让同一原始报告的片段、乃至同一患者的多份文书分居训练与测试两侧。
症状:内部测试 F1 虚高;换到新医院数据上骤降;同一片段的「孪生兄弟」分别出现在训练与测试集被审稿人指出。
解决:
- 简单方法:解析文件名的 report_type + 序号聚类,同一原始报告所有片段强制同侧。
- 进阶方法:时间窗划分(如 2020-03~2021-09 训练、2021-10~2022-03 测试),最大化个体隔离;对 500 份 NER 子集做语言 × 报告类型分层。
- SOTA 方法:同时报告「随机划分」与「时间窗划分」两套结果,把差值作为泄漏敏感度指标写入论文限制章节;评估稀有标签时单列支持度。
参考:Sci Data 2025 论文(随机划分与零支持度标签讨论);PhysioNet Usage Notes
⚠️ 坑点 4:稀有 PHI 标签在测试集中 0 样本,指标虚高或无法评估(分类:评估误用)
问题:PHI 层长尾严重(URL_WEB 全语料 1 项;多个标签支持度 <20)。基线研究采用随机划分,导致 ID_CONTACTO_ASISTENCIA、ID_SUJETO_ASISTENCIA、URL_WEB 三个标签在测试集中完全缺席——这些标签的「性能」无从谈起。
症状:宏平均 F1 被高频类主导而虚高;某标签报错 KeyError/除零;论文里出现「18 类全评估」却在附录里发现 3 类无值。
解决:
- 简单方法:评估前打印每标签测试集支持度,支持度 <20 的标签标星,宏平均之外必报 micro F1。
- 进阶方法:按「高频组/低频组」分层报告;对低频组用分层抽样保证入测,或用分组交叉验证汇总。
- SOTA 方法:对 0 支持度标签显式声明「不可评估」而非填 0;探索规则系统 + 少样本学习的混合管线补低频标签(官方论文将规则模型与零样本/少样本列为未来方向)。
参考:Sci Data 2025 论文 Table 4 与讨论
⚠️ 坑点 5:strict 与 relaxed 边界指标混报(分类:评估误用)
问题:官方论文同时使用 strict(span 完全一致)与 boundary-relaxed(与金标准有重叠即算对)两种评估。症状与操作类长提及在两种口径下差距巨大:F1 从 79%(strict)升至 89%(relaxed)。跨论文比较时口径不一致会系统性高估或低估。
症状:复现值比已发表值高约 10 个点或低约 10 个点,检查代码无 bug;不同论文排名无法对齐。
解决:
- 简单方法:报告时显式标注口径(strict micro F1 / relaxed micro F1),默认优先 strict。
- 进阶方法:用 seqeval 的 mode 参数实现 strict;relaxed 用区间重叠判定自实现,两种同时输出。
- SOTA 方法:补充 span 级错误分析(边界偏移分布直方图),区分「边界误差」与「完全错误」,为后处理(如边界扩展规则)提供依据。
参考:Sci Data 2025 论文 Technical Validation(79%→89% 论述)
⚠️ 坑点 6:replaced 合成值被误当真实临床数据使用(分类:偏倚陷阱)
问题:replaced 版中的日期、年龄、电话等是合成等价值,不携带真实时间与人口学信息。若将其用于临床研究、时间趋势分析或流行病学统计,结论全部无效;官方 Usage Notes 明确禁止。
症状:从语料统计出「平均住院日期」「年龄分布」并写进报告;基于 replaced 日期构建的时间序列模型在真实数据上漂移。
解决:
- 简单方法:团队内建立数据使用边界清单——CARMEN-I 仅用于 NLP 方法开发/评测,不做任何临床推断。
- 进阶方法:需要真实时序临床数据时改用 MIMIC-IV/eICU 等患者级数据集,CARMEN-I 只承担文本抽取器训练角色。
- SOTA 方法:在管线中区分「文本特征通道」与「属性值通道」,属性值一律来自外部可信源而非 replaced 字面值。
参考:PhysioNet Usage Notes(not suitable for clinical research)
⚠️ 坑点 7:加泰罗尼亚语与语码混排片段拉低纯西语流水线(分类:偏倚陷阱)
问题:语料是加泰罗尼亚医疗语言现实的映射——西语为主,另有 cat(纯加泰语)与 bi(西/加泰混排)文档;混排可在段落甚至句子级切换。纯西语模型(含未覆盖加泰语的 BIO 编码器)在这些片段上显著退化。
症状:按 mappings.tsv 分语言评估发现 cat/bi 子集 F1 大幅低于 es 子集;分词器把加泰语词切成碎 token。
解决:
- 简单方法:训练与评估全部按 language 字段分层报告,禁止只报整体均值。
- 进阶方法:改用多语言骨干(XLM-R、mDeBERTa 或覆盖加泰语的模型如 BSC 的西/加泰双语文本模型),或加泰语语料(Generalitat 的 TE-CAT 等)继续预训练。
- SOTA 方法:对 bi 文档做句级语言识别后动态路由到对应模型;或用适配器(adapters)在西语主干上挂加泰语适配层。
参考:PhysioNet Data Description(es/cat/bi 三类);Sci Data 2025 论文(多语言贡献论述)
⚠️ 坑点 8:嵌套实体与 BIO 方案的冲突(分类:标签理解)
问题:临床文本普遍存在同层嵌套(如「artritis reumatoide seropositiva」整体是疾病、内部成分也可独立成实体)。基线评估明确排除了同层同类嵌套实体,而 BIO 序列化天然只能表达一层标签,直接套用会静默丢弃嵌套标注。
症状:自建 BIO 数据集的实体总数少于官方统计(26,545 条对不上);评估时被丢弃的嵌套实体既不算 TP 也不算 FP,指标含义悄悄改变。
解决:
- 简单方法:与官方对齐——转换时跳过同层同类嵌套(保留最长提及),并在论文里声明该约定。
- 进阶方法:改用支持嵌套的标注方案(span-based 枚举分类、Biaffine 或多层 BIO:外层 BIO + 内层 BIO 双通道)。
- SOTA 方法:用生成式抽取(seq2seq 输出实体列表)规避序列标签层数限制,并报告与 BIO 管线的可比性协议。
参考:Sci Data 2025 论文(same-class nested entities 排除说明);MEDDOCAN 指南传统
§6.6 数据增强
| 类别 | 手段 | 是否安全 | 说明 |
|---|---|---|---|
| 文本侧 | 字符级替换/删词/同义词替换 | ❌ 危险 | 任何字符级改动都会使 standoff 偏移失效,必须同步重算全部标注 |
| 文本侧 | 整文档复制 + 随机拼接 | ❌ 危险 | 制造虚假上下文关联并引入泄漏 |
| 文本侧 | masked↔replaced 版本交叉训练 | ✅ 安全 | 同一标注锚点在两版本间天然一致(敏感区除外),可作一致性正则 |
| 模型侧 | MLM 领域继续预训练(1,500 份无 NER 文档) | ✅ 安全 | ner_annotations=False 子集正是为此保留的合法语料 |
| 模型侧 | dropout / R-Drop / EMA | ✅ 安全 | 与数据无关,无标注破坏风险 |
| 模型侧 | 回译(西→英→西) | ⚠️ 谨慎 | 仅可用于无标注的预训练语料增强,禁止用于带 span 标注的训练集 |
§6.7 模型推荐
| 模型 | 适用任务 | 说明 |
|---|---|---|
| PlanTL-GOB-ES/roberta-base-biomedical-clinical-es | PHI/NER/分类 | PlanTL 官方西语生物医学-临床 RoBERTa,与本语料同源生态,首选基线 |
| BSC-NLP4BIA/carmen 系列模型 | 直接对比 | 官方 21 个基线(PHI 与 6 类实体),HuggingFace 合集可一键加载复现 |
| xlm-roberta-large | cat/bi 子集 | 多语言覆盖加泰语,混排文档鲁棒性最好 |
| PlanTL-GOB-ES/roberta-base-ca | cat 文档 | 加泰语专用骨干,处理纯加泰语文书 |
| Llama/Qwen 级生成式模型(QLoRA 微调) | 生成式 NER/脱敏改写 | 2026 年外部验证研究采用的技术路线,注意输出格式对性能影响巨大 |
§6.8 硬件需求
| 配置 | 规格 | 可完成任务 |
|---|---|---|
| 最低 | 单卡 8-12 GB(如 RTX 3060) | base 级编码器(110M)全参微调 NER/PHI,batch 8-16 |
| 推荐 | 单卡 24 GB(如 RTX 4090) | large 级(355M)微调、5 折交叉验证全流程 |
| 高吞吐 | 多卡 A100 40 GB | 21 个基线批量复现、生成式模型 QLoRA 微调 |
| CPU | 4 核 16 GB | 解析标注、统计、规则基线与评估 |
§6.9 评估指标代码
# strict 与 relaxed 双口径 micro F1(对齐官方论文评估协议)
from typing import List, Tuple
def strict_micro_f1(pred: List[set], gold: List[set]) -> float:
"""pred/gold: 每文档 {(label, start, end)} 集合,span 须完全一致"""
tp = sum(len(p & g) for p, g in zip(pred, gold))
p = tp / max(1, sum(len(x) for x in pred))
r = tp / max(1, sum(len(x) for x in gold))
return 2 * p * r / max(1e-9, p + r)
def relaxed_micro_f1(pred: List[set], gold: List[set]) -> float:
"""boundary-relaxed:label 相同且区间有重叠即算对(贪心一对一匹配)"""
tp = 0
n_pred = n_gold = 0
for p, g in zip(pred, gold):
used = set()
for (pl, ps, pe) in p:
hit = any(gl == pl and ps < ge and gs < pe and (gi not in used)
for gi, (gl, gs, ge) in enumerate(g))
if hit:
tp += 1
used.add(next(gi for gi, (gl, gs, ge) in enumerate(g)
if gl == pl and ps < ge and gs < pe and gi not in used))
n_pred += len(p)
n_gold += len(g)
p = tp / max(1, n_pred)
r = tp / max(1, n_gold)
return 2 * p * r / max(1e-9, p + r)
# 用法:同时输出两口径 + 每标签支持度,杜绝坑点 4/5
§6.10 MLOps 笔记
- 版本固定:数据版本锁定 1.0.1(DOI 10.13026/x7ed-9r91);v1.0 与 v1.0.1 实体统计有差异,引用统计数字时注明版本。
- 数据卡字段:把 language(es/cat/bi)、version(masked/replaced)、layer(anon/ner)写入每条样本的元数据,训练/评估脚本按字段过滤。
- 可复现:划分清单(stems 列表)与随机种子随代码入库;官方无固定划分,自建划分必须持久化。
- 合规审计:DUA 义务(维持匿名化、报告疑似可识别信息)写入 onboarding 流程;云端存储私有化。
- 模型发布:若发布在 CARMEN-I 上微调的模型,HuggingFace 模型卡注明数据版本、口径(strict/relaxed)与 DUA 归属;输出不得夹带训练文本原文。
- 再分发禁令:Contributor Review 级许可禁止将语料(或含可还原原文的衍生语料)上传公开数据仓库;公开分享的只有模型权重、划分清单与脚本。
- 监控切片:线上按 language(es/cat/bi)与 report_type 双维度分片监控实体提及率;任一片段 PSI 超阈值即触发再训练评估。
§7 质量评估与局限性
§7.1 已知偏倚
| 偏倚类型 | 描述 | 严重程度 | 缓解措施 |
|---|---|---|---|
| 单中心偏倚 | 全部文书来自 HCB 一家医院的措辞、模板与流程 | 高 | 外部验证(MEDDOCAN 交叉、本地留出集);报告中声明来源 |
| 时期偏倚 | 2020-03~2022-03 大流行期采样,COVID-19 与其合并症主导,非常态诊疗分布 | 高 | 把语料定位为「大流行期临床语言」快照;常态任务补其他语料 |
| 文书类型不均衡 | 影像报告占 60.05%,死亡/病程记录各仅 5 份 | 中 | 分层抽样与分层报告;稀有类型只做案例研究 |
| 语言构成偏倚 | 加泰语与混排文档为少数,精确比例官方未公布 | 中 | 按 mappings.tsv 分层评估;多语言骨干 |
| PHI 长尾 | 高频 3 类占 80%+,URL_WEB 仅 1 项,3 类无法进测试集 | 中 | 支持度分报告;规则混合管线补低频类 |
| 合成替换偏倚 | replaced 值(日期/年龄/电话)分布为人工生成,非真实分布 | 低(NLP 任务)/高(若误用) | 禁止临床推断类使用(坑点 6) |
| 构建窗口偏倚 | 语料构建期 2021-2023,NER 预标注所用 BiLSTM 模型质量受当年共享任务语料水平约束 | 低 | 预标注仅提效,终标以人工为准;复现时不受影响 |
§7.2 标注质量
优势:三层角色(NLP 研究员 + 临床医生 + 语言学家)协作;指南公开可审计(Zenodo 双语);预标注 + 人工修订 + 专家终审的成熟流程;双版本交叉可发现不一致。局限:官方未公布标注者间一致性(kappa/Fleiss)与仲裁协议细节;NER 层排除同层同类嵌套的约定需要在复现时显式对齐;v1.0.1 修正过部分错误实体,说明早期版本存在实体级噪声——引用统计数字时务必锁定版本。
复现时应显式对齐的官方标注约定:
- 人类(HUMAN)实体包含家庭成员,与 PHI 层的 FAMILIARES_SUJETO_ASIST 语义交叠,但两层标注独立、不共享 ID。
- 物种(SPECIES)实体沿用 LivingNER 的物种/病原体口径;LivingNER 中的食物类未纳入 CARMEN-I 六类体系。
- 疾病与发现(症状)的边界依 DisTEMIST 系指南判定:确诊命名归疾病,体征与症状描述归发现。
- masked 版中的类别占位符本身不属于 NER 层实体;NER 标注锚定原始文档,对两版本文本同样适用。
§7.3 泛化性
| 部署场景 | 失效风险 | 证据 |
|---|---|---|
| 其他西语医院(拉美) | 高:模板、缩写、药品名录差异大 | MEDDOCAN→CARMEN-I 迁移实验中多数 PHI 标签崩塌(NOMBRE_PERS_SANIT R=0.207) |
| 加泰罗尼亚以外西语区 | 中-高:混排消失但方言词汇仍在 | 语料语言构成本身以 es 为主,bi/cat 为少数 |
| 非 COVID 时期病历 | 中:疾病谱与词汇分布漂移 | 时期偏倚(§7.1),官方未提供常态期对照 |
| 手写/OCR 病历 | 高:语料全为结构化 HIS 导出文本 | 构建流程无 OCR 环节,无相关证据支持外推 |
| 初级保健/基层转诊文本 | 中:语料含 CENTRO_SALUD 类敏感信息,提示基层文书存在,但主体为三级医院文书 | 基层措辞与专科术语分布不同,未见专项评估 |
| 生成式模型输出接口 | 高:格式选择决定成败 | 2026 外部验证:偏移 JSON 输出 F1 仅 0.001-0.005,字符串接地输出 0.610-0.659 |
§7.4 伦理
项目经 HCB 伦理研究委员会批准;因不影响临床诊疗且全部 PHI 已匿名化,患者知情同意被豁免。访问控制为四重门:PhysioNet 认证 + CITI 培训 + 用途申请(作者审批)+ DUA。DUA 附带主动义务:使用者若发现疑似可识别表达,必须立即通知作者团队——这是 Contributor Review 级许可区别于开放许可的核心特征。
§7.5 公平性
语料对低资源语言(加泰罗尼亚语)的临床 NLP 是净增益,首次把该语言纳入多语言临床基准。反向风险:西语内部也存在地域/阶层语言变体,单中心语料无法覆盖;拉美西语(用词、药品名、医疗体系术语)与西班牙本土差异显著,直接迁移可能放大不公平。团队用 CARMEN-I 开发的系统在拉美部署前,必须做本地化验证。
§7.6 数据漂移
两大漂移源:其一,时期漂移——大流行期词汇(变异株名、疫苗接种、方舱语境)随疫情结束快速退场,模型在常态病历上的实体分布会漂移;其二,文档工作流漂移——影像报告占 60% 反映的是大流行期放射科超负荷的快照,常态化后文书类型构成会不同。建议部署后监控每类实体提及率与文书类型构成的变化(PSI 或 KS 检验),阈值告警。
实践上可把「实体提及率周环比」与「文书类型构成月度快照」两个监控指标写入上线检查单:任一指标连续两周偏移超过预设带宽,即触发标注回归测试与再训练评审;同时保留 2020-2022 大流行期文书作为漂移参照组,便于归因是时期效应还是语言效应。
§7.7 DAIMS 24 项评估
| # | 检查项 | 状态 | 说明 |
|---|---|---|---|
| 1 | 宽格式 | ✅ | 文本语料天然无宽/长表问题;tsv 为标准长表 |
| 2 | 唯一标识 | ⚠️ | 文件名唯一可用,但无患者/就诊 ID(防重识别设计所致) |
| 3 | 特殊字符 | ✅ | UTF-8 编码统一;西语重音与加泰语字符处理规范 |
| 4 | 重复行 | ✅ | 文件名命名规则保证无重复;拆节片段各自独立 |
| 5 | 缺失编码 | ✅ | 无数值缺失概念;文本完整性由 brat 配对保证 |
| 6 | 标签标识 | ✅ | 18+6 类标签在 annotation.conf 与指南中双注册 |
| 7 | 罕见类分组 | ⚠️ | 长尾严重(URL_WEB 仅 1 项),需分层报告 |
| 8 | 偏倚评估 | ✅ | 官方论文含跨语料迁移与标签支持度分析 |
| 9 | 数据字典 | ✅ | 命名规则 + mappings.tsv + brat conf 构成完整字典 |
| 10 | 信息性缺失解释 | ✅ | ner_annotations=False 与 masked 占位符语义官方明文说明 |
| 11 | 设备记录 | ❌ | 文本语料无采集设备元数据(不适用而非缺陷) |
| 12 | 共线性 | ✅ | 不适用(无表格特征共线性问题) |
| 13 | 编码映射 | ⚠️ | ICD-10/SNOMED 初步映射工具曾用于构建,但归一化层未随 v1.0.1 发布 |
| 14 | 时间戳处理 | ⚠️ | masked/replaced 后日期为占位符或合成值,不可用于真实时间分析 |
| 15 | 划分建议 | ⚠️ | 官方无固定划分文件,仅论文随机划分描述 |
| 16 | 泄漏讨论 | ✅ | 官方论文明确讨论零支持度标签;同患者泄漏为可推导的固有局限 |
| 17 | 标签分布 | ✅ | 逐类计数官方完整公布(8,228 + 26,545) |
| 18 | 测量偏倚 | ✅ | 不适用(无传感器测量);文书类型偏倚已在官方描述中披露 |
| 19 | 外部验证建议 | ✅ | 官方给出 MEDDOCAN 交叉评估;第三方已用 CARMEN-I 做外部测试 |
| 20 | 版本记录 | ✅ | v1.0/v1.0.1 双 DOI + Release Notes 明确变更内容 |
| 21 | 预处理脚本 | ⚠️ | 官方发布 21 个基线模型但未发布完整数据加载/划分脚本 |
| 22 | 合规要求 | ✅ | License/DUA/认证/培训四重门清晰,义务明文 |
| 23 | 多模态对齐 | ❌ | 纯文本单模态语料,无对齐需求 |
| 24 | 去标识化 | ✅ | 18 类 PHI 全人工标注 + 双版本处理 + 公开协议,业界标杆 |
DAIMS 评分:17.5 / 24
评分解读:作为文本语料,CARMEN-I 在「去标识化、标签分布、版本记录、合规」等伦理与元数据维度接近满分,官方文档的完备度在同类资源中属第一梯队;失分集中在「结构化基建」——无患者标识(固有的隐私设计代价)、无官方划分文件、无预处理脚本、无编码归一化层(4 项 ⚠️),以及 3 项对文本语料不适用的检查项(设备记录、共线性、多模态对齐,按惯例计 0.5 分)。整体属于「标注金标准 + 工程脚手架待补」的典型画像。
对你意味着什么:第一,方法侧可以直接开工——标注、指南、基线模型齐全,两周内可跑通首个 NER/脱敏实验;第二,工程侧需要自建三件事——偏移对齐校验、按语言 × 报告类型的分层划分清单、strict/relaxed 双口径评估,别指望官方脚本兜底;第三,合规侧照抄官方流程即可(CITI + DUA + 申请),但要把「发现疑似可识别信息即报告」的义务写进团队 SOP;第四,若你的任务需要患者级 ID、真实时间戳或设备元数据,这个语料从设计上就不满足,请转用 MIMIC 类数据集并让 CARMEN-I 只承担文本模型的角色。
§7.8 外部验证矩阵
| 外部数据集/场景 | 来源机构 | 评估任务 | 性能指标 | 相对内部变化 | 关键发现 |
|---|---|---|---|---|---|
| MEDDOCAN(合成西语病例)→ CARMEN-I | BSC NLP4BIA | PHI 检测(跨语料迁移) | 多数标签 F1 大幅下降:FECHAS 0.853、NOMBRE_PERS_SANIT 0.333、INSTITUCION 0.279 | 相比 MEDDOCAN 内部(FECHAS 0.994)显著退化 | 合成病例训练的脱敏器不能直接上真实病历;高频类尚可、长尾类崩塌 |
| CARMEN-I 内部训练 → CARMEN-I 测试 | BSC NLP4BIA | PHI 检测 | micro F1 0.954 | 官方基线内部上限 | 真实病历标注可被模型充分学习 |
| DisTEMIST/CARMEN-I 联合训练 | BSC NLP4BIA | 疾病 NER | F1 0.777(仅 CARMEN-I 0.754、仅 DisTEMIST 0.709) | 联合训练优于单一来源 | 跨语料联合训练是该任务的正解方向 |
| CARMEN-I(458 片段)作为生成式 NER 外部测试 | 第三方研究(2026,Electronics) | 症状/疾病等生成式抽取 | 字符串接地输出 F1 0.610-0.659;偏移 JSON 输出 0.001-0.005 | 零再训练直接迁移 | 生成式临床 NER 的瓶颈在输出接地格式而非识别能力 |
§8 基准性能与生态
§8.1 排行榜
以下数值全部来自官方论文与 HuggingFace 模型卡,均在 CARMEN-I 测试集上评估、micro F1(strict)。注意:各行为不同任务(PHI vs 各实体类型)且训练语料组合不同,数值之间不可直接比较;官方无固定划分,跨论文复现值亦不严格可比。
| 排名 | 模型 | 任务/训练数据 | 性能(micro F1) | 关键技术 | 完整引用 | 代码 |
|---|---|---|---|---|---|---|
| 1 | bsc-bio-ehr-es-carmen-anon | PHI / CARMEN-I | 0.954 | Transformer NER,领域编码器 | Lima-López et al., 2025, Scientific Data. DOI 10.1038/s41597-025-05320-1 | HuggingFace |
| 2 | bsc-bio-ehr-es-carmen-meddocan | PHI / CARMEN-I + MEDDOCAN | 0.950 | 合并语料训练 | Lima-López et al., 2025, Scientific Data. DOI 10.1038/s41597-025-05320-1 | HuggingFace |
| 3 | bsc-bio-ehr-es-meddocan | PHI / MEDDOCAN only | 0.811 | 合成病例迁移 | Lima-López et al., 2025, Scientific Data. DOI 10.1038/s41597-025-05320-1 | HuggingFace |
| 1 | bsc-bio-ehr-es-carmen-distemist | 疾病 / DisTEMIST + CARMEN-I | 0.777 | 跨语料联合训练 | Lima-López et al., 2025, Scientific Data. DOI 10.1038/s41597-025-05320-1 | HuggingFace |
| 2 | bsc-bio-ehr-es-carmen-enfermedad | 疾病 / CARMEN-I | 0.754 | 领域内训练 | Lima-López et al., 2025, Scientific Data. DOI 10.1038/s41597-025-05320-1 | HuggingFace |
| 3 | bsc-bio-ehr-es-distemist | 疾病 / DisTEMIST only | 0.709 | 共享任务迁移 | Lima-López et al., 2025, Scientific Data. DOI 10.1038/s41597-025-05320-1 | HuggingFace |
| — | bsc-bio-ehr-es-drugtemist | 药物 / DrugTEMIST | 0.895 | 药物任务迁移 | Lima-López et al., 2023-, BSC-NLP4BIA(模型卡) | HuggingFace |
§8.2 SOTA 总结与选型建议
PHI 检测在本语料上已接近饱和(0.954),继续提升空间在低频标签与跨院泛化,而非整体 F1;实体抽取中疾病类最高 0.777,症状与操作类 strict F1 明显更低(relaxed 口径 79%→89% 的差距提示边界是主要瓶颈),是当前真正开放的挑战。选型建议:做脱敏产品 → 以 bsc-bio-ehr-es-carmen-anon 为起点 + 规则补低频类;做临床结构化 → 联合训练(DisTEMIST/MedProcNER + CARMEN-I)优于单语料;做多语言 → 直接换 XLM-R/加泰语骨干并分层报告。
§8.3 评测协议
- 指标:micro P/R/F1,strict(span+类别完全一致)为主口径,boundary-relaxed(区间重叠)为辅。
- 测试集:官方论文随机划分的 CARMEN-I 测试集;无固定划分文件,复现需自带划分与种子。
- 嵌套约定:排除同层同类嵌套实体后评估。
- 标签支持度:必须随结果报告每类支持度;三个零支持度标签(ID_CONTACTO_ASISTENCIA、ID_SUJETO_ASISTENCIA、URL_WEB)显式声明不可评估。
§8.4 相关数据集
| 数据集 | 语言 | 规模 | 标注 | 与 CARMEN-I 关系 |
|---|---|---|---|---|
| MEDDOCAN | 西语 | 约 1,000 份临床病例 | 18 类 PHI 匿名化 | 匿名化指南直接源头;官方跨语料对照 |
| DisTEMIST | 西语 | 大规模临床病例 | 疾病实体 | 疾病标注指南源头,联合训练增益显著 |
| LivingNER | 西语/英语 | 临床与常规文本 | 物种/病原体/人类 | 人类(含家属)实体标注指南源头 |
| MedProcNER | 西语 | 临床病例 | 操作实体 | 操作标注指南源头(BioASQ/CLEF 2023) |
| CANTEMIST | 西语 | 501 份肿瘤病例 | 肿瘤命名 | 同为 PlanTL 生态共享任务语料 |
| n2c2/i2b2 2014 | 英语 | 790 份出院小结 | PHI 匿名化 | 英语世界脱敏基准,方法论同源 |
§8.5 关键论文
- Lima-López, S., Farré-Maduell, E., Gasco, L., Rodríguez-Miret, J., Frid, S., Pastor, X., Borrat, X., & Krallinger, M. (2025). A textual dataset of de-identified health records in Spanish and Catalan for medical entity recognition and anonymization. Scientific Data, 12, 1088. DOI 10.1038/s41597-025-05320-1 — 数据论文:全量构建流程、双版本设计、21 个基线与跨语料迁移分析。
- Farre Maduell, E., Lima-Lopez, S., Frid, S. A., Conesa, A., Asensio, E., Lopez-Rueda, A., …, & Krallinger, M. (2024). CARMEN-I: A resource of anonymized electronic health records in Spanish and Catalan for training and testing NLP tools (version 1.0.1). PhysioNet. DOI 10.13026/x7ed-9r91 — 数据集官方引用格式与发布记录。
- Miranda-Escalada, A., Gascó, L., Lima-López, S., Estrada, D., & Krallinger, M. (2020). MEDDOCAN: Dataset, corpus and baseline automatic de-identification of Spanish medical texts. Procesamiento del Lenguaje Natural, 65. — 西语医学脱敏共享任务与 18 类 PHI 标注体系的奠基工作。
- Lima-López, S., Farré-Maduell, E., Gascó, L., Nentidis, A., Krithara, A., Katsimpras, G., Paliouras, G., & Krallinger, M. (2023). Overview of MedProcNER task on medical procedure detection and entity linking at BioASQ 2023. In Working Notes of CLEF 2023. — 操作实体标注指南与评测方法学来源。
- Miranda-Escalada, A., Farré-Maduell, E., Lima-López, S., Estrada, D., Gascó, L., & Krallinger, M. (2022). Mention detection, normalization & classification of species, pathogens, humans and food in clinical documents: Overview of LivingNER shared task and resources. Procesamiento del Lenguaje Natural. — 物种/人类实体类型定义来源。
- Stenetorp, P., Pyysalo, S., Topić, G., Ohta, T., Ananiadou, S., & Tsujii, J. (2012). brat: a Web-based Tool for NLP-Assisted Text Annotation. In Proceedings of the Demonstrations Session at EACL 2012. — 语料采用的 standoff 标注格式与标注工具。
§8.6 社区活跃度
CARMEN-I 的生态由 BSC NLP4BIA 主导维护:HuggingFace 模型合集(21 个模型,2025-07 更新);PhysioNet 讨论区与访问申请通道;通讯作者 Martin Krallinger 在发布时的社区传播(LinkedIn 技术社区讨论);西班牙 PlanTL 国家语言技术计划的持续资助背景。语料发布约一年后即出现第三方使用(2026 年生成式 NER 外部验证研究),表明其在西语临床 NLP 社区的引用与复用处于上升期,但尚无独立排行榜或共享任务延续(截至 2026-09)。
参与路径建议:遇到标注歧义可通过 PhysioNet 页面的联系方式向作者反馈(官方明确请求报告疑似可识别表达);模型复现结果可通过 HuggingFace 模型卡 Discussions 提交;若基于语料构建了新划分或新任务,官方数据论文是追踪后续版本(如 SNOMED CT 归一化层)的权威渠道。
§8.7 生态快照
| 资源 | 类型 | 链接 | Star/规模(截至 2026-09) | 推荐理由 |
|---|---|---|---|---|
| PhysioNet CARMEN-I v1.0.1 | 官方数据页 | physionet.org/content/carmen-i/1.0.1 | 版本 1.0.1 | 唯一权威获取入口与引用格式 |
| BSC-NLP4BIA CARMEN-I 模型合集 | 基线模型 | HuggingFace 合集 | 21 个模型 | 官方基线一键复现与对比 |
| 匿名化协议(双语) | 方法论文档 | Zenodo | — | 自建脱敏流程的直接模板 |
| 实体标注指南(双语) | 标注规范 | Zenodo | — | 6 类实体边界判定的权威依据 |
| Sci Data 数据论文 | 论文 | nature.com | 2025 年发表 | 全部统计数字与评估协议出处 |
| brat standoff 格式 | 工具规范 | brat.nlplab.org | — | 解析 .ann 的格式依据 |
§9 相关资源与引用
§9.1 官方资源
- PhysioNet 数据页(获取/引用/Usage Notes):https://physionet.org/content/carmen-i/1.0.1/
- PhysioNet 凭证化认证入口:https://physionet.org/settings/credentialing/
- 访问申请状态页:https://physionet.org/request-access-status/carmen-i/1.0.1/
- 数据论文(Scientific Data 2025,全文开放):https://www.nature.com/articles/s41597-025-05320-1
- 匿名化协议:西语版 Zenodo 10.5281/zenodo.10171660;英语版 Zenodo 10.5281/zenodo.10171681
- 实体标注指南:西语版 Zenodo 10.5281/zenodo.10171539;英语版 Zenodo 10.5281/zenodo.10171646
- HuggingFace 基线模型合集:BSC-NLP4BIA/carmen-i collection
- 发布方介绍(BSC 新闻稿,含 CARMEN 全称):bsc.es 新闻页
§9.2 BibTeX 引用
@article{lima-lopez2025carmen,
author = {Lima-L{\'o}pez, Salvador and Farr{\'e}-Maduell, Eul{\`a}lia and Gasco, Luis
and Rodr{\'i}guez-Miret, Jan and Frid, Santiago and Pastor, Xavier
and Borrat, Xavier and Krallinger, Martin},
title = {A textual dataset of de-identified health records in {Spanish} and {Catalan}
for medical entity recognition and anonymization},
journal = {Scientific Data},
volume = {12},
pages = {1088},
year = {2025},
doi = {10.1038/s41597-025-05320-1}
}
@misc{farremaduell2024carmeni,
author = {Farre Maduell, Eul{\`a}lia and Lima-Lopez, Salvador and Frid, Santiago Andr{\'e}s
and Conesa, Artur and Asensio, Elisa and Lopez-Rueda, Antonio and Arino, Helena
and Calvo, Elena and Bertran, Mar{\'i}a Jes{\'u}s and Marcos, Mar{\'i}a {\'A}ngeles
and Nofre Maiz, Montserrat and Ta{\~n}{\'a} Velasco, Laura and Marti, Antonia
and Farreres, Ricardo and Pastor, Xavier and Borrat Frigola, Xavier
and Krallinger, Martin},
title = {{CARMEN-I}: A resource of anonymized electronic health records in {Spanish}
and {Catalan} for training and testing {NLP} tools (version 1.0.1)},
howpublished = {PhysioNet},
year = {2024},
doi = {10.13026/x7ed-9r91},
note = {RRID: SCR\_007345}
}
@article{miranda-escalada2020meddocan,
author = {Miranda-Escalada, Antonio and Gasc{\'o}, Luis and Lima-L{\'o}pez, Salvador
and Estrada, Darryl and Krallinger, Martin},
title = {{MEDDOCAN}: Dataset, corpus and baseline automatic de-identification
of {Spanish} medical texts},
journal = {Procesamiento del Lenguaje Natural},
volume = {65},
year = {2020}
}
§9.3 引用指南
使用 CARMEN-I 时请同时引用:数据集本体(Farre Maduell et al., 2024, PhysioNet, DOI 10.13026/x7ed-9r91,含 RRID: SCR_007345)与数据论文(Lima-López et al., 2025, Scientific Data)。若使用或对比官方基线,请在模型卡或论文中标注所用文本版本(masked/replaced)、标注层(anon/ner)、评估口径(strict/relaxed)与自建划分清单,以便社区对齐口径。
§10 AI 使用声明卡
§10.1 AI 模型列表
| 环节 | 模型/工具 | 版本 | 用途 |
|---|---|---|---|
| 条目撰写 | 大语言模型(CodeBuddy 内置 fast-model) | 2026-09 | 资料汇总、正文起草、代码示例编写 |
| 事实核验 | 联网检索(WebSearch/WebFetch) | 2026-09 | 官方页、论文与模型卡数字核对 |
| 格式校验 | check_md.py(千方管线) | v1.0 | 结构与纯净度校验 |
§10.2 AI 参与范围
AI 完成资料检索、结构组织、初稿撰写与代码示例起草;所有规模数字、版本信息、许可条款与基准数值均取自官方来源(PhysioNet 数据页、Scientific Data 论文、HuggingFace 模型卡)并由人工交叉核对;章节结构与医学表述遵循千方写作宪法;最终内容经编辑部人工审核后发布。AI 未执行任何数据下载、入库或发布操作。
§10.3 输入来源列表
- CARMEN-I PhysioNet 数据页 v1.0.1 — https://physionet.org/content/carmen-i/1.0.1/
- PhysioNet 数据页 Files 访问说明 — https://physionet.org/content/carmen-i/1.0.1/files/
- Lima-López et al., 2025, Scientific Data 12:1088 — https://www.nature.com/articles/s41597-025-05320-1
- 同论文 PubMed Central 全文 — https://pmc.ncbi.nlm.nih.gov/articles/PMC12215073/
- 同论文 Table 4(跨语料脱敏指标) — https://link.springer.com/article/10.1038/s41597-025-05320-1/tables/4
- CARMEN-I Nature 页表格版 — https://link.springer.com/article/10.1038/s41597-025-05320-1
- BSC 新闻稿(CARMEN 全称与发布活动) — https://www.bsc.es/print/news/bsc-news/carmen-i-digitizing-covid-19-medical-records-artificial-intelligence
- HuggingFace CARMEN-I 模型合集 — https://huggingface.co/collections/BSC-NLP4BIA/carmen-i-666707832cef2f5b6d51b6ea
- bsc-bio-ehr-es-drugtemist 模型卡(药物任务 F1) — https://huggingface.co/BSC-NLP4BIA/bsc-bio-ehr-es-drugtemist
- PhysioNet 资源目录页(发布元数据:Contributor Review,2024-04-20) — https://www.physionet.org/content/?topic=classification&page=3
- CLiC-UB 作者页(v1.0 DOI 10.13026/bxrx-y344,2023) — https://clic.ub.edu/user/17
- 匿名化协议英语版(Zenodo) — https://zenodo.org/doi/10.5281/zenodo.10171681
- 实体标注指南英语版(Zenodo) — https://zenodo.org/doi/10.5281/zenodo.10171646
- brat standoff 格式规范 — https://brat.nlplab.org/standoff.html
- 生成式西语临床 NER 外部验证报道(2026,Electronics) — https://www.ebiotrade.com/newsf/2026-8/20260820084217224.htm
- Martin Krallinger 发布公告(社区传播与语料概况) — https://www.linkedin.com/posts/martin-krallinger-85495920_dear-all-i-am-happy-to-share-the-release-activity-7175896231842377729-p18V
§10.4 人工校验
| 内容模块 | 审核者 | 审核方式 | 审核状态 |
|---|---|---|---|
| 规模数字与版本信息 | 千方病案医学编辑部 | 逐项对照 PhysioNet 数据页与 Sci Data 论文原文 | ✅ 已通过/已验证 |
| 医学背景与 ICD-11/SNOMED 映射 | 千方病案医学编辑部 | 对照 ICD-11/SNOMED CT 官方编码体系复核 | ✅ 已通过/已验证 |
| 许可与获取流程 | 千方病案医学编辑部 | 对照 PhysioNet Contributor Review License 与 DUA 条款 | ✅ 已通过/已验证 |
| 代码示例可运行性 | 千方病案医学编辑部数据工程组 | 结构审查 + 解析逻辑核对(brat 格式规范比对) | ✅ 已通过/已验证 |
| 坑点与偏倚分析 | 千方病案医学编辑部数据工程组 | 对照论文 Technical Validation 与官方 Usage Notes | ✅ 已通过/已验证 |
| 基准数值 | 千方病案医学编辑部 | 对照论文 Table 5 与 HuggingFace 模型卡 | ✅ 已通过/已验证 |
§10.5 AI 生成章节标注
本条目全部章节由 AI 辅助起草:§1 概览、§2 医学背景、§3 规格、§4 数据结构、§5 划分建议、§6 AI 就绪指南(含 8 坑点)、§7 质量评估(含 DAIMS)、§8 基准与生态、§9 引用、§10 声明卡均为 AI 起草 + 人工核验;§0 免责声明为站点固定模板文本。
§10.6 最后人工审核日期
2026-09-05
页面状态:published(全部内容已完成审核并发布)
§C 结构化数据(JSON-LD)
相关数据集导航
以下为站内 AI-Ready 数据集百科中与本词条共享多个主题标签的相关数据集,按相关度降序排列:
- cantemist — 共享标签:医疗NLP / 临床文本 / 命名实体识别 / 肿瘤学
- thyme — 共享标签:医疗NLP / 临床文本 / 命名实体识别 / 肿瘤学
- meddoprof — 共享标签:医疗NLP / 临床文本 / 命名实体识别
- pharmaconer — 共享标签:医疗NLP / 临床文本 / 命名实体识别
- coral — 共享标签:医疗NLP / 临床文本 / 肿瘤学
- distemist — 共享标签:医疗NLP / 临床文本 / 命名实体识别
- umls — 共享标签:医疗NLP / 临床文本 / 命名实体识别
- radgraph — 共享标签:医疗NLP / 临床文本 / 命名实体识别
- maccrobat — 共享标签:医疗NLP / 临床文本 / 命名实体识别
- mimic-iv-ext-pe — 共享标签:医疗NLP / 临床文本
导航说明:本章节由全站统一标签体系自动计算生成(标签重合度算法),双向可达;点击链接可跳转至对应数据集词条。

