信息速览

CADEC — 患者自报药物不良事件标注语料 AI-Ready Wikipedia
INFOBOX
| 字段 | 内容 |
|---|---|
| 数据集名称 | CADEC(CADEC 药物不良事件语料) |
| 英文全称 | CADEC: A New Corpus of Adverse Drug Event Annotations(CSIRO Adverse Drug Event Corpus) |
| 别名/简称 | Cadec Corpus、CSIRO Adverse Drug Event Corpus |
| 疾病分类(ICD-11) | 5C80 高胆固醇血症;FA20 类风湿关节炎;FA00 骨关节炎(对应两大药物组的适应症,见 §2.1) |
| SNOMED CT | 55822004(高脂血症)、69896004(类风湿关节炎)、396275006(骨关节炎)、22253000(疼痛)等映射目标概念 |
| 数据模态 | ADE 文本标注(患者论坛评论,实体标注 + 受控术语映射) |
| AI 任务类型 | 命名实体识别(NER)、概念归一化(Concept Normalisation)、药物警戒信息抽取 |
| 样本总数 | 1,250 条论坛帖子;约 9,111 个实体标注(后续整理口径,见 §4.2) |
| 数据大小 | 纯文本与 brat 标注文件,MB 量级(官方未公布精确值) |
| 数据格式 | TXT(原始文本)+ ANN(brat 标注),含 SNOMED CT 与 MedDRA 映射文件 |
| 许可证 | CSIRO Data Licence(仅限研究用途) |
| 访问级别 | 开放(公开下载,须引用原始论文,禁商用) |
| DUO 标签 | GRU(通用研究使用) |
| 语言 | 英语(口语化患者写作) |
| 首发日期 | 2016-04-08(v2 数据包,DOI 10.4225/08/5490FA2E01A90) |
| 最后更新 | 2024-11-14(扩展版 CADECv2,DOI 10.25919/3v5b-k950) |
| 发布机构 | CSIRO(澳大利亚联邦科学与工业研究组织) |
| 官方主页 | https://data.csiro.au/collection/12232 |
| 下载地址 | https://data.csiro.au/collection/12232 |
| DOI | 10.4225/08/570FB102BDAD2(v3 数据包);论文 DOI 10.1016/j.jbi.2015.03.010 |
| 引用次数 | 352+(Google Scholar,截至 2026-09) |
| AI 就绪度评分 | ⭐⭐⭐(3/5)— 标注质量高且带双术语映射,但 brat .ann 需自行解析为 TSV/CoNLL,无官方划分与 DataLoader 脚本 |
| 页面状态 | published |
§0 E-E-A-T 审核与免责声明
医学审核:本页由千方病案医学编辑部交叉审核:§2 医学背景(药物不良事件监测与患者自报数据的价值)、§7 偏倚分析(患者自报与临床确诊的差异)。
数据工程审核:[千方病案医学编辑部交叉审核] 医疗 AI 数据工程师,审核范围:§4 DAIMS 数据字典、§5 数据划分策略、§6 预处理 Pipeline 和坑点。
审核日期:2026-09-05
医疗免责声明:本页面内容仅供信息参考与科研教育用途,不构成任何医疗建议、诊断依据或治疗方案。任何涉及临床决策的行为,请务必在执业医师指导下进行。数据集中的患者自报事件均未经临床验证,不能作为药物安全性评价或个体用药决策的证据。
技术免责声明:本页面提供的代码与预处理方案仅用于展示数据加载与处理思路,不附带任何明示或默示的性能保证。使用者应在自身环境中充分验证后再投入生产,并自行承担因数据使用或模型部署带来的全部风险。
数据使用合规:本数据集依据 CSIRO Data Licence 以"仅限研究用途"(research purposes only)发布,使用前须阅读并遵守原始许可条款,引用时必须标注原始论文(Karimi et al., 2015, Journal of Biomedical Informatics)。禁止任何商业用途。原始论坛内容由 AskaPatient 提供并授权用于研究。
§1 数据集概览
§1.0 📌 30 秒速览
这是什么? CADEC 是澳大利亚联邦科学与工业研究组织(CSIRO)发布的医学论坛帖子标注语料库,全称 CSIRO Adverse Drug Event Corpus。它从 AskAPatient 论坛收集了 1,250 条患者自述用药体验的英文评论,并逐句标注出不良反应(ADR)、药物、疾病、症状与"发现"(Finding)五类实体,再由临床术语学家把口语表达映射到 SNOMED CT 与 MedDRA 标准医学术语体系(Karimi et al., 2015)。
为什么重要? 药物上市后的不良反应监测长期依赖自愿上报系统,报告延迟且数量有限。患者在论坛里用"我吃完这药半夜胳膊疼得睡不着"这样的日常语言,实时记录了未经修饰的真实用药体验。CADEC 把这类口语化文本第一次变成了带标准术语映射的金标准数据,让算法可以学习"听懂"患者的语言(Karimi et al., 2015)。
我能用它做什么? 训练和评测社交媒体 ADE 抽取模型(NER + 概念归一化);研究口语化医学文本的标注协议与标注者一致性;把 CADEC 当作药物警戒 NLP 系统的基准测试集;或者作为跨域泛化研究(如 MultiADE 基准)的社交媒体域数据源。
§1.1 技术摘要
CSIRO 团队从 AskAPatient 论坛抓取关于 12 种品牌药的 1,250 条英文帖子,按活性成分分成双氯芬酸(Diclofenac)与立普妥(Lipitor)两组;剔除评分与人口统计学字段后保留自由文本部分,使用 brat 工具进行两阶段标注:先由医学生与计算机科学家人工识别 5 类实体 span(允许 ADR 跨越不连续片段,但须在单句内),再由临床术语学家用 CSIRO Snapper 工具将实体映射到 SNOMED CT-AU(v20140531)、AMT 与 MedDRA(ADR 语义落到 MedDRA LLT 最低级别术语)。标注质量通过书面指南、多阶段标注、标注者一致性测量与术语学家人工终审四道工序保障。每个帖子交付 4 个文件:原始文本、实体标注、SNOMED CT 映射、MedDRA 映射,位置信息均以字符起止 offset 表达。语料以 CSIRO Data Licence 公开发布,仅限研究用途(Karimi et al., 2015;arXiv 2510.22285)。
§1.2 战略价值
药物警戒维度:自发不良事件报告系统(如 FDA MedWatch)的漏报率与延迟问题在文献中已被反复讨论;社交媒体与患者论坛作为"主动监测"(active surveillance)数据源,能把信号发现窗口大幅前移。CADEC 提供了这一假设所需的金标准训练/评测资源,使论坛文本 ADE 抽取从"能不能做"进入"做多准"的阶段。其后 SMM4H 系列共享任务、PsyTAR、MultiADE 等数据与基准的涌现,都以 CADEC 为直接或间接的参照系(Dai et al., 2024)。
方法学维度:CADEC 是少见的"口语文本 + 双术语映射"语料:它同时覆盖 NER(识别口语表达)、归一化(映射到 SNOMED CT/MedDRA)与标注方法学(IAA 测量、指南设计、术语学家终审)三个研究面。对构建"患者语言 → 标准编码"映射系统的团队(如真实世界药物安全信号平台、ePRO 系统),CADEC 至今仍是迁移学习的高价值种子数据。
教学与复现维度:CADEC 的体量(MB 级、1,250 个文件对)与标注复杂度(不连续 span、双术语映射、标签歧义)使它成为医学 NLP 课程的理想练手语料:学生可以在一台笔记本上完成从 brat 解析到 BERT 微调的全流程,同时遭遇该领域最典型的工程坑点(见 §6.5 八大坑点)。其 DOI 化的版本链与强制引用条款,也是数据治理教学的活教材。
§1.3 同类数据集横向对比
| 数据集 | 来源/文本类型 | 文档数 | 句子数 | 实体标注 | 差异化特点 |
|---|---|---|---|---|---|
| CADEC | AskAPatient 论坛评论 | 1,253(含标注口径) | 7,398 | 1,800 Drug / 7,409 ADE span | 5 类实体 + SNOMED CT/AMT/MedDRA 三术语映射 |
| PsyTAR | AskAPatient 论坛评论 | 891 | 6,009 | 792 Drug / 4,813 ADE | 增加戒断症状、有效性等 7 类句子级标签 |
| SMM4H Subtask 1b | Twitter 推文 | 1,300 | 2,107 | 1,496 ADE | 极短文本(平均 21 词/条) |
| ADE corpus | Medline 个案报告 | 2,972 | 4,272 | 5,063 Drug / 5,776 ADE | 医学文献语域,成对 Drug-ADE 关系 |
| TAC 2017 Task 1 | 药品说明书 | 101 | 3,154 | 249 Drug / 13,795 ADE | 监管文本,ADE 密度最高 |
来源:PLOS Digital Health 对比表。注意 CADEC 的 1,253 为该论文对含标注帖子的统计口径,官方发布口径为 1,250 条(见 §3.2)。
选库建议:若你的目标是"患者口语文本 + 丰富语义标签",PsyTAR 的标签面更宽(含戒断症状与有效性);若追求"标注最规范 + 术语映射最深",CADEC 仍是首选;若目标是推文等超短文本,SMM4H 1b 更贴合部署域;文献域的 Drug-ADE 关系研究则应选 ADE corpus 或 TAC 2017。工程上最常见的组合是以 CADEC 做主训练集、PsyTAR/SMM4H 做外部验证——既共享实体体系,又覆盖了不同文本长度与药品谱系。
§1.4 版本时间轴
| 时间 | 事件 | 说明 |
|---|---|---|
| 2001-08 至 2013-10 | 原始帖子写作期 | AskAPatient 论坛用户发布(CSIRO 门户) |
| 2015-06-01 | 论文发表 | JBI Volume 55, Pages 73–81,DOI 10.1016/j.jbi.2015.03.010(ACM DL) |
| 2016-04-08 | v2 数据包发布 | DOI 10.4225/08/5490FA2E01A90(CSIRO 门户) |
| 2016-04-15 | v3 数据包发布(v1 系最新) | DOI 10.4225/08/570FB102BDAD2,Handle 102.100.100/19745(CSIRO 门户) |
| 2024-11-14 | CADECv2 发布 | 覆盖更多样药物的扩展重标注版,CC-BY 4.0,DOI 10.25919/3v5b-k950(CSIRO 门户) |
时间轴读法:v1 系(2015 论文 → 2016 v2/v3 数据包)与 CADECv2(2024)之间存在 8 年空窗,且两者许可不同(研究专用 vs CC-BY 4.0)——文献中"CADEC"默认指 v1 系,出现"ADE 标签、CC-BY 许可"等特征时才指 v2。Handle 102.100.100/19745 可解析到 v1 系最新版本,适合作为长期引用锚点。
§1.5 典型应用场景
- 社交媒体 ADE 抽取系统评测:以 CADEC 为测试集,报告 ADR/Drug 实体识别的 strict 与 relaxed F1(社区最常见用法,见 §8.1)。
- 口语表达 → 标准术语归一化:利用 SNOMED CT 与 MedDRA 映射文件,训练"患者语言 → LLT"归一化模型,服务药物安全信号聚合。
- 药物警戒早期预警原型:把 CADEC 训练的模型接入论坛/评论流,做 ADE 信号富集的候选筛(研究用途)。
- 标注协议教学与研究:IAA 表格、指南设计、Finding 类"兜底标签"的处理方式都是标注工程的一手教材(见 §7.2)。
- 跨域泛化研究:作为 MultiADE 基准的社交媒体域成员,与临床笔记(n2c2/MADE)、文献(PHEE)域联动评测(Dai et al., 2024)。
- 语音多模态实验:借助 Zenodo 音频扩展版,研究"患者语音 → 文本 → ADE 抽取"链路中转录噪声对下游模型的影响(Ebadi et al., 2024)。
§2 医学背景
§2.1 疾病与概念编码映射(ICD-11)
CADEC 本身不携带 ICD-11 编码;下表给出其两大药物组核心适应症与任务主题在 ICD-11 中的对应位置,供跨库检索与术语对齐使用。
| 主题 | ICD-11 编码 | 中文名称 | 与 CADEC 的关系 |
|---|---|---|---|
| 高胆固醇血症 | 5C80 | 高胆固醇血症 | Lipitor(阿托伐他汀)组帖子的核心适应症 |
| 类风湿关节炎 | FA20 | 类风湿关节炎 | 双氯芬酸组常见适应症之一 |
| 骨关节炎 | FA00 | 骨关节炎 | 双氯芬酸组最常见的镇痛适应症 |
| 慢性疼痛 | MG30 | 慢性原发性疼痛 | 患者自报症状的高频主题 |
§2.1b SNOMED CT 映射表
| 术语标签 | ICD-11 | SNOMED CT 码 | 术语说明 |
|---|---|---|---|
| 高脂血症 | 5C80 | 55822004 | Lipitor 组适应症主题 |
| 类风湿关节炎 | FA20 | 69896004 | 双氯芬酸组适应症主题 |
| 骨关节炎 | FA00 | 396275006 | 双氯芬酸组适应症主题 |
| 疼痛 | MG30 系 | 22253000 | CADEC 中最高频患者自报感受之一 |
| 腹泻 | — | 62315008 | 典型 ADR 口语表达(如 “the runs”)的映射目标 |
| 恶心 | — | 422587007 | 典型 ADR 映射目标 |
| 头痛 | — | 25064002 | 典型 ADR 映射目标 |
| 失眠 | — | 193462001 | 典型 ADR 映射目标 |
说明:表中 SNOMED CT 码为术语体系内的标准概念码,用于解释 CADEC 映射目标的方向;语料内实际使用的是 SCT-AU(澳大利亚版)v20140531 的概念码,逐条映射以随数据发布的映射文件为准。MedDRA 侧 ADR 语义落到 LLT(最低级别术语),原始数据以 LLT 文字形式随映射文件发布。
§2.2 药物不良事件监测简介
药物不良事件(Adverse Drug Event, ADE)指用药过程中发生的伤害,可由用药错误、药物相互作用或正常剂量下的药物不良反应(Adverse Drug Reaction, ADR)引起。由于临床试验样本量与随访期有限,大量不良反应只有在药物上市、暴露于真实世界人群后才显现,因此上市后监测(药物警戒,pharmacovigilance)是药品安全体系的关键环节(Karimi et al., 2015;Dai et al., 2024)。
传统自发报告系统(如美国 FDA 的 MedWatch、澳大利亚 TGA 的报告渠道)依赖专业人员或患者主动上报,存在漏报、延迟与报告质量参差的问题。“主动监测”(active surveillance)转而自动扫描多种数据源——电子病历、医学文献、社交媒体与搜索引擎日志——寻找潜在安全信号。患者论坛是其中信息密度最高的一类:发帖者描述的是第一手用药体验,且不受报告表格的结构约束(Dai et al., 2024)。
AskAPatient 是本轮研究中被广泛使用的论坛之一:用户按药品名发布"用药体验评论",包含评分、人口统计学信息与自由文本。CADEC 正是从该论坛的双氯芬酸与立普妥两个药品组中采样构建的。
§2.2a ADE 与 ADR 的概念区分
CADEC 相关文献对这两个术语的使用有严格区分,混用会导致标签体系理解错误:
| 术语 | 英文全称 | 定义边界 | 与 CADEC 标签的关系 |
|---|---|---|---|
| 药物不良事件 | Adverse Drug Event (ADE) | 用药后发生的伤害,可由用药错误或药物相互作用引起,也可以是正常用药下的不良反应 | 泛指任务领域;跨语料统一标签常取此名 |
| 药物不良反应 | Adverse Drug Reaction (ADR) | 正常剂量下常规用药产生的有害反应 | CADEC v1 系的核心实体标签 |
| 不良反应上报 | Adverse Reaction Reporting | 监管渠道的事件上报行为 | CADEC 对标监测流程的背景概念 |
来源:MultiADE 论文引言的定义。提示:v1 系 .ann 中标签写作 ADR,而部分后续论文与统一基准把同一语义槽称为 ADE——对照文献数字时先核对标签名(见坑点 3)。
§2.2b 患者论坛文本与传统监测渠道的对比
| 维度 | 自发报告系统(如 MedWatch) | 患者论坛文本(AskAPatient 类) |
|---|---|---|
| 报告主体 | 患者/专业人员按表格填报 | 发帖者自由写作,无表格约束 |
| 语言形态 | 结构化、医学术语或受引导的口语 | 完全口语化,拼写与语法不规则 |
| 时效 | 上报-入库有延迟 | 帖子实时发布(CADEC 窗口内持续 12 年) |
| 事件验证 | 有一定质检流程 | 无医学验证,存在归因与回忆偏差 |
| 信号密度 | 每条报告聚焦单一事件 | 一帖常混合适应症、疗效与多个 ADE 提及 |
| 可计算性 | 已结构化,可直接聚合 | 需 NLP 抽取(正是 CADEC 的用武之地) |
解读:论坛文本的"非结构化 + 无验证"两面,决定了基于 CADEC 的研究必须同时处理"语言学噪声"(坑点 1/6)与"语义噪声"(坑点 8)——这也是该语料区别于临床文本语料(如 n2c2)的根本特征。
§2.3 临床任务定义
基于 CADEC 可形式化的核心任务如下:
- ADE 实体识别(NER):给定帖子文本,识别 ADR/Drug/Disease/Symptom/Finding 五类实体 span。难点在于口语表达(“felt blank”、“agonising”)与非规范拼写。
- 概念归一化(Normalisation):把识别出的实体映射到 SNOMED CT/MedDRA 概念(ADR → MedDRA LLT),实现患者语言与监管术语的对齐。
- 关系/句级抽取:在句内建立"药物 → 引起 → 不良反应"的因果对(如 IEEE FITYR 2026 基准定义的 causes/treats/has_symptom 三类关系,见 §8.1)。
- 跨域 ADE 抽取:以 CADEC 为社交媒体域,联合临床笔记域与文献域训练单一模型,评估域泛化能力(MultiADE 范式)。
各任务的输入输出与主要难点汇总:
| 任务 | 输入 | 输出 | 主要难点 |
|---|---|---|---|
| 实体识别(NER) | 帖子原始文本 | 5 类实体 span(含不连续 ADR) | 口语表达、拼写噪声、22:1 类别失衡 |
| 概念归一化 | 实体 span + 原文 | SNOMED CT 码 / MedDRA LLT | 口语-标准术语鸿沟,部分表达无对应概念 |
| 句级关系抽取 | 单句文本 | causes/treats/has_symptom 关系对 | 正例稀缺(基准中 745 候选对仅 222 正例) |
| 跨域 ADE 抽取 | 多域混合文本 | 统一标签体系的 ADE span | 语域与表达习惯差异 |
§2.4 患者人群画像
| 维度 | 内容 |
|---|---|
| 来源 | AskAPatient 论坛公开用药评论(自选择样本,非临床招募) |
| 时间范围 | 2001-08-18 至 2013-10-18(CSIRO 门户) |
| 年龄 | 17 至 84 岁(PLOS Digital Health 论文) |
| 性别/种族 | 原始人口统计学字段在构建语料时被剔除,未随语料发布 |
| 就医类型 | 社区自用药/处方药使用者,非住院人群 |
| 药物暴露 | 双氯芬酸组与 Lipitor 组共 12 种品牌药(Lipitor 997 帖为最大单组,见 §3.2) |
§2.5 临床与研究价值
对药物安全研究者,CADEC 证明了两件事:其一,患者论坛文本确实携带可标注、可归一化的 ADE 信号——临床术语学家能把口语表达映射进 SNOMED CT/MedDRA;其二,患者语言与监管术语之间的"语义鸿沟"是可度量的,标注协议(放宽 span 匹配 + 放宽标签匹配后 IAA 达 78%–95%)给出了工程上的现实预期(见 §7.2)。对 AI 团队,它提供了从原始论坛噪声到金标准标注的完整对照,是任何"社交媒体药物安全信号系统"立项前必须消化的参照。
落到具体工作流:上游可把 CADEC 训练的抽取模型用于论坛流水的"候选信号富集"——从海量帖子中筛出含 ADE 提及的片段供药理人员复核;中游可用其映射文件校准"患者口语 → LLT"归一化器,聚合同一不良事件的不同表达;下游可用跨域基准(MultiADE)量化模型在真实部署域的性能衰减,避免"域内好看、上线失效"的陷阱。三个环节都以"仅限研究用途"为前提,任何落地均需另行获得数据许可与伦理评估。
§2.6 金标准属性表
| 属性 | 内容 |
|---|---|
| 划分 | 无官方划分(社区自行划分,见 §5) |
| 标注方式 | 人工两阶段标注:实体识别(brat)→ 术语关联(Snapper 工具) |
| 标注者 | 医学生与计算机科学家(Diclofenac 组 4 人、Lipitor 组 2 人参与 IAA 子集),经作者筛查 |
| 终审 | 临床术语学家逐条复核并完成 SNOMED CT/AMT/MedDRA 映射 |
| 性质 | 金标准(gold standard)语料;患者自报语义未经临床验证 |
§3 数据集规格
§3.0 版本抉择矩阵
| 你的需求 | 推荐版本 | 大小/形态 | 理由 |
|---|---|---|---|
| 复现经典 ADE 抽取论文 / 与既有基准对比 | v3 数据包(2016-04-15) | TXT + ANN,MB 量级 | 绝大多数文献(2016–2024)使用 v1 系口径,实体计数与 IAA 均基于此 |
| 需要更多药物、可商用授权 | CADECv2(2024-11-14) | TXT + 标注 + 指南 PDF + 代码 | CC-BY 4.0 许可,覆盖更多样药品,配套 MultiADE 基准脚本 |
| 跨域泛化研究 | CADECv2 + MultiADE 脚本 | 多域联合包 | 与 n2c2/MADE/PHEE/PsyTAR 统一标签体系后联合训练 |
| 语音/多模态实验 | Zenodo 音频扩展版 | 含原始文本 + 音频 + Whisper 转录 | 提供 CADEC 帖子的朗读音频与带噪转录(Ebadi et al., 2024) |
§3.1 模态详情
- 原始文本:AskAPatient 帖子的自由文本部分(评分、用户名等结构化字段在构建时剔除),英语,口语化写作,含非规范拼写、俚语与药物俗称。
- 实体标注:brat 格式 .ann 文件,5 类实体 span(ADR 允许不连续 span,标注须落在单句内)。
- 术语映射:每帖附 SNOMED CT 映射文件与 MedDRA 映射文件;Drug 实体映射到 AMT(澳大利亚药物术语)。
| 模态分量 | 载体 | 规模 | 备注 |
|---|---|---|---|
| 帖子自由文本 | .txt(UTF-8) | 1,250 个文件 | 口语化英语,多数短于 200 词 |
| 实体 span 标注 | .ann(brat standoff) | 约 9,111 个(后续整理口径) | 仅 ADR 含不连续 span |
| SNOMED CT 映射 | .ann(brat standoff) | 与实体逐条对应 | SCT-AU v20140531 |
| MedDRA 映射 | .ann(brat standoff) | 与 ADR 对应 | 落到 LLT |
| 标注员备注 | .ann 内 AnnotatorNotes 行 | 部分标注带 | 解释标注依据(Zenodo) |
§3.2 子集构成与样本数
| 药物品牌 | 所属组 | 帖子数 |
|---|---|---|
| Lipitor | Lipitor(阿托伐他汀) | 997 |
| Arthrotec | Diclofenac | 145 |
| Voltaren | Diclofenac | 46 |
| Voltaren-RX | Diclofenac | 22 |
| Cataflam | Diclofenac | 10 |
| diclofenac-sodium | Diclofenac | 7 |
| Cambia | Diclofenac | 4 |
| Pennsaid | Diclofenac | 4 |
| Solarez | Diclofenac | 3 |
| diclofenac-potassium | Diclofenac | 3 |
| Zipsor | Diclofenac | 5 |
| Flector | Diclofenac | 1 |
来源:Zenodo Ebadi et al., 2024 对 CADEC 品牌分布的统计(该统计合计 1,247,与 1,250 总帖数存在极小口径差,以 CSIRO 官方发布为准)。官方总规模为 1,250 条(arXiv 2510.22285);不同研究在剔除空文本/无标注帖后报告过 1,244 与 1,253 两种口径。
§3.3 数据格式
| 内容 | 格式 | 说明 |
|---|---|---|
| 帖子文本 | TXT(.txt) | 每帖一个文件,字符级 offset 基准 |
| 实体标注 | brat ANN(.ann) | T{id}\t{TYPE} {start} {end};...,不连续 span 以分号分隔多段 |
| SNOMED CT 映射 | ANN/文本 | 实体 → SCT-AU 概念码 |
| MedDRA 映射 | ANN/文本 | ADR → MedDRA LLT |
| 注释 | AnnotatorNotes | 部分标注带标注员备注(Zenodo) |
§3.4 存储大小
官方页面未公布压缩包精确体积;语料由 1,250 个纯文本帖子与对应标注文件构成,总量级为 MB 级(纯文本推断),无任何影像/基因组级大文件。
§3.5 标注方式
人工标注,两阶段流水线:
- 实体识别:标注者依据书面指南在 brat 中框选实体 span 并赋予 5 类标签;允许 ADR 不连续 span;标注须在单句内。
- 术语关联(Normalisation):临床术语学家使用 CSIRO Snapper 工具,将除 Drug 外的实体映射到 SNOMED CT-AU v20140531(以一对一为主),Drug 一对一映射 AMT;再经由 SNOMED CT 概念桥接至 MedDRA LLT。此阶段同时修正了部分错误标注(Karimi et al., 2015)。
§3.6 标注者资质与一致性
标注由医学生与计算机科学家完成,标注结果经论文作者筛查,最终由临床术语学家终审。一致性在 55 条帖子子集上按"span 匹配 × 标签匹配"双维测量:Diclofenac 组(4 名标注者)在双放宽设定下约 78%,Lipitor 组(2 名标注者)约 95%;严格 span + 严格标签设定下分别为 46.6% 与 74.2%。两组标注者人数不同,官方明确说明两组数值不可直接比较(Karimi et al., 2015)。
完整 IAA 矩阵(平均成对一致性,%):
| Span 匹配 | 标签匹配 | Diclofenac 组(4 人) | Lipitor 组(2 人) |
|---|---|---|---|
| 严格 | 严格 | 46.6 | 74.2 |
| 严格 | 放宽 | 49.1 | 81.6 |
| 放宽 | 严格 | 68.7 | 85.1 |
| 放宽 | 放宽 | 77.9 | 94.8 |
读法提示:从"严格×严格"到"放宽×放宽",Diclofenac 组提升约 31 个百分点,说明 span 边界分歧与标签分歧几乎各贡献一半的不一致;Lipitor 组在两种放宽下都大幅改善,说明其分歧更多来自标签选择而非边界划法。这一结构直接支撑了坑点 2 的评估建议。
§3.7 采集周期
帖子写作时间跨度为 2001-08-18 至 2013-10-18(约 12 年窗口);语料构建与标注在 2014–2015 年完成,2015-06 论文发表,2016-04 数据包公开。
时间线上的三个关键时点对使用者的影响:其一,12 年窗口意味着语料横跨多个药品安全事件周期(如双氯芬酸类心血管安全性讨论),帖子里可能混合历史语境表达;其二,2013 年数据截止意味着社交平台生态(论坛 → 社交媒体迁移)、药品市场(Lipitor 专利悬崖后的仿制药扩散)与语言习惯均与今天不同,部署前须评估时移(见 §7.6);其三,2016 年 v3 之后 v1 系未再更新,想获得"仍在维护"的口径应转向 2024 年的 CADECv2。
§3.8 地域覆盖
AskAPatient 为全球英语社区,帖子作者地理分布未随语料公布;文本全部为英语,用药语境以美国药品品牌名(Lipitor、Voltaren 等)为主。
§3.9 设备规格
不适用:纯文本语料,无传感器或影像设备记录。
§3.10 深度溯源链
AskAPatient 论坛公开帖子(2001–2013)→ CSIRO 项目 “Drug Side-Effect Discovery” 抓取与清洗(剔除评分/人口学字段)→ brat 多阶段人工标注(指南 + IAA 测量 + 作者筛查)→ 临床术语学家 Snapper 映射(SCT-AU v20140531 / AMT / MedDRA LLT)→ CSIRO Data Access Portal 发布(v2 2016-04-08,v3 2016-04-15)→ CADECv2 扩展重标注(2024-11-14,MultiADE 论文)。
§4 数据结构
§4.0 目录树
以下为 v3 数据包(v1 系)解压后的典型结构(基于 CSIRO 门户与社区处理脚本归纳,suhejian/CADEC-data-process):
cadec/
├── text/ # 原始帖子文本(1,250 个 .txt)
│ ├── LIPITOR.1033.1.txt
│ ├── ARTHROTEC.551.3.txt
│ └── ...
├── original/ # brat 标注(与文本同名 .ann)
│ ├── LIPITOR.1033.1.ann # 实体 span + 类型 + AnnotatorNotes
│ └── ...
├── sct/ # SNOMED CT 映射(实体 → SCT-AU 码)
│ └── *.ann
├── meddra/ # MedDRA 映射(ADR → LLT)
│ └── *.ann
└── CSV/ # 汇总表(部分版本附带)
注:目录内文件名形如
{DRUG}.{POST_ID}.{SEQ},前缀即品牌药名;CADECv2 采用cadec/text与cadec/original两目录结构,与 v1 系不完全相同,混用前务必核对(见坑点 3)。
标注产物形态示例(文本引自语料公开示例帖 “I experienced one night of agonising upper stomach pain, diarrhoea and sleep-lessness”,见 知识 infused RNN 论文;下表 offset 与标签编号为演示性构造,实际数值以原始文件为准):
| brat 行 | 解读 |
|---|---|
T1 ADR 21 54 |
span “agonising upper stomach pain” 标为 ADR |
T2 ADR 59 68 |
span “diarrhoea” 标为 ADR |
T3 ADR 73 87 |
span “sleep-lessness” 标为 ADR(非规范拼写保留原样) |
T4 Drug 0 12 |
句首药名标为 Drug(映射至 AMT) |
#1 AnnotatorNotes T1 |
标注员备注:解释该 ADR 归因依据 |
示例揭示两个要点:其一,一帖内多个 ADR 独立成行,各自携带 offset,聚合到药品层面才形成"信号";其二,患者拼写(sleep-lessness)原样保留,归一化交给术语映射阶段——这正是"保留原始字符流"设计的原因。
§4.1 DAIMS 字段字典
| 字段 | 类型 | 说明 | 示例值 | AI 用途 | 观测误差 | 信息性缺失编码 | 取值范围 |
|---|---|---|---|---|---|---|---|
| post_id | Text | 帖子唯一标识(文件名前缀) | LIPITOR.1033.1 | 分组/去重/防泄漏键 | 无 | 无 | 1,250 个唯一值 |
| post_text | Text | 帖子自由文本 | “I experienced one night of agonising upper stomach pain…” | NER 输入 | 口语拼写/俚语噪声 | 无 | 平均短于 200 词 |
| drug_group | Text | 活性成分组 | LIPITOR / DICLOFENAC | 分层划分 | 无 | 无 | 2 组 |
| drug_brand | Text | 品牌药名 | Voltaren | 药物归一化 | 品牌vs通用名混写 | 无 | 12 种品牌 |
| entity_type | Label | 实体类型 | ADR | NER 标签 | 标签边界主观性(见 §7.2) | 无 | ADR/Drug/Disease/Symptom/Finding |
| start_offset | Integer | 实体起始字符位置(0 起) | 18 | span 对齐 | 文件编码差异可致漂移 | 无 | 0 至帖长 |
| end_offset | Integer | 实体结束字符位置 | 46 | span 对齐 | 同上 | 无 | 0 至帖长 |
| mention_text | Text | 实体原文 | “agonising upper stomach pain” | 错误分析/短语挖掘 | 无 | 无 | 1 至数十词 |
| discontinuous | Boolean | 是否不连续 span(仅 ADR) | true | 解析逻辑分支 | 无 | 无 | true/false |
| snomed_code | Text | SCT-AU 概念码 | 62315008(腹泻) | 归一化任务 | 少数口语表达无对应码 | 空值=未映射 | SCT-AU v20140531 概念空间 |
| meddra_llt | Text | MedDRA 最低级别术语 | Diarrhoea | 监管语义对齐 | 经 SNOMED 二跳映射 | 空值=未映射 | MedDRA LLT 词表 |
§4.2 标签分布
两套公开统计口径并列(计数差异来自不同整理者对 brat 原始文件的解析策略,使用时须声明口径):
| 实体类型 | 后续整理口径 | v1 brat 原始口径(Zenodo 复述) |
|---|---|---|
| ADR | 6,318 | 5,316 |
| Drug | 1,800 | 1,797 |
| Finding | 435 | 397 |
| Disease | 283 | 280 |
| Symptom | 275 | 255 |
| 合计 | 9,111 | 8,045 |
来源:arXiv 2510.22285;Zenodo Ebadi et al., 2024。另有 PLOS 论文口径:1,800 Drug / 7,409 ADE span / 7,398 句(PLOS)。
口径使用建议:对比文献数字前,先确认该论文解析的是哪一版文件(v1 brat 原始 vs 重整理版);在自己的报告中固定一种口径并写明"实体统计解析自 v3 包 .ann 文件"之类的声明。若需要与 MultiADE 基准对比,直接采用其统一标签协议下的统计,避免跨口径拼接。
§4.3 关键统计
- 帖子长度:多数帖子短于 200 词,分布呈长尾(arXiv 2510.22285)。
- 句子数:7,398 句(含标注口径,PLOS);另一基准清洗后得到 1,250 文件 / 7,143 句(IEEE FITYR 2026)。
- 类别失衡:ADR 与 Disease 标注数之比约 22:1(按 6,318:283 计),NER 训练须用 macro 平均指标。
- 标签形态:不连续 span 仅出现在 ADR 类;单句内标注约束使句级建模天然可行。
帖子长度分布(词数区间 → 帖数,直读自 arXiv 2510.22285 对 CADEC 帖长分布图的统计):
| 词数区间 | 帖数 | 词数区间 | 帖数 |
|---|---|---|---|
| 0–50 | 215 | 350–400 | 20 |
| 50–100 | 225 | 400–450 | 10 |
| 100–150 | 210 | 450–500 | 5 |
| 150–200 | 170 | 500–550 | 2 |
| 200–250 | 95 | 550–600 | 1 |
| 250–300 | 65 | 600–650 | 1 |
| 300–350 | 35 | 650–700 | 1 |
注:区间读数合计 1,055,小于 1,250 总帖数,差异源自分布图未覆盖的极长尾与空值帖;该表用于把握"短帖主导"的整体形态,精确统计以数据文件为准。
§4.4 数据层级
论坛(AskAPatient)→ 药品组(2)→ 品牌药(12)→ 帖子(1,250)→ 句子 → 实体 span(5 类)→ 术语映射(SNOMED CT / AMT / MedDRA LLT)
层级中"患者/作者"维度缺失:同一作者的多篇帖子无法从语料内识别(作者信息在构建时剔除),这直接影响划分时的去重策略(见坑点 4)。
各层级的使用含义:
| 层级 | 数量级 | 建模含义 |
|---|---|---|
| 论坛 | 1(AskAPatient) | 单一平台来源,平台文体特征不可泛化 |
| 药品组 | 2(Diclofenac / Lipitor) | 天然的域标签,可做组间泛化测试 |
| 品牌药 | 12 | 细粒度分层键;Lipitor 997 帖占绝对主导 |
| 帖子 | 1,250 | 最小划分单元;去重与防泄漏的锚点 |
| 句子 | 约 7,398 | 句级任务的天然边界(标注约束在单句内) |
| 实体 span | 约 9,111 | 标注任务的直接对象 |
| 术语映射 | 与实体对应 | 归一化任务的标签;含空值(UNMAPPED) |
§4.5 缺失值与信息性缺失
| 情形 | 表现 | 建议处理 |
|---|---|---|
| 实体无 SNOMED 映射 | 映射文件中该实体缺行或留空 | 保留为 “UNMAPPED” 类,勿静默丢弃;口语表达归一化失败本身是研究对象 |
| 实体无 MedDRA 映射 | ADR 缺 LLT | 同上;统计映射覆盖率作为预处理质量指标 |
| 空文本/无标注帖 | 社区统计 1,244–1,253 口径差异的来源 | 加载时显式过滤并记录过滤清单 |
| AnnotatorNotes 缺失 | 仅部分标注带备注 | 按可选字段处理 |
缺失值处理决策路径:
实体缺少 SNOMED 映射?
├─ 是 → 该表达是否出现在多数帖子中?
│ ├─ 是 → 高频口语表达:单独成表,考虑人工补码或 LLM 补链
│ └─ 否 → 保留 UNMAPPED,计入覆盖率统计
└─ 否 → 是否有 MedDRA LLT?
├─ 是 → 标准样本,直接用于归一化训练
└─ 否 → SNOMED 有码但桥接失败:检查 LLT 版本差异后归类
§5 数据划分与使用建议
§5.1 官方划分
无。Karimi et al. (2015) 未随语料发布官方 train/dev/test 划分。
§5.2 社区惯例划分
| 研究 | 划分方案 | 说明 |
|---|---|---|
| 知识 infused RNN(ADR 提及识别) | Train 935 / Test 309(合计 1,244 帖) | 按帖子随机划分(论文) |
| LLM 临床 NER 评测 | 64% / 16% / 20% | 随机三分(arXiv 2510.22285) |
| 句级 IE 基准 | 按文档聚类的 5 折交叉验证(RE 任务) | 带置信区间与 Bonferroni 校正(IEEE FITYR 2026) |
从上表可读出的社区演化趋势:早期研究(随机划分、单次训练/测试)关注"能不能抽出来";近期研究(分组交叉验证、置信区间、显著性校正)转向"数字是否可信"。跟随近期协议不仅是方法学严谨性问题,也直接影响与最新文献的可比性。
§5.3 划分策略与泄漏风险
- 词汇泄漏:1,250 帖中 997 帖来自 Lipitor 组,副作用词汇(pain、dizziness 等)高度重复;纯随机划分会让近重复文本跨集出现,虚高 F1。建议按品牌药或帖子写作时间分块切分,至少报告"按组分块"与"随机"两套结果。
- 作者泄漏不可测:语料不含作者标识,无法按作者分组划分;若同一作者多次发帖,其语言指纹会跨集出现。论文复现时应在限制条件中声明。
- 分组分层:至少按 drug_group 分层,保证两组在训练/测试中均有足够样本(Disease/Symptom 类在 Diclofenac 组外极稀少)。
- 交叉验证:实体级任务建议 5 折 + 分层;关系级任务参照 IEEE FITYR 2026 的按文档聚类分组 5 折方案。
§5.4 外部验证建议
以 CADEC 训练的模型应在至少一个外部域(SMM4H 推文、PsyTAR 同源不同药、n2c2 临床笔记、PHEE 文献)上评测;MultiADE 已给出标准化跨域协议与结论——域内调优的模型跨域性能远未达到可部署水平(Dai et al., 2024)。
§5.5 划分方案选择指南
| 你的场景 | 推荐划分 | 理由 |
|---|---|---|
| 复现历史论文 | 不复用划分,逐篇核对协议后声明差异 | 历史划分未公开清单,无法精确对齐 |
| 全量五类 NER | 随机 5 折(分层:drug_group × 是否含稀有类) | 最大化数据利用,控制稀有类缺席 |
| 与推文域对照 | 固定 80/20 + 按品牌分块测试集 | 测试集"品牌隔离"检验词汇泄漏 |
| 关系抽取 | 按文档聚类分组 5 折 + 显著性检验 | 句内正例稀缺,需稳定方差估计(IEEE FITYR 2026) |
| 时间鲁棒性 | 训练用早段帖子、测试用晚段(时间切分) | 近似真实部署的时移场景 |
无论选择哪种方案,都应随代码发布划分清单(post_id 列表)与数据版本 DOI,使结果可被精确复现。
§6 AI 就绪指南
§6.0 云端快速启动
CADEC 体积为 MB 级,无需 GPU 集群即可完成全部预处理;模型训练阶段单张消费级 GPU(8–16 GB 显存)即可微调 BERT 级模型。无官方托管 Notebook,建议本地或 Colab 直接运行下述代码。
| 环境 | 适用阶段 | 配置建议 |
|---|---|---|
| 本地 Python 3.9+ | 解析、清洗、统计 | 纯 CPU,内存 4 GB 即可 |
| Colab 免费档 | BERT 微调(小 batch) | T4 16 GB,batch 8–16 |
| 单机单卡 | 全量微调 + 5 折 | RTX 3080/4090 级,batch 16–32 |
| API 型 LLM | 少样本对照实验 | 注意研究许可下的数据外发合规 |
开始前的三件套检查:数据包 DOI 已记录(坑点 3)、文本按 UTF-8 读取(坑点 6)、评估口径已声明(坑点 2)。
§6.1 快速上手
代码约定:
data_root指向 v3 数据包解压目录(含text/与original/两个子目录);最小可用子集为任一品牌药前缀(如LIPITOR.*)的文本-标注对;先跑通一个品牌再全量处理。
import os, glob
from pathlib import Path
# 目录结构预期:
# data_root/
# text/*.txt —— 原始帖子
# original/*.ann —— brat 实体标注(与 .txt 同名)
# data_root 即解压根目录,拼接关系:data_root / "text" / f"{post_id}.txt"
data_root = Path("cadec") # 改成你的解压路径
texts = sorted(glob.glob(str(data_root / "text" / "*.txt")))
print(f"共 {len(texts)} 个帖子文件") # 官方口径应为 1,250
def read_post(txt_path):
"""读取一个帖子及其标注(最小可用子集:单文件对)。"""
txt_path = Path(txt_path)
ann_path = data_root / "original" / (txt_path.stem + ".ann")
text = txt_path.read_text(encoding="utf-8", errors="replace")
anns = ann_path.read_text(encoding="utf-8", errors="replace").splitlines() if ann_path.exists() else []
return text, anns
text, anns = read_post(texts[0])
print(text[:200])
print(anns[:5]) # brat T-id 行形如: T1 ADR 18 46;51 60 (分号 = 不连续 span)
§6.2 数据获取
| 步骤 | 说明 |
|---|---|
| 1. 访问门户 | 打开 CSIRO Data Access Portal |
| 2. 选择版本 | v3(v1 系最新,2016-04-15)或跳转 CADECv2 |
| 3. 下载 | 元数据与文件公开,无需注册审核,直接下载 zip |
| 4. 许可义务 | 仅限研究用途;发表成果必须引用 Karimi et al. 2015 |
两个版本的获取差异:
| 对比项 | v3(v1 系) | CADECv2 |
|---|---|---|
| 许可 | CSIRO Data Licence(研究专用) | CC-BY 4.0 |
| 发布日期 | 2016-04-15 | 2024-11-14 |
| 随附材料 | 文本 + 标注包 | 文本 + 标注 + Annotation Guidelines PDF + code.zip |
| 引用义务 | Karimi et al. 2015 | Dai et al. 2024(MultiADE) |
# 浏览器下载为主;门户未提供稳定的直链 API,脚本化请走门户页面手动获取 zip 后:
unzip cadec.zip -d cadec && find cadec -name "*.txt" | wc -l # 预期 1,250 个文本文件
§6.3 预处理全流程
步骤一:brat .ann → 结构化表(格式转换)。处理 brat 行格式 T{id}\t{TYPE} {spans}\t{TEXT},其中不连续 span 以分号连接多段 {start} {end}:
import re, pandas as pd
ANN_RE = re.compile(r"^(T\d+)\t(\w+) ([0-9; ]+?)\t(.*)$")
def parse_ann(ann_path):
rows = []
for line in open(ann_path, encoding="utf-8", errors="replace"):
m = ANN_RE.match(line.rstrip("\n"))
if not m:
continue # 跳过 AnnotatorNotes(#) 与关系行
tid, etype, spans, mention = m.groups()
for seg in spans.split(";"): # 不连续 span 拆成多段(坑点 1)
start, end = map(int, seg.split())
rows.append(dict(ann_id=tid, entity_type=etype,
start_offset=start, end_offset=end,
mention_text=mention))
return rows
def build_table(data_root):
recs = []
for txt in sorted(glob.glob(str(Path(data_root) / "text" / "*.txt"))):
stem = Path(txt).stem
text = open(txt, encoding="utf-8", errors="replace").read()
for r in parse_ann(Path(data_root) / "original" / f"{stem}.ann"):
recs.append({"post_id": stem, "post_text": text, **r})
return pd.DataFrame(recs)
df = build_table("cadec")
print(df["entity_type"].value_counts())
步骤二:清洗与标准化。论坛文本含 HTML 转义、表情符号与全角字符:统一 UTF-8 读入(errors="replace" 防崩);不要重排或改写原文——所有 offset 都锚定在原始字符流上(坑点 6);剔除 0 词空帖时记录过滤清单(对应社区 1,244–1,253 口径差)。
步骤三:IOB/CoNLL 导出(供序列标注框架使用):
def to_iob(text, spans):
tags = ["O"] * len(text.split()) # 简化:以空白分词
# 按 char offset → token index 映射后填 B-/I- 标签
# 生产实现请用 tokenizers 的 offset_mapping 精确对齐
return tags
# 完整实现见 §6.4 Dataset 内的对齐逻辑
步骤四:术语映射并入。把 sct/、meddra/ 目录中同 post_id 的映射行按 ann_id join 进主表;映射为空的实体保留 UNMAPPED(坑点 7)。
步骤五:质量门禁与导出。在全量导出前跑一遍断言与覆盖率报告,作为数据质量门禁:
def audit(df, data_root):
"""预处理质量门禁:offset 一致性 + 映射覆盖率。"""
bad_offset, unmapped = [], 0
for _, r in df.iterrows():
text = r["post_text"]
if text[r["start_offset"]:r["end_offset"]] != r["mention_text"]:
bad_offset.append((r["post_id"], r["ann_id"])) # 坑点 6 的显式暴露
unmapped = (df["snomed_code"].isna()).sum()
print(f"offset 不一致样本:{len(bad_offset)}")
print(f"SNOMED 未映射实体:{unmapped} / {len(df)} "
f"({unmapped / len(df):.1%})")
return bad_offset
门禁通过标准建议:offset 一致率需人工复核异常样本后决定保留或剔除;SNOMED 覆盖率记入实验报告基线——它就是"口语-标准术语鸿沟"的直接度量。
§6.4 PyTorch DataLoader
<details>
<summary>完整可运行 Dataset 代码(点击展开)</summary>
import torch
from torch.utils.data import Dataset, DataLoader
from transformers import AutoTokenizer
class CadecNerDataset(Dataset):
"""CADEC 帖子级 NER 数据集:字符 offset → BERT token BIO 对齐。
目录结构预期:
root/text/{post_id}.txt —— 原始文本
root/ann/{post_id}.ann —— 解析为 (type, start, end) 三元组列表
"""
LABELS = ["O", "B-ADR", "I-ADR", "B-DRUG", "I-DRUG",
"B-DISEASE", "I-DISEASE", "B-SYMPTOM", "I-SYMPTOM",
"B-FINDING", "I-FINDING"]
def __init__(self, samples, tokenizer, max_len=256):
self.samples, self.tok, self.max_len = samples, tokenizer, max_len
self.lab2id = {l: i for i, l in enumerate(self.LABELS)}
def __len__(self):
return len(self.samples)
def __getitem__(self, idx):
text, spans = self.samples[idx]
enc = self.tok(text, truncation=True, max_length=self.max_len,
return_offsets_mapping=True, return_tensors="pt")
offsets = enc["offset_mapping"][0].tolist()
labels = []
for (s, e) in offsets:
if s == e: # [CLS]/[SEP]/padding
labels.append(-100)
continue
etype = None; first = False
for (t, s0, e0) in spans:
if s0 <= s and e <= e0:
etype = t; first = (s == s0); break
if etype is None:
labels.append(self.lab2id["O"])
else:
pref = "B" if first else "I"
labels.append(self.lab2id[f"{pref}-{etype}"])
return {"input_ids": enc["input_ids"][0],
"attention_mask": enc["attention_mask"][0],
"labels": torch.tensor(labels, dtype=torch.long)}
def collate(batch, pad_id=0):
maxlen = max(b["input_ids"].size(0) for b in batch)
out = {}
for k in ["input_ids", "attention_mask", "labels"]:
seqs = [torch.nn.functional.pad(b[k], (0, maxlen - b[k].size(0)),
value=(-100 if k == "labels" else pad_id)) for b in batch]
out[k] = torch.stack(seqs)
return out
tok = AutoTokenizer.from_pretrained("dmis-lab/biobert-base-cased-v1.2")
train_ds = CadecNerDataset(train_samples, tok) # train_samples 由 §6.3 构建
train_dl = DataLoader(train_ds, batch_size=16, shuffle=True,
collate_fn=collate, num_workers=2)
</details>
§6.5 坑点 8 个
⚠️ 坑点 1:不连续 ADR span 的 offset 解析(分类:预处理陷阱)
问题:brat 格式允许 ADR 实体由同句内多个不连续片段组成(如 “felt blank and dizzy” 中跳过连接词)。直接按"单段起止 offset"解析会把中间词错误并入实体,或直接抛出解包异常。
症状:解析 .ann 时ValueError: too many values to unpack;或 NER 训练集中实体长度远超 mention 文本词数,评估 span F1 异常偏低。
解决:
- 简单方法:解析 span 字段时先按
;分段,逐段生成 (start, end) 记录,同 ann_id 共享 entity_type。- 进阶方法: BIO 对齐时把每段的首 token 标 B-、段内其余标 I-,中间被跳过的 token 保持 O;评估时把同 ann_id 的段重组成多段 span 再比对。
- SOTA 方法:使用支持不连续 span 的抽取框架(如多头部 span-based 模型)直接建模 (type, segment-list),避免降级为单段。
参考:brat 标注格式文档;arXiv 2510.22285 对 CADEC 标注形态的描述
⚠️ 坑点 2:ADR / Symptom / Disease / Finding 边界的主观性(分类:标签理解)
问题:四类标签的语义边界天然模糊——"肌肉紧张"可以被视为药物不良反应(ADR)、疾病症状(Symptom)或基础疾病(Disease);Finding 是明确的"兜底"类。官方 IAA 表显示严格标签匹配下一致性大幅下降(Diclofenac 组 46.6% vs 双放宽 77.9%)。
症状:复现论文 F1 时对不上:你用严格匹配,别人用放宽匹配;错误分析中发现大量"标签互换"型假阳性/假阴性。
解决:
- 简单方法:评估同时报告 strict(span+标签)与 relaxed(仅 span)两套 F1,并在表注声明口径。
- 进阶方法:做混淆矩阵按"标签对"统计互换模式(ADR↔Symptom↔Disease),把标签歧义从模型误差中剥离。
- SOTA 方法:引入标签层级(Finding 为上位兜底类)做层级评估,或用软标签/部分标注学习处理歧义样本。
参考:Karimi et al., 2015, JBI Table 4
⚠️ 坑点 3:v1 系与 CADECv2 的版本混用(分类:工程陷阱)
问题:CSIRO 门户同时托管 v2/v3(v1 系,2016)与 CADECv2(2024)。两者目录结构(
text/original布局不同)、实体标签名与标注统计均不同(实体合计 8,045 vs 9,111 口径),论文对比时若跨版本引用数字将产生系统性偏差。
症状:你的 “CADEC 实体总数” 与合作者对不上;加载脚本在另一版本目录上直接报路径不存在。
解决:
- 简单方法:项目内固定一个版本,在 README 与论文实验节明确写出数据包 DOI(v3:10.4225/08/570FB102BDAD2;v2:10.25919/3v5b-k950)。
- 进阶方法:写适配层把两版统一到 (post_id, entity_type, start, end) 中间表示;标签名映射表(如 v1 系 ADR ↔ 部分整理版的 ADE)显式维护。
- SOTA 方法:直接采用 MultiADE 基准的统一标签协议与构建脚本,用同一份数据指纹(md5)锁定实验材料。
参考:CSIRO 门户版本页;MultiADE 论文
⚠️ 坑点 4:无官方划分导致的跨论文数字不可比(分类:评估误用)
问题:语料未发布官方 train/test 划分,各研究自行切分(935/309、64%/16%/20% 等),且随机种子、过滤规则(空帖、无标注帖)各异。
症状:同一"CADEC F1"在不同论文间相差可达 20 个点;排行榜式比较毫无意义。
解决:
- 简单方法:对比文献时逐篇核对划分描述与数据版本,只比较采用相同协议的数字。
- 进阶方法:在自己的实验中固定划分并发布划分清单(post_id 列表),允许第三方精确复现。
- SOTA 方法:采用带文档聚类分组的 5 折交叉验证并报告置信区间与显著性检验(IEEE FITYR 2026 协议),把划分方差纳入结论。
参考:IEEE FITYR 2026 句级 IE 基准
⚠️ 坑点 5:极端类别不平衡拖垮 macro 指标(分类:偏倚陷阱)
问题:ADR 类约 6,318 个,Disease 仅 283 个(约 22:1);Symptom/Finding 同样稀少。模型若只优化整体 token F1,会得到"ADR 很准、稀有类接近随机"的假象。
症状:micro-F1 高达 0.8+ 而 macro-F1 只有 0.4;Disease/Symptom 类的召回率在验证集上剧烈波动。
解决:
- 简单方法:报告按类 F1 与 macro/micro 两套平均;稀有类单独分析。
- 进阶方法:训练时按类加权损失或对稀有类做过采样;划分时按 (drug_group × entity 出现) 分层。
- SOTA 方法:用 focal loss / 类平衡采样并结合外部同标签数据(PsyTAR、ADE corpus)增广稀有类。
参考:arXiv 2510.22285 标签分布图
⚠️ 坑点 6:字符 offset 漂移与编码噪声(分类:预处理陷阱)
问题:所有标注以字符 offset 锚定在原始文件字节流上;论坛文本含非 ASCII 字符、HTML 实体与平台转义,任何"顺手"的规范化(NFKC、去空白、换行统一)都会使 offset 集体错位。
症状:按 offset 切出的实体片段与 mention_text 对不上,肉眼可见差几个字符;训练集标签偏移导致模型学习"系统性错位"的边界。
解决:
- 简单方法:全文以
utf-8+errors="replace"读入,预处理只做"只读分析",不回写文本。- 进阶方法:加载后先做一致性断言
text[s:e] == mention_text(允许多段拼接),把断言失败样本隔离人工核查。- SOTA 方法:在 pipeline 中引入 offset 审计报告(匹配率、错位分布),作为数据质量门禁。
参考:Zenodo CADEC 扩展版对 AnnotatorNotes 与索引的描述
⚠️ 坑点 7:术语映射空值与二跳语义(分类:标签理解)
问题:ADR 语义并非直接映射 MedDRA——先把口语表达映射 SNOMED CT,再由 SNOMED 概念桥接到 MedDRA LLT;且部分口语表达在两个词表中都找不到对应概念,映射留空。
症状:统计"MedDRA 覆盖率"时低于预期;直接拿 LLT 当训练标签的模型把空值样本丢弃后规模缩水。
解决:
- 简单方法:空映射保留为显式 UNMAPPED 类,绝不出现在统计里"静默消失"。
- 进阶方法:评估归一化任务时分"两跳"报告:SNOMED 命中率、桥接 LLT 命中率两个指标分开看。
- SOTA 方法:对 UNMAPPED 口语表达用生成式归一化(LLM + 术语库检索增强)补链,并对补链结果做术语学家抽检。
参考:Karimi et al., 2015, §4.3 术语关联
⚠️ 坑点 8:患者自报 ≠ 临床确诊的语义陷阱(分类:偏倚陷阱)
问题:语料中的"疾病/ADR"是患者对自身经历的转述,未经医学验证;自报存在归因偏差(把基础疾病症状归咎于药物)、回忆偏差与安慰剂效应。Lipitor 单组 997 帖的集中也放大了特定药品的负面表达占比。
症状:模型输出被当作"真实药物风险"用于安全信号时,误报率远超预期;跨药品比较"负面率"时得出与药物警戒数据库矛盾的结论。
解决:
- 简单方法:所有下游结论使用"患者自报的 ADE 提及"而非"ADE 发生率"表述;把模型信号定位为候选信号生成器。
- 进阶方法:与自发报告数据库(如 FAERS 类公开摘要数据)做信号对照,量化患者自报与监管报告的检出差异。
- SOTA 方法:在系统中引入不确定性/置信度阈值与人工药理复核环节,仅把高置信、多源一致的信号推进确认流程。
参考:arXiv 2510.22285 对数据集挑战的讨论;Dai et al., 2024
§6.6 数据增强建议
| 类型 | 做法 | 判定 | 理由 |
|---|---|---|---|
| 表达层同义替换 | 训练划分内做拼写变体扩广(dizzy/dizy 类) | ✅ 安全 | 只改"表达",不改标签语义 |
| SNOMED 同义词扩广 | 用术语库同义词生成变体,映射不变 | ✅ 安全 | 语义由术语表锚定 |
| 回译增强 | 中转语言回译,医学术语保持不动 | ⚠️ 慎用 | 需人工抽检药物/症状词是否被改写 |
| 跨帖拼接 | 把两帖拼成新样本 | ❌ 危险 | 标注约束在单句内,拼接产生非法跨句实体 |
| 规范化后增强 | 先 NFKC/去空白再增强 | ❌ 危险 | 所有 offset 锚定原始字符流,规范化即全废(坑点 6) |
| LLM 造数据 | 生成"新患者帖子"并对齐真实标签 | ❌ 危险 | 标签噪声不可控,且与研究许可精神相悖 |
一句话原则:任何改变"原始字符流"或"句子边界"的增强都不可用——这两者正是 CADEC 标注体系的锚点。
§6.7 模型推荐
| 模型 | 适用任务 | 要点 |
|---|---|---|
| BioBERT / PubMedBERT | token 级 NER | 句级基准中严格 NER F1 0.609–0.615(见 §8.1) |
| BioLinkBERT | NER / 关系 | 关系抽取 macro F1 0.749 |
| BioClinicalBERT | NER / 归一化候选生成 | 在临床 NER 对比中表现稳健(arXiv 2510.22285) |
| scispaCy + 规则 | 快速基线 | 严格 NER F1 0.264,可作为消融下界 |
| LLM(GPT-4o 级)ICL | 少样本 / 标注辅助 | 提示工程可提升但仍弱于微调小模型(见 §8.2) |
§6.8 硬件需求
| 阶段 | 配置 | 说明 |
|---|---|---|
| 解析/预处理 | CPU 任意 | 全量 brat 解析 < 1 分钟 |
| BERT 微调 | 1×GPU,8–16 GB 显存 | batch 16、max_len 256 即可 |
| 5 折交叉验证 | 1×GPU × 5 次训练 | 总时长按单折线性估算 |
| LLM ICL 评测 | API 或 ≥24 GB 显存本地推理 | 少样本设置,成本可控 |
显存参考依据:语料帖长多数短于 200 词,max_len 256 即可覆盖绝大多数样本;batch 16 的 BERT-base 级训练峰值显存低于 10 GB,5 折交叉验证在单卡上一个工作日内可完成。
§6.9 评估指标代码
指标选择原则:主表报告 strict span F1(含类型),附表报告 relaxed F1 与按类 F1;不连续 span 先按 ann_id 重组成多段集合再入公式,与官方 IAA 的"span × 标签"双维口径保持一致。
<details>
<summary>span 级 strict / relaxed 双口径评估(点击展开)</summary>
from collections import defaultdict
def extract_spans(labels, id2lab):
"""从 BIO 序列恢复 span 集合:{(type, start_char, end_char), ...}"""
spans, cur, cur_type = set(), None, None
for i, lid in enumerate(labels):
lab = id2lab[lid]
if lab.startswith("B-"):
if cur: spans.add((cur_type, cur[0], cur[1]))
cur, cur_type = [i, i], lab[2:]
elif lab.startswith("I-") and cur_type == lab[2:] and cur:
cur[1] = i
else:
if cur: spans.add((cur_type, cur[0], cur[1]))
cur, cur_type = None, None
if cur: spans.add((cur_type, cur[0], cur[1]))
return spans
def prf(pred, gold):
tp = len(pred & gold)
p = tp / len(pred) if pred else 0.0
r = tp / len(gold) if gold else 0.0
f = 2 * p * r / (p + r) if p + r else 0.0
return p, r, f
def evaluate(all_pred, all_gold, type_aware=True):
"""strict:span+类型;relaxed:仅 span。type_aware=False 时 gold 全并一类。"""
agg = defaultdict(lambda: [0, 0, 0]) # tp, pred_n, gold_n
for pred_seq, gold_seq in zip(all_pred, all_gold):
ps, gs = extract_spans(pred_seq, ID2LAB), extract_spans(gold_seq, ID2LAB)
ps = ps if type_aware else {(t, s, e) and (("", s, e)) for (t, s, e) in ps}
gs = gs if type_aware else {(t, s, e) and (("", s, e)) for (t, s, e) in gs}
for sp in ps:
agg["pred"][1] += 1
if sp in gs: agg["tp"][0] += 1
for sp in gs:
agg["gold"][2] += 1
tp, pn, gn = agg["tp"][0], agg["pred"][1], agg["gold"][2]
p = tp / pn if pn else 0.0
r = tp / gn if gn else 0.0
f = 2 * p * r / (p + r) if p + r else 0.0
return {"precision": p, "recall": r, "f1": f}
</details>
§6.10 MLOps 笔记
- 数据指纹:把数据包 DOI 与解压后文件 md5 写入实验配置,防止 v1/v2 版本漂移(坑点 3)。
- 评估双轨:strict/relaxed 两套指标同时入库;CI 中对 F1 设置相对下降阈值(如 >3% 阻断合并)。
- 许可合规监控:数据与派生标注仅供研究使用,模型权重若对外发布需在模型卡中声明训练数据许可(research-only)。
- 漂移监控:线上若用于论坛监测,按月统计 ADR 提及密度与新增口语表达数量,触发标注指南更新。
工程化落地清单:
| 环节 | 做法 | 对应坑点 |
|---|---|---|
| 数据版本控制 | DOI + md5 双指纹入库 | 坑点 3 |
| 预处理断言 | offset 一致性门禁(§6.3 步骤五) | 坑点 6 |
| 评估口径 | strict/relaxed 双轨 + 按类 F1 | 坑点 2/5 |
| 划分管理 | post_id 清单随仓库发布 | 坑点 4 |
| 模型卡 | 声明 research-only 训练数据 | §7.4 合规 |
| 线上监控 | 表达漂移月报 + 信号复核队列 | 坑点 8 |
§7 质量评估与局限性
§7.1 已知偏倚
| 偏倚类型 | 描述 | 严重程度 | 缓解措施 |
|---|---|---|---|
| 选择偏倚 | 12 种品牌药、997/1,250 帖集中于 Lipitor;论坛自选择人群 | 高 | 下游结论限定药品范围;按 drug_group 分层评估 |
| 自报偏差 | 事件未经临床验证,存在归因/回忆偏差 | 高 | 定位为"提及识别"而非"发生率";药理复核环节 |
| 标签歧义 | ADR/Symptom/Disease/Finding 边界主观 | 中 | strict/relaxed 双口径;混淆矩阵分析 |
| 时效偏倚 | 帖子止于 2013-10,语言与用药环境已变化 | 中 | 结合 CADECv2(2024)与新语料做时移评估 |
| 语言偏倚 | 仅英语、以美国品牌名为语境 | 中 | 跨语言扩展需另行标注 |
§7.2 标注质量
官方质量工序:书面指南 → 多阶段标注 → IAA 测量 → 临床术语学家终审(含映射阶段修正错误标注)。IAA 数字(55 帖子集):Diclofenac 组 4 名标注者,双放宽 77.9%;Lipitor 组 2 名标注者,双放宽 94.8%;严格 span + 严格标签下分别为 46.6% 与 74.2%。官方明确提示两组标注者人数不同、数值不可直接比较(Karimi et al., 2015)。解读:ADR 口语文本的 span 边界一致性尚可,标签歧义是主要不一致来源——这正是坑点 2 的根源。
§7.3 泛化性
| 部署场景 | 失效风险 | 证据 |
|---|---|---|
| 推文等超短文本 | 高:论坛评论平均短于 200 词,推文仅 21 词,上下文更稀薄 | SMM4H 1b 语料对比(PLOS) |
| 临床笔记 | 高:语域差异大(缩写、结构化模板) | MultiADE 结论:域泛化"远未解决"(Dai et al., 2024) |
| 非英语社区 | 高:语言与药品名差异 | 语料仅英语(Karimi et al., 2015) |
| 新药品种 | 中:症状词汇可迁移,药品归一化需扩展 | MultiADE 指出 CADECv2 扩展更多药物的动机 |
部署前泛化自测清单:
1. 目标域无标注样本 100 条 → 跑模型,人工抽检 20 条 ADR span
2. 计算 OOV 率(目标域词表 vs 训练词表)> 30% 即预警
3. 品牌药名表核对:目标域药品是否在 12 品牌之外
4. 句长分布对比:目标域平均句长偏离训练分布 2 倍以上需重新评估
§7.4 伦理考量
- 知情边界:帖子来自公开论坛,但发帖者未必预期其文字被结构化用于算法研究。AskAPatient 为本研究提供了数据授权(“kindly provided the data … for research purposes only”),语料发布时剔除了评分与人口统计学字段,但仍保留第一人称健康自述。使用者应避免将帖子文本原样公开展示(示例引用应最小化),不得尝试再识别发帖者(CSIRO 门户)。
- 二次使用限制:仅限研究用途;任何商业开发(如商用药物安全 SaaS 直接训练)均超出许可范围。
- 伤害防范:模型输出不得用于个体用药决策或对发帖者的健康推断。
关于"公开帖子二次使用"的知情边界,实务上需要区分三层:其一,可见性 ≠ 知情同意——帖子对公众可见,不等于作者同意其内容进入训练集;AskAPatient 的数据授权正是为弥补这一缺口而存在,任何绕开官方渠道重新抓取同一论坛建库的行为都应重新评估伦理合法性。其二,再发布链路——CADEC 允许研究传播,但派生数据集(清洗后的 TSV、增强版本)在共享时应继承"仅限研究"约束并附原始引用。其三,展示最小化——论文与产品界面引用帖子原文时只保留分析所需的最小片段,并对药品名以外的个人化细节(如家庭、职业线索)做遮蔽处理。这三层共同构成把"公开数据"负责任地转化为"研究数据"的边界条件。
§7.5 公平性
语料不含性别、种族、地域字段(构建时剔除),无法直接做亚组公平性审计;但论坛自选择机制本身引入了数字接入与语言能力偏倚——老年、非英语、低数字素养患者的 ADE 经验在该数据源中系统性缺位,迁移应用时应明示此盲区。
§7.6 数据漂移
帖子止于 2013 年;此后社交媒体格局、药品品牌(如 Lipitor 专利到期后仿制药扩散)与患者表达习惯均已变化。用 CADEC 训练的模型部署到 2020 年代论坛数据前,建议先做无标注分布对比(词汇覆盖率、ADR 表达密度),并参考 CADECv2(2024 标注)评估时移效应。
可操作的漂移监控指标:
| 监控指标 | 计算方式 | 预警含义 |
|---|---|---|
| 词汇覆盖率 | 新数据词表对 CADEC 训练词表的 OOV 率 | 显著上升 = 语言漂移,模型召回可能下滑 |
| ADR 提及密度 | 每千词 ADR span 数 | 突变可能反映药品结构或人群变化 |
| 品牌分布 | 各品牌帖占比 | Lipitor 类主导结构被打破时需重新分层 |
| 映射覆盖率 | 新数据实体命中旧术语映射表的比例 | 下降 = 新口语表达涌现,需更新指南 |
若监控显示持续漂移,优先行动是引入 CADECv2 或自行标注新批次样本,而非继续调参。
§7.7 DAIMS 24 项数据质量检查
| # | 检查项 | 状态 | 说明 |
|---|---|---|---|
| 1 | 宽格式 | ✅ | 每帖一条记录,标注以附属表关联,主表结构清晰 |
| 2 | 唯一标识 | ✅ | post_id(文件名前缀)+ ann_id 唯一 |
| 3 | 特殊字符 | ⚠️ | 口语文本含非常规字符,需 UTF-8 + errors=“replace” 读入 |
| 4 | 重复行 | ✅ | 帖子级无重复;近重复文本存在(同药品词汇集中),span 级比对未见系统性重复标注 |
| 5 | 缺失编码 | ✅ | 映射缺失表现为行缺失,语义明确(未映射) |
| 6 | 标签标识 | ✅ | 5 类实体标签 + BIO 可完整还原 |
| 7 | 罕见类分组 | ⚠️ | Disease/Symptom/Finding 稀少,需分层划分与按类评估 |
| 8 | 偏倚评估 | ✅ | 官方报告 IAA 并提示组间不可比;选择偏倚见 §7.1 |
| 9 | 数据字典 | ✅ | 官方指南(CADECv2 附 Annotation Guidelines PDF)+ 论文 §3–4 |
| 10 | 信息性缺失解释 | ✅ | 未映射实体即为"口语表达无对应术语"的信息性缺失 |
| 11 | 设备记录 | ❌ | 不适用(纯文本语料,无设备元数据) |
| 12 | 共线性 | ✅ | 不适用/无数值协变量共线问题 |
| 13 | 编码映射 | ✅ | SNOMED CT-AU v20140531 + AMT + MedDRA LLT 三术语体系 |
| 14 | 时间戳处理 | ⚠️ | 帖子发布时间未随语料发布,仅存组级时间跨度 |
| 15 | 划分建议 | ✅ | 无官方划分;本页 §5 给出社区惯例与分层建议 |
| 16 | 泄漏讨论 | ✅ | §5.3 专门讨论词汇/作者泄漏 |
| 17 | 标签分布 | ✅ | 两套公开统计口径并列(§4.2) |
| 18 | 测量偏倚 | ⚠️ | 标注者人数两组不同(4 vs 2),IAA 结构性不可比 |
| 19 | 外部验证建议 | ✅ | §5.4 与 §7.8 给出跨域协议 |
| 20 | 版本记录 | ✅ | DOI 化版本链(v2/v3/CADECv2)+ Handle |
| 21 | 预处理脚本 | ⚠️ | 官方无 v1 解析脚本;CADECv2/MultiADE 附构建代码 |
| 22 | 合规要求 | ✅ | CSIRO Data Licence 明确研究专用 + 强制引用 |
| 23 | 多模态对齐 | ✅ | 文本-标注-映射三层一一对齐(offset 锚定);音频扩展版另见 Zenodo |
| 24 | 去标识化 | ✅ | 构建时剔除用户名与人口统计学字段,仅留匿名帖子标识 |
DAIMS 评分:20.5 / 24(上表 24 项中 18 项 ✅ 计 18 分、5 项 ⚠️ 计 2.5 分、1 项 ❌ 计 0 分)。
评分解读:20.5 / 24 属于研究型语料中的高分段。作为 2015 年发布的语料,CADEC 在标识、版本化、术语映射与合规维度接近满分;扣分集中于"工程配套"(无官方划分/解析脚本、时间戳缺失)与"标签歧义"(标注人数结构差异、罕见类稀少),这些是社交媒体标注语料的共性短板而非 CADEC 独有缺陷。
对你意味着什么:若你的任务是 NER/归一化研究,可直接采用(标识与映射质量足够);开工前必须自建三件事——brat 解析与 offset 断言(坑点 1/6)、固定划分清单(坑点 4)、strict/relaxed 双口径评估(坑点 2/5)。若你的任务是临床决策或商用系统,该数据的许可与研究性语义(患者自报)决定其只能作为研究基线,不能直接承载生产。若你的任务是构建训练数据管线,优先迁移 CADECv2 的 CC-BY 4.0 许可与官方脚本,可同时消掉第 21 项与第 22 项的两个扣分点。
§7.8 外部验证矩阵
| 外部数据集/场景 | 来源机构 | 评估任务 | 性能指标 | 相对内部变化 | 关键发现 |
|---|---|---|---|---|---|
| MultiADE 域内→跨域 | CSIRO / Emory / 悉尼大学 | ADE NER | 跨域 F1 显著低于域内 | 明显下降 | 单一 ADE 抽取模型跨文本类型部署"不可行"(Dai et al., 2024, JBI) |
| 句级 IE 基准(同语料重构) | IEEE FITYR 2026 | 严格 NER | BioBERT-large 0.615 / PubMedBERT 0.609 / scispaCy 0.264 | — | 微调生物医学 Transformer 显著优于开箱即用流水线(基准页) |
| LLM ICL 评测 | arXiv 2510.22285 | ADR token 分类 | GPT-4o ICL 弱于微调 BERT 系 | — | 全监督小模型仍大幅领先提示工程(论文) |
§8 基准性能与生态
§8.1 排行榜
⚠️ 数值不可直接比较:各工作使用的划分(935/309、64/16/20、5 折等)、标签口径(ADR vs 五类全量)与匹配严格度(strict/relaxed)不同,下列数字仅代表各自协议下的结果。
| 排名 | 模型 | 性能 | 年份 | 关键技术 | 完整引用 | 代码 |
|---|---|---|---|---|---|---|
| 1 | BioBERT-large(句级 NER 基准) | 严格 NER F1 0.615 | 2026 | 生物医学预训练 + span 对齐 | FITYR 2026, IEEE(论文页) | 未公开 |
| 2 | PubMedBERT(句级 NER 基准) | 严格 NER F1 0.609 | 2026 | 领域词表预训练 | FITYR 2026, IEEE(同上) | 未公开 |
| 3 | PubMedBERT(句级 RE) | RE macro F1 0.754 | 2026 | 句内因果/治疗/症状关系 | FITYR 2026, IEEE(同上) | 未公开 |
| 4 | BioClinicalBERT / 微调系(ADR token 分类) | 显著优于 GPT-4o ICL | 2025 | 全监督微调 | arXiv:2510.22285(论文) | 论文附录 |
| 5 | scispaCy 基线 | 严格 NER F1 0.264 | 2026 | 开箱即用流水线 | FITYR 2026, IEEE(同上) | scispaCy 官方 |
补充:基于主动学习的知识 infused RNN 模型报告在 1 小时人工标注预算下达到 ADR 提及识别 83.9 F1(自建非专家标注 + CADEC 测试集,协议独立,论文)。
§8.2 SOTA 总结与选型建议
- 监督微调仍是王者:在 CADEC 规模(千帖级)上,BioBERT/PubMedBERT 级微调模型稳定优于 GPT-4o 级 ICL;LLM 的价值在标注辅助与 UNMAPPED 术语补链(坑点 7)。
- 协议先于模型:选型前先锁定划分与匹配口径;不同协议间 F1 差异可大于模型间差异(坑点 4)。
- 关系抽取可行但样本稀缺:句内正例关系仅数百量级(IEEE 基准 745 候选对中 222 正例),建议以预训练句子对模型起步。
- 工程基线值得保留:scispaCy 0.264 的严格 F1 看似很低,但它零训练、可解释,常被用作数据质量回归测试的哨兵基线——若某天微调模型低于该值一个数量级,先查数据管线再查模型。
- 归一化是差异化赛道:NER 数字已趋饱和(0.6 量级的严格 F1 受标签歧义天花板约束),而"口语 → SNOMED/MedDRA LLT"归一化的提升空间与临床价值都更大,且 CADEC 的映射文件为此提供了现成的训练信号。
§8.3 评测协议
- 固定数据版本 DOI 与 md5;2. 发布划分清单(post_id 级);3. 同时报告 strict/relaxed、按类 F1 与 macro/micro;4. 多段(不连续)span 以重组成对方式比较;5. 交叉验证报告均值±标准差与显著性检验;6. 跨域结果单列,不与域内混合平均。
协议核对清单(投稿或内部评审前逐项过):
| # | 核对项 | 通过标准 |
|---|---|---|
| 1 | 数据版本可追溯 | 论文实验节写明数据包 DOI |
| 2 | 划分可复现 | post_id 清单随代码发布 |
| 3 | 匹配口径声明 | strict/relaxed 定义与官方 IAA 表一致 |
| 4 | 不连续 span 处理 | 明确"重组后比较"或"逐段比较" |
| 5 | 稀有类呈现 | 给出按类 F1,不只报 micro |
| 6 | 跨域隔离 | 跨域结果不与域内平均 |
§8.4 相关数据集
| 数据集 | 来源 | 与 CADEC 的关系 |
|---|---|---|
| PsyTAR | AskAPatient(同源) | 891 帖、4 种精神科药物,增加戒断/有效性等标签 |
| SMM4H Subtask 1b | 推文域 ADE 抽取共享任务语料 | |
| ADE corpus | Medline 个案报告 | 文献域 Drug-ADE 关系抽取 |
| TAC 2017 ADR | 药品说明书 | 监管文本域 |
| CADECv2 | CSIRO | CADEC 的扩展重标注版(CC-BY 4.0) |
§8.5 关键论文 Top 6
- Karimi S, Metke-Jimenez A, Kemp M, Wang C. CADEC: A corpus of adverse drug event annotations. Journal of Biomedical Informatics, 55:73–81, 2015. DOI 10.1016/j.jbi.2015.03.010 —— 语料原始论文:构建协议、IAA、术语映射全记录。
- Dai X, Karimi S, Sarker A, Hachey B, Paris C. MultiADE: A Multi-domain benchmark for Adverse Drug Event extraction. Journal of Biomedical Informatics, 160:104744, 2024. DOI 10.1016/j.jbi.2024.104744 —— 发布 CADECv2 与跨域基准,结论:跨域泛化远未解决。
- Tutubalina OV, Nikolenko SI. The Russian Drug Reaction Corpus and neural models for drug reactions and effectiveness detection in user reviews. Bioinformatics, 37(2):243, 2021 —— 以 CADEC 为事实标准对照构建俄语平行语料并做神经基线。
- Zolnoori M, et al. The Psychiatric Treatment Adverse Reactions (PsyTAR) dataset from online patient reviews. JMIR Medical Informatics, 2019 —— 同源(AskAPatient)精神科扩展语料,与 CADEC 互补。
- Ebadi N, Morgan K, Tan A, Linares B, Osborn S, Majors E, Davis J, Rios A. Extracting biomedical entities from noisy audio transcripts. LREC-COLING 2024 —— 把 CADEC 扩展为音频-文本多模态资源(Zenodo)。
- Supervised Fine-Tuning or In-Context Learning? Evaluating LLMs for Clinical NER. arXiv:2510.22285, 2025 —— 系统对比微调与 ICL 在 CADEC 上的表现(论文)。
- A Reliability-Oriented Benchmark for Sentence-Level Medical Information Extraction on CADEC. IEEE FITYR, 2026 —— 句级 NER/RE 可靠性基准:清洗规则、置信区间与显著性检验协议(论文页)。
§8.6 社区活跃度
- 论文被引 352+ 次(Google Scholar,截至 2026-09),是社交媒体药物警戒方向的基石引用。
- 后续生态:SMM4H 共享任务系列、PsyTAR、CADECv2/MultiADE(2024)、句级 IE 基准(2026)持续以 CADEC 为评测锚点。
- 社区处理脚本与教程在 GitHub 上数量众多(如 suhejian/CADEC-data-process、ib565/NLP-medical-forum-posts-CADEC),质量参差,采用前核对版本口径。
- 作者团队(CSIRO Data61 的 Sarvnaz Karimi 与 Xiang Dai 等)在 2024 年仍以 CADECv2/MultiADE 延续维护,数据并非"一次发布即弃"型遗产语料。
- 官方渠道支持:CSIRO 门户提供联系人与 Enquiries 入口,许可问题可直接询问数据发布方。
生态时间线速览:
| 年份 | 生态事件 |
|---|---|
| 2015 | 原始论文发表,语料随论文公开承诺发布 |
| 2016 | v2/v3 数据包上线 CSIRO 门户,获得 DOI |
| 2017–2023 | 各类神经模型(LSTM-CRF、BERT 系)以 CADEC 为标准评测场;同源 PsyTAR 问世 |
| 2024 | CADECv2 + MultiADE 基准发布(CC-BY 4.0),跨域研究升温;音频扩展版上线 Zenodo |
| 2025–2026 | LLM 评测(微调 vs ICL)与句级 IE 可靠性基准继续以 CADEC 为锚点 |
§8.7 生态快照
| 资源 | 类型 | 链接 | 推荐理由 |
|---|---|---|---|
| CSIRO 门户(v1 系) | 官方数据 | https://data.csiro.au/collection/12232 | 唯一权威下载源 |
| CADECv2 + 指南 | 官方数据 | https://data.csiro.au/collection/63956 | 扩展版 + 官方标注指南 PDF |
| MultiADE 脚本 | 官方代码 | https://github.com/daixiangau/MultiADE | 统一标签协议与基准构建 |
| 原始论文 | 文献 | https://doi.org/10.1016/j.jbi.2015.03.010 | 一切引用的起点 |
| 音频扩展 | 衍生数据 | https://zenodo.org/records/10864062 | 多模态/语音实验 |
| Google Scholar 条目 | 引用统计 | https://scholar.google.com | 追踪引用演化与最新 follow-up 工作 |
§9 相关资源与引用
§9.1 官方资源
- 数据门户(v1 系,v2/v3):https://data.csiro.au/collection/12232
- CADECv2(扩展版):https://data.csiro.au/collection/63956
- 原始论文:https://doi.org/10.1016/j.jbi.2015.03.010(PMID 25817970)
- MultiADE 代码:https://github.com/daixiangau/MultiADE
- 联系人:Sarvnaz Karimi(sarvnaz.karimi@csiro.au,CSIRO 门户)
建议的使用次序:先读原始论文(构建协议与 IAA 的唯一权威叙述)→ 下载 v3 数据包跑通 §6.1 最小子集 → 需要更多药品或可商用许可时迁移 CADECv2 并读 Annotation Guidelines PDF → 做跨域研究时接入 MultiADE 统一协议。许可疑问直接邮件联系发布方,避免依赖二手转述。
§9.2 社区教程与工具
- brat 标注格式文档:https://brat.nlplab.org/standoff.html
- 社区数据预处理脚本示例:suhejian/CADEC-data-process(经遇见数据集收录)
- LLM 抽取实战 Notebook:https://github.com/ib565/NLP-medical-forum-posts-CADEC
选型提示:社区脚本均非官方维护,解析策略(尤其对不连续 span 与映射空值的处理)各不相同,直接复用前先跑 §6.3 步骤五的质量门禁;需要"官方背书"的解析逻辑请以 MultiADE 仓库的构建脚本为准。
§9.3 BibTeX 引用块
@article{karimi2015cadec,
author = {Karimi, Sarvnaz and Metke-Jimenez, Alejandro and Kemp, Madonna and Wang, Chen},
title = {CADEC: A corpus of adverse drug event annotations},
journal = {Journal of Biomedical Informatics},
volume = {55},
pages = {73--81},
year = {2015},
doi = {10.1016/j.jbi.2015.03.010}
}
@article{dai2024multiade,
author = {Dai, Xiang and Karimi, Sarvnaz and Sarker, Abeed and Hachey, Ben and Paris, Cecile},
title = {{MultiADE}: A Multi-domain benchmark for Adverse Drug Event extraction},
journal = {Journal of Biomedical Informatics},
volume = {160},
pages = {104744},
year = {2024},
doi = {10.1016/j.jbi.2024.104744}
}
@article{tutubalina2021ruadr,
author = {Tutubalina, Olga V. and Nikolenko, Sergey I.},
title = {The {R}ussian {D}rug {R}eaction {C}orpus and neural models for drug reactions and effectiveness detection in user reviews},
journal = {Bioinformatics},
volume = {37},
number = {2},
pages = {243--250},
year = {2021}
}
§9.4 引用指南
- 使用 v1 系数据:引用 Karimi et al. 2015,并在实验节注明数据包 DOI(10.4225/08/570FB102BDAD2)。
- 使用 CADECv2:引用 Dai et al. 2024(MultiADE),数据 DOI 10.25919/3v5b-k950。
- 引用本页:千方病案医数集 CADEC 词条(https://www.qianfanghub.com/ai-ready-dataset/cadec/464,截至 2026-09)。
- 两种版本混用时:分别引用两条文献并在实验节列出各自 DOI;仅引用本页而不引用原始论文不满足 CSIRO 的许可引用义务。
§9.5 相关词条
§10 AI 使用声明卡
§10.1 AI 模型列表
本页面写作过程中使用了大语言模型辅助(文本组织、代码骨架生成、结构化排版)。所使用模型不具备医学执业资质,其输出仅作为写作辅助素材,全部医学与数据结论以人工核实的来源为准。
§10.2 AI 参与范围
AI 参与了章节草稿撰写、代码示例生成与格式规范化;所有事实性数字、引用来源与许可条款均经人工检索核实并记录于 FACTS 核查流程;医学与数据工程结论由编辑编辑部人工复核。
具体分工边界:AI 生成的内容包括章节行文、表格组织、代码骨架与坑点结构化整理;人工完成的工作包括 WebSearch 事实检索与交叉验证(规模口径、IAA 数字、许可条款、基准数字全部溯源到原始链接)、冲突口径的取舍判断(如 1,250 vs 1,244 vs 1,253)、SNOMED CT/ICD-11 编码的合理性核对,以及全篇的医学与数据工程审读。任何 AI 生成但无法溯源的数字均未进入成稿。
§10.3 输入来源列表
- Karimi S, Metke-Jimenez A, Kemp M, Wang C. CADEC: A corpus of adverse drug event annotations. JBI, 55:73–81, 2015. DOI 10.1016/j.jbi.2015.03.010
- PubMed 摘要页:https://pubmed.ncbi.nlm.nih.gov/25817970/
- CSIRO Data Access Portal(v1 系,v2/v3 版本与许可):https://data.csiro.au/collection/12232
- CSIRO Data Access Portal(CADECv2):https://data.csiro.au/collection/63956
- ScienceDirect 论文页(含 IAA Table 4 与术语关联章节):https://www.sciencedirect.com/science/article/pii/S1532046415000532
- ACM Digital Library 论文页:https://dl.acm.org/doi/abs/10.1016/j.jbi.2015.03.010
- Dai X, et al. MultiADE. JBI, 160:104744, 2024. DOI 10.1016/j.jbi.2024.104744(arXiv:2405.18015)
- NCBI PubMed MultiADE 摘要:https://pubmed.ncbi.nlm.nih.gov/39536999/
- Zenodo 音频扩展数据集(Ebadi et al., LREC-COLING 2024):https://zenodo.org/records/10864062
- arXiv:2510.22285(LLM 临床 NER 评测,含 CADEC 数据描述):https://arxiv.org/pdf/2510.22285
- IEEE FITYR 2026 句级 IE 基准摘要:https://store.computer.org/csdl/proceedings-article/fityr/2026/384900a011/2jDKKCupRug
- PLOS Digital Health 论文(多语料对比表):https://journals.plos.org/digitalhealth/article/file?id=10.1371/journal.pdig.0000468&type=manuscript
- Oxford Bioinformatics(RuADR 论文,CADEC 综述段):https://academic.oup.com/bioinformatics/article/37/2/243/5877427
- Google Scholar 引用统计(352+,截至 2026-09):https://scholar.google.com.py/citations?citation_for_view=gtNiEoQAAAAJ%3AHKviVsUxM5wC
- 知识 infused RNN 论文转载页:https://1library.net/document/y6ev57nz-recognizing-mentions-adverse-reaction-social-knowledge-infused-recurrent.html
- GitHub ib565/NLP-medical-forum-posts-CADEC:https://github.com/ib565/NLP-medical-forum-posts-CADEC
- 遇见数据集 CADEC 收录页(含社区脚本线索):https://www.selectdataset.com/dataset/76a6edfd0b9c1b7d914b56e225eeac39
§10.4 人工校验
| 内容模块 | 审核者 | 审核方式 | 审核状态 |
|---|---|---|---|
| INFOBOX 与 frontmatter 数字 | 千方病案医学编辑部 | 对照 FACTS 核查清单逐项溯源 | ✅ 已通过/已验证 |
| §2 医学背景 | 千方病案医学编辑部 | 医学编辑审读 + 术语编码核对 | ✅ 已通过/已验证 |
| §3–§4 规格与结构 | 千方病案医学编辑部(数据工程) | 与官方门户/论文逐项比对 | ✅ 已通过/已验证 |
| §6 代码与坑点 | 千方病案医学编辑部(数据工程) | 逻辑走查 + 文档比对 | ✅ 已通过/已验证 |
| §7–§8 质量与基准 | 千方病案医学编辑部 | 引用原文核对 | ✅ 已通过/已验证 |
§10.5 AI 生成章节标注
全文各章节均由 AI 辅助起草;§0 审核声明、§10 声明卡及全部数字结论经人工逐项校验后定稿。
§10.6 最后人工审核日期
2026-09-05(与 §0 审核日期一致)。
页面状态:published(全部内容已完成审核并发布)
相关数据集导航
以下为站内 AI-Ready 数据集百科中与本词条共享多个主题标签的相关数据集,按相关度降序排列:
- drug-reviews-uci — 共享标签:医疗NLP / 药物发现与化学 / 药物安全
- sider — 共享标签:医疗NLP / 药物发现与化学 / 药物安全
- rxnorm — 共享标签:医疗NLP / 药物发现与化学
- toxcast — 共享标签:药物发现与化学 / 药物安全
- drugbank — 共享标签:药物发现与化学 / 药物安全
- cdars — 共享标签:药物发现与化学 / 药物安全
- trinetx — 共享标签:药物发现与化学 / 药物安全
- chemdner — 共享标签:医疗NLP / 药物发现与化学
- fda-sentinel — 共享标签:药物发现与化学 / 药物安全
- rxqa — 共享标签:医疗NLP / 药物安全
导航说明:本章节由全站统一标签体系自动计算生成(标签重合度算法),双向可达;点击链接可跳转至对应数据集词条。
