BLURB — 生物医学 NLP 基准 AI-Ready Wikipedia

13 个数据集、6 项任务的 PubMed 生物医学 NLP 综合基准

来源 Microsoft Research url: https://microsoft.github.io/BLURB/发布时间: 2026-09-16最后更新: 2026-09-25 阅读 28
BLURB — 生物医学 NLP 基准 AI-Ready Wikipedia

信息速览

数据集名称BLURB — 生物医学 NLP 基准 AI-Ready Wikipedia
数据类型13 个子数据集,6 项 NLP 任务,约 65 万标注实例,英文 PubMed 文献,公开免费下载
规模不适用(公开文献语料,无患者数据)
接入方式Microsoft Research url: https://microsoft.github.io/BLURB/
AI 就绪度

数据集封面

BLURB — 生物医学 NLP 综合基准 AI-Ready Wikipedia

INFOBOX

数据集名称 BLURB
英文全称 Biomedical Language Understanding & Reasoning Benchmark
别名/简称 BLURB benchmark、BLURB 排行榜、aka.ms/BLURB
疾病分类 全疾病谱生物医学文献(覆盖化学/药物、疾病、基因三类实体;疾病实体经 NCBI-disease 与 BC5-disease 链接 MeSH/OMIM 概念)
SNOMED CT 不直接编码;疾病实体链接目标为 MeSH 与 OMIM,药物实体为 MeSH 化学补充概念(详见 §2.1b)
数据模态 纯文本(PubMed 摘要、临床试验摘要、句子对、问答对)
AI 任务类型 命名实体识别(NER)、PICO 证据抽取、关系抽取(RE)、句子相似度、文档分类、生物医学问答(QA)
样本总数 13 个子数据集 / 6 项任务 / 约 650,000 个标注实例(13 集 train+dev+test 按官方 Table 3 求和,含实体提及、PICO 元素、关系对与问答条目)
数据大小 文本级轻量数据;最大子集为 EBM PICO(339,167 训练 PICO 元素),官方未提供统一打包体积(详见 §3.4)
数据格式 TSV(NER/RE)、JSON/JSONL(QA)、HuggingFace datasets(EMBO/BLURB、bigbio/blurb)
许可证 混合许可(MIXED):13 个子数据集各自持有原始许可,使用前须逐集核对(详见 §8.4)
访问级别 开放(全部 13 个数据集公开;其中 BioASQ 需在 bioasq.org 注册后手动下载)
DUO 标签 NRES(公开文献语料,无患者隐私限制;个别子集随共享任务另有条款)
语言 英文
首发日期 2020-07(arXiv 预印本 2007.15779)/ 2021(ACM Transactions on Computing for Healthcare 正式发表)
最后更新 2021-09-16(arXiv v6,对应 ACM 正式版);排行榜持续在线(截至 2026-09)
发布机构 Microsoft Research(Yu Gu 等 9 位作者)
官方主页 https://microsoft.github.io/BLURB/
下载地址 https://microsoft.github.io/BLURB/tasks.html(各子集入口;HuggingFace 镜像:EMBO/BLURB、bigbio/blurb)
DOI 10.1145/3458754(论文)/ arXiv:2007.15779(预印本)
引用次数 2,745(Semantic Scholar,截至 2026-09)
AI 就绪度评分 ⭐⭐⭐⭐(4/5)— 有官方统一划分与评测指标、HF 一键加载、排行榜可对标;扣分项:13 子集格式不统一、BioASQ 需手动注册下载、无官方一站式预处理脚本包
页面状态 published

§0 E-E-A-T 信任声明与免责声明

医学审核者:千方病案医学编辑部交叉审核:§2 医学背景(实体类型与 ICD-11/SNOMED CT/MeSH 映射、循证医学任务定义、金标准语料溯源)、§7 偏倚分析。

数据工程审核者:千方病案医学编辑部交叉审核:§4 数据结构(13 子集字段字典、目录树)、§5 数据划分策略、§6 预处理 Pipeline 和坑点。

审核日期:2026-09-05

审核方式:交叉审核

利益冲突声明:千方病案医数集与 Microsoft Research、ACM、BioCreative、BioASQ 组织方无任何商业利益关联。本页面不销售 BLURB 数据集本身,仅提供 AI 就绪指南与学术信息服务。编辑者未接受上述任何机构的资助。

医疗免责声明:本页面提供的医学信息仅供研究和教育目的,不构成医疗建议、诊断或治疗方案。数据集的医学描述基于公开发表的文献,未经逐一临床验证。任何基于该数据集训练的 AI 模型在应用于临床决策前,必须经过独立的临床验证和监管审批。

技术免责声明:本页面的代码示例、预处理建议和基准性能数据基于公开资料整理,不保证在特定环境下的准确性和适用性。使用者应自行验证代码安全性和数据预处理流程的正确性。千方病案医数集不对因使用本页面信息而导致的任何直接或间接损失承担责任。

数据使用合规:使用本页面描述的数据集前,请务必阅读并遵守数据集原始许可协议。BLURB 由 13 个独立数据集聚合而成,各子集许可条款不同(部分要求学术引用,部分限制商业使用,BioASQ 需注册获取)。DUO 标签仅供参考,具体使用限制以各子集官方协议为准。


§1 数据集概览

§1.0 30 秒速览

这是什么? BLURB 是微软研究院在 2020 年推出的生物医学自然语言处理基准,可以理解为"生物医学文献版的 GLUE"。它把 BioCreative、BioASQ、SemEval 等多年积累的 13 个经典公开数据集统一到一个框架下,涵盖命名实体识别、关系抽取、PICO 证据抽取、句子相似度、文档分类和问答 6 项任务,全部语料来自 PubMed 公开的英文生物医学文献摘要(官方站点)。

为什么重要? 在 BLURB 出现之前,各篇生物医学 NLP 论文各自挑选数据集、自定划分方式,模型成绩无法横向比较。BLURB 提供了统一的划分、统一的指标和一个模型无关的公开排行榜,使 PubMedBERT、BioBERT、SciBERT 等预训练模型的优劣第一次可以用同一把尺子衡量。它所配套的论文(Gu et al. 2021)正是提出"从零开始用领域语料预训练"范式的标志性工作,截至 2026-09 已被引用 2,745 次(Semantic Scholar)。

我能用它做什么? 如果你要构建药物警戒(检测药物相互作用)、文献挖掘(从摘要中抽取疾病/基因/化学实体)、循证医学检索(抽取 PICO 要素)或生物医学问答系统,你可以先用 BLURB 的 13 个子集为自己的模型建立"体检报告",再与排行榜上的成熟基线对标,判断自己的领域适配方案是否真的有效。

§1.1 摘要

BLURB(Biomedical Language Understanding & Reasoning Benchmark)由 Microsoft Research 的 Yu Gu、Robert Tinn、Hao Cheng 等 9 位研究者构建,2020 年 7 月以预印本形式随论文《Domain-Specific Language Model Pretraining for Biomedical Natural Language Processing》发布,2021 年正式发表于 ACM Transactions on Computing for Healthcare(DOI: 10.1145/3458754)。其做法是:从近年生物医学语言模型研究普遍采用的评测集中筛选 13 个公开数据集,覆盖 6 项任务;对 5 个 NER 子集统一采用 Crichton et al.(2017)的预处理划分;对每个子集指定官方评测指标(NER 为实体级 F1、关系抽取为 Micro F1、EBM PICO 为词级 Macro F1、BIOSSES 为 Pearson 相关、问答为 Accuracy);最终分数按任务类型分组平均后再取宏平均,避免 NER 数据集数量最多而主导总分。BLURB 与其配套提出的 PubMedBERT 模型互为印证:后者以 1,400 万篇 PubMed 摘要(32 亿词)从零预训练,在 BLURB 上取得 81.16 的宏平均分,超过 BioBERT(80.34)与 SciBERT(78.86),从而确立了"领域内词表 + 从零预训练"优于"通用 BERT 继续预训练"的结论。BLURB 的排行榜完全模型无关,任何使用相同训练/开发数据的系统均可提交测试集预测参与排名(排行榜)。

§1.2 战略价值

维度一:为生物医学 NLP 提供"同一把尺子"。 在 GLUE 之后,通用 NLP 领域的进步速度很大程度上归功于统一基准带来的可比性。生物医学 NLP 长期缺乏这种可比性:BLURB 论文的 Table 2 显示,BioBERT、SciBERT、BLUE 各自评测完全不同的数据集组合,研究者无法判断一篇新论文的增益来自方法还是来自数据选择。BLURB 把 13 个数据集、6 项任务、统一指标和一个在线排行榜固定下来,使"预训练策略是否有效"第一次可以被端到端量化。对工程团队而言,这意味着选型时可以用一个数字(BLURB 宏平均分)完成初筛,再深入单项任务细看。

维度二:确立"领域从零预训练"范式并催生 BiomedBERT 生态。 BLURB 与 PubMedBERT 是同一篇论文的一体两面:基准用来证明,从零使用领域语料预训练(含领域词表)显著优于通用模型的继续预训练。这一结论直接影响了后续模型的设计路线(BioMegatron、LinkBERT 等均报告 BLURB 分数),也使微软在 2023 年 11 月将 PubMedBERT 更名为 BiomedBERT 并以 MIT 许可开放权重后,它仍是生物医学文本编码的默认底座之一。BLURB 因此不只是评测工具,而是整个生物医学预训练生态的坐标系。

维度三:低门槛的领域教学与迁移诊断工具。 13 个子集从 100 个句子对(BIOSSES)到 44 万个 PICO 元素(EBM PICO)规模不等,任务形态从 token 分类到生成式问答对齐均有覆盖。研究者在把自己的业务数据接入大模型之前,可以用 BLURB 快速诊断模型在"PubMed 文献域"各能力维度上的短板——例如问答任务对通用模型降幅最大(BERT-base 与 PubMedBERT 在 QA 任务上的差距远大于 NER 任务),这提示文献问答是最需要领域适配的方向。

§1.3 同类数据集横向对比

数据集/基准 年份 任务×数据集规模 语料域 标注 差异化定位
BLURB 2020 6 任务 × 13 数据集 PubMed 摘要(生物医学文献) 专家人工标注(复用共享任务语料) 本条目;宏平均总分 + 模型无关排行榜
BLUE (Biomedical Language understanding Evaluation) 2019 5 任务 × 10 数据集 PubMed + MIMIC-III 临床笔记 复用既有语料 混合文献域与临床域;BLURB 明确与其划清边界
BioRED 2022 1 任务 × 600 文档 PubMed 全文摘要对 双专家标注 专注多类型生物实体关系抽取,不做多任务基准
CBLUE 2022 8 任务 × 8 数据集 中文医疗文本(门诊/临床/文献) 中文社区标注 中文医疗 NLP 基准,与英文域 BLURB 互补
MultiMedBench 2024 14 任务 多模态(文本/影像/基因组) 复用公开语料 面向医疗大模型多模态综合评测,规模更大但非预训练对比专用

BLURB 的独特生态位在于:它是第一个把"生物医学预训练语言模型对比"作为核心使命、并以此驱动预训练方法学研究的文献域基准;其 13 个子集全部是学界沿用多年的共享任务语料,天然具备与历史文献的连续可比性。

§1.4 版本时间轴

时间 版本/事件 说明
2020-07 arXiv 预印本 2007.15779 v1 BLURB 基准与 PubMedBERT 首次发布;排行榜上线(aka.ms/BLURB)
2020-08 PubMedBERT 权重开放 HuggingFace 发布 abstracts-only 与 abstracts+fulltext 两个预训练检查点
2021-09-16 arXiv v6 与 ACM 正式发表版对齐;DDI/GAD 划分数字相对早期版本有修订(详见坑点 6)
2021 ACM THS 3(1):1–23 正式发表 DOI: 10.1145/3458754,基准定义以此版为准
2022-10 bigbio/blurb 上架 HuggingFace bigbio 提供 5 类任务的 datasets 加载脚本(license: MIXED)
2023-11 PubMedBERT 更名 BiomedBERT 权重不变,名称统一为 microsoft/BiomedNLP-BiomedBERT-*,MIT 许可
2024–2025 LLM 复评浪潮 IQVIA 等机构发布生成式大模型在 BLURB 上的系统评测与开源管线(详见 §8.6)

§1.5 典型应用场景

  1. 药物警戒与药物相互作用检测:以 DDI 子集(25,296 训练关系对)微调模型,自动从文献中抽取药物-药物相互作用类型,用于上市后安全性信号挖掘。
  2. 药物靶点与基因-疾病关联发现:ChemProt(18,035 训练对)与 GAD(4,261 训练对)分别覆盖化学-蛋白与基因-疾病关系,是文献驱动药物发现管线的标准评测件。
  3. 循证医学证据结构化:EBM PICO(339,167 训练 PICO 元素)训练的抽取器可将临床试验摘要自动拆解为人群/干预/对照/结局四要素,支撑系统综述与指南证据表自动化。
  4. 生物医学问答与检索增强:PubMedQA 与 BioASQ 子集评测"给摘要回答是否/为何"的能力,是医疗 RAG 系统文献问答模块的体检工具。
  5. 实体识别底座选型:5 个 NER 子集(化学/疾病/基因三类实体)是医疗文本挖掘团队验证 BiomedBERT、BioBERT 或 LLM 微调方案在文献域表现的第一站。

§2 医学背景

§2.1 实体类型与 ICD-11 映射

BLURB 不是单疾病数据集,其"医学背景"体现为三类核心生物医学实体在术语系统中的位置。下表给出各任务/实体类型与国际疾病分类体系(ICD-11)的对应关系:

数据集/实体类型 实体或任务内容 ICD-11 对应编码 ICD-11 中文名称
BC5-disease、NCBI-disease 疾病实体提及 各系统疾病章节(如 5A11 2 型糖尿病、CB40.x 心肌梗死、CA40.x 支气管肺癌等,按提及实体具体归类) 对应各类疾病条目
BC5-chem、ChemProt、DDI 化学/药物实体与关系 无独立 ICD-11 轴;药物分类对应 ICD-11 扩展部件(Extension Codes)与 ATC 分类体系 药物性、中毒性或特定治疗相关的编码簇
BC2GM、JNLPBA 基因/蛋白实体 不适用(ICD-11 无基因轴;标准链接目标为 NCBI Gene/HGNC) —
GAD 基因-疾病关联 疾病端按具体疾病归类至 ICD-11 各章 对应各类疾病条目
EBM PICO 临床试验人群/干预/对照/结局 结局与人群按具体疾病归类;干预对应 ICD-11 扩展部件中操作与治疗编码 对应临床操作与治疗条目
HoC 癌症十大标志性特征分类 肿瘤学章节(2A00–2F5Z 恶性肿瘤体系) 恶性肿瘤及相关条目
BioASQ、PubMedQA 生物医学问答(yes/no/maybe) 问题主题按具体疾病/生物过程归类 按问答主题归类

§2.1b 实体类型与 SNOMED CT / MeSH 映射

实体/概念类型 代表语料 SNOMED CT 概念(示例码) 术语名称 常用替代术语系统
疾病 NCBI-disease(88% 提及链接 MeSH,其余 OMIM) 64572000 Disease(疾病) MeSH、OMIM(该语料官方链接目标)
疾病发现/体征 HoC、BioASQ 语境 404684003 Clinical finding(临床发现) MeSH C 簇
药物/化学物质 BC5-chem、DDI、ChemProt 105590001 Substance(物质) MeSH 化学补充概念(Supplementary Concept Records)
基因/蛋白 BC2GM、JNLPBA 不适用(SNOMED CT 无基因轴) — NCBI Gene、HGNC、UniProt
临床试验干预 EBM PICO 71388002 Procedure(操作) ICD-11 扩展部件

说明:BLURB 各子集原始语料的实体链接标准并不统一——NCBI-disease 官方提供 MeSH/OMIM 链接(6,892 个疾病提及对应 790 个唯一疾病概念),BC5 系列以 BioCreative 任务定义为准;BLURB 本身在复用这些语料时保留了原始标注而未重新做术语标准化。若下游应用需要 SNOMED CT 归一,需自行追加实体链接(entity linking)模块。

§2.2 医学背景与文献流行病学

生物医学知识以每数年翻倍的速率积累,PubMed 收录的文献摘要已达数千万篇量级,任何研究者与临床药师都不可能通读本专业全部新增文献。这一"文献过载"正是 BLURB 各任务的医学动因:DDI 关系抽取服务于多药联用患者的药物安全审查——全球老年患者平均联用多种处方药,药物相互作用是不良事件的重要可预防来源;BC5-chem/BC5-disease 的化学-疾病共指抽取服务于药物不良反应与毒性机制挖掘;GAD 与 ChemProt 的基因-疾病/化学-蛋白关系抽取是靶点发现与老药新用的文献证据来源;EBM PICO 对临床试验摘要的人群/干预/对照/结局结构化,直接支撑循证医学的系统综述生产——一篇 Cochrane 综述动辄需要筛读数千篇摘要,PICO 自动化可将初筛成本压缩一个数量级。BioASQ 与 PubMedQA 则对应文献问答这一最终交互形态:临床医生在诊疗现场需要的是"这个患者是否该用该药"的快速证据答复,而 yes/no 事实型问答正是证据检索系统的核心评测形态。BLURB 的 13 个子集正是把上述医学需求逐一转译为可量化任务。

§2.3 临床任务定义

临床场景 对应 BLURB 任务/子集 技术定义 医学价值
用药安全筛查(类似处方审核的前置文献核查) RE:DDI 给定含两个药物的句子,判定二者相互作用类型(Mechanism/Effect/Advice/Intangible 四类) 从文献侧预警药物联用风险,补充临床试验未覆盖的相互作用
药物警戒信号检测 NER:BC5-chem/BC5-disease + RE:ChemProt 识别摘要中化学与疾病实体,抽取化学-蛋白关系(CPR 五组) 自动聚合散落在文献中的不良反应与毒性证据
靶点/生物标志物发现 RE:GAD、NER:BC2GM/JNLPBA 识别基因/蛋白提及,抽取基因-疾病关联 文献驱动的靶点优先级排序与机制假设生成
系统综述与指南证据表 PICO:EBM PICO 词级标注临床试验摘要中的 P/I/C/O 四要素 将文献初筛与数据抽取自动化,缩短综述生产周期
循证问答与临床决策支持 QA:PubMedQA、BioASQ 给定问题与摘要上下文,输出 yes/no/maybe(PubMedQA)或事实型回答(BioASQ) 在诊疗现场提供文献证据的即时答复能力评测
文献自动分型与筛选 Doc 分类:HoC;句相似度:BIOSSES 按十大癌症标志性特征对摘要分类;对生物医学句子对输出 0–4 相似度 大规模文献主题路由与语义检索召回评估

§2.4 数据"人群":文献语料画像

BLURB 的研究对象是文献而非患者,其"人群画像"即语料来源画像:

语料来源 覆盖子集 文献类型 时间跨度 主题域
PubMed 研究摘要 BC5-chem/disease、NCBI-disease、BC2GM、JNLPBA、GAD、BIOSSES、HoC 期刊摘要(分子生物学/生物化学为主) 1960s–2010s(各语料构建期集中在其任务年份前) 分子生物学、遗传学、药理学
BioCreative/BioNLP 共享任务语料 BC2GM(2008)、JNLPBA(2004)、BC5(2015) 共享任务组织方精选的期刊摘要 语料构建于 2004–2015 基因/化学/疾病实体识别
临床试验登记关联摘要 EBM PICO(EBM-NLP) ClinicalTrials.gov 关联的约 5,000 篇试验摘要 2018 年语料构建前发表的试验 干预性临床试验全谱
药物相互作用摘要 DDI(DDIExtraction 2013) DrugBank 关联文献摘要 2013 年前 药物相互作用
问答语料 PubMedQA(2019)、BioASQ(Task 7b) 摘要+专家撰写问题;BioASQ 竞赛题库 2019 年前后 全医学学科 yes/no 问题

重要提示:BLURB 不含任何患者个体数据,不存在年龄/性别/种族等患者人口学字段;涉及患者人群的临床推断需回到各原始试验数据或临床数据库(如 MIMIC 系列另行建档)。

§2.5 临床价值

BLURB 本身不直接产生临床决策,但它决定了"文献挖掘型"临床工具的可靠性下限。其临床价值链条为:文献实体与关系抽取(BLURB 评测的能力)→ 文献级证据聚合(如药物-相互作用数据库的自动更新)→ 临床决策支持系统(CDS)的知识库供给。一个在 DDI 子集上 Micro F1 达 85%+ 的模型,意味着药物安全知识库中约六分之一的错误关系可以被自动化流程发现并交由药师复核;一个在 EBM PICO 上词级 Macro F1 达 70%+ 的抽取器,可以让系统综述团队把人工通读量降低一个数量级。反过来,BLURB 分数也是采购与自研的验收基准:医疗信息化团队在引入"文献智能"组件时,可要求供应商报告 BLURB 各子集成绩,以验证其对公开基准的复现诚意与模型泛化底线。

§2.6 金标准(各子集标注协议)

划分/子集 标注方式 标注者资质 一致性控制 标注性质
BC5-chem / BC5-disease 人工实体标注 + 化学诱导疾病关系标注(BLURB 仅用实体部分) BioCreative V 任务组织的专业标注团队(生物学家/医学信息学家) 双标注 + 仲裁(adjudication);1,500 篇摘要均分 500/500/500 金标准(人工)
NCBI-disease 人工标注疾病提及并链接 MeSH/OMIM NCBI 组织的专业标注者 双标注 + 专家仲裁;6,892 提及/790 概念 金标准(人工)
BC2GM 人工标注基因提及(字符起止) BioCreative II 组织方 双标注 + 仲裁;15,000 训练/5,000 测试句 金标准(人工)
JNLPBA 基于 GENIA 3.02 语料的人工实体标注 GENIA 项目专业标注团队 项目内一致性规程 金标准(人工)
EBM PICO 众包初标 + 专家确认(P/I/C/O 四轨) Crowdworker + 领域专家审核 置信度聚合 + 专家抽查 弱监督 + 专家金标准混合
ChemProt 人工化学-蛋白关系标注 SemEval-2017 Task 13 组织方 任务组织方仲裁 金标准(人工)
DDI 人工药物对关系标注(四类型) DDIExtraction 2013 组织方 双标注 + 仲裁 金标准(人工)
GAD 基因-疾病关联句标注(EU-ADR 语料) EU-ADR 项目标注团队 项目规程 金标准(人工)
BIOSSES 句对相似度 0–4 分人工评分 5 位领域专家独立评分 取平均分 金标准(人工评分)
HoC 摘要按十大癌症标志性特征人工分类 Pyysalo et al. 组织的专业标注 层级分类规程 金标准(人工)
PubMedQA 专家基于摘要撰写 yes/no/maybe 问题与结论 领域专家(论文作者团队) 关键性过滤(key QA 保留) 金标准(人工)
BioASQ 竞赛金标准问答(BLURB 取 Task 7b yes/no 部分) BioASQ 组织方专家团队 年度任务统一评测 金标准(人工)

§3 数据集规格

§3.0 版本抉择矩阵

BLURB 的"版本"包含两层含义:基准论文版本(arXiv v1/v3/v6 与 ACM 正式版)与各子集的获取渠道版本。下表帮助快速决策:

你的需求 推荐版本/渠道 规模 理由
快速实验、复现排行榜 HuggingFace EMBO/BLURB 或 bigbio/blurb 13 集(bigbio 首版覆盖 5 类任务) 一键加载为 datasets 对象,免去手动解析 TSV
与官方论文/排行榜严格对齐 microsoft.github.io/BLURB 各子集入口 + ACM 版 Table 3 划分 13 集全量 ACM 正式版是指标与划分的最终裁定版(DDI/GAD 数字以 v6/ACM 为准)
NER 任务深入研究 BLURB 采用的 Crichton et al. 2017 预处理版 BioNER 语料 5 个 NER 集 与排行榜可比性的前提;原始共享任务划分不可直接混用(见坑点 1)
中文团队教学/演示 HuggingFace bigbio/blurb + 本页 §6 代码 5 类任务子集 bigbio 已统一字段命名,代码即跑
评测大语言模型(零样本/少样本) 社区开源评测管线(如 IQVIA blurb-llm-benchmarking) 13 集 提供 LLM 提示模板与官方指标复算脚本
临床文本域任务 不要用 BLURB——改用 BLUE/MIMIC 系临床基准 — BLURB 只覆盖 PubMed 文献域,临床笔记域成绩不可迁移

§3.1 模态详情

BLURB 为纯文本单模态基准,文本形态分四类:

  1. 句子级序列(5 个 NER 子集):来自 PubMed 摘要的单句,附 token 序列与 BIO 实体标签,用于 token 分类。
  2. 句对/关系句(ChemProt、DDI、GAD、BIOSSES):含实体对标注的句子或句子对,用于关系分类与语义相似度回归。
  3. 文档级摘要(HoC、EBM PICO):完整摘要文本,分别用于多标签文档分类与词级 PICO 序列标注。
  4. 问答对(PubMedQA、BioASQ):问题 + 摘要上下文 + yes/no/maybe 结论标签。

无图像、时序信号或基因组原始数据;"多模态对齐"维度不适用(见 §7.7 DAIMS)。

§3.2 按子集样本数明细

下表为官方 ACM 版 Table 3 的完整划分数字(实例定义随任务不同:NER 为实体提及数、PICO 为词级标注元素、RE 为关系对、QA 为问题数):

子集 任务 Train Dev Test 合计 评测指标
BC5-chem NER 5,203 5,347 5,385 15,935 F1(实体级)
BC5-disease NER 4,182 4,244 4,424 12,850 F1(实体级)
NCBI-disease NER 5,134 787 960 6,881 F1(实体级)
BC2GM NER 15,197 3,061 6,325 24,583 F1(实体级)
JNLPBA NER 46,750 4,551 8,662 59,963 F1(实体级)
EBM PICO PICO 抽取 339,167 85,321 16,364 440,852 Macro F1(词级)
ChemProt 关系抽取 18,035 11,268 15,745 45,048 Micro F1
DDI 关系抽取 25,296 2,496 5,716 33,508 Micro F1
GAD 关系抽取 4,261 535 534 6,330 Micro F1
BIOSSES 句子相似度 64 16 20 100 Pearson
HoC 文档分类 1,295 186 371 1,852 Micro F1
PubMedQA 问答 450 50 500 1,000 Accuracy
BioASQ 问答 670 75 140 885 Accuracy

按任务分组求和:NER 共 120,212 个实体实例,PICO 抽取 440,852 个,关系抽取共 84,886 个,句子相似度 100 对,文档分类 1,852 篇,问答共 1,885 条——13 集合计约 650,000 个标注实例。注意 EBM PICO 与 JNLPBA 两集即占近八成体量,实际算力预算主要花在 EBM PICO 上。

§3.3 数据格式

子集 原始/分发格式 核心字段 编码方式
5 个 NER 子集 TSV(token 每行)/ CoNLL 风格 句 ID、token、BIO 标签 BIO(如 B-Chemical、I-Chemical、O)
EBM PICO TSV/JSON(词级标注) 文档 ID、词序列、PICO 各轨标签 词级二值/多标签
ChemProt / DDI / GAD TSV 句子、实体对位置、关系类型 关系类型枚举
BIOSSES TSV 句 1、句 2、相似度均分 连续值 0–4
HoC TSV/CSV 摘要文本、层级类别标签 多类/多标签
PubMedQA JSON question、context、final_decision yes/no/maybe
BioASQ JSON(官方 zip) question、snippets、exact_answer、ideal_answer yes/no + 事实型
HF 镜像 Parquet(datasets 库) 与上述对应 加载即 Dataset 对象

§3.4 存储大小

BLURB 是文本级轻量基准:BIOSSES(100 句对)为 KB 级;PubMedQA、BioASQ、HoC 为 MB 级;EBM PICO 是体积与算力成本的主导项(339,167 个训练词级标注元素,含摘要全文文本),在本地磁盘上预留数 GB 即可容纳全部 13 个子集的解压副本与预处理缓存。官方未发布统一打包体积数字,本页不做无来源的精确声明;实测以各渠道下载页所示为准。内存方面,全量 NER 子集(约 12 万实体)与 RE 子集在现代工作站(≥32GB RAM)上可全量载入内存做预处理。

§3.5 标注方式

13 个子集均继承原始共享任务/项目语料的标注,无新增自动标注:

  • 纯人工标注(12/13):BC5、NCBI-disease、BC2GM、JNLPBA、ChemProt、DDI、GAD、BIOSSES、HoC、BioASQ、PubMedQA 的问题与结论均为领域专家人工产出。
  • 众包 + 专家混合(1/13):EBM PICO 采用众包初标、置信度聚合、专家确认的分层流程,是 13 集中唯一含众包成分的子集,也是标注噪声相对最高的子集。

§3.6 标注者资质与一致性

各子集标注者均为其原始项目的专业人员:BioCreative 系列任务由组织方招募的生物医学专业标注团队执行双标注加仲裁(BC5 的 1,500 篇摘要、NCBI-disease 的 6,892 个提及均经仲裁);JNLPBA 基于 GENIA 项目的职业标注体系;BIOSSES 由 5 位领域专家独立打分后取均值;EBM PICO 的专家层负责对众包标签做置信确认。BLURB 论文未统一发布各子集的标注者间一致性系数(IAA),如需 IAA 请回溯各子集原始论文(见 §2.6 与 §9 引用);本页不虚构一致性数字。

§3.7 采集周期

各子集语料构建于 2004–2019 年间(JNLPBA 2004、BC2GM 2008、DDI 2013、NCBI-disease 2014、GAD/EU-ADR 2012–2015、BC5 2015、BIOSSES 2017、ChemProt 2017、HoC 2012、EBM PICO 2018、PubMedQA 2019、BioASQ Task 7b 2019),BLURB 于 2020 年统一聚合。术语分布反映语料构建年代:例如 JNLPBA 的基因命名规范停留在 2004 年,近年文献中的新实体(如新型 mRNA 疗法术语)不在任何子集中出现。

§3.8 地域覆盖

全球英文生物医学文献(PubMed 收录范围),以美、欧、东亚研究机构发表的英文期刊文章为主。无地理字段、无区域子划分;BLURB 评测结果不可解读为任何特定人群/区域的临床适用性。

§3.9 设备规格

不适用。BLURB 为纯文本文献语料,无传感器、影像设备或采集仪器信息。

§3.10 深度溯源链

BLURB 不是新采集数据,而是一个"聚合 + 统一划分 + 统一评测"的基准层。完整溯源链如下(自下而上):

PubMed/期刊出版商(原始文献)
  └─ 各共享任务组织方(BioCreative I/II/V、BioNLP/JNLPBA 2004、DDIExtraction 2013、
     SemEval-2017、EU-ADR/GAD、HoC 项目、EBM-NLP 项目、PubMedQA 项目、BioASQ)
       └─ 13 个独立标注语料(各自的金标准与许可)
            └─ Crichton et al. 2017(5 个 BioNER 子集的统一预处理划分)
                 └─ Microsoft Research BLURB(2020:统一划分/指标/宏平均/排行榜)
                      └─ 社区分发渠道(HuggingFace EMBO/BLURB、bigbio/blurb、
                         IQVIA LLM 评测管线等)

两个关键溯源事实:其一,5 个 NER 子集的划分来自 Crichton et al.(2017)的神经网络多任务 BioNER 预处理版,而非共享任务原始划分;其二,BC5 系列在进入 BLURB 时被弃用了化学-疾病关系标签,只保留实体标注。任何复现声明都应说明自己用的是链条中的哪一层。


§4 数据结构

§4.0 目录树

以官方渠道获取并解压后的典型目录结构(部分子集文件名可能随分发渠道略有差异):

BLURB/
├── BC5CDR-chem/          # NER:化学实体(Crichton 预处理版)
│   ├── train.tsv
│   ├── dev.tsv
│   └── test.tsv
├── BC5CDR-disease/       # NER:疾病实体
│   ├── train.tsv
│   ├── dev.tsv
│   └── test.tsv
├── NCBI-disease/         # NER:疾病实体(含 MeSH/OMIM 链接语料)
│   ├── train.tsv
│   ├── dev.tsv
│   └── test.tsv
├── BC2GM/                # NER:基因实体
│   ├── train.tsv
│   ├── dev.tsv
│   └── test.tsv
├── JNLPBA/               # NER:基因/蛋白实体(GENIA 3.02 派生)
│   ├── train.tsv
│   ├── dev.tsv
│   └── test.tsv
├── EBM-PICO/             # PICO:词级 P/I/C/O 标注(最大子集)
│   ├── train.jsonl
│   ├── dev.jsonl
│   └── test.jsonl
├── ChemProt/             # RE:化学-蛋白关系
│   ├── train.tsv
│   ├── dev.tsv
│   └── test.tsv
├── DDI/                  # RE:药物-药物相互作用
│   ├── train.tsv
│   ├── dev.tsv
│   └── test.tsv
├── GAD/                  # RE:基因-疾病关联
│   ├── train.tsv
│   ├── dev.tsv
│   └── test.tsv
├── BIOSSES/              # 句相似度:0–4 分句对
│   └── samples.tsv
├── HoC/                  # 文档分类:癌症十大标志
│   ├── train.tsv
│   ├── dev.tsv
│   └── test.tsv
├── PubMedQA/             # QA:pqa_labeled 1,000 条
│   └── pqa_labeled.json
└── BioASQ/               # QA:Task 7b yes/no(需注册手动下载)
    ├── BioASQ-training7b.json
    └── Task7BGoldenEnriched.json

§4.1 DAIMS 字段字典

以两类核心表(NER 的 TSV 与 QA 的 JSON)为例的 8 列字段字典:

字段名 类型 说明 示例值 AI 用途 观测误差 信息性缺失编码 取值范围
sentence_id string 句子唯一标识(NER TSV 按句分组) BC5CDR-chem-100 分组聚合、防句内泄漏 无 无 任意字符串
token string 分词后的词元 cisplatin 模型输入 分词器差异(原始空格分词) 无 任意文本
label string BIO 实体标签 B-Chemical NER 监督信号 标注边界主观性(长实体切分歧义) O 为非实体而非缺失 {O, B-/I-×实体类型}
text string 关系抽取的完整句子 Aspirin inhibits... RE 输入 摘要句子截断 无 任意文本
relation_label string 实体对关系类型 Mechanism RE 分类目标 主题相关性与标注者分歧 负样本显式编码 各子集类型枚举
question string 问答问题文本 Can aspirin prevent...? QA 输入 问题措辞风格差异 无 任意文本
context string 问答上下文摘要 Abstract: ... QA 证据段 长度不均(数百至数千 token) 无 任意文本
final_decision string PubMedQA 结论标签 yes QA 分类目标 三分类中 maybe 语义模糊 maybe 为信息性类别 {yes, no, maybe}

§4.2 标签分布

  • NER(5 集):实体类型即语料主题——BC5-chem/BC5-disease 各自单一类型(Chemical/Disease),NCBI-disease 单类型(Disease),BC2GM 单类型(Gene),JNLPBA 多类型(DNA、RNA、protein、cell_type、cell_line、protein 变体等,源自 GENIA 体系)。单类型集的实体密度高于多类型集,模型在 JNLPBA 上的类型混淆(如 protein vs DNA)是主要误差源。
  • RE(3 集):DDI 为四类(Mechanism、Effect、Advice、Intangible)+ 无关系负样本;ChemProt 为 CPR 分组体系(AGONIST、ANTAGONIST、ACTIVATOR、INHIBITOR、SUBSTRATE 等方向性分组);GAD 为二分类式关联判定。三类共同特征:类别分布长尾,方向性类别(如 Mechanism vs Effect 的药理学区分)样本最多、Intangible/负样本相对稀少。
  • 文档分类(HoC):十大癌症标志性特征(hallmarks)类别体系,摘要可能命中多个特征,属多标签设定。
  • QA:PubMedQA 的 1,000 条 pqa_labeled 中 yes/no/maybe 三类并存(官方 450/50/500 为 train/dev/test 划分而非类别分布);BioASQ 子集取 yes/no 事实型问题。
  • 句相似度(BIOSSES):0–4 连续分(5 位专家均值),回归任务。

本页不列具体类别计数——BLURB 官方未随基准发布统一的标签分布表,按子集统计请以语料文件实数为准(§6.3 给出统计代码)。

各任务标签体系的展开说明(供建模前映射参考):

NER 五集的实体类型与来源体系对照:

子集 实体类型 类型体系来源 建模提示
BC2GM Gene/基因 BioCreative II GM 共享任务 单类型,BIO 只需 3 个标签(O/B-GENE/I-GENE)
BC5CDR-chem Chemical BioCreative V CDR 与 BC5CDR-disease 同语料(1,500 篇摘要)双轨标注
BC5CDR-disease Disease BioCreative V CDR 疾病概念 88% 链接 MeSH(§4.3)
JNLPBA DNA/RNA/protein/cell_type/cell_line GENIA 3.02 事件语料体系 多类型,类型混淆是主要误差源
NCBI-disease Disease NCBI 文献挖掘团队 790 个唯一疾病概念,适合做链接评测

RE 三集的关系类别语义(类别定义以官方 tasks.html 为准):

  • DDI 四类均为"两种药物间"的关系:Mechanism(药代/药效机制)、Effect(药效或不良事件)、Advice(合用建议/禁忌)、Intangible(无临床意义关联,显式负类)。
  • ChemProt 采用 CPR 分组:方向性组(AGONIST、ANTAGONIST、ACTIVATOR、INHIBITOR、SUBSTRATE 等)描述配体—受体方向,另有"Not mentioned/无关系"兜底组。
  • GAD 为基因—疾病关联的二元判定(associated / not associated),是三集中最接近传统二分类的设定。

多标签与回归的两个特殊设定:HoC 的多标签意味着 sigmoid+逐类阈值优于 softmax 单标签头;BIOSSES 的 0–4 连续分意味着训练端用 MSE/余弦回归头、评测端按官方 Pearson 相关,勿人为离散化为五分类。

§4.3 关键统计

统计项 数值 来源/口径
子集数 13 官方 Table 3
任务数 6(NER、PICO、RE、句相似度、文档分类、QA) 官方 Table 3
标注实例合计 约 650,000(各集 train+dev+test 求和) 按官方 Table 3 求和
最大子集 EBM PICO(440,852 实例) 官方 Table 3
最小子集 BIOSSES(100 句对) 官方 Table 3
NER 子集实体合计 120,212 按官方 Table 3 求和
RE 子集关系对合计 84,886 按官方 Table 3 求和
问答条目合计 1,885(PubMedQA 1,000 + BioASQ 885) 官方 Table 3
NCBI-disease 疾病概念数 790 个唯一概念(88% 链接 MeSH) 原语料论文/BLURB 论文 §4.1
BC5 语料规模 1,500 篇摘要(500/500/500 均分) BLURB 论文 §4.1

§4.4 数据层级

BLURB 基准
 └─ 任务(6)
     └─ 子数据集(13)
         └─ 语料文档(PubMed 摘要)
             └─ 句子/问题(评测实例单位随任务而异)
                 └─ 词元/实体跨度/PICO 词(标注单位)

与影像/EHR 数据不同,BLURB 无"患者—就诊—检查"三级键;其防泄漏层级单位是语料文档(摘要)——同一摘要派生的句子/实体必须落在同一划分内,这是 §5.3 泄漏讨论的基准单位。

§4.5 缺失值与信息性缺失

现象 出现位置 性质 处理建议
PICO 某轨全空 EBM PICO(部分摘要无对照臂或结局要素) 信息性缺失(试验设计本身无该要素) 评测时按官方词级口径跳过空轨;训练时勿把空标签当负证据过采样
maybe 结论 PubMedQA 信息性类别(摘要证据不足) 勿合并入 yes 或 no;合并会让 Accuracy 失真
Intangible / 无关系 DDI、GAD、ChemProt 显式负类(非缺失) 计入 Micro F1 分母;勿在预处理中删除
实体边界歧义 长化学名/基因名(NER 各集) 标注主观性 评测必须用实体级 F1 容忍边界微差设置,禁止用 token F1 充数

§5 数据划分策略

§5.1 官方划分

BLURB 为每个子集提供固定的 train/dev/test 三划分(§3.2 大表),并规定:训练用 train、调参用 dev、报告用 test;排行榜以 test 成绩为准且多数子集的 test 标签由排行榜侧持有。该划分沿自各子集在 BLURB 之前的社区通行版本(NER 五集为 Crichton et al. 2017 预处理版),保证了与历史文献的连续可比性。

§5.2 社区惯例划分

  • NER:社区严格沿用 BLURB/Crichton 划分(替换原始共享任务划分会丧失可比性)。
  • PubMedQA:社区生态中流传 1k(pqa_labeled 全量,即 BLURB 版)、qia(含人工弃题版)、2.5k/5k/200k(pqa_artificial 扩充版)等多种口径;报告成绩时必须注明所用子集(见坑点 4)。
  • BioASQ:社区常逐年混用多期 Task 语料;BLURB 固定 Task 7b,混期评测不可比。
  • 交叉验证:小集(BIOSSES 100 对、GAD、HoC)的社区常见做法是 k 折交叉验证求均值±方差;但若目标是榜单对比,应回到官方划分单次评测。

§5.3 泄漏风险 ⭐

风险点 机制 严重程度 缓解
预训练语料与测试上下文重叠 PubMedBERT/BiomedBERT 的预训练语料(14M PubMed 摘要)可能覆盖 PubMedQA/BioASQ 测试问题的上下文摘要 高(对 QA 子集) 报告时明示预训练语料范围;不要把 BLURB QA 成绩解读为"泛化推理能力"
文档级信息跨划分泄漏 同一摘要派生的多句若被随机按句划分,会造成近重复样本跨划分 中(仅当自行重划分时) 始终用官方划分;自划时以文档(摘要)为单位切分
原始划分与预处理版混用 把原始 BioCreative 划分文件与 BLURB 预处理版混并训练 中 全流程锁定单一划分来源(见坑点 1)
评测脚本口径不一 token 级 F1 冒充实 体级 F1;word-level 与 entity-level 混报 高(评估失真) 统一使用官方指标定义(NER 实体级、EBM PICO 词级、RE Micro F1)
EBM PICO 多标签泄漏 同一文档的相邻词高度相关,随机打乱词序增广或按词划分会制造伪信息 低-中 保持文档完整,不做词级乱序增广

§5.4 划分策略建议

  1. 默认复用官方划分,把自己的方法学实验限定在 train/dev 上迭代,test 只碰一次。
  2. 业务数据接入时,用"领域相近度"决定迁移源:化学药理业务优先 ChemProt/DDI/BC5-chem,基因组业务优先 BC2GM/JNLPBA/GAD,循证产品优先 EBM PICO + PubMedQA。
  3. 小集(BIOSSES、GAD、HoC)结论不稳定,务必跑多随机种子(≥5)报告均值±标准差,勿以单次成绩下结论。

§5.5 交叉验证建议

对 BIOSSES(100 对)建议 10 折;HoC(1,852 篇)5 折按多标签分层抽样;GAD(6,330 对)5 折即可。NER 大集因官方划分权威且样本充足,不建议交叉验证(成本高且与榜单不可比)。

§5.6 外部验证建议

BLURB 内部成绩不能替代外部验证:建议在自建业务语料(如院内文献库、目标期刊子集)上做零样本迁移评测,并用 §7.8 外部验证矩阵中的同行评审结果作为"健康差距"参照。若迁移后 F1 相对 BLURB 成绩下降超过 15 个百分点,应视为领域分布偏移信号,回到 §6.6 考虑继续预训练而非直接微调。


§6 AI 就绪指南

§6.0 云端快速启动

HuggingFace 提供免费算力的 Notebook 环境,十分钟内可以跑通 BLURB 的第一个任务:

# 云端环境(Colab/Kaggle/任意 Linux 均适用)
pip install -q "datasets>=2.14" transformers evaluate seqeval

# 加载 bigbio 版 BLURB(统一字段命名,BioASQ 除外均可自动下载)
python - <<'PY'
from datasets import load_dataset
# 注意:bigbio 版配置名带 "bigbio" 前缀;NCBI-disease 首次下载约数十 MB
ds = load_dataset("bigbio/blurb", "bc5cdr_bigbio_ner")
print(ds)          # 查看训练/开发/测试划分与字段
print(ds["train"][0])
PY

如需原版官方文件(TSV/JSON),走 §6.2 的手动渠道。两条路线的数据内容一致,但字段组织不同——HF 版为 dict-in-dict 的 tokens/labels 嵌套结构,官方版为逐行 TSV。

§6.1 快速上手

以下代码演示"官方渠道 + 本地目录"的最小可用路径:以 BC5-chem 的 NER 任务为例,跑通从 TSV 读取、BIO 解析到实体级 F1 的全链路。

# 目录结构预期(data_root 需按 §4.0 目录树组织):
#   data_root/
#     BC5CDR-chem/
#       train.tsv  dev.tsv  test.tsv
# TSV 每行:token<TAB>label,空行分隔句子(CoNLL 风格)
# 最小可用子集:任选一个 NER 子集即可跑通全流程;全量评测需 13 集齐备

import pathlib

DATA_ROOT = pathlib.Path("data_root")          # ← 改为你的数据根目录
SUBSET = "BC5CDR-chem"                         # 最小可用子集

def load_conll(path):
    """读取 CoNLL 风格 TSV,返回 [(tokens, labels)] 句子列表"""
    sents, toks, labs = [], [], []
    with open(path, encoding="utf-8") as f:
        for line in f:
            line = line.rstrip("\n")
            if not line:                       # 空行 = 句子边界
                if toks:
                    sents.append((toks, labs)); toks, labs = [], []
                continue
            parts = line.split("\t")
            toks.append(parts[0]); labs.append(parts[-1])
    if toks:
        sents.append((toks, labs))
    return sents

train = load_conll(DATA_ROOT / SUBSET / "train.tsv")
dev   = load_conll(DATA_ROOT / SUBSET / "dev.tsv")
test  = load_conll(DATA_ROOT / SUBSET / "test.tsv")
print(f"train/dev/test 句数:{len(train)}/{len(dev)}/{len(test)}")
print(train[0][:3])  # (tokens, labels) 预览

§6.2 数据获取

子集 获取渠道 是否需注册 备注
5 个 NER 子集 官方 tasks.html 各集 Dataset Home / HF 镜像 否 以 Crichton et al. 2017 预处理版为准
EBM PICO 官方入口 / HF 否 Windows 下载需 UTF-8 模式(见坑点 8)
ChemProt / DDI / GAD 官方入口(各自共享任务页)/ HF 否 许可各异,商用前核对
BIOSSES / HoC 官方入口 / HF 否 小体量
PubMedQA 官方入口 / HF qiaojin/PubMedQA 否 取 pqa_labeled 1,000 条
BioASQ bioasq.org 注册后手动下载 Task 7b 两个 zip 是 BioASQ-training7b.zip + Task7BGoldenEnriched.zip
# HuggingFace 一键路线(除 BioASQ 外全部子集)
from datasets import load_dataset

# 关系抽取示例
ds = load_dataset("bigbio/blurb", "ddi_bigbio_re")
# 句相似度示例
biosses = load_dataset("bigbio/blurb", "biosses_bigbio_pairs")
# 问答示例(PubmedQA 官方仓库)
pubmedqa = load_dataset("qiaojin/PubMedQA", "pqa_labeled")

# BioASQ 手动路线:
# 1) 注册并登录 https://www.bioasq.org
# 2) 下载 BioASQ-training7b.zip 与 Task7BGoldenEnriched.zip
# 3) 解压放入本地数据根目录(§4.0 树中 BioASQ/ 位置)后按 JSON 读取

§6.3 预处理全流程

标准流水线:格式统一 → 清洗 → 标准化 → 编码。以下为可运行的 NER 完整预处理(BIO 序列化 + 词表对齐):

# 预处理目标:官方 TSV → {tokens, bio_tags, spans} → tokenizer 对齐
# 关键约束:BIO 标签与原始空格分词绑定,切换 tokenizer 必须重新对齐

LABEL2ID = {"O": 0}
def register_label(tag):
    if tag not in LABEL2ID:
        LABEL2ID[tag] = len(LABEL2ID)
    return LABEL2ID[tag]

def bio_to_spans(labels):
    """把 BIO 序列还原为实体跨度 [(start, end, type)],end 为闭区间"""
    spans, cur, ctype = [], None, None
    for i, t in enumerate(labels):
        if t.startswith("B-"):
            if cur is not None:
                spans.append((cur, i - 1, ctype))
            cur, ctype = i, t[2:]
        elif t.startswith("I-") and cur is not None and t[2:] == ctype:
            continue
        else:                                  # O 或类型断裂
            if cur is not None:
                spans.append((cur, i - 1, ctype)); cur = None
    if cur is not None:
        spans.append((cur, len(labels) - 1, ctype))
    return spans

def encode_for_ner(sents, tokenizer, max_len=512):
    """将 (tokens, labels) 编码为 subword 级输入;标签按 first-piece 对齐"""
    model_inputs, all_labels = [], []
    for tokens, labels in sents:
        for t in labels:
            register_label(t)
        enc = tokenizer(
            tokens, is_split_into_words=True,
            truncation=True, max_length=max_len,
            padding=False, return_overflowing_tokens=False,
        )
        word_ids = enc.word_ids()
        prev = None
        lab_ids = []
        for wid in word_ids:
            if wid is None:
                lab_ids.append(-100)           # special token 不计损失
            elif wid != prev:
                lab_ids.append(register_label(labels[wid]))
            else:
                lab_ids.append(-100)           # subword 延续位不计损失
            prev = wid
        enc["labels"] = lab_ids
        model_inputs.append(enc)
        all_labels.append(bio_to_spans(labels))
    return model_inputs, all_labels, LABEL2ID

# 使用示例(BiomedBERT 的领域词表能把 'cisplatin' 保持为完整词元,
# 通用 BERT 词表会把它切成 4 个 subword——两种词表的序列长度差约 30%):
# from transformers import AutoTokenizer
# tok = AutoTokenizer.from_pretrained("microsoft/BiomedNLP-BiomedBERT-base-uncased-abstract")

清洗与标准化要点(保持与官方口径一致,勿过度清洗):

  1. 不要去重句子——BIO 语料中跨句重复可能来自同一摘要的合法复现,官方划分未做去重,擅自去重会偏离基准口径。
  2. 保持大小写原样:选择 uncased checkpoint 时交由 tokenizer 处理;ner 语料中基因符号大小写敏感(如 BRAF),cased 模型请保留原文。
  3. 不要展开缩写:BLURB 不做缩写标准化;自行扩展会改变实体跨度定义。
  4. EMB PICO 特殊处理:词级多轨标签按轨独立编码,空轨(§4.5)不参与该轨的损失与评测。

§6.4 PyTorch DataLoader 完整代码

# 依赖:torch>=2.0, transformers>=4.30, seqeval
# 功能:NER 任务的完整可运行训练件(Dataset + collate + DataLoader 实例化)

import torch
from torch.utils.data import Dataset, DataLoader
from transformers import AutoTokenizer, AutoModelForTokenClassification

class BlurberNerDataset(Dataset):
    """BLURB NER 子集 Dataset:输入 §6.3 编码产物,输出张量键值对"""
    def __init__(self, encodings):
        self.encodings = encodings

    def __len__(self):
        return len(self.encodings)

    def __getitem__(self, idx):
        e = self.encodings[idx]
        return {
            "input_ids": torch.tensor(e["input_ids"], dtype=torch.long),
            "attention_mask": torch.tensor(e["attention_mask"], dtype=torch.long),
            "labels": torch.tensor(e["labels"], dtype=torch.long),
        }

def collate_pad(batch, pad_id=0, label_pad=-100):
    """动态 padding:input 按 pad_id,标签按 -100(不计损失)"""
    max_len = max(b["input_ids"].size(0) for b in batch)
    out = {"input_ids": [], "attention_mask": [], "labels": []}
    for b in batch:
        n = b["input_ids"].size(0)
        pad = max_len - n
        out["input_ids"].append(torch.cat([b["input_ids"],
                                           torch.full((pad,), pad_id, dtype=torch.long)]))
        out["attention_mask"].append(torch.cat([b["attention_mask"],
                                                torch.zeros(pad, dtype=torch.long)]))
        out["labels"].append(torch.cat([b["labels"],
                                        torch.full((pad,), label_pad, dtype=torch.long)]))
    return {k: torch.stack(v) for k, v in out.items()}

def build_loaders(data_root, subset, model_name, batch_size=16):
    tok = AutoTokenizer.from_pretrained(model_name)
    splits = {s: load_conll(pathlib.Path(data_root) / subset / f"{s}.tsv")
              for s in ("train", "dev", "test")}
    encoded = {s: encode_for_ner(v, tok)[0] for s, v in splits.items()}
    return {
        s: DataLoader(BlurberNerDataset(encoded[s]), batch_size=batch_size,
                      shuffle=(s == "train"), collate_fn=collate_pad)
        for s in ("train", "dev", "test")
    }, tok

# 一键实例化(模型推荐见 §6.7;BERT-base 级模型单卡 16GB 即可):
# loaders, tok = build_loaders("data_root", "BC5CDR-chem",
#                              "microsoft/BiomedNLP-BiomedBERT-base-uncased-abstract")
# model = AutoModelForTokenClassification.from_pretrained(
#     "microsoft/BiomedNLP-BiomedBERT-base-uncased-abstract",
#     num_labels=len(LABEL2ID), id2label={v: k for k, v in LABEL2ID.items()},
# )

RE / 句相似度 / 文档分类等"句子对或单句分类"任务可复用同一套 Dataset 骨架,只需替换编码函数(具体列名与分隔符以官方 TSV 文件表头为准):

# 依赖:torch, transformers
# 功能:RE(DDI/ChemProt/GAD)实体对分类训练件骨架
# 口径:BLURB RE 语料以"药物对/基因—疾病对 + 上下文句"为单位,标签为关系类别

import torch
from torch.utils.data import Dataset

class BlurbRelationDataset(Dataset):
    """通用句子对分类 Dataset:适配 DDI/ChemProt/GAD 与 BIOSSES(回归时 num_labels=1)"""
    def __init__(self, examples, tokenizer, num_labels, max_len=512):
        # examples: [{"text_a": str, "text_b": str | None,
        #             "label": int, "ent_pair": (i, j) | None}]
        # text_b 为 None 时退化为单句分类(如 HoC 文档分类)
        self.data, self.tok, self.num_labels, self.max_len = \
            examples, tokenizer, num_labels, max_len

    def __len__(self):
        return len(self.data)

    def __getitem__(self, idx):
        ex = self.data[idx]
        enc = self.tok(
            ex["text_a"],
            ex["text_b"] if ex["text_b"] is not None else None,
            truncation=True, max_length=self.max_len, padding=False,
        )
        item = {k: torch.tensor(v, dtype=torch.long) for k, v in enc.items()}
        # 回归(BIOSSES)用 float;分类(RE/HoC)用 long
        item["labels"] = torch.tensor(ex["label"],
            dtype=torch.float if self.num_labels == 1 else torch.long)
        return item

# 实体标记提示:把实体对用特殊符号包夹(如 "$drug1$ ... $drug2$")是 DDI/ChemProt
# 社区常用增强;若采用,务必只改输入文本、不改官方标签与划分,并在论文/模型卡中注明。
# 损失函数提示:RE 三集类别长尾(§4.2),可对比 CrossEntropyLoss 与
# weighted CE(权重按 train 类频倒数);评测仍以官方 Micro F1 为准,勿用加权宏 F1 冒充。

QA 任务(PubMedQA/BioASQ)建议直接走抽取式/序贯分类头(AutoModelForSequenceClassification,num_labels=3 或 2),BIOSSES 用同一骨架置 num_labels=1 加 Pearson 评测(§6.9 已给参考实现)——六种任务共两套骨架即可全覆盖。

§6.5 坑点 8 个

⚠️ 坑点 1:官方预处理版划分 ≠ 原始共享任务划分(分类:预处理陷阱)

问题:BLURB 的 5 个 NER 子集(BC5-chem/disease、NCBI-disease、BC2GM、JNLPBA)统一采用 Crichton et al.(2017)的预处理划分,与 BioCreative/BioNLP 原始任务的官方划分在句子抽样与实例计数上不同(如 BC2GM 原始版为 15,000 训练 + 5,000 测试句)。混用两个来源的文件会导致同一实例跨 train/test 出现,且成绩与排行榜不可比。

症状:复现的实体级 F1 与榜单差距 2–5 个百分点且方向不定;把原始划分测试集上的成绩报告为"BLURB 成绩"时被审稿人指出口径错误;数据统计发现 train+test 总句数超过官方 Table 3 计数。

解决:

  1. 简单方法:全部数据从 microsoft.github.io/BLURB/tasks.html 列出的 Dataset Home 下载,锁定 Crichton 预处理版;对下载文件做 MD5/句数断言(对照官方 Table 3 的 train/dev/test 计数)。
  2. 进阶方法:写一个划分校验脚本,检查 (a) 各划分实例数等于官方数字,(b) train 与 test 间无相同句对(按 token 序列哈希比对),加载失败立即报错而非静默合并。
  3. SOTA 方法:在实验配置中固化数据版本指纹(来源 URL + 下载日期 + 划分计数哈希),随每次实验日志输出,保证可追溯、可审计。

参考:BLURB 论文 §4.1(arXiv:2007.15779);Crichton et al. 2017(Bioinformatics, DOI: 10.1093/bioinformatics/btx228)。

⚠️ 坑点 2:EBM PICO 是词级多轨任务,不是普通 NER(分类:标签理解)

问题:EBM PICO 的 339,167 个训练元素是 P/I/C/O 四轨独立的词级标注,允许一个词同时属于多轨,且大量摘要存在整轨为空(如无对照臂)。把它当成单标签 NER 处理(每词一个标签)会静默丢弃多轨重叠与空轨语义。

症状:训练集"实体"远多于官方计数;评测 Macro F1 与官方不可比;把空轨当作负类训练后,该轨的 P/R 被负样本淹没,指标虚高或虚低。

解决:

  1. 简单方法:按官方定义四轨独立建模(每轨一个二分类头),评测分别计算各轨词级 F1 后取 Macro。
  2. 进阶方法:构建四轨多热向量作为词级目标,损失函数按轨求和;空轨样本在对应轨的损失中排除。
  3. SOTA 方法:采用官方/社区验证过的 PICO 评测器(如社区 LLM 评测管线中复算 Macro F1 word-level 的实现),并在论文中注明"word-level Macro F1 over P/I/C/O"口径。

参考:BLURB 论文 Table 3 指标列;EBM-NLP 语料文档;社区评测管线 github.com/iqvianlp/blurb-llm-benchmarking。

⚠️ 坑点 3:BioASQ 无法自动下载且必须对齐 Task 7b(分类:工程陷阱)

问题:BioASQ 是 13 个子集中唯一不能通过脚本自动获取的——需在 bioasq.org 注册并手动下载;且 BLURB 固定使用 Task 7b 的两个文件(BioASQ-training7b.zip 与 Task7BGoldenEnriched.zip)。社区脚本混用其他期 Task 的语料时,官方 670/75/140 的划分立即失效。

症状:BioASQ 子集加载报缺文件;或训练集规模明显大于 670;QA Accuracy 与已发表结果差距巨大。

解决:

  1. 简单方法:注册 bioasq.org → 手动下载两个 7b zip → 解压到数据根目录固定位置,路径写入配置而非硬编码。
  2. 进阶方法:在数据准备脚本中对 7b 文件做存在性检查与记录数断言(train/dev/test = 670/75/140),不满足即中止。
  3. SOTA 方法:把 BioASQ 的获取写成带人工步骤说明的 Makefile/README 目标,CI 中将其标记为"外部依赖",用预下载缓存供流水线使用,避免每次构建重复人工操作。

参考:github.com/iqvianlp/blurb-llm-benchmarking(其 README 明确列出手动下载步骤);bioasq.org。

⚠️ 坑点 4:PubMedQA 口径混用——BLURB 只用 1k 条 pqa_labeled(分类:评估误用)

问题:PubMedQA 社区生态有 pqa_labeled(1,000 条)、pqa_artificial(211k 条)、pqa_extended(61.2k 条)等多个子集,BLURB 的 450/50/500 只对应 pqa_labeled。用 pqa_artificial 训练/评测的成绩冒充 BLURB QA 成绩,或把 5k 版成绩写成 BLURB 分数,都属于口径错误。

症状:QA Accuracy 与论文报告的 BLURB 单项分对不上;测试集条数不是 500。

解决:

  1. 简单方法:显式加载 pqa_labeled 配置,断言划分计数 450/50/500。
  2. 进阶方法:在结果报告中并列注明"PubMedQA(pqa_labeled, 1k)"与所用训练数据(如是否额外用 pqa_artificial 做了中间训练),二者不可混写。
  3. SOTA 方法:用配置驱动的评测框架(如 lm-evaluation-harness 类工具的任务配置)固化数据口径,输出自带数据版本说明。

参考:BLURB 论文 Table 3;PubMedQA 论文(arXiv:1909.06146);HuggingFace qiaojin/PubMedQA 数据卡。

⚠️ 坑点 5:NER 报 token 级 F1 而非实体级 F1(分类:评估误用)

问题:BLURB 官方指标为实体级(entity-level)F1:预测与金标准实体的跨度与类型完全一致才计 TP。很多实现默认输出 token 级 F1,数值系统性偏高 5–15 个百分点,直接对比排行榜属于无效比较。EBM PICO 则相反,官方定义为词级 Macro F1——两类"词/实体级"口径极易混淆。

症状:自评 NER 成绩"超过"榜单头部;seqeval 默认输出与论文指标不一致;把 token F1 写进报告后无法与任何历史文献对表。

解决:

  1. 简单方法:使用 seqeval 的 f1_score(..., mode='strict', scheme=IOB2) 输出实体级 F1,并在日志中打印指标口径。
  2. 进阶方法:自实现实体级 TP 计数(按 (start, end, type) 三元组集合交并),与 seqeval 双轨互验;EBM PICO 单独走词级多轨 Macro。
  3. SOTA 方法:评测器单元测试化——用官方 5 个 NER 集的 dev 集跑通已知基线模型,锁定实体级 F1 数值回归基线,任何评测改动触发回归测试。

参考:BLURB 论文 Table 3 指标列;seqeval 文档;BLURB 论文关于"NER 无需复杂 tagging scheme"的消融结论。

⚠️ 坑点 6:DDI/GAD 划分数字跨论文版本不一致(分类:工程陷阱)

问题:BLURB 论文不同版本对 DDI 与 GAD 的划分计数有出入:arXiv v3 写 DDI 22,233/5,559/5,716 与 GAD 4,261/534/535,而 ACM 正式版(对应 arXiv v6)为 DDI 25,296/2,496/5,716 与 GAD 4,261/535/534。引用了哪个版本的数字,决定了校验断言与排行榜可比性。

症状:用 v3 数字写的单元测试在拿到正式版数据后报警(或反之);文献综述中 DDI train/dev 计数出现两套数字互相矛盾。

解决:

  1. 简单方法:一律以 ACM 正式版(DOI: 10.1145/3458754)Table 3 为准:DDI 25,296/2,496/5,716、GAD 4,261/535/534。
  2. 进阶方法:数据加载层不硬编码期望计数,而是读入后记录实际计数并写进实验元数据,与"声明口径"字段一起审计。
  3. SOTA 方法:在团队 Wiki 中维护"BLURB 数字权威表"(版本号 + 计数 + 链接),任何文档引用该表而非原始 PDF。

参考:arXiv:2007.15779 v3 与 v6 的 Table 3 差异;ACM DL 正式版。

⚠️ 坑点 7:小集方差不设防——BIOSSES/HoC 的±噪声淹没模型差异(分类:偏倚陷阱)

问题:BIOSSES 只有 20 个测试句对(Pearson),HoC 测试集 371 篇;单次评测的抽样噪声足以让两个真实水平相同的模型看起来相差 3–5 个百分点。BLURB 宏平均分中这些小集的波动被平摊进总分,令"总分高 0.1"毫无意义。

症状:消融实验在小集上出现不稳定的排名翻转;论文声称在某小集上 SOTA 但他人复现不中;总分排序对随机种子高度敏感。

解决:

  1. 简单方法:小集一律 ≥5 个随机种子,报告均值±标准差;显著性与否用置信区间表达。
  2. 进阶方法:对 BIOSSES 做 10 折交叉验证作为补充证据链;宏平均分解为"任务组内均值"分别报告,避免小集波动掩盖大集趋势。
  3. SOTA 方法:在排行榜对比中同时报告单集成绩与宏平均,并明确声明"总分差异 <0.5 分不构成方法优劣结论"。

参考:BLURB 论文宏平均设计(分组平均后再宏平均);BIOSSES 原始论文(DOI: 10.1093/bioinformatics/btw811)。

⚠️ 坑点 8:Windows/跨平台编码与 HF 缓存陷阱(分类:工程陷阱)

问题:EBM PICO 等含非 ASCII 字符的子集在 Windows 上用默认编码读取/下载会触发 UnicodeDecodeError(社区评测管线 README 明确要求 python -X utf8 运行数据准备);HuggingFace 版的自动缓存路径(默认 ~/.cache/huggingface)在多人服务器上易出现磁盘配额耗尽与缓存版本冲突。

症状:数据准备脚本在 Windows 上半途中断;EBM PICO 下载后解析报编码错误;多人共机时 datasets 缓存互相覆盖或磁盘满。

解决:

  1. 简单方法:Windows 上统一 python -X utf8 运行数据准备;所有 open() 显式 encoding="utf-8"。
  2. 进阶方法:为每个实验设置独立 HF_HOME/HF_DATASETS_CACHE 环境变量(路径含实验 ID),数据根目录全 UTF-8。
  3. SOTA 方法:容器化执行环境(固定 UTF-8 locale 的 Docker 镜像 + 显式数据卷挂载),把"编码正确性"固化进 CI 冒烟测试。

参考:github.com/iqvianlp/blurb-llm-benchmarking README(-X utf8 要求);HuggingFace datasets 缓存文档。

§6.6 数据增强

方法 适用子集 评价
同义替换/同义词典替换(MeSH 同义词) RE、文档分类 ✅ 安全——实体类型不变,关系语义大体保持
回译(英→中→英) RE、QA ⚠️ 慎用——化学名/基因名常被翻译破坏,NER 增广中禁止
随机 token 掩码(MLM 式) NER、RE ✅ 安全——在 subword 层做,不影响实体跨度定义
句子顺序打乱 NER ❌ 危险——BIO 标签与词序强绑定,打乱直接破坏标注
词级乱序 EBM PICO ❌ 危险——词级标注任务中词序即信息
大语言模型改写生成 各子集 ⚠️ 慎用——生成文本中的实体可能被改写/幻觉,标注需人工复核,且会改变与官方基准的可比性
跨集混合训练(如 BC5-chem + BC5-disease 多任务) NER 五集 ✅ 安全且常见——BLURB 论文实验即包含跨集策略比较,但单集评测口径不变

原则:任何增广只作用于 train/dev;test 永远保持原始分布;报告成绩时声明增广策略,否则与榜单不可比。

§6.7 模型推荐表

模型 BLURB 宏平均分 许可 适用场景 备注
BiomedBERT(原 PubMedBERT,abstract-only) 81.16 MIT NER/RE 基线与生产微调首选 领域词表 + 从零预训练;2023-11 改名
BiomedBERT(abstracts + fulltext) 81.01(等算力)/ 81.50(+60% 算力) MIT 需要全文知识场景 全文数据等算力下略低于纯摘要版
BioBERT v1.1 80.34 原始许可(学术) 历史对比基线 BERT 继续预训练路线代表
SciBERT 78.86 Apache-2.0 跨学科科学文本 SciVocab 词表,非医学专用
BlueBERT 76.27 原始许可 文献+临床混合域实验 预训练含 MIMIC-III 临床文本
BERT-base(通用) 76.11 Apache-2.0 领域差距参照 与 BiomedBERT 差 5 分即为领域适配收益
生成式 LLM(GPT-4 类,零/少样本) 分任务报告(NER/PICO 弱于微调 BERT 系) 闭源 问答/文档分类试点 IQVIA 2024/2025 复评:生成式模型在 token 级任务上不稳定

§6.8 硬件需求

阶段 最小配置 推荐配置 说明
NER/RE 单集微调 单卡 16GB(如 T4/V100) 单卡 24GB(3090/4090) BERT-base 级,batch 16–32 + 动态 padding
EBM PICO 全量微调 单卡 24GB + 梯度累积 多卡 2×24GB 339,167 词级元素,建议混合精度 + max_len 512
QA(PubMedQA/BioASQ) 单卡 16GB 单卡 24GB 上下文长,注意截断策略
全部 13 集扫描 4×16GB 4×24GB 或 A100 按任务分组的宏平均评测需 13 次微调
LLM 零样本评测 8×A100(本地部署)或 API API + 并发限速 提示 + 解析 + 官方指标复算

§6.9 评估指标代码

# 覆盖 BLURB 四类指标的参考实现:实体级 F1 / 词级 Macro F1 / Micro F1 / Pearson
from seqeval.metrics import f1_score as entity_f1          # 实体级
from sklearn.metrics import f1_score as sk_f1, pearsonr
import numpy as np

def eval_ner(y_true_seqs, y_pred_seqs):
    """NER:实体级 F1(跨度+类型完全一致才计 TP)"""
    return entity_f1(y_true_seqs, y_pred_seqs)             # strict/IOB2 口径见坑点 5

def eval_pico_wordlevel(y_true, y_pred, n_tracks=4):
    """EBM PICO:各轨词级 F1 的宏平均;空轨剔除"""
    per_track = []
    for t in range(n_tracks):
        yt = np.concatenate([row[t] for row in y_true])
        yp = np.concatenate([row[t] for row in y_pred])
        if yt.sum() == 0:                                  # 空轨跳过(信息性缺失)
            continue
        per_track.append(sk_f1(yt, yp))
    return float(np.mean(per_track))

def eval_re_micro(y_true, y_pred):
    """关系抽取:Micro F1(含负类,勿在预处理删除负样本)"""
    return sk_f1(y_true, y_pred, average="micro")

def eval_biosses(y_true_scores, y_pred_scores):
    """BIOSSES:Pearson 相关系数"""
    r, _ = pearsonr(np.asarray(y_true_scores), np.asarray(y_pred_scores))
    return float(r)

def eval_qa_accuracy(y_true, y_pred):
    """PubMedQA/BioASQ:Accuracy(maybe 是独立类别,勿二值化)"""
    return float(np.mean(np.asarray(y_true) == np.asarray(y_pred)))

§6.10 MLOps 笔记

  • 数据版本化:BLURB 没有集中的版本号发布,“版本”= 论文版本(以 ACM 版为准)+ 下载渠道 + 下载日期三要素,写入实验元数据(MLflow/W&B 的 data 卡片)。
  • 评测回归:把 dev 集成绩做成 CI 门禁;NER 用 seqeval strict 模式,任何评测器改动跑官方 dev 基线回归。
  • 排行榜提交纪律:test 只评一次;如用 dev 反复调参会造成事实上的测试过拟合,禁止把 test 成绩写进迭代日志参与决策。
  • 模型注册:微调后的 checkpoint 命名建议 {model}-blurb-{subset}-{date},附 eval.json(各子集指标 + 口径声明 + 数据指纹)。
  • 漂移监控:上线后的文献抽取模型建议按季度抽样新发表摘要做人工复核;PubMed 语料的术语与缩写随时间漂移(如新药命名风格),三年以上未复训的 NER 模型应触发复评。

§7 质量评估与局限性

§7.1 已知偏倚

偏倚类型 描述 严重程度 缓解
语料域偏倚 13 集全部来自英文 PubMed 摘要,分子生物学/药理学主题过采样,外科、影像、公共卫生等文献稀少 高 明确 BLURB 评测域边界;临床笔记任务改用临床基准
时代偏倚 JNLPBA(2004)、BC2GM(2008)等语料的术语体系停留在构建年代,新实体(新型疗法、新药名)系统性缺位 中 迁移到新语料前做增量预训练;定期用新文献抽样评测
实体频率长尾 NER/RE 语料中高频实体与关系类型主导,罕见实体(孤儿病、新分子)样本极少 中 增广 rare class;评测补充宏平均口径
摘要 vs 全文 摘要文本结构规整、缩写密集,与全文/临床叙事分布不同;BLURB 不含全文与临床笔记 高 论文自身实验显示全文预训练收益有限;临床应用须另行验证
英语单一 全部语料为英文,中文/其他语种成绩无法外推 中 跨语任务用 CBLUE 等中文基准补测
众包噪声 EBM PICO 含众包标注成分,PICO 边界判断主观性高 中 用专家确认子集;评测按官方词级口径
任务窄化 QA 只取 yes/no 分类式问答,排除列表/摘要式 QA;RE 只测句内关系 中 不要把 BLURB QA 成绩解读为通用医学问答能力

§7.2 标注质量

12/13 子集为共享任务级金标准(双标注 + 仲裁流程),质量经过学界二十余年的复用检验;唯 EBM PICO 采用众包 + 专家混合,噪声相对较高,BLURB 论文以词级 Macro F1 弱化单点标注误差的影响。NCBI-disease 的 6,892 个提及中 91% 可链接到唯一疾病概念,其余为概念组合描述,实体边界与概念归一的主观性集中在少数复杂提及上。各子集原始论文中的 IAA 数字未随 BLURB 统一重发布,需要时回溯原始文献(§2.6、§9)。

§7.3 泛化性评估

部署场景 失效风险 证据
PubMed 摘要抽取(与训练同分布) 低 排行榜各集 dev/test 成绩稳定,BERT 系宏平均 76–81
期刊全文抽取 中-高 论文实验:PMC 全文预训练在摘要任务上收益有限甚至持平(81.16→81.01 等算力),文本风格差异显著
临床病历/出院小结 NER 高 BLURB 论文明确论证临床笔记与文献域差异大(BLUE 混合域设计被其质疑),临床域需专用基准与模型
中文医疗文献 高 语料全英文;中文场景应使用 CBLUE 类中文基准验证
新实体类型(如新型 RNA 疗法) 中-高 语料年代偏倚(§7.1),旧实体体系覆盖不足
生成式 LLM 零样本 token 级任务 高 社区 LLM 复评显示 NER/PICO 上零样本生成格式不稳定,成绩显著低于微调 BERT 系

§7.4 伦理评估

BLURB 全部内容由已公开发表的学术文献构成,无患者个体数据、无 PHI,不需要 IRB 或 DUA;主要合规义务是学术引用与逐集许可:各子集随共享任务发布时附带各自条款(多数要求引用原论文、部分限制商业用途),BioASQ 需注册获取。BLURB 论文与排行榜明确以"降低生物医学 NLP 门槛、加速领域进步"为宗旨(官方数据卡原文),属于开放科研基础设施。风险面:文献挖掘模型可被用于药企选择性引证(cherry-picking 文献证据),使用者在把模型输出写入证据库时应有专家复核环节。

§7.5 公平性

文献基准不涉及患者人群公平性,但存在"知识公平性"维度:语料以英美欧主流期刊为主,发展中国家特有疾病(热带病等)文献占比低,模型在这些主题上的抽取能力未被评测;女性/少数群体相关健康主题同样随文献总体分布进入语料,无主动平衡。以 BLURB 成绩宣传"全医学覆盖"的产品声明属于超范围使用。

§7.6 数据漂移

PubMed 文献体系持续演化:新药命名、基因符号更新(HGNC 定期修订)、缩写语义漂移(同名缩写跨年代指代不同实体)都会造成训练语料与部署语料的分布差异。BLURB 语料冻结于 2020 年聚合时点,此后发表的文献风格(如 COVID-19 时代的文献爆发)未在基准中体现。工程对策:上线模型按 §6.10 做季度抽样复评;需要跟进新术语时用新文献做继续预训练而非重新标注。

§7.7 DAIMS 数据质量评估

# 检查项 状态 说明
1 宽格式 ✅ TSV/JSON 结构化,每行一个标注单元,可直接读入 DataFrame
2 唯一标识 ✅ 句 ID/文档 ID/问题 ID 在子集内唯一;跨子集以子集名为命名空间
3 特殊字符 ✅ UTF-8 编码;化学式与希腊字母正常保留(Windows 需显式 UTF-8,见坑点 8)
4 重复行 ⚠️ 官方未做跨划分句级去重;同摘要复现句可能重复,复现时不应擅自去重(§6.3)
5 缺失编码 ✅ 负样本(Intangible、无关系)为显式类目而非空值
6 标签标识 ✅ BIO 体系规范;RE/QA 类别枚举清晰
7 罕见类分组 ⚠️ 长尾关系类型与罕见实体无官方分组策略,需用户自行处理
8 偏倚评估 ✅ BLURB 论文含系统消融;本页 §7.1 偏倚表完整
9 数据字典 ⚠️ 无官方统一字段字典;字段语义分散在各子集文档,本页 §4.1 为首个中文统一字典
10 信息性缺失解释 ✅ PubMedQA maybe、EBM PICO 空轨、RE 负类均有明确语义
11 设备记录 ❌ 纯文献语料,无设备维度(不适用)
12 共线性 ✅ 文本任务无特征共线性问题(不适用,通过)
13 编码映射 ⚠️ 实体链接目标(MeSH/OMIM/NCBI Gene)未统一为单一术语体系,下游归一需自行建设
14 时间戳处理 ❌ 无逐条时间戳字段;语料年代信息仅到"构建年份"粒度
15 划分建议 ✅ 官方固定 train/dev/test,口径明确(§5.1)
16 泄漏讨论 ✅ 预训练语料与 QA 上下文重叠、划分混用风险均有公开讨论(§5.3、坑点 1)
17 标签分布 ⚠️ 官方未随基准发布统一分布表,需自行统计(§4.2、§6.3 提供代码)
18 测量偏倚 ⚠️ 实体边界与 PICO 归属含标注者主观性;EBM PICO 众包噪声相对高
19 外部验证建议 ✅ 本页 §5.6 + §7.8 提供外部验证路径与同行评审参照
20 版本记录 ⚠️ 无集中版本号发布;arXiv 各版数字有差异(坑点 6),需以 ACM 版为准
21 预处理脚本 ⚠️ 官方无一站式脚本包;HF 社区加载脚本 + 本页 §6.3 可补齐
22 合规要求 ✅ 公开文献、无 PHI;逐集许可清晰可查(个别需注册)
23 多模态对齐 ❌ 单模态文本基准(不适用)
24 去标识化 ✅ 无患者数据,无需去标识化;作者署名属文献元数据

DAIMS 评分:17.5 / 24

评分解读:作为文本基准,BLURB 的结构化程度、官方划分纪律与合规清晰度达到优秀水准(三项 ❌ 均为"不适用"而非"不合格"——设备记录、时间戳、多模态对齐对纯文献语料本就无意义)。扣分集中在"基准聚合"的天然短板:无统一数据字典与标签分布发布、无集中版本管理、实体链接未标准化,这些意味着接手者需要自行完成一部分"地基"工作。

对你意味着什么:如果你做的是 NER/RE 模型对比或领域预训练研究,BLURB 的官方划分与指标纪律足以支撑严谨实验,直接开箱即可;如果你要把 BLURB 语料用于生产管线(文献监控系统、药物安全知识库),需补三件事——自建字段与术语归一字典(§4.1/§2.1b 起步)、锁定数据版本指纹(坑点 1/6 的做法)、为长尾类别制定专属分组与增广策略(§7.1)。

§7.8 外部验证矩阵

外部数据集/场景 来源机构 评估任务 性能指标 相对内部变化 关键发现
BioMegatron 预训练缩放实验 NVIDIA BLURB NER/RE 子集 实体级 F1 / Micro F1 模型放大(BERT-large 级)相对 BERT-base 增益有限 生物医学域语料下模型规模收益递减,数据质量优先于参数量
BioGPT Microsoft Research BLURB 关系抽取(DDI/ChemProt/GAD 等) Micro F1 生成式预训练模型在 RE 子集上超越同期判别式基线 生成式架构可迁移到判别式任务,生物医学 GPT 类模型报告 BLURB 成绩成为惯例
BioLinkBERT / LinkBERT Stanford / Microsoft BLURB NER 与 RE 实体级 F1 / Micro F1 文档级/引用链接级预训练目标带来稳定小幅提升 预训练目标设计(文档间链接)比单纯堆数据更有效
生成式 LLM 零/少样本复评 IQVIA NLP 全部/多数子集 官方指标复算 GPT-4 类模型在 NER/PICO 上显著低于微调 BERT 系;文档分类/QA 差距缩小 token 级任务仍是微调专用模型的优势区;LLM 评测管线已开源可复用

上述研究均为同行评审或公开发表的系统评测;表格不并列精确分数的原因是各研究的提示词/微调协议不同,数字不可直接比较(与 §8.1 排行榜同一逻辑)。


§8 基准性能与生态

§8.1 排行榜与基准成绩

BLURB 论文报告的 fine-tune 宏平均分(同协议可比较;后续榜单提交的协议各异,跨来源数字不可直接混排):

排名 模型 BLURB 宏平均分 年份 关键技术 完整引用 代码
1 PubMedBERT(abstracts-only) 81.16 2020 领域词表 + 从零预训练(14M 摘要) Gu et al., 2021, ACM Trans. Comput. Healthcare. DOI: 10.1145/3458754 HuggingFace
2 BioBERT v1.1 80.34 2019 BERT 继续预训练(PubMed+PMC) Lee et al., 2020, Bioinformatics. DOI: 10.1093/bioinformatics/btz682 GitHub
3 SciBERT 78.86 2019 SciVocab 词表 + 科学语料预训练 Beltagy et al., 2019, arXiv:1903.10676 GitHub
4 ClinicalBERT(Bio_ClinicalBERT) 77.29 2019 MIMIC-III 临床笔记继续预训练 Alsentzer et al., 2019, arXiv:1904.03323 HuggingFace
5 BlueBERT 76.27 2019 PubMed+MIMIC-III 混合继续预训练 Peng et al., 2019, arXiv:1906.05474 GitHub
6 BERT-base(uncased,通用) 76.11 2018 通用域基线 Devlin et al., 2019, NAACL. DOI: 10.18653/v1/N19-1423 GitHub

⚠️ 数值不可直接比较的原因:后续榜单提交使用了不同的微调超参、早停策略与数据增强,且部分提交未公开代码;本表固定为 BLURB 原论文统一协议下的结果,是唯一同协议可比的一组数字。

§8.2 SOTA 总结与选型建议

  • NER/RE 生产微调:首选 BiomedBERT(abstract-only)。它以最简单的"从零预训练"路线拿到 81.16,权重 MIT 许可、生态兼容 transformers。
  • 需要全文/长文档理解:选 BiomedBERT(abstracts+fulltext),但要接受等算力下宏平均分略低(81.01)的现实,其优势在长上下文任务而非摘要任务。
  • 跨学科科学文本(含非医学):SciBERT 仍有价值;纯医学场景下被 BiomedBERT 全面覆盖。
  • LLM 时代:文档分类与 QA 可试点生成式模型,token 级任务(NER、PICO)保持微调专用模型(§6.7、§7.8)。
  • 历史结论的正确打开方式:"BERT-base 与 BiomedBERT 的 5 分差距"就是领域预训练收益的量化锚点,任何新预训练方法都应以"超过 81.16"为宣言门槛。

§8.3 评测协议

  1. 每个子集独立微调(训练集训练、开发集调参)。
  2. 指标:NER 实体级 F1;EBM PICO 词级 Macro F1;RE Micro F1;BIOSSES Pearson;HoC Micro F1;QA Accuracy。
  3. 任务组内先平均(如 NER 五集均值),再对 6 个任务组取宏平均,得 BLURB 总分。
  4. 排行榜模型无关:任何能用相同 train/dev 产出 test 预测的系统均可提交;多数子集 test 标签由榜单侧持有。
  5. 复现声明规范:报告时注明数据渠道(官方/HF)、划分口径(ACM 版)、指标实现(实体级 vs token 级)。
数据集 机构 任务域 与 BLURB 的关系 链接
BLUE Harvard/MIT(Peng et al.) 5 任务 10 集(文献+临床混合) BLURB 的前身与对照基准;BLURB 明确只做文献域 arXiv:1906.05474
BioRED NCBI(Luo et al. 2022) 多类型实体关系(全文) 更细的关系类型体系,可作 BLURB RE 的进阶评测 NLMD
CBLUE 中文社区 8 任务中文医疗 NLP 中文域对照基准 GitHub CBLUEbenchmark
MultiMedBench Med-Gemini 团队(2024) 14 任务多模态 面向多模态医疗大模型的后续生态 Google Research
PubMedQA 全集 Jin et al. 三个子集(1k/61.2k/211k) BLURB 只取 pqa_labeled 1k;全集用于中间训练 arXiv:1909.06146
13 个子集原始语料 BioCreative/NCBI/BioASQ 等 各自任务 BLURB 的数据源;许可与原始划分在各自主页 §3.10 溯源链

§8.5 关键论文 Top 10

  1. Gu et al., 2021, ACM Trans. Comput. Healthcare. DOI: 10.1145/3458754 — BLURB 基准与 PubMedBERT 的原始论文,"从零领域预训练"范式的奠基作。
  2. Lee et al., 2020, Bioinformatics. DOI: 10.1093/bioinformatics/btz682 — BioBERT:生物医学 BERT 继续预训练的代表,BLURB 对比的核心基线。
  3. Beltagy et al., 2019, arXiv:1903.10676 — SciBERT:科学文本专用词表与预训练。
  4. Devlin et al., 2019, NAACL. DOI: 10.18653/v1/N19-1423 — BERT 本体,BLURB 的通用域参照系。
  5. Peng et al., 2019, arXiv:1906.05474 — BLUE 基准与 BlueBERT:BLURB 直接对话的前身工作。
  6. Crichton et al., 2017, Bioinformatics. DOI: 10.1093/bioinformatics/btx228 — BioNER 多任务神经网络与 BLURB 采用的统一预处理划分。
  7. Soğancıoğlu et al., 2017, Bioinformatics. DOI: 10.1093/bioinformatics/btw811 — BIOSSES:BLURB 句相似度子集的原始论文。
  8. Jin et al., 2019, arXiv:1909.06146 — PubMedQA:BLURB QA 子集来源,专家回答的 yes/no/maybe 体系。
  9. Li et al., 2016, Database. DOI: 10.1093/database/baw068 — BioCreative V CDR 语料(BC5-chem/disease 源头)。
  10. Tsatsaronis et al., 2015, J. Biomedical Informatics. DOI: 10.1016/j.jbi.2015.07.007 — BioASQ:BLURB 另一 QA 子集的权威描述。

其余子集的源头文献补充(引用单个子集时应同时引用对应源头论文,见 §9.3):

子集 源头论文 出处
DDI(DDIExtraction 2013 语料) Herrero-Zazo et al., 2013 Database, DOI: 10.1093/database/bat074
ChemProt Krallinger et al., 2017 SemEval-2017 Task 10(生物医学化学—蛋白质关系抽取)
HoC Pyysalo et al., 2012 J. Biomedical Informatics(十大癌症标志性特征语料)
EBM PICO Nye et al., 2018 EBM-NLP 语料论文(人群/干预/对照/结局标注体系)
BC2GM / JNLPBA / NCBI-disease 各自共享任务/团队论文 官方 tasks.html 各子集页给出原始出处

说明:BC2GM 源于 BioCreative II 基因归一化任务、JNLPBA 源于 GENIA 体系、NCBI-disease 由 NCBI 团队构建——三者均为 BLURB 论文 §4 与官方任务页背书的通行出处;本页不复制其详细引文信息,以官方任务页为准,避免转引失真。

§8.6 社区活跃度

  • 论文引用 2,745 次(Semantic Scholar,截至 2026-09),是生物医学预训练方向的必引基准。
  • BiomedBERT 权重在 HuggingFace 生态中被广泛用作生物医学文本编码底座;改名(2023-11)后旧名 PubMedBERT 的模型卡与教程仍大量流传,检索两个名字均可命中。
  • bigbio/blurb 与 EMBO/BLURB 提供社区维护的 datasets 加载脚本;IQVIA 2024/2025 发布的 LLM 评测管线(Apache-2.0)延续 BLURB 在大模型时代的评测生命。
  • 官方排行榜更新节奏放缓(BLURB 团队重心转向后续工作),社区前沿评测更多出现在 Papers with Code 与各新模型论文的自报告中——引用 BLURB 成绩时注意区分"原论文协议"与"自报协议"。

§8.7 生态快照

资源 类型 链接 状态(截至 2026-09) 推荐理由
BLURB 官方主页/排行榜 官方站点 https://microsoft.github.io/BLURB/ 在线(aka.ms/BLURB 可达) 任务定义、各集入口与榜单的权威源
BiomedBERT 模型卡 官方模型 huggingface.co/microsoft/BiomedNLP-BiomedBERT-base-uncased-abstract MIT 许可开放 BLURB 首名模型的正式分发渠道
bigbio/blurb 社区数据加载 huggingface.co/datasets/bigbio/blurb 维护中(MIXED 许可标注) datasets 一键加载,字段统一
EMBO/BLURB 社区数据加载 huggingface.co/datasets/EMBO/BLURB Apache-2.0 脚本 备选加载渠道
IQVIA blurb-llm-benchmarking 评测管线 github.com/iqvianlp/blurb-llm-benchmarking Apache-2.0 开源 LLM 时代复评 BLURB 的现成脚手架
BLURB 论文(arXiv/ACM) 论文 arxiv.org/abs/2007.15779 | doi.org/10.1145/3458754 v6/正式版 一切数字的最终裁定版

§9 相关资源与引用

§9.1 官方资源列表

资源 说明 链接
BLURB 官方主页 项目概览与总分规则 https://microsoft.github.io/BLURB/index.html
任务与数据集页 13 子集定义、下载入口、指标 https://microsoft.github.io/BLURB/tasks.html
BLURB 排行榜 模型无关提交入口 https://microsoft.github.io/BLURB/leaderboard.html
论文预印本 arXiv:2007.15779(v6 为准) https://arxiv.org/abs/2007.15779
论文正式版 ACM THS 3(1):1–23 https://dl.acm.org/doi/10.1145/3458754
BiomedBERT 权重 原 PubMedBERT(MIT) https://huggingface.co/microsoft/BiomedNLP-BiomedBERT-base-uncased-abstract-fulltext
PubMedQA 数据 pqa_labeled 等 https://huggingface.co/datasets/qiaojin/PubMedQA
BioASQ 注册下载 Task 7b 语料 https://www.bioasq.org
LLM 评测管线(社区) IQVIA 开源复评脚手架 https://github.com/iqvianlp/blurb-llm-benchmarking

§9.2 BibTeX 完整引用

@article{gu2021domain,
  title     = {Domain-specific language model pretraining for biomedical
               natural language processing},
  author    = {Gu, Yu and Tinn, Robert and Cheng, Hao and Lucas, Michael and
               Usuyama, Naoto and Liu, Xiaodong and Naumann, Tristan and
               Gao, Jianfeng and Poon, Hoifung},
  journal   = {ACM Transactions on Computing for Healthcare},
  volume    = {3},
  number    = {1},
  pages     = {1--23},
  year      = {2021},
  publisher = {ACM New York, NY},
  doi       = {10.1145/3458754}
}

§9.3 引用指南

引用什么:

  1. 使用 BLURB 整体(多子集或基准框架):正文与数据集卡引用 Gu et al. 2021(§9.2 BibTeX 原样复制,DOI: 10.1145/3458754;预印本渠道引用 arXiv:2007.15779 时注明"以 ACM 正式版为准")。
  2. 只使用单个子集:同时引用该子集的源头论文——§8.5 第 6–10 条覆盖 Crichton 2017(NER 预处理版)、BIOSSES、PubMedQA、BC5CDR、BioASQ;补充表覆盖 DDI、ChemProt、HoC、EBM PICO。
  3. 使用 BiomedBERT 权重:在模型卡/致谢层面引用同一论文,并注明 2023-11 由 PubMedBERT 改名 BiomedBERT、权重经 HuggingFace 以 MIT 许可分发。

如何报告成绩(每条都必须成立,缺一即视为不可比):

报告要素 必写内容 反例(不合规)
协议口径 “原论文统一协议"或"自报协议/不同 checkpoint” 只写"BLURB 上 82 分"
数据渠道 子集文件版本/社区加载脚本名(bigbio、EMBO 等) 不注明数据来源
指标定义 实体级 F1(NER)/词级 Macro F1(PICO)/Micro F1(RE、HoC)/Pearson(BIOSSES)/Accuracy(QA) 用 token F1 充当实体级 F1
划分版本 官方三划分(NER 沿 Crichton 2017 版) 混用 PubMedQA 2.5k 等扩充口径冒充 1k 口径

常见引用错误:

  • 把 BLUE(Peng et al. 2019)与 BLURB 的成绩混排——两者子集重叠但划分与总分不可互换。
  • 引用已失效的 github.com/microsoft/BLURB 仓库链接——官方仅经 microsoft.github.io/BLURB 分发。
  • 引用 SciTail/MNLI-Bio 等不存在于 BLURB 的子集(BLURB 的第六任务为 PICO 抽取,非 NLI)。

§10 AI 使用声明卡

§10.1 AI 模型列表

模型 版本/供应商 用途
Claude(Anthropic) 2025 本页初稿撰写(结构、语言组织、代码框架)
fast-model(CodeBuddy 内置) 2026 检索结果整理与事实核对辅助

§10.2 AI 参与范围

AI 参与本页的结构组织、文字撰写、代码示例起草与格式规范化;全部关键数字(13 集划分计数、宏平均分、引用数、许可信息)均来自 §10.3 所列公开来源的检索结果,由编辑流程逐项核对;AI 未虚构任何数字,未访问任何非公开数据源。

§10.3 输入来源列表

  1. Gu et al., 2021, ACM Trans. Comput. Healthcare. DOI: 10.1145/3458754(BLURB 原始论文,ACM 正式版 Table 3 为本页划分数字权威源)
  2. Gu et al., 2020, arXiv:2007.15779(预印本 v1/v3/v6,版本间 DDI/GAD 数字差异的核对依据)https://arxiv.org/abs/2007.15779
  3. BLURB 官方主页 https://microsoft.github.io/BLURB/index.html
  4. BLURB 任务/数据集页 https://microsoft.github.io/BLURB/tasks.html
  5. BLURB 排行榜 https://microsoft.github.io/BLURB/leaderboard.html(aka.ms/BLURB)
  6. HuggingFace 数据卡 bigbio/blurb https://huggingface.co/datasets/bigbio/blurb(MIXED 许可标注与 BibTeX)
  7. HuggingFace 数据卡 EMBO/BLURB https://huggingface.co/datasets/EMBO/BLURB(Apache-2.0 脚本)
  8. HuggingFace 模型卡 microsoft/BiomedNLP-BiomedBERT-base-uncased-abstract-fulltext https://huggingface.co/microsoft/BiomedNLP-BiomedBERT-base-uncased-abstract-fulltext(MIT 许可、改名说明)
  9. Semantic Scholar 引用计数 API(DOI:10.1145/3458754,2,745 次,截至 2026-09)https://api.semanticscholar.org/graph/v1/paper/DOI:10.1145/3458754
  10. bio.rodeo 模型页 PubMedBERT (BiomedBERT) https://bio.rodeo/models/pubmedbert(81.16/80.34/78.86/77.29/76.27/76.11 分数与预训练细节,与论文一致)
  11. IQVIA blurb-llm-benchmarking https://github.com/iqvianlp/blurb-llm-benchmarking(BioASQ 手动下载步骤、EBM-PICO UTF-8 注意事项、LLM 复评)
  12. Lee et al., 2020, Bioinformatics. DOI: 10.1093/bioinformatics/btz682(BioBERT)
  13. Crichton et al., 2017, Bioinformatics. DOI: 10.1093/bioinformatics/btx228(BLURB 所用 BioNER 预处理划分)
  14. Jin et al., 2019, arXiv:1909.06146(PubMedQA)
  15. Soğancıoğlu et al., 2017, Bioinformatics. DOI: 10.1093/bioinformatics/btw811(BIOSSES)
  16. Li et al., 2016, Database. DOI: 10.1093/database/baw068(BioCreative V CDR 语料)

§10.4 人工校验表

内容模块 审核者 审核方式 审核状态
§2 医学背景(实体映射、任务定义、金标准溯源) 千方病案医学编辑部 交叉审核 ✅ 已通过
§3 数据集规格(13 集划分计数、版本矩阵) 千方病案医学编辑部 与 ACM 正式版 Table 3 及 arXiv v6 交叉比对 ✅ 已验证
§4 数据结构(目录树、DAIMS 字段字典) 千方病案医学编辑部 与官方 tasks.html 及 HF 数据卡交叉比对 ✅ 已验证
§5 数据划分策略与泄漏分析 千方病案医学编辑部 交叉审核 ✅ 已通过
§6 代码示例与 8 个坑点 千方病案医学编辑部 逻辑审查 + 与社区评测管线文档比对 ✅ 已通过
§7 质量评估与 DAIMS 评分 千方病案医学编辑部 交叉审核 ✅ 已通过
§8 排行榜数字与引用数表述 千方病案医学编辑部 与原论文及 Semantic Scholar 快照交叉比对 ✅ 已验证
§C JSON-LD @graph 千方病案医学编辑部 Schema v3.9 字段逐项校验 ✅ 已通过

§10.5 AI 生成章节标注

本页全部章节由 AI 辅助生成初稿;§3.2 划分数字表、§8.1 排行榜分数、§9.2 BibTeX 为检索来源的逐项转录,非 AI 推断内容;§1.2、§2.5、§7.7 的分析与解读为编辑流程指导下的 AI 撰写并经人工审核。

§10.6 最后人工审核日期

2026-09-05(与 §0 审核日期一致)

页面状态:published(全部内容已完成审核并发布)


相关数据集导航

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

  • i2b2-n2c2-nlp — 共享标签:医疗NLP / 医学问答与基准 / 评测基准
  • cblue — 共享标签:医疗NLP / 医学问答与基准 / 评测基准
  • bc2gm — 共享标签:医疗NLP / 医学问答与基准 / 评测基准
  • blue-benchmark — 共享标签:医疗NLP / 医学问答与基准 / 评测基准
  • rxqa — 共享标签:医疗NLP / 医学问答与基准 / 评测基准
  • mednli — 共享标签:医疗NLP / 医学问答与基准 / 评测基准
  • scifact — 共享标签:医疗NLP / 医学问答与基准 / 评测基准
  • healthsearchqa — 共享标签:医疗NLP / 医学问答与基准 / 评测基准
  • claimify — 共享标签:医疗NLP / 医学问答与基准 / 评测基准
  • omnimedvqa — 共享标签:医疗NLP / 评测基准

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

返回 AI-Ready 数据集