BioRED — 生物医学文档级关系抽取黄金标准 AI-Ready Wikipedia

600 篇 PubMed 摘要、6 类实体、8 类非方向性关系的文档级关系抽取金标准语料

来源 NCBI(NLM/NIH)/ BioRED 语料团队 url: https://www.ncbi.nlm.nih.gov/research/bionlp/Tools/BioRED/发布时间: 2026-09-16最后更新: 2026-09-25 阅读 40
BioRED — 生物医学文档级关系抽取黄金标准 AI-Ready Wikipedia

信息速览

数据集名称BioRED — 生物医学文档级关系抽取黄金标准 AI-Ready Wikipedia
数据类型600 篇 PubMed 摘要,6,503 条人工标注关系,20,419 个实体提及,6 类实体 8 类关系,PubTator 格式,免费开放下载
规模不适用(公开文献摘要语料,不含患者级数据)
接入方式NCBI(NLM/NIH)/ BioRED 语料团队 url: https://www.ncbi.nlm.nih.gov/research/bionlp/Tools/BioRED/
AI 就绪度

数据集封面

BioRED 生物医学关系抽取 — 文档级关系抽取金标准 AI-Ready Wikipedia

INFOBOX

字段 内容
数据集名称 BioRED 生物医学关系抽取
英文全称 Biomedical Relation Extraction Dataset(BioRED)
别名/简称 BioRED corpus、BioRED dataset、BioRED 语料
疾病分类(ICD-11) 全疾病谱:2C60(乳腺恶性肿瘤)、5A11(2 型糖尿病)、CA23(哮喘)、8A00(帕金森病)等主题在语料中出现(原生受控词表为 MeSH/MEDIC,接入 ICD-11 需经 UMLS 交叉映射,见 §2.1)
SNOMED CT 覆盖全谱系疾病概念(如 254837009 乳腺恶性肿瘤、44054006 2 型糖尿病、195967001 哮喘、18127003 帕金森病),语料原生词表为 MeSH/MEDIC,映射路径见 §2.1b
数据模态 生物医学文献摘要文本(英文)
AI 任务类型 文档级关系抽取(8 类非方向性)、命名实体识别(6 类)、概念归一化(6 大知识库)、新颖性检测(novel/known)
样本总数 600 篇 PubMed 摘要(400 训练 + 100 开发 + 100 测试)
数据大小 轻量文本压缩包 BIORED.zip 2.1 MB(另有官方模型包 828 MB 与源码包 333 KB,见 §6.2)
数据格式 PubTator(tab 分隔纯文本)
许可证 Public Domain(美国政府作品,无使用/复现限制;官方要求引用论文)
访问级别 开放(无需注册、无 DUA)
DUO 标签 NRES(无限制使用)
语言 英文
首发日期 2022-04(数据包上传 FTP);论文 2022-07-19 在线发表
最后更新 2023-06-27(官方源码包);2024 年发布 BioCreative VIII 扩展评测集(追加 400 篇盲测)
发布机构 NCBI(NLM/NIH),Rancho BioSciences 与 NCATS 参与策展支持
官方主页 https://www.ncbi.nlm.nih.gov/research/bionlp/Tools/BioRED/
下载地址 https://ftp.ncbi.nlm.nih.gov/pub/lu/BioRED/BIORED.zip
DOI 10.1093/bib/bbac282
引用次数 227+(Google Scholar,截至 2026-09;Scopus 计 152)
AI 就绪度评分 ⭐⭐⭐⭐(4/5)— 官方三段划分、PubTator 单一格式、体量小易复现、公共领域许可;扣分项:需自写 PubTator 解析器与文档级三档评测器,8 类关系长尾极重,测试集公开多年存在评测过拟合风险
页面状态 published

§0 E-E-A-T 审核与免责

  • 医学审核:千方病案医学编辑部交叉审核:§2 医学背景(基因-疾病、化学-疾病等关系主题的 ICD-11 与 SNOMED CT 映射)、§7 偏倚分析。
  • 数据工程审核:[千方病案医学编辑部交叉审核] 医疗 AI 数据工程师,审核范围:§4 DAIMS 数据字典、§5 数据划分策略、§6 预处理 Pipeline 和坑点。
  • 审核日期:2026-09-05

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

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

数据使用合规:使用本页面描述的数据集前,请务必阅读并遵守数据集原始许可协议。BioRED 由美国国家医学图书馆 NCBI 创作、以 Public Domain(美国政府作品)开放发布,无需注册或签署使用协议;NCBI 官方免责声明明确该资源不用于直接诊断或医疗决策;跨区域使用请自行确认当地法规要求。DUO 标签仅供参考,具体使用限制以数据集官方协议为准。

§1 数据集概览

§1.0 📌 30 秒速览

  • 是什么:NCBI 发布的首个文档级生物医学关系抽取黄金标准语料,600 篇 PubMed 摘要,同时标注实体、概念 ID、关系与新颖性四个层次。
  • 规模:20,419 个实体提及(唯一概念 3,869 个)+ 6,503 条关系,其中 69% 为"新颖关系"——即文献从未以结构化形式记录过的知识。
  • 任务形态:给定一篇摘要,抽取所有实体对并判定 8 类非方向性关系(Association、Positive_Correlation、Negative_Correlation、Bind、Cotreatment、Comparison、Drug_Interaction、Conversion)。
  • 划分:400/100/100(训练/开发/测试),关系数 4,178/1,162/1,163。
  • 许可:Public Domain(美国政府作品),免注册、免审批,即下即用。
  • 一句话选型:做文档级关系抽取或评测 LLM 生物医学信息抽取能力,BioRED 是当前社区事实标准之一;若只需化学-疾病单一关系,可选更专注的 BC5CDR。

§1.1 摘要

在 BioRED 之前,生物医学关系抽取语料普遍存在三个局限:关系类型单一(如 BC5CDR 只有化学-疾病关系)、实体类型单一、句级标注无法覆盖跨句断言。BioRED 由 NCBI(美国国家卫生研究院国家医学图书馆下属国家生物技术信息中心)团队于 2022 年构建,论文发表于 Briefings in Bioinformatics(Luo et al., bbac282)。语料从五个既有经典语料(BC5CDR、tmVar、NLM-Gene、BC2GN、NCBI Disease)中抽样 600 篇摘要,在 PubTator 工具预标注基础上由每篇 3 名生物医学信息学标注者人工修正实体并从零标注关系,分歧交资深分子生物学标注者仲裁。

BioRED 的四个关键设计使其区别于前代语料:① 实体覆盖 6 类(Gene、Disease、Chemical、Variant、Species、CellLine),关系覆盖 8 类非方向性类型,形成 8 组实体对组合;② 关系是文档级的——两个实体分处摘要不同句子甚至标题与摘要末尾,只要摘要有明确证据即可成边;③ 每个实体提及附带知识库概念 ID(NCBI Gene、MEDIC/MeSH、dbSNP、NCBI Taxonomy、Cellosaurus),支持知识图谱级评测;④ 每条关系额外标注新颖性(novel/known),可评测模型能否发现文献未记录的新知识——这一维度在 6,503 条关系中占 69%。

自发布以来,BioRED 已成为 BioCreative VIII 共享任务(2023-2024)的官方语料,并被 LitCoin NLP Challenge 等大规模评测采用(官方 GitHub 记载 200+ 队参赛),引用超过 227 次(Google Scholar,截至 2026-09),是生物医学文献知识挖掘方向引用增长最快的资源之一。

§1.2 战略价值

  1. 填补文档级空白:BioRED 是首批把"跨句关系"作为一等公民的生物医学金标准语料。论文官方示例中,PCSK9 基因的 D374Y 突变与常染色体显性高胆固醇血症的证据分处摘要不同句子,句级模型天然无法捕获。
  2. 评测 LLM 的理想考场:8 类关系、6 类实体、三档递进任务设计(实体对→类型→新颖性),可以在一个语料上完整测出模型"找边—定类—判新"三层能力。2024 年以来的零样本 LLM 评测显示,即使是 7-8B 参数模型在该语料上的零样本成绩也远低于监督基线(见 §8.1),凸显其区分度。
  3. 知识图谱补全的训练弹药:概念 ID 直接对齐 NCBI Gene、MeSH/MEDIC、dbSNP、Taxonomy、Cellosaurus,抽出的关系可直接落地为五库间的边,无需二次对齐。
  4. 新颖性维度独此一家:69% novel 关系占比意味着该语料不只是"复读已有知识库",更在评测模型能否从自由文本中发现知识库缺失的断言——这是文献挖掘的核心价值主张。
  5. 公共领域零摩擦:美国政府作品许可 + 2.1 MB 体量 + 纯文本格式,从决定用到数据进内存不超过十分钟,是教学、基准复现与快速原型的不二之选。

§1.3 同类数据集横向对比

下表对比 BioRED 与其抽样来源语料及其他主流生物医学关系抽取语料(规模数字均为各语料官方口径,BioRED 抽样篇数来自官方标注指南 Table 1):

数据集 文献数 实体类型 关系类型 标注层级 概念归一化 许可
BioRED(2022) 600 摘要 6 类 8 类(非方向性) 文档级 6 大知识库 Public Domain
BC5CDR(2015) 1,500 摘要 2 类(化学/疾病) 1 类(CID) 句内+跨句 MeSH Public Domain
NCBI Disease(2014) 792 篇摘要 1 类(疾病) 无关系 句级 MeSH/MEDIC Public Domain
tmVar(2017) 500 篇摘要 1 类(突变) 无关系 句级 dbSNP/tmVar 组件 Public Domain(政府作品)
NLM-Gene(2021) 550 篇(全文+摘要) 1 类(基因) 无关系 文档级 NCBI Gene Public Domain
BC2GN(GNormPlus 处理子集) 48 篇(BioRED 抽样部分) 1 类(基因) 无关系 句级 NCBI Gene 公开
ChemProt(2017) 1,840 摘要 化学物/基因/疾病 多类(含方向性上调/下调) 句级 部分归一 公开(非政府作品)
DDI(2013) 792 篇文档 药物 4 类药物相互作用(有方向) 句级 DrugBank CC BY-SA
LitCoin(2022) 903 篇全文 9 类 关系+语义谓词 文档级 多库 公开(挑战赛语料)

关键差异解读:BioRED 的核心增量不是"更大",而是"更全 + 更难"——同一篇摘要里基因、疾病、化学物、突变同时出现并交织成多类型关系网络,且关系不带方向(见坑点 1),模型必须学会在没有 Upregulation/Downregulation 方向提示的情况下判定关联存在性与极性。与 ChemProt 相比,BioRED 关系类型更少但文档级跨度更大;与 BC5CDR 相比,BioRED 把 204 篇 BC5CDR 文献重新纳入多类型框架,化学-疾病关系标注直接复用 BC5CDR 结论。

§1.4 版本时间轴

时间 版本/事件 说明
2022-04-07 BIORED.zip 上传 NCBI FTP 600 篇完整语料(train/dev/test 三子集)+ 官方 README(FTP 文件时间戳)
2022-04-17 论文投稿 Briefings in Bioinformatics 收稿日期(论文版权页)
2022-06-02 标注指南 PDF 定稿版 16 页官方指南,定义 6 类实体与关系类型细则(FTP 文件时间戳)
2022-07-19 论文在线发表 bbac282,PMID 35849818
2022-07-23 官方模型包发布 biored_re_model.tar 828 MB,含关系分类与新颖性检测模型(FTP 时间戳)
2023 BioCreative VIII 共享任务启用 BioRED 官方语料,14 队 94 份提交(baae069)
2023-06-27 官方源码包更新 biored_re_source_code.tar 333 KB(FTP 时间戳)
2024 BC8 评测论文与扩展语料发表 baae069/baae071;追加 400 篇盲测集(8 名 NLM 生物策展人标注)
2026-09 本页审核时点 Google Scholar 引用 227+

§1.5 典型应用场景

  • 药物警戒与知识图谱补全:从新发表摘要中抽取化学物-疾病、化学物-基因关系,补入药物知识图谱;Drug_Interaction 与 Cotreatment 类型可直接服务联合用药信号发现。
  • 精准医学文献问答:Variant-Disease、Gene-Disease 关系(合计 2,526 条)覆盖突变致病、基因关联证据,可支撑"某突变与哪些疾病相关"类问答的知识底座。
  • LLM 生物医学能力评测:零样本/少样本信息抽取基准,配合三档任务设计可定位模型失败在"找不到对"还是"分不清类"还是"判不了新"。
  • 文献综述自动生成:按关系类型聚类抽取结果,辅助综述作者快速梳理"X 药物对 Y 靶点的影响"类证据网。
  • 教学与工程实践:体量小、格式纯文本、公共领域,是 NLP 课程与数据工程训练的理想沙盘。

§2 医学背景

§2.0 六类实体体系概览

BioRED 的实体层是理解整个语料的入口——6 类实体各自对应一个独立的分子生物学对象世界与一套归一化基础设施:

实体类型 生物学对象 归一化知识库 语料中的角色
Gene 基因/蛋白(含基因家族、亚型) NCBI Gene 关系网络的中枢节点(6,697 提及,参与 4 组实体对)
Disease 疾病、症状、异常状态 MEDIC(MeSH+OMIM) 关系网络第二中枢(5,545 提及)
Chemical 药物、化合物、内源性化学物 MeSH 药理与毒理关系的一端(4,429 提及)
Variant 基因突变、SNP、蛋白突变 dbSNP RS# / tmVar 组件 精准医学关系的关键一端(1,381 提及,678 唯一)
Species 物种(实验对象/病原) NCBI Taxonomy 实验背景描述(2,192 提及但极少成边)
CellLine 细胞系 Cellosaurus 实验材料描述(175 提及,最少)

体系设计洞察:Variant 的唯一概念数(678)与提及数(1,381)比值接近 1:2,远低于 Gene 的 1:4——突变命名高度规范化(HGVS 记法),词面多样性天然低;而 CellLine 175 个提及就有 72 个唯一概念,几乎"一提一概念",反映细胞系命名碎片化。这个比值结构对归一化模型的数据增广策略有直接指导意义。

§2.1 语料覆盖疾病主题与 ICD-11 映射

BioRED 语料原生使用 MeSH/MEDIC 概念体系标注疾病与化学物,不携带 ICD 编码。以下给出语料中高频疾病主题与其 ICD-11 编码的示例映射(经 UMLS 交叉映射,供接入医院术语体系时参考;映射关系需按所用 UMLS 版本复核):

疾病主题(语料中的 MeSH 概念) MeSH UI ICD-11 代码 SNOMED CT
乳腺癌(Breast Neoplasms) D001943 2C60 254837009
2 型糖尿病(Diabetes Mellitus, Type 2) D003924 5A11 44054006
哮喘(Asthma) D001249 CA23 195967001
帕金森病(Parkinson Disease) D010300 8A00 18127003

为什么需要映射:BioRED 的 Disease 概念走 MEDIC(MeSH 与 OMIM 的融合词表),有 MeSH 编目时优先给 MeSH UI。若你的下游系统以 ICD-11 或 SNOMED CT 为主键(医院电子病历、临床数据仓库几乎都如此),必须经 UMLS CUI 做中介映射(MeSH UI → CUI → ICD-11/SNOMED CT),并在映射报告中给出映射率与失配清单(工程实现见坑点 3 的分桶思路)。

§2.1b SNOMED CT 映射

同 §2.1:BioRED 原生词表为 MeSH/MEDIC,SNOMED CT 列为经 UMLS 交叉映射的示例。六类实体中仅 Disease 与 Chemical 有成熟的跨词表映射通道;Gene(NCBI Gene ID)、Variant(dbSNP RS#)、Species(NCBI Taxonomy ID)、CellLine(Cellosaurus ID)属于各自领域的专用标识体系,不存在也不需要 SNOMED CT 对应物——这是生物医学多词表集成时的常见认知误区,集成方案应按实体类型分别设计。

§2.2 医学背景简介

BioRED 覆盖的疾病谱由其抽样来源决定:BC5CDR 贡献的 204 篇集中于化学物诱发疾病与药理机制文献(肿瘤、心血管、代谢类疾病居多);tmVar 贡献的 197 篇集中于突变与疾病易感性(遗传病、癌症驱动突变);NLM-Gene 贡献的 140 篇集中于基因-表型关联。因此语料的疾病分布天然偏向文献密度高、机制研究活跃的主题——常见肿瘤、代谢性疾病、神经退行性疾病、心血管疾病占主导,而罕见病与低资源主题相对稀薄(此偏倚的系统讨论见 §7.1)。

从分子生物学视角,8 类关系对应文献中四类经典知识主张:① 相关性证据(Association、Positive_Correlation、Negative_Correlation)——流行病学或实验观察到的关联及其方向;② 物理作用(Bind)——蛋白-配体、蛋白-蛋白结合实验;③ 干预与互作(Cotreatment、Drug_Interaction)——联合用药与药代/药效相互作用;④ 转化与比较(Conversion、Comparison)——代谢转化与实验组间比较。理解这四类主张的生物学语义,是正确设计关系抽取模型输入表示的前提。

§2.2b 8 类关系类型语义速查

下表按官方标注指南的语义定义整理(定义文字为语义概括,逐字判例以官方指南 PDF 为准):

关系类型 语义定义 典型证据表述 语料内示例语境
Association 两实体相关,但未指明方向或机制 “is associated with”、“linked to” 基因与疾病的关联研究结论
Positive_Correlation 正相关:一方升高/增强,另一方随之升高/增强 “upregulates”、“increases the risk of”、“positively correlates” 高表达基因与肿瘤进展
Negative_Correlation 负相关:一方升高,另一方降低 “downregulates”、“inversely correlated”、“protective against” 抑癌基因与肿瘤发生率
Bind 物理结合(蛋白-蛋白、蛋白-配体、蛋白-DNA) “binds to”、“interacts physically with” 受体与配体的结合实验
Cotreatment 联合治疗/联合处理产生效果 “co-treatment with”、“combination therapy” 联合用药的协同效应
Comparison 比较/对照关系(实验组间、药物间) “compared with”、“in contrast to” 两药的疗效对照试验
Drug_Interaction 药物-药物相互作用(药代/药效层面) “drug-drug interaction”、“interferes with the metabolism of” CYP 酶介导的代谢互作
Conversion 转化/代谢转变 “is converted to”、“metabolized into” 前药代谢为活性形式

两个易混点辨析:① Positive/Negative_Correlation 是 Association 的"极性细化版"——同一实体对只取其一,模型输出时三者构成互斥选择;② Cotreatment 与 Drug_Interaction 都涉及"多药",前者强调联合使用的效果,后者强调药物间的相互影响,指南判例中后者要求明确的互作证据而非简单同用。

§2.3 临床任务定义

BioRED 支持的"临床任务"应理解为文献层面的证据挖掘,而非直接临床决策。形式化定义:给定一篇摘要(标题 + 摘要正文),找出所有实体提及(6 类)、每条提及的概念归一化 ID、以及关系集合,其中每条关系带类型标签(8 类之一)与新颖性标签(novel/known)。评测采用递进三档:

  • 档 1(实体对):判定实体对之间是否存在任意关系(二分类),官方 gold 实体口径 F1 超 72;
  • 档 2(实体对 + 类型):正确实体对 + 正确 8 类之一,官方 PubMedBERT 基线 F1 58.9;
  • 档 3(实体对 + 类型 + 新颖性):在档 2 基础上再判 novel/known,F1 降至 47.7——新颖性维度的引入使任务难度陡增约 11 个 F1 点。

对临床信息学团队,档 3 才是"文献挖掘补全知识图谱"的真实任务形态:既要找对关系,还要知道这条关系是否已被现有知识库覆盖。

§2.4 语料来源人群(文献层面)

BioRED 不含患者级数据,"人群"应理解为文献来源构成(官方标注指南 Table 1):

抽样来源语料 抽样篇数 占比 文献主题特征
BC5CDR 204 34.0% 化学-疾病机制、药理与毒理
tmVar 197 32.8% 基因突变与疾病易感性
NLM-Gene 140 23.3% 基因-表型关联(含全文文献的摘要部分)
BC2GN(GNormPlus 处理) 48 8.0% 基因规范化经典文献
NCBI Disease 11 1.8% 疾病命名与归一化经典文献
合计 600 100% —

选择既有语料抽样的策略性考量:这些语料经过各自任务的严格质控,实体标注起点质量高,团队可以把标注预算集中在"多类型关系"这一新增维度上;但副作用是语料偏倚继承自五个母语料(见 §7.1)。

§2.5 临床价值与边界

价值:① 对药物警戒团队,Cotreatment/Drug_Interaction 关系可提供联合用药信号的文献证据线;② 对遗传咨询知识库,Disease–Variant(893 条)与 Disease–Gene(1,633 条)关系构成证据网络骨架;③ 对医学图书馆团队,新颖性标签可直接用作"值得人工策展的文献"排序列表——69% 的关系是知识库没有的,这意味着自动化管线有真实的增量价值。

边界:① 摘要不含全文,机制细节、样本量、效应量等定量证据不在标注范围内,不能用于证据分级(如 GRADE);② 关系是二元的、非方向的、无机制亚型的"有/无"断言,不能直接回答"X 上调还是下调 Y"这类方向性问题;③ 官方明确不标注"确认无关"(negative conclusion)与阴性结论,未标注不等于无关——任何把负例当作真负例训练的做法都会引入系统性偏倚(坑点 6);④ NCBI 官方免责声明:该资源信息不用于直接诊断或医疗决策。

§2.6 金标准对照表

维度 BioRED 的做法 行业通行做法 差异意义
标注者配置 每篇 3 名生物医学信息学标注者 + 资深分子生物学标注者仲裁 多为 2 名 + 1 仲裁 多一重冗余,实体层一致性更高
预标注 PubTator 工具预标注实体,人工修正 空白标注或弱预标注并存 预标注加速但可能锚定注意力(§7.2)
关系标注 全手工,摘要有明确证据才标 部分语料用规则/远程监督生成 金标准纯度最高档
新颖性判定 2 名生物学家独立判定 基本无人做 独有维度,成本高但开辟新任务
概念归一 6 类实体分别归一到 6 大知识库 常仅疾病/化学归一 支持知识库级评测与落地
阴性对照 不标注确认无关 部分语料标"无关"类 需要显式负采样策略(坑点 6)

§3 数据集规格

§3.0 版本抉择矩阵

版本 规模 划分 标注内容 适用场景
原始 BioRED(BIORED.zip,2022-04) 600 篇摘要 400/100/100 固定三段 实体 + 概念 ID + 关系 + 新颖性 学术评测、模型训练、可复现基准(默认选择)
BC8-BioRED 扩展集(2024) 原始 600 篇 + 追加 400 篇盲测 原三段不变 + 独立盲测段 追加段:实体 15,400(唯一 3,597)+ 关系 6,034(novel 3,683),由 8 名 NLM 生物策展人标注 外部验证、防过拟合终评(BC8 参赛与赛后评测)
官方模型包(828 MB) — — 关系分类模型 + 新颖性检测模型 需要官方基线复现或蒸馏时
官方源码包(333 KB) — — 评测与训练脚本 官方口径对齐(建议先跑通再自研)

选型结论:日常训练与调参用原始 600 篇;对外报告成绩前,用 BC8 盲测段做一次从未见过的外部验证——原始测试集公开已逾四年,任何在其上的超参选择都会让数字失真(§5.3)。

§3.1 模态详情

  • 载体:纯英文 PubMed 摘要(标题 + 摘要正文两个 passage)。
  • 编码:UTF-8 纯文本,PubTator 格式以 tab 分隔。
  • 粒度:文档级(一篇摘要为一个样本单元),关系断言可跨越句边界与 passage 边界(标题 ↔ 摘要)。
  • 无影像/无表格/无补充材料:单一文本模态,多模态管线需另行对接。

§3.2 按子集样本数与标注统计

子集 篇数 关系数 用途
Train 400 4,178 训练
Dev 100 1,162 调参与早停
Test 100 1,163 报告成绩(公开 gold)
合计 600 6,503 —

实体提及按类型的全集分布(PMID 38994795 Table 1 口径,600 篇):

实体类型 提及数 唯一概念数
Gene 6,697 1,643
Disease 5,545 778
Chemical 4,429 651
Species 2,192 47
Variant 1,381 678
CellLine 175 72
合计 20,419 3,869

关系实例按类型的全集分布(baae079 Table 2 的 Train+Dev 列求和,与论文总数 6,503 吻合):

关系类型 实例数 占比
Association 3,387 52.1%
Positive_Correlation 1,766 27.2%
Negative_Correlation 1,150 17.7%
Bind 89 1.4%
Cotreatment 55 0.8%
Comparison 39 0.6%
Drug_Interaction 13 0.2%
Conversion 4 0.1%

§3.3 数据格式

BioRED 只提供 PubTator 纯文本格式一种(区别于 BC5CDR 的 PubTator+BioC 双格式)。文件内部三种行类型(字段以 tab 分隔):

PMID<TAB>t<TAB>标题文本            # 标题行:第 2 列为 "t"
PMID<TAB>a<TAB>摘要文本            # 摘要行:第 2 列为 "a"
PMID<TAB>START<TAB>END<TAB>提及文本<TAB>TYPE<TAB>概念ID   # 实体行:6 列
PMID<TAB>Relation<TAB>TYPE<TAB>Arg1:概念ID<TAB>Arg2:概念ID  # 关系行:5 列
  • 实体行:START/END 为字符偏移(文档级,从标题首字符起算);TYPE 取六类之一;概念 ID 按类型路由到六大知识库(§4.1);复合实体 span 整体标注,多 ID 以逗号无空格分隔(如 “4312,4313”);无法归一填 “-”。
  • 关系行:TYPE 为 8 类非方向性关系之一;Arg1/Arg2 以概念 ID 引用实体(注意是 ID 而非偏移——同文档同概念的多个提及共享同一条关系,见坑点 5)。
  • Variant 特例:无法归一到 dbSNP RS# 时使用 tmVar 组件格式,如 V600E → “p|SUB|V|600|E”。

示例行走查(示意性样例,演示三类行的形态;实际文献内容以语料为准):

32353885	t	Example Title about Gene-Disease Association
32353885	a	The BRCA1 gene is associated with breast cancer. Compound X upregulates BRCA1 expression in vitro.
32353885	0	4	9	Gene	672
32353885	30	43	Disease	D001943
32353885	72	82	Chemical	D046729
32353885	Relation	Positive_Correlation	Arg1:672	Arg2:D001943
  • 第 1-2 行:标题(t)与摘要(a),第 2 列标记 passage 类型;
  • 第 3-5 行:实体行——PMID、字符偏移起止、提及文本、类型、概念 ID;
  • 第 6 行:关系行——类型 + 两个以概念 ID 引用的 Arg(注意引用的是 ID 672 而非偏移 0-9,这就是"概念粒度引用")。

解析注意:仅凭列数无法完全区分行类型(实体行 6 列、关系行 5 列、标题/摘要行 3 列,但摘要文本可能含 tab),推荐按第 2 列取值判别:t/a → 标题摘要,Relation → 关系,其余且列数 ≥6 → 实体(完整解析器见 §6.3)。关系行的精确列布局以官方标注指南(FTP 提供 PDF)为准。

§3.4 存储大小

资源 大小 说明
BIORED.zip 2.1 MB 语料本体(600 篇三子集 PubTator 文本)
BioRED_Annotation_Guideline.pdf 298 KB 官方标注指南(16 页)
biored_re_model.tar 828 MB 官方关系分类 + 新颖性检测模型
biored_re_source_code.tar 333 KB 官方评测/训练源码
BC8-BioRED-track 扩展包 见官方 FTP 2024 年追加的 400 篇盲测集

存储规划:仅语料本体解压后不足 10 MB,任何开发机本地即可承载;模型包主要用于复现官方基线,生产管线无需下载。

§3.5 标注方式

  • 平台与流程:TeamTat 协作标注平台;PubTator 内置工具(GNormPlus、tmVar 等)先做实体预标注,标注者逐篇修正;关系全部从零手工标注(其中化学-疾病关系复用 BC5CDR 既有标注结论)。
  • 关系判定规则:仅当摘要有明确文本证据时才标注关系;全文只在澄清实体 span 边界与概念 ID 时允许参考,不作为关系证据来源。
  • 归一化:每条实体提及给出知识库 ID;复合 span 多 ID 逗号分隔;匹配失败填 “-”。
  • 新颖性:对每条关系,由 2 名生物学家判定该知识是否已存在于现有知识库/文献共识中(novel/known)。

§3.6 标注者资质与一致性

  • 每篇文献由 3 名生物医学信息学标注者独立标注,分歧交由资深分子生物学标注者仲裁(论文披露的协议;论文正文报告了实体层一致性,关系层以仲裁后结果发布)。
  • 新颖性标签由 2 名生物学家判定。
  • 600 篇分 30 批(每批 20 篇)滚动标注;官方时间预算为每批每人约 2 小时实体 + 8 小时关系 + 6 小时新颖性标签——16 小时/人/批的工作量说明关系与新颖性层是真正的深度策展,而非快速圈选。
  • 策展支持来自 Rancho BioSciences,NCATS(美国国家促进转化科学中心)的 Beck 与 Colvis 参与协调(论文致谢)。

§3.7 采集周期

论文收稿于 2022-04-17,数据包于 2022-04-07 上传 FTP,标注工作在其前完成;论文未披露标注的精确起止月份,按批次与工作量推算整个标注周期在 2021-2022 年间。BC8 扩展段(400 篇盲测)的标注于 2023-2024 年 BioCreative VIII 期间完成。

§3.8 地域覆盖

语料为全球英语 PubMed 文献的抽样,无地域配额设计;受母语料影响,文献作者机构集中在北美、欧洲与东亚的高产出生物医学研究机构。数据发布方为美国 NIH 下属 NCBI。

§3.9 设备规格

不适用。文本语料,无采集设备、无影像参数、无生理信号采样率等设备维度。

§3.10 深度溯源链

PubMed 文献库(英语摘要)
   │  按五个既有语料分层抽样(BC5CDR 204 / tmVar 197 / NLM-Gene 140 / BC2GN 48 / NCBI Disease 11)
   ▼
600 篇摘要(PubTator 预标注实体:GNormPlus/tmVar 等内置工具)
   │  TeamTat 平台人工修正(每篇 3 名标注者)
   ▼
实体提及 + 偏移 + 概念 ID(NCBI Gene / MEDIC / MeSH / dbSNP / Taxonomy / Cellosaurus)
   │  关系全手工标注(证据限定在摘要内;分歧由资深分子生物学标注者仲裁)
   ▼
6,503 条关系(8 类非方向性) + 新颖性标签(2 名生物学家判定)
   │  版本冻结 → FTP 发布(2022-04)
   ▼
BioRED v1.0(BIORED.zip)→ 论文同行评审(bbac282)→ BioCreative VIII 扩展(2024,+400 篇盲测)

溯源要点:关系标注的证据边界严格限定在摘要内,这是可复现性的基石——任何标注争议都可仅凭摘要文本复核,不依赖全文访问权限。

§4 数据结构

§4.0 目录树

官方 FTP(https://ftp.ncbi.nlm.nih.gov/pub/lu/BioRED/)资源全景:

BioRED/                                    # FTP 目录
├── BIORED.zip                             # 2.1 MB,语料本体(2022-04-07)
│   └── (zip 内按 train/dev/test 三个子集
│        组织 PubTator 纯文本文件,
│        具体文件名以解压结果为准——
│        官方 README 描述三子集结构)
├── BioRED_Annotation_Guideline.pdf        # 298 KB,官方标注指南(2022-06-02)
├── biored_re_model.tar                    # 828 MB,官方模型包(2022-07-23)
│   └── (biored_all_mul_model = 关系分类模型;
│        biored_novelty_model = 新颖性检测模型)
├── biored_re_source_code.tar              # 333 KB,官方源码(2023-06-27)
└── README.txt                             # 许可(Public Domain)与内容说明

诚实性说明:BIORED.zip 内部子目录/文件的精确命名未在本页逐字核实,目录树按 FTP 目录清单与官方 README 描述绘制;本页 §6.3 的解析代码使用 rglob 递归扫描 + 关键词匹配定位三子集文件,不写死内部文件名,任何内部布局变化都不影响运行。

BC8 扩展评测集位于独立 FTP 目录:https://ftp.ncbi.nlm.nih.gov/pub/lu/BC8-BioRED-track/(CodaLab 竞赛页 13377 与 13378)。

§4.1 DAIMS 字段字典(PubTator 格式)

字段 类型 说明 示例值 AI 用途 观测误差 信息性缺失编码 取值范围
PMID 整数(文本承载) PubMed 文献唯一 ID 32353885 文档主键、跨库回链 无 无 PubMed 全库
行类型标记(第 2 列 t/a) 枚举 标题/摘要 passage 标记 a 文本段落切分 无 无 t, a
START / END 整数 实体提及的字符偏移(文档级,0 起) 512 / 520 span 抽取、证据定位 复合 span 为整段偏移 无 0 到摘要长度
提及文本 字符串 span 原文 BRCA1 词面特征 与偏移互切需一致 无 自由文本
TYPE 枚举 实体类型 Gene 实体分类标签 无 无 Gene, Disease, Chemical, Variant, Species, CellLine
概念 ID 字符串 知识库归一 ID 672(NCBI Gene) 知识库对齐、图谱建边 多 ID 逗号分隔(复合实体) “-”(未匹配) 六大知识库 + tmVar 组件格式
RELATION TYPE 枚举 关系类型(关系行) Positive_Correlation 关系分类标签 非方向性 无 8 类(§3.2 表)
Arg1 / Arg2 字符串 关系两端实体(以概念 ID 引用) Arg1:672 关系建模主外键 同概念多提及共享关系 无 同文档内实体 ID

概念 ID 路由表(官方指南 Table 2):

实体类型 目标知识库 ID 形态示例
Gene NCBI Gene ABCA1 → 19
Disease MEDIC(MeSH 优先,OMIM 补充) 糖尿病 → D003409
Chemical MeSH 化学物 → D013726 一类 UI
Variant dbSNP RS#;无 RS# 时 tmVar 组件格式 V600E → p\
Species NCBI Taxonomy E. coli → 562
CellLine Cellosaurus CVCL_1452

§4.2 标签分布

实体对组合分布(6 类实体两两组合,仅 8 组有实例,PMID 38994795):

实体对组合 关系数
Disease–Gene 1,633
Chemical–Disease 1,237
Gene–Gene 1,227
Chemical–Gene 923
Disease–Variant 893
Chemical–Chemical 488
Chemical–Variant 76
Variant–Variant 25

分布诊断三结论:① 相关性证据类(Association + 正/负相关)合计占 95.74%,剩余 5 类合计不足 400 条——先做二分类(有无关系)再细分类型的级联策略比 8 类单阶段 softmax 更稳;② 实体对组合同样头重脚轻,Gene/Disease/Chemical 三类主导,Variant 相关组合稀薄但正是精准医学最关心的部分;③ 与实体分布对照,Species 提及 2,192 个但几乎不进入关系(仅作为实验背景),CellLine 更少——6 类实体并非都参与关系构建,候选对生成时可按组合先验剪枝。

§4.3 关键统计

  • 文档级密度:平均每篇摘要约 34 个实体提及、10.8 条关系(6,503/600)。
  • 新颖性构成:6,503 条关系中 69% 为 novel——即约 4,487 条关系在既有知识库中不存在对应记录。
  • 跨句比例:官方将文档级标注设为任务形态,跨句关系是核心设计目标(论文以 PCSK9 D374Y ↔ 常染色体显性高胆固醇血症为例,证据分处不同句);语料中相当比例关系的两端不共句,句级模型不可用——这是与方向性(坑点 1)并列的两大任务理解前提:前者是文本跨度问题,后者是标签语义问题。
  • 概念聚合度:20,419 个提及聚合为 3,869 个唯一概念,平均每个概念约 5.3 个词面变体——同义还原是候选对去重的关键。
  • 长尾末端:Conversion 全库仅 4 条、Drug_Interaction 13 条,任何划分方式下这些类型的每类样本都极稀薄(坑点 3)。

§4.4 数据层级

语料
└── 文档(PMID,共 600 篇)
    ├── passage × 2(title / abstract)
    │     └── 实体提及(span 偏移 + 文本 + 类型)        # 约 20,419 个
    ├── 实体概念(同文档同概念 ID 聚合)                 # 3,869 个(全集)
    │     └── 一对多:概念 → 多个词面提及
    └── 关系(概念对 + 类型 + 新颖性)                   # 6,503 条
          └── Arg1/Arg2 以概念 ID 引用,非提及级

层级语义要点:关系挂在概念对上而非提及对上——同一对概念在文档内多次共现只对应一条关系断言;反之,评测时把关系正确"落"到哪个提及上属于 span 恢复问题,官方三档评测(§6.9)在档 1/2/3 均以概念对为单位。

§4.5 缺失值与信息性缺失

情形 编码 语义 处理建议
实体无法归一 概念 ID 列为 “-” 有提及、无概念 NER 训练保留;关系/图谱任务按 ID 不可用剔除或自建词面索引
Variant 无 RS# tmVar 组件格式(如 p\ SUB\ V\
复合实体多概念 ID 逗号分隔(如 4312,4313) 一个 span 对应多个概念 按逗号展开为多条概念记录,span 共享
无关系文档 无关系行 该摘要无满足证据标准的关系 是合法样本(负例文档),勿在加载时丢弃

§5 划分与使用建议

§5.1 官方划分

官方按 400/100/100 固定三段发布(train/dev/test),关系数 4,178/1,162/1,163。三个子集在 BIORED.zip 内独立成文件,官方论文与 BC8 共享任务均以此划分为准。没有官方交叉验证划分——由于规模仅 600 篇,若你想做 k 折,需自行重组并保证文档级切分(同一 PMID 不得跨折)。

§5.2 社区惯例与建议

  • 报告成绩的规范姿势:写明三要素——划分(官方 test 100 篇)、实体口径(gold/predicted/自动标注)、任务档位(实体对/类型/新颖性)。缺少任一要素的数字不可比(坑点 2 详述)。
  • dev 集的双重角色:官方 dev 既是调参集也是提交前自评集;频繁在 test 上"看一眼"的团队实质上已把 test 用成了 dev(§5.3)。
  • 训练增强:常见做法是把 train+dev 合并(500 篇)训练、test 终评,或 train 训练 + dev 模型选择——两种都有先例,但必须在论文中声明,不可混比。
  • 与 BC5CDR 的重叠管理:BioRED 含 204 篇 BC5CDR 文献。跨语料实验(如 BC5CDR 预训练 → BioRED 微调)时注意同 PMID 文献同时出现在两边的 gold 中,属于同文献多任务学习而非迁移学习,实验设计要如实描述。
  • 概念对粒度一致性:自研预处理时务必把关系解析到概念对粒度(与官方关系行一致),不要自行降级到提及对或句对——粒度不一致是社区复现成绩偏差的常见来源。
  • 复现检查点:加载完成后校验三个锚点——文档总数 600、关系总数 6,503(train+dev+test 求和 4,178+1,162+1,163)、实体提及 20,419;三者任一不符即停线排查,不要带病训练。

§5.3 泄漏风险清单(重点)

  1. 测试集公开过拟合:test 100 篇自 2022 年公开 gold,四年余的调参窗口意味着社区排行榜数字已含隐性选择偏差;严肃工作应补 BC8 盲测段外部验证。
  2. 预训练-评测域重叠:PubMedBERT 等领域模型的预训练语料包含 PubMed 文献全集,理论上覆盖 BioRED 的 600 篇摘要。官方基线 89.3 的 strict NER F1 建立在此之上——这不是"作弊",但跨模型比较时必须声明预训练域(坑点 4)。
  3. 同文献多版本泄漏:同一 PMID 在 BC5CDR(204 篇重叠)与其他派生数据集(HuggingFace 上的 BioRED 转载版、各类预处理版)中反复出现;自建折外验证时按 PMID 去重,勿按文件切分。
  4. 概念 ID 词典泄漏:关系行的 Arg 以概念 ID 引用,若你的模型输入直接注入"该 ID 是否已在知识库共现"特征,等于把知识图谱先验当作答案泄漏——此类特征只能用于部署期增强,评测期应隔离。
  5. LLM 记忆污染:BioRED 是高引用语料,主流 LLM 的训练语料极可能包含其文本乃至标注;零样本评测数字(§8.1 中 Llama-1-8B 19.77 一类)需按"下界"解读,无法完全排除记忆贡献。

§5.4 交叉验证与外部验证建议

  • 折内方案:600 篇做 5 折(每折 120 篇,按 PMID 文档级切分),分层变量建议用"文档关系数"而非关系类型(后者在 Conversion 4 条的规模下无法分层)。
  • 外部验证首选:BC8-BioRED 400 篇盲测集(8 名 NLM 策展人、实体 15,400 + 关系 6,034),与原始语料同指南同格式,是现成的第二评测域。
  • 次选:LitCoin 语料做跨语料迁移验证(同为文档级多类型关系,但谓词体系不同,需映射层)。
  • 不建议:从 test 100 篇中再切分——样本过小,切分噪声淹没信号。

§6 AI 就绪指南 ⭐

§6.0 云端快速启动

Colab / 任何有 Python 3.10+ 的环境,五分钟跑通"下载 → 解析 → 定位子集":

# 环境要求:Python 3.10+,无第三方依赖
import urllib.request, zipfile, pathlib

URL = "https://ftp.ncbi.nlm.nih.gov/pub/lu/BioRED/BIORED.zip"
raw = urllib.request.urlopen(URL, timeout=60).read()          # 2.1 MB
zpath = pathlib.Path("/tmp/BIORED.zip"); zpath.write_bytes(raw)
with zipfile.ZipFile(zpath) as zf:
    zf.extractall("/tmp/biored")

# 递归定位全部候选数据文件(不假设内部目录名)
candidates = [p for p in pathlib.Path("/tmp/biored").rglob("*")
              if p.is_file() and p.stat().st_size > 0]
print(sorted(p.name for p in candidates))   # 应看到 train/dev/test 三个子集文件

§6.1 快速上手

# ---------------------------------------------------------------
# 目标:加载语料 → 打印一篇文档的实体与关系 → 心中有图
# 目录预期(解压后):
#   /tmp/biored/ 下的某处有
#     Train(400 篇)、Dev(100 篇)、Test(100 篇)PubTator 文本
# 最小可用子集:任一子集即可(Dev 最小,先看它)
# ---------------------------------------------------------------
import pathlib
from collections import Counter

def load_pubtator(path: pathlib.Path):
    """极简 PubTator 加载器:返回 {pmid: {"t":…, "a":…, "ents":[…], "rels":[…]}}"""
    docs = {}
    for line in path.read_text(encoding="utf-8").splitlines():
        if not line.strip():
            continue
        parts = line.split("\t")
        pmid, tag = parts[0], parts[1]
        d = docs.setdefault(pmid, {"t": "", "a": "", "ents": [], "rels": []})
        if tag == "t":
            d["t"] = parts[2]
        elif tag == "a":
            d["a"] = parts[2]
        elif tag == "Relation":                     # 关系行:PMID/Relation/TYPE/Arg1:x/Arg2:y
            d["rels"].append({"type": parts[2],
                              "arg1": parts[3].split(":", 1)[1],
                              "arg2": parts[4].split(":", 1)[1]})
        else:                                       # 实体行:PMID/START/END/TEXT/TYPE/ID
            d["ents"].append({"start": int(parts[1]), "end": int(parts[2]),
                              "text": parts[3], "type": parts[4], "id": parts[5]})
    return docs

# 自动找 dev 文件(关键词匹配,不写死路径)
dev_file = [p for p in pathlib.Path("/tmp/biored").rglob("*")
            if p.is_file() and "Dev" in p.stem][0]
docs = load_pubtator(dev_file)

sample = next(iter(docs.values()))
print("标题:", sample["t"][:80], "…")
print("实体数:", len(sample["ents"]), "关系数:", len(sample["rels"]))
print("实体类型分布:", Counter(e["type"] for e in sample["ents"]))
print("关系示例:", sample["rels"][:3])

预期输出形态:每篇文档 20-50 个实体、0-30 条关系;实体类型分布以 Gene/Disease/Chemical 为主;关系行的 arg 是概念 ID——请对照 §4.1 路由表理解其语义,这是后续一切正确性的地基。

§6.2 数据获取

# 官方包下载 + 解压(无注册、无审批;FTP 直链)
mkdir -p /tmp/biored && cd /tmp/biored
curl -sL -O https://ftp.ncbi.nlm.nih.gov/pub/lu/BioRED/BIORED.zip      # 2.1 MB
curl -sL -O https://ftp.ncbi.nlm.nih.gov/pub/lu/BioRED/BioRED_Annotation_Guideline.pdf  # 298 KB
unzip -o BIORED.zip

# 可选:官方模型与源码(复现官方基线时才需要)
# curl -sL -O https://ftp.ncbi.nlm.nih.gov/pub/lu/BioRED/biored_re_model.tar         # 828 MB
# curl -sL -O https://ftp.ncbi.nlm.nih.gov/pub/lu/BioRED/biored_re_source_code.tar   # 333 KB

# 可选:BC8 扩展盲测集(外部验证)
# 浏览 https://ftp.ncbi.nlm.nih.gov/pub/lu/BC8-BioRED-track/ 按需下载

# 完整性核查:解压后应有三个子集文件,合计 600 篇文档

FTP 偶尔限速,脚本化部署建议加断点续传参数并把三个 URL 固化进依赖清单;官方 GitHub(https://github.com/ncbi/BioRED)是 FTP 的镜像入口,FTP 不可达时从 repo README 找备用链接。

下载完整性核查清单(CI 中固化为断言):

# ① zip 尺寸锚点(2022-04-07 版约 2.1 MB;显著偏小说明下载不完整)
test "$(stat -c%s BIORED.zip)" -gt 1500000 && echo "size OK"

# ② zip 可解压且包含数据文件
unzip -t BIORED.zip > /dev/null && echo "zip integrity OK"

# ③ 解压后按关键词能定位三个子集(与 §6.3 find_split_files 同逻辑)
for kw in train dev test; do
  found=$(find . -iname "*${kw}*PubTator*" -o -iname "*${kw}*" -name "*.txt" | head -1)
  test -n "$found" && echo "${kw}: OK (${found})" || echo "${kw}: MISSING"
done

# ④ 记录 SHA256 入数据版本元数据
sha256sum BIORED.zip | tee biored.sha256

§6.3 预处理全流程

从原始 PubTator 到模型可用的 JSONL,全流程四步(纯标准库,可直接嵌入生产):

import json, pathlib

ETYPES = {"Gene", "Disease", "Chemical", "Variant", "Species", "CellLine"}

def find_split_files(root: pathlib.Path):
    """按关键词把语料目录下的 PubTator 文件归到 train/dev/test(容忍不同命名习惯)"""
    buckets = {"train": [], "dev": [], "test": []}
    for p in root.rglob("*"):
        if not (p.is_file() and p.stat().st_size > 0):
            continue
        name = p.stem.lower()
        if "train" in name:  buckets["train"].append(p)
        elif "dev"   in name: buckets["dev"].append(p)
        elif "test"  in name: buckets["test"].append(p)
    assert all(buckets.values()), "子集定位失败,请检查解压目录"
    return buckets

def parse_file(path: pathlib.Path):
    """健壮 PubTator 解析:三行类型判别 + 复合实体展开"""
    docs = {}
    for line in path.read_text(encoding="utf-8").splitlines():
        if not line.strip():
            continue
        parts = line.split("\t")
        pmid, tag = parts[0], parts[1]
        d = docs.setdefault(pmid, {"pmid": pmid, "title": "", "abstract": "",
                                   "mentions": [], "concepts": {}, "relations": []})
        if tag in ("t", "a") and len(parts) >= 3:
            d["title" if tag == "t" else "abstract"] = parts[2]
        elif tag == "Relation" and len(parts) >= 5:      # 关系行
            d["relations"].append({"type": parts[2],
                                   "arg1": parts[3].split(":", 1)[1],
                                   "arg2": parts[4].split(":", 1)[1]})
        elif len(parts) >= 6 and parts[4] in ETYPES:     # 实体行
            ids = parts[5]
            d["mentions"].append({"start": int(parts[1]), "end": int(parts[2]),
                                  "text": parts[3], "type": parts[4], "raw_id": ids})
            # 复合实体:多 ID 逗号分隔 → 展开为多条概念记录
            for cid in [x for x in ids.split(",") if x and x != "-"]:
                d["concepts"].setdefault(cid, {"type": parts[4],
                                               "mention_idx": []})
                d["concepts"][cid]["mention_idx"].append(len(d["mentions"]) - 1)
    return docs

def build_candidate_pairs(d: dict):
    """文档级候选对生成:概念对粒度(与官方关系行对齐)"""
    cids = list(d["concepts"].keys())
    return [{"arg1": cids[i], "arg2": cids[j],
             "type1": d["concepts"][cids[i]]["type"],
             "type2": d["concepts"][cids[j]]["type"]}
            for i in range(len(cids)) for j in range(i + 1, len(cids))]

def preprocess(root: pathlib.Path, out_dir: pathlib.Path):
    out_dir.mkdir(parents=True, exist_ok=True)
    stats = {}
    for split, files in find_split_files(root).items():
        docs = {}
        for f in files:
            docs.update(parse_file(f))
        records = []
        for d in docs.values():
            gold = sorted({(r["arg1"], r["arg2"], r["type"]) for r in d["relations"]})
            records.append({
                "pmid": d["pmid"], "title": d["title"], "abstract": d["abstract"],
                "mentions": d["mentions"],
                "concepts": {k: v["type"] for k, v in d["concepts"].items()},
                "relations": [{"arg1": a, "arg2": b, "type": t} for a, b, t in gold],
                "candidate_pairs": build_candidate_pairs(d),
            })
        out = out_dir / f"{split}.jsonl"
        out.write_text("".join(json.dumps(r, ensure_ascii=False) + "\n" for r in records),
                       encoding="utf-8")
        stats[split] = (len(records), sum(len(r["relations"]) for r in records))
    return stats

stats = preprocess(pathlib.Path("/tmp/biored"), pathlib.Path("/tmp/biored_proc"))
# 预期(官方口径):train ≈ (400, 4,178);dev ≈ (100, 1,162);test ≈ (100, 1,163)
# 偏差 >2% 时优先排查:①子集文件漏读(find_split_files 关键词)②复合实体展开逻辑
print(stats)

流程说明:① find_split_files 用关键词而非固定路径定位文件,对 zip 内部布局变化免疫;② parse_file 以"第 2 列取值 + 实体类型白名单"双重判别行类型,规避摘要文本含 tab 的伪列问题;③ 概念对粒度与官方关系行对齐,candidate_pairs 供负采样;④ 概念 ID 为 “-” 的提及不进 concepts(关系无法引用它们),但保留在 mentions 供 NER 使用——与官方评测口径一致。关系行若出现第 6 列起的多余字段(不同版本工具导出差异),以官方指南为准扩展解析分支。

§6.4 PyTorch DataLoader(完整可运行)

import json, random, torch
from torch.utils.data import Dataset, DataLoader
from transformers import AutoTokenizer

class BioREDRelDataset(Dataset):
    """文档级关系抽取数据集:实体标记注入 + 概念对枚举
    任务形态:对每篇文档的每个概念对,判定 8 类关系(+ 无关系)
    与 §6.3 的 JSONL 产物对接;负例按 1:3 采样(可调)"""

    REL_TYPES = ["Association", "Positive_Correlation", "Negative_Correlation",
                 "Bind", "Cotreatment", "Comparison", "Drug_Interaction", "Conversion"]
    REL2ID = {t: i + 1 for i, t in enumerate(REL_TYPES)}   # 0 = 无关系
    NEG_PER_POS = 3

    def __init__(self, jsonl_path, tokenizer_name="microsoft/BiomedNLP-PubMedBERT-base-uncased-abstract-fulltext",
                 max_len=512, is_train=True):
        self.records = [json.loads(l) for l in open(jsonl_path, encoding="utf-8")]
        self.tok = AutoTokenizer.from_pretrained(tokenizer_name)
        self.max_len, self.is_train = max_len, is_train

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

    def _mark_entities(self, text, mentions):
        """实体标记注入:文本侧用 @类型@ 包裹各提及(偏移从后往前防错位)"""
        spans = sorted(((m["start"], m["end"], m["type"]) for m in mentions),
                       key=lambda x: -x[0])
        for s, e, t in spans:
            text = text[:s] + "@" + t + "@ " + text[s:e] + " @" + t + "@" + text[e:]
        return text

    def __getitem__(self, idx):
        rec = self.records[idx]
        text = (rec["title"] + " " + rec["abstract"]).strip()
        marked = self._mark_entities(text, rec["mentions"])

        concepts = list(rec["concepts"].items())
        gold_und = {}
        for r in rec["relations"]:                     # 关系无方向:双向索引(坑点 1)
            gold_und[frozenset((r["arg1"], r["arg2"]))] = r["type"]

        pos, neg = [], []
        for i in range(len(concepts)):
            for j in range(i + 1, len(concepts)):
                key = frozenset((concepts[i][0], concepts[j][0]))
                if key in gold_und:
                    pos.append(self.REL2ID[gold_und[key]])
                else:
                    neg.append(0)
        if self.is_train:                              # 负例采样(坑点 6)
            random.shuffle(neg)
            neg = neg[: self.NEG_PER_POS * max(len(pos), 1)]
        labels = pos + neg

        enc = self.tok(marked, truncation=True, max_length=self.max_len,
                       return_tensors="pt")
        return {"input_ids": enc["input_ids"].squeeze(0),
                "attention_mask": enc["attention_mask"].squeeze(0),
                "labels": torch.tensor(labels, dtype=torch.long)}

    @staticmethod
    def collate(batch):
        """文档级 batching:同一文档内多对共享一次编码,
        生产实现以逐文档前向 + 概念对表示层扩展(此处保留接口)"""
        return batch   # 训练循环内逐文档处理(语料小,吞吐不是瓶颈)

dl = DataLoader(BioREDRelDataset("/tmp/biored_proc/train.jsonl"), batch_size=4, shuffle=True)
for batch in dl:
    print(batch[0]["labels"][:10]); break
# 注意:上述标记注入为教学极简版,生产实现建议——
# ① 复合实体展开后逐概念注入;② 偏移操作在 tokenize 前完成;
# ③ 关系行布局若与预期不符,以官方指南为准(坑点 8)

§6.5 坑点清单(8 个,全部来自该语料真实失败模式)

⚠️ 坑点 1:把 BioRED 当有向关系语料建模(分类:任务理解)

问题:BioRED 的 8 类关系全部是非方向性(nondirectional)的——论文原文明确 “eight biologically meaningful and nondirectional relation types”,官方指南 Table 4 把上游语料的方向性标签(Upregulation、Downregulation、Suppression、Resistance、Treatment、Induce 等)合并为非方向性类目。从 ChemProt/DDI 迁移来的团队会惯性设计"头尾实体"架构,输出方向化概率,与官方评测语义错位。
症状:评测脚本按 Arg1→Arg2 有向匹配时召回率减半(同一对概念两个方向只算一条);训练损失不收敛于官方基线水平;论文复核时被指出"任务定义与语料不符"。
解决:

  1. 简单方法:候选对以 frozenset(arg1, arg2) 为键(§6.4 已如此),预测与评测全程无向。
  2. 进阶方法:若业务确需方向(如"药 A 抑制靶点 B"),把方向恢复作为后处理子任务(用句法/触发词规则在 gold 无向边上二次判向),与官方三档成绩分开报告。
  3. SOTA 方法:在模型说明中显式声明"关系语义 = 共现证据主张",用关系类型 × 极性解释模板(Positive/Negative_Correlation 已编码极性)替代方向建模。
    参考:Luo et al., 2022(任务定义);baae079(关系无方向性说明)

⚠️ 坑点 2:三档评测口径混用,数字不可比(分类:评测协议)

问题:官方定义递进三档任务:实体对抽取(不看类型,F1 超 72)→ 实体对 + 类型(58.9)→ 实体对 + 类型 + 新颖性(47.7)。社区汇总表里不同论文取的档位不同,跨论文比较时若不核对档位,会把 72 与 58 直接对比得出荒谬结论。
症状:你的"58.9"与别人的"63.21"比较后以为自己落后 4 个点,实际对方是档 2 口径你是档 3;或把新颖性档的低分归咎于模型能力而非任务难度。
解决:

  1. 简单方法:评测输出固定带标签"语料/划分/档位/实体口径/F1"四元组(§6.9 代码自动输出三档)。
  2. 进阶方法:同时报告三档成绩 + 每档的混淆矩阵,审稿人与业务方都受益。
  3. SOTA 方法:复现官方源码包的评测器并在其上校准你的实现(逐位对齐后再自研),并把 BC8 盲测段作为第二评测点写入报告。
    参考:Luo et al., 2022 Table 6(三档定义);官方源码包

⚠️ 坑点 3:长尾类型让 macro 指标崩溃(分类:统计陷阱)

问题:8 类关系长尾极重——Conversion 全库 4 条、Drug_Interaction 13 条、Comparison 39 条;BioREx 管线论文(baae079)的测试划分中 Drug_Interaction 计数为 0。macro-F1 会因这几类在 0 与满分之间随机摆动而剧烈抖动;8 类单阶段 softmax 对多数类(Association)的先验拟合也会淹没尾部类。
症状:两次训练 macro-F1 相差 8 个点但 micro-F1 几乎不变;Conversion 类要么 0 召回要么"全蒙对一次"冲上满分;分类报告里尾部类 support 为 0。
解决:

  1. 简单方法:主指标用 micro-F1,macro 指标仅报告 support ≥10 的类型并显式标注排除项。
  2. 进阶方法:级联架构——第一级二分类(有无关系),第二级对正对做类型分类并对尾部类做 focal loss / 类加权 / 过采样。
  3. SOTA 方法:尾部类型(Bind/Cotreatment/Comparison/Drug_Interaction/Conversion)单独走检索式或规则通道,主模型专注相关性三类;对外承诺时只承诺头部类型的性能。
    参考:baae079(类型分布与尾部计数);PMID 38994795(概念对分布)

⚠️ 坑点 4:预训练域与评测文献重叠,成绩虚高解读(分类:泄漏风险)

问题:官方最强基线 PubMedBERT-CRF 的 NER strict F1 达 89.3,而 PubMedBERT 的预训练语料就是 PubMed 文献全集——BioRED 的 600 篇摘要几乎必然在其预训练数据中。模型"见过"测试文献的原文(虽未见标注),域记忆会系统性抬高所有基于该模型的数字。
症状:换用非领域预训练模型(如通用 BERT)成绩暴跌 20+ 个点,误判为"语料难";对 LLM 做零样本评测时成绩反直觉地不稳定。
解决:

  1. 简单方法:报告成绩时必须声明骨干模型的预训练域;跨模型比较只在同预训练域内进行。
  2. 进阶方法:用 BC8 盲测段(2023-2024 才标注)做外部验证,缩短预训练数据与标注数据的时间重叠。
  3. SOTA 方法:评估 LLM 时按文献发表日期构造"训练截止日期前/后"两个子集分别报告,量化记忆污染量级。
    参考:Luo et al., 2022 Table 5(基线成绩);Gu et al., 2021(PubMedBERT 预训练域)

⚠️ 坑点 5:复合实体多 ID 与概念粒度引用把对齐搞乱(分类:预处理陷阱)

问题:BioRED 的复合实体 span 整体标注、多概念 ID 以逗号无空格分隔(官方指南示例 “4312,4313”);而关系行以概念 ID(而非 span 偏移)引用实体——同一概念的多个提及共享同一条关系。解析时若把 “4312,4313” 当单个 ID、或把关系误解为"提及对",实体统计与关系匹配全部错位。
症状:实体计数高于官方统计(复合 span 未拆);关系匹配时找不到 Arg 引用的 ID(把 ID 列当原子值与逗号串比对);同文档同概念的重复关系行误判为数据错误。
解决:

  1. 简单方法:解析实体行时按逗号展开为多条概念记录(§6.3 已实现),span 共享。
  2. 进阶方法:建立"概念 → 提及列表"倒排索引,关系恢复(找证据句)时遍历该索引取全部提及位置。
  3. SOTA 方法:概念聚合层用"类型 + ID"复合键,对同文档同 ID 不同类型注记的罕见冲突做断言检查,冲突行落日志人工复核。
    参考:官方标注指南(复合实体与 ID 规则)

⚠️ 坑点 6:把"未标注"当"确认无关"训练(分类:标签语义)

问题:官方指南明确:关系仅当摘要有明确证据才标注,且不标注"确认无关"与阴性结论——未出现的实体对是"未判定的",不是"负例"。同时摘要中"X 与 Y 无显著关联"这类阴性结论也不入标。把所有未标注对当真负例训练,等于给模型注入"没说就是没有"的系统性偏倚。
症状:模型在 dev 上 precision 异常高、召回受限;部署到真实文献流后大量漏抽(模型学会了保守);知识图谱补全场景下"新知识发现率"远低于 69% 的新颖关系占比所暗示的水平。
解决:

  1. 简单方法:负采样而非全负例训练(§6.4 的 1:3 采样),并保留"未标注 ≠ 无关"的文档级语义记录。
  2. 进阶方法:用正域无标注(PU learning)框架处理候选对,或对"弱负例"(无证据句支持的对)与"硬负例"(有共现无关系标注)分桶加权。
  3. SOTA 方法:部署期把模型输出定位为"摘要证据支持的关系主张",与知识图谱既有边求差集后全部送人工策展——用新颖性检测模型(官方包含)排序,先审 novel。
    参考:官方标注指南(证据标准与阴性结论条款)

⚠️ 坑点 7:忽视新颖性维度,浪费语料最大差异化资产(分类:任务设计)

问题:6,503 条关系中 69% 是 novel(知识库中不存在的新知识),官方为此专设第三档任务并发布配套新颖性检测模型。多数团队只用档 2 评测、丢掉新颖性标签,把金标准降级为普通关系语料;也有团队把 novelty 标签误当"置信度"或"重要性"使用。
症状:知识图谱补全管线无法区分"复述已知"与"增量发现",策展排队长度爆炸;评测报告缺少新颖性档,与官方任务体系不对齐;把 novel 当"正确性权重"加权训练导致分布漂移。
解决:

  1. 简单方法:评测时三档齐报(§6.9);训练时 novelty 作为独立的辅助头(二分类),不与关系类型头混权。
  2. 进阶方法:先判 novel/known 再判类型的级联,利用两标签间的相关性(已知关系的表述模式更程式化)。
  3. SOTA 方法:直接加载官方 biored_novelty_model 做蒸馏或集成;把 novel 排序作为下游策展系统的第一优先级信号。
    参考:Luo et al., 2022(新颖性任务设计与 69% 占比);官方模型包

⚠️ 坑点 8:Variant 的 tmVar 组件格式与 “-” 空值破坏 ID 管线(分类:工程陷阱)

问题:Variant 实体的 ID 有两种形态——dbSNP RS#(如 rs 开头编号)与 tmVar 组件格式(如 V600E → “p|SUB|V|600|E”,竖线分隔的突变四元组);其余实体未匹配时填 “-”。用单一正则或单一外键约束处理 ID 列,组件格式的竖线会撞上 CSV/数据库转义,“-” 会混进外键表。
症状:把 ID 列导入关系型数据库外键表时类型错误;用 ID 回查 dbSNP 时把组件串当 RS# 查询返回空;统计"归一率"时把 “-” 算进总数导致低估。
解决:

  1. 简单方法:解析后立即分桶——rs 前缀 → dbSNP 通道;含竖线 → tmVar 组件通道(按竖线拆四元组存结构化字段);“-” → 未归一通道。三通道统计应覆盖全部 Variant ID。
  2. 进阶方法:组件格式可再归一(HGVS 规范化),经变体映射服务回填 RS#,并在报告中给出回填率。
  3. SOTA 方法:以 tmVar 官方工具的输出 schema 为对齐标准构造 Variant 归一层,与语料内组件格式互验。
    参考:官方标注指南 Table 2(ID 路由与 tmVar 格式)

§6.6 数据增强

  • 实体替换增强:同类型概念间词面替换(保持偏移重算),可缓解尾部类型稀薄;注意替换后必须重新核验关系证据句仍成立,否则引入标签噪声。
  • 跨语料混合:BC5CDR(204 篇重叠文献的化学-疾病关系)与 ChemProt 可作为预训练级语料,先在单类型大数据上训练再在 BioRED 上微调——注意同 PMID 去重(§5.3)。
  • 负例构造:从 LitCoin 或 CTD 抽取"知识库中确认无关/无关系"的概念对做困难负例,比语料内随机负例质量高。
  • 不推荐:机器翻译回译增强——生物医学实体名对翻译极度敏感,实体 ID 丢失后标签不可靠。

§6.7 模型推荐

模型 任务档位 参考成绩 适用建议
PubMedBERT + 图推断(BERT-GT 类) 档 2 56.5 NCBI 官方基线系,图结构建模文档级依赖
BioREx(2023) 档 2 63.21 发表时点强基线,实体标记 + 文档级编码
官方 biored_all_mul_model 档 2 + novelty 见官方包 直接复现/蒸馏用,828 MB 模型包
PubMedBERT 微调(自研级联) 三档 58.9(官方) 生产首选:二分类 + 类型 + 新颖性三头
GPT/LLaMA 类 LLM 档 2(零样本) 19.77-26.77 零样本不可用;少样本 + 结构化输出有提升空间但需重评

选型逻辑:文档级跨句依赖是第一设计变量——纯编码器 + 实体标记的方案在跨句对上弱于图推断类方案;尾部类型决定级联结构(坑点 3);新颖性头决定是否接入官方模型(坑点 7)。

§6.8 硬件需求

  • 数据准备:任意笔记本(语料 <10 MB,纯文本)。
  • 训练(600 篇全量):单卡 24 GB 显存(如 4090/A10)即可承载 PubMedBERT-base 级别的文档级微调;由于语料小,训练时长以分钟计,真正的成本在超参搜索与负采样策略实验。
  • 官方基线复现:模型包 828 MB 下载与加载需约 4 GB 显存;CPU 推理可行(批量评测较慢)。
  • LLM 评测:7-8B 模型量化后单卡 16 GB 可跑零样本;600 篇 × 每篇数十候选对的提示词预算建议先在 dev 100 篇上估算成本再上 test。

§6.9 评估指标代码

官方三档任务的统一评测器(概念对粒度、micro-F1、三档齐报):

def evaluate(pred_by_pmid: dict, gold_by_pmid: dict):
    """三档评测器。输入:{pmid: [(arg1, arg2, type, novelty), ...]}
    档1=实体对是否相关;档2=实体对+类型;档3=实体对+类型+新颖性"""
    def prf(tp, fp, fn):
        p = tp / (tp + fp) if tp + fp else 0.0
        r = tp / (tp + fn) if tp + fn else 0.0
        f = 2 * p * r / (p + r) if p + r else 0.0
        return round(p, 4), round(r, 4), round(f, 4)

    res = {}
    for level in (1, 2, 3):
        def key_fn(t):
            a, b, typ, nov = t
            if level == 1: return frozenset((a, b))          # 档1:无向实体对
            if level == 2: return (frozenset((a, b)), typ)   # 档2:对+类型
            return (frozenset((a, b)), typ, nov)             # 档3:对+类型+新颖性
        tp = fp = fn = 0
        for pmid in set(pred_by_pmid) | set(gold_by_pmid):
            g = {key_fn(t) for t in gold_by_pmid.get(pmid, [])}
            pr = {key_fn(t) for t in pred_by_pmid.get(pmid, [])}
            tp += len(g & pr); fp += len(pr - g); fn += len(g - pr)
        res[f"level{level}"] = dict(zip(("precision", "recall", "f1"), prf(tp, fp, fn)))
    return res

# 用法:pred/gold 的 type 填语料 8 类之一,novelty 填 "novel"/"known"
# 口径自检清单(对外报告前逐项打勾):
#   ① 划分 = 官方 test(100 篇)且未参与任何调参
#   ② 实体口径 = gold(或声明 predicted 并单独报 NER F1)
#   ③ 关系粒度 = 概念对(与官方关系行一致),无向
#   ④ 三档齐报;⑤ 微调型骨干声明预训练域;⑥ 如用了 BC8 盲测段单独成表

官方参考锚点(gold 实体、官方 test):档 1 F1 超 72;档 2 58.9(PubMedBERT);档 3 47.7。你的档 2 结果若在 55-62 区间即与官方基线同水位;档 1/2 差值异常大通常意味着实体标记注入有 bug(回查 §6.4)。

最小用法示例:

pred = {"12345678": [("672", "D001943", "Positive_Correlation", "novel")]}
gold = {"12345678": [("672", "D001943", "Positive_Correlation", "known")]}
print(evaluate(pred, gold))
# {'level1': {'precision': 1.0, 'recall': 1.0, 'f1': 1.0},
#  'level2': {..., 'f1': 1.0},
#  'level3': {'precision': 0.0, 'recall': 0.0, 'f1': 0.0}}   # 新颖性判错,档3清零

这个示例直观展示三档的区分逻辑:同一条关系,实体对与类型全对(档 1/2 满分),仅新颖性判反(档 3 清零)——novel/known 是独立的学习目标,不是类型的附属品(坑点 7)。

§6.10 MLOps 笔记

  • 数据版本化:把 BIORED.zip 的 SHA256 与下载日期写入 DVC/LakeFS 元数据;官方仅单版本发布,但 BC8 扩展集出现后存在"600 篇版"与"1000 篇版"混用风险,元数据里必须区分。
  • 评测可复现:评测器(§6.9)与预处理(§6.3)入库为版本化代码,训练产物附带"代码 commit + 数据哈希 + 档位标签"三元组。
  • 数据卡联动:生产系统应挂接本页 §7.1 偏倚清单与 §5.3 泄漏清单作为发布前 checklist。
  • 漂移监控:上线后监控输入文献的主题分布(按 MeSH 主题回查),BioRED 偏向高文献密度主题(§7.1),新主题文献上的性能需单独抽样评估。
  • 人工回路:把 novel 关系的模型输出接策展工单系统,按新颖性分数排序人工复核——这是该语料设计初衷(文献挖掘 → 知识库增量)的正确落地姿势。

§7 质量评估与局限性

§7.1 已知偏倚

  1. 母语料继承偏倚:600 篇全部抽样自五个既有语料,各语料自身的主题与时代偏倚(2015 年前后的高引文献为主)原样继承;低资源疾病主题、非英语研究传统的文献系统性缺位。
  2. 相关性主张主导:Association + 正/负相关三类占 95.74%,物理作用与药代类关系合计不足 200 条——语料实际上主要评测"关联检测",不能代表生物医学关系的全语义谱系。
  3. 摘要可见性偏倚:仅摘要有证据才标注,而机制细节常在全文;研究结论"摘要可得性"本身与主题热度相关,形成二次筛选。
  4. 预标注锚定:PubTator 工具预标注可能锚定标注者注意力(经典标注心理学效应),工具漏检的实体类型(尤其 Species/CellLine 这类低关注度提及)可能系统性低估——Species 2,192 个提及但极少进入关系,部分源于此。
  5. 新颖性判定的时代锚定:novel/known 以 2021-2022 年的知识库状态为参照;随时间推移"novel"持续失效,用本语料评测新颖性检测时结论有时效性(建议声明参照日期)。
  6. 标注实践与指南小幅漂移:arXiv 2412.08900 记录部分策展人额外标注了指南未定义的 Gene–Variant / Variant–Variant 关系,严格重现实验需知晓此差异。

§7.2 标注质量

  • 配置:每篇 3 名生物医学信息学标注者 + 资深分子生物学仲裁 + 双生物学家新颖性判定,配置在同类语料中属第一梯队(对照 §2.6)。
  • 一致性:论文报告了实体层一致性(官方口径,详见论文相应表格);关系层经仲裁后发布,未公开逐篇 IAA 数字——使用时建议抽样 50 篇自行双人复标,量化你所在领域的子域一致性。
  • 可复核性:证据边界限定摘要内(§3.10),任何争议可在无全文权限下复核,透明度高。
  • 官方工具兜底:发布方提供标注指南 PDF + 官方模型 + 源码三件套,标注协议的可复现性优于多数同期语料。

§7.3 泛化性评估

  • 主题内泛化:官方测试集与训练同源抽样,档 2 F1 58.9 可视为"同分布上界";真实文献流上性能通常更低,尤其是尾部类型(坑点 3)。
  • 跨批次泛化:BC8 盲测段(400 篇新抽样)提供同协议外部验证——BC8 Track 1 最佳队伍在配对档 77.17、类型档 58.95、新颖档 59.22(Subtask 2 相应更低),显示跨批次性能可比但尾部稳定性下降。
  • 跨语料泛化:向 LitCoin(全文、9 类实体、语义谓词体系)迁移需重映射标签体系,直接零迁移不可行;向临床文本(病历、出院小结)迁移属于域变换,文献证据语言与临床叙述语言差异大,不可直接外推。
  • 时间泛化:2022 年后医学文献的语言风格与主题持续演化,建议每 12-18 个月用当期文献抽样复测。

§7.4 伦理与合规

  • 许可:Public Domain(美国政府作品),FTP README 明示无使用/复现限制;论文正文以 CC BY-NC 4.0 发布(许可仅约束论文文本,不约束语料数据)。
  • 个人健康信息:无。公开文献摘要,不涉及患者级数据,无需去标识化审查。
  • NCBI 免责:官方 README/GitHub Disclaimer 明确该资源不用于直接诊断或医疗决策。
  • 二次使用建议:基于 BioRED 训练的模型进入临床流程前,需独立的临床验证与监管路径(本页 §0 医疗免责同此立场);对外发布衍生模型时引用论文(DOI 10.1093/bib/bbac282)是官方要求,也是学术规范。

§7.5 公平性

  • 疾病谱公平:高文献密度主题(常见肿瘤、代谢、心血管)主导,罕见病与低收入地区高负担疾病代表性不足——用其训练的知识图谱会继承该盲区。
  • 语言公平:仅英语文献,其他语言研究传统以英语发表的子集才可能入选。
  • 实体类型公平:Species/CellLine 提及多但关系参与度极低,相关下游任务(模式生物、细胞系溯源)从本语料获益有限。
  • 缓解建议:下游应用对罕见病主题单独建立增量标注线;报告模型性能时按 MeSH 主题分桶,暴露而非掩盖盲区。

§7.6 数据漂移

  • 无官方更新线:原始 600 篇自 2022-04 冻结,官方无 changelog;唯一增量是 2024 年 BC8 盲测段(独立发布,非修补)。
  • 知识库版本漂移:NCBI Gene/Taxonomy/dbSNP/Cellosaurus/MeSH 持续更新,语料内 ID 个别会失效或重定向——生产集成时建立 ID 存活校验任务,按季度跑。
  • 文献流漂移:PubMed 年发文量与主题构成逐年变化,BioRED 训练的抽取器在新文献上的先验偏移需监控(§6.10)。

§7.7 DAIMS 数据质量自评(24 项)

# 检查项 状态 说明
1 宽格式 ✅ 每文档一节、每标注一行,PubTator 结构扁平稳定
2 唯一标识 ✅ PMID 文档级唯一;实体行以 PMID+偏移唯一定位
3 特殊字符 ⚠️ UTF-8 文本,但 Variant 组件格式含竖线、复合 ID 含逗号,入库需转义设计(坑点 8)
4 重复行 ⚠️ 同概念多提及共享关系属设计语义,naive 去重会误删;复合展开后需以概念对粒度去重
5 缺失编码 ✅ 文本语料无特征缺失;实体行缺省即"无标注"语义
6 标签标识 ✅ 实体 6 类 + 关系 8 类枚举显式,无隐式标签
7 罕见类分组 ❌ Conversion 4 条 / Drug_Interaction 13 条,无官方分组或分桶策略,macro 指标不可直接用
8 偏倚评估 ⚠️ 官方未做系统偏倚分析;本页 §7.1 给出六项结构性偏倚
9 数据字典 ⚠️ 格式靠指南 PDF + 论文描述,无机器可读 schema 文件
10 信息性缺失解释 ✅ “-”(未归一)与 tmVar 组件格式语义明确(§4.5)
11 设备记录 ❌ 文本语料,无设备维度(结构性不适用)
12 共线性 ❌ 非表格特征数据,共线性诊断不适用(结构性不适用)
13 编码映射 ✅ 六大知识库 ID 可经 UMLS/官方交叉引用映射 ICD/SNOMED(§2.1 路径)
14 时间戳处理 ❌ 语料不携带文献发表日期与标注日期,时间维度需自行回查 PubMed
15 划分建议 ✅ 官方 400/100/100 固定划分,三段关系数均衡(4,178/1,162/1,163)
16 泄漏讨论 ✅ §5.3 给出测试集公开、预训练污染、LLM 记忆等五项清单
17 标签分布 ✅ 实体/关系/概念对三张分布表齐备(§3.2/§4.2)
18 测量偏倚 ⚠️ 摘要-only 证据边界 + 预标注锚定构成测量口径偏倚(§7.1)
19 外部验证建议 ✅ BC8 盲测段现成可用;LitCoin 跨语料路径明确(§5.4/§7.3)
20 版本记录 ⚠️ 单版本冻结无 changelog;BC8 扩展与主版本需自行区分管理
21 预处理脚本 ✅ 官方提供源码包与模型包;本页 §6.3-6.4 提供独立实现
22 合规要求 ✅ Public Domain、无 DUA、无个人健康信息、免注册
23 多模态对齐 ❌ 单模态文本,无跨模态对齐需求(结构性不适用)
24 去标识化 ✅ 公开文献摘要天然无患者可识别信息

DAIMS 评分:17.5 / 24(✅ 计 1 分 ×15,⚠️ 计 0.5 分 ×5,❌ 计 0 分 ×4)

评分解读:17.5/24 在文本挖掘语料中属第一梯队——标识、划分、合规、泄漏讨论、外部验证五项基础工程全绿,反映其"NIH 金标准 + 共享任务语料"的生产纪律。四个 ❌ 中三项(设备记录、共线性、多模态对齐)属结构性不适用而非质量缺陷,真正的失分点在"罕见类分组"与"时间戳缺失"——前者是 8 类长尾设计的固有代价(坑点 3),后者要求使用者自行回查 PubMed 补时间维度;五项 ⚠️ 集中在工程化包装(无机器可读 schema、无偏倚分析、版本冻结),均为 2022 年发布语料的时代印记。

对你意味着什么:① 你可以立即用它做文档级关系抽取的严肃评测,不必担心标注与划分可信度;② 必须自建解析与评测代码——直接复用本页 §6.3/§6.4/§6.9 可省约一周工程量,或先用官方源码包校准;③ 任何对外报告成绩时带上"任务×口径×划分"标签(坑点 2),否则数字会被质疑;④ 尾部类型与新颖性维度决定了你的产品语义边界——它是"文献关联证据挖掘器",不是"全谱系生物医学关系抽取器";⑤ 接入医院术语体系前经 UMLS 做 MeSH→ICD/SNOMED 映射(§2.1),别硬接原始 MeSH UI。

§7.8 外部验证矩阵

验证途径 数据 协议差异 建议优先级
BC8 盲测段 400 篇(8 名 NLM 策展人) 同指南同格式,独立抽样 ★★★ 首选,现成同协议
官方 test 复评 100 篇 无差异(但已公开四年) ★★ 基线锚点,勿单独作终评
LitCoin 迁移 903 篇全文 谓词体系不同,需映射 ★ 跨语料泛化参考
自建领域抽样 任意 自标 50-100 篇 ★★ 生产部署前必做

§8 基准性能与生态

§8.1 排行榜(关系抽取)

下表仅收录可完整溯源(论文/官方渠道直接可查)的系统,统一为官方 test 100 篇、gold 实体口径(另有标注者除外):

系统 年份 口径 成绩 来源
官方基线(PubMedBERT 微调) 2022 档 2(实体对+类型) F1 58.9 论文 Table 6
官方基线(同上) 2022 档 1(实体对) F1 超 72 论文 Table 6
官方基线(同上) 2022 档 3(+新颖性) F1 47.7 论文 Table 6
BERT-GT(NCBI 图 transformer) 2022-2023 档 2 test F1 56.5 官方 GitHub(ncbi/bert_gt)
BioREx 2023 档 2 test F1 63.21(P 65.99 / R 60.66) J Biomed Inform 104487
BC8 Track 1 最佳(Subtask 1) 2024 类型档 F1 58.95(配对档 77.17 / 新颖档 59.22) baae069
BC8 Track 1 最佳(Subtask 2,端到端) 2024 类型档(自带 NER) F1 55.84(配对 43.03 / 类型 42.74 / 全任务 32.75 各档最佳值另见原文) baae069

Subtask 1 与 Subtask 2 的区别:Subtask 1 给定 gold 实体做关系抽取;Subtask 2 端到端(NER+RE 全自主),数字整体下移约 3-8 个 F1 点——跨队伍比较时必须确认参赛子任务一致。BC8 各档位的最佳成绩分布(77.17/58.95/59.22/44.55)显示:配对检测相对容易,新颖性判别与全任务联合是最难的两档。

表外补充(经公开汇总表转引,引用时请回溯原始论文核对协议细节):e2eBioMedRE test F1 64.44(P 67.81 / R 61.39);零样本 LLM 在该语料上显著落后——Llama-1-8B F1 19.77、Qwen2.5-7B F1 26.77(转引自 ACL 2026 CoRE 论文公开汇总表)。零样本与监督成绩差 30+ F1 点是当前生物医学文档级关系抽取最有信息量的事实之一:通用 LLM 的文献关系先验远不足以替代微调。

NER 参考(论文 Table 5,gold 口径):PubMedBERT-CRF strict F1 89.3、BioBERT-CRF 88.7、BiLSTM-CRF 87.1;relaxed 口径 93.5;Species 单项最高 97。

§8.2 SOTA 总结与选型建议

  • 当前水位:档 2 监督最强成绩在 63-64 区间(BioREx 63.21 与转引的 e2eBioMedRE 64.44),距档 1 的 72+ 仍有约 10 个点的"类型判定税";新颖性档再降约 11 个点——三档递进的真实难度曲线得到社区一致复现。
  • 架构共识:gold 实体下领域预训练 + 文档级图结构建模(实体标记 + 图 transformer / 自适应池化)是档 2 的主流配方;端到端(NER+RE 联合)成绩仍明显低于 gold 实体口径,选型时先明确评测口径。
  • LLM 路线:零样本不可用(<27 F1),但少样本 + 结构化输出 + 领域微调是活跃方向;用 BioRED 评测 LLM 时务必声明训练截止日期与记忆污染风险(坑点 4)。
  • 生产建议:先跑官方基线锚定口径,再用级联架构(二分类 → 类型 → 新颖性)平衡尾部稳定性(坑点 3),最后用 BC8 盲测段做发布门禁。

§8.3 评测协议

  • 任务输入:整篇摘要(标题+正文);输出:概念对 + 8 类标签(+ novel/known)。
  • 粒度:概念对(Arg 以概念 ID 引用),无方向;复合实体展开后按概念聚合(§4.4)。
  • 档位:三档递进(§2.3),micro-F1 为官方指标。
  • 实体口径:官方主表用 gold 实体;端到端口径需同时报告 NER strict/relaxed F1。
  • 公平比较规则:同档位、同划分、同实体口径三者齐备才可同表比较(坑点 2)。
  • BC5CDR:化学-疾病单关系金标准(1,500 篇),BioRED 抽样其 204 篇并复用其化学-疾病标注;做化学-疾病专项时它仍是更大规模的选择。
  • NCBI Disease / tmVar / NLM-Gene / BC2GN:BioRED 的四个实体层母语料,做单类型 NER/归一化时规模更大、更专注。
  • LitCoin:全文、9 类实体、语义谓词体系,与 BioRED 构成"摘要 vs 全文"的互补评测对。
  • ChemProt / DDI:句级、含方向性类型的经典关系语料,适合与 BioRED 对照研究"方向性标签的收益与成本"。
  • BC8-BioRED 扩展集:BioRED 官方延伸(400 篇盲测),同指南同格式,外部验证首选。

§8.5 关键论文 Top 10

  1. Luo L, Lai PT, Wei CH, Arighi CN, Lu Z. BioRED: a unified resource for automatically extracting biomedical entities and relations. Briefings in Bioinformatics 2022;23(5):bbac282. DOI: 10.1093/bib/bbac282(语料本体论文)
  2. Islamaj R, et al. BioCreative VIII BioRED track overview. Database 2024:baae069. PMID 39114977(共享任务概览,14 队 94 提交)
  3. BioRED-BCVIII 评测语料论文. Database 2024:baae071. PMID 39126204(扩展语料构建)
  4. 语料统计与概念对分布论文. PMID 38994795(实体/概念对分布表来源)
  5. BioREx 论文. Journal of Biomedical Informatics 2023;146:104487. PMID 37673376(档 2 强基线 63.21)
  6. BioREx 管线论文. Database 2024:baae079. PMID 39197056(关系类型分布表与方向性说明)
  7. Wei CH, Kao HY, Lu Z. PubTator: a web-based text mining tool for assisting biocuration. Nucleic Acids Research 2013;41(W1):W518-W522. DOI: 10.1093/nar/gkt441(格式与预标注基础设施)
  8. Islamaj Dogan R, Murray GC, Névéol A, Lu Z. NCBI disease corpus. Journal of Biomedical Informatics 2014;47:1-10. DOI: 10.1016/j.jbi.2013.12.007(母语料之一)
  9. Lee J, Yoon W, Kim S, et al. BioBERT. Bioinformatics 2020;36(4):1234-1240. DOI: 10.1093/bioinformatics/btz682(领域预训练基线系)
  10. Gu Y, Tinn R, Cheng H, et al. Domain-specific language model pretraining for biomedical NLP. Nature Machine Intelligence 2021;3:1234-1242. DOI: 10.1038/s42256-021-00359-1(PubMedBERT,官方最强基线骨干)

§8.6 社区活跃度

  • 引用增长:2022 年发布至 2026-09 累计 227+ 次(Google Scholar)、Scopus 152 次,年均 50+ 次的增长曲线在 NLP 资源类论文中属头部。
  • 共享任务带动:BioCreative VIII(2023-2024)以 BioRED 为官方语料,14 支队伍 94 份提交;LitCoin NLP Challenge 等大规模评测采用该数据集(官方 GitHub 记载 200+ 队参赛)。
  • 官方维护:NCBI FTP 资源 2023-06 仍有更新(源码包),GitHub 仓库(ncbi/BioRED、ncbi/bert_gt)保持可访问,发布机构为常设国家实验室,长期可用性高。
  • 生态位:在"文档级 + 多类型 + 概念归一"三个维度的交集上暂无同量级替代语料,生态位稳固。

§8.7 生态快照

生态位 代表资源 状态
数据本体 BIORED.zip + 标注指南(FTP) 冻结版本,长期可下载
官方模型 biored_re_model.tar(关系 + 新颖性双模型) 可复现官方基线
官方代码 biored_re_source_code.tar 2023-06 版
共享任务 BioCreative VIII Track 4/5(CodaLab 13377/13378) 赛后评测持续开放
扩展语料 BC8-BioRED 盲测段(FTP) 2024 年发布
社区实现 HuggingFace 转载版、各类预处理脚本 使用时核对与官方口径的一致性
上游格式生态 PubTator/BioC 工具链(PubTator、GNormPlus、tmVar) NCBI 维护,活跃

§9 相关资源与引用

§9.1 官方资源清单

资源 地址
官方主页 https://www.ncbi.nlm.nih.gov/research/bionlp/Tools/BioRED/
FTP 数据目录 https://ftp.ncbi.nlm.nih.gov/pub/lu/BioRED/
语料包 https://ftp.ncbi.nlm.nih.gov/pub/lu/BioRED/BIORED.zip
标注指南 PDF https://ftp.ncbi.nlm.nih.gov/pub/lu/BioRED/BioRED_Annotation_Guideline.pdf
官方 README(许可) https://ftp.ncbi.nlm.nih.gov/pub/lu/BioRED/README.txt
GitHub 仓库 https://github.com/ncbi/BioRED
BERT-GT 基线仓库 https://github.com/ncbi/bert_gt
BC8 扩展数据 https://ftp.ncbi.nlm.nih.gov/pub/lu/BC8-BioRED-track/
BC8 CodaLab 赛场 https://codalab.lisn.upsaclay.fr/competitions/13377 与 13378
论文(开放获取) https://doi.org/10.1093/bib/bbac282(PMC9487702)
arXiv 预印本 https://arxiv.org/abs/2204.04263

§9.2 BibTeX 引用块

@article{luo2022biored,
  title   = {BioRED: a unified resource for automatically extracting biomedical entities and relations},
  author  = {Luo, Ling and Lai, Po-Ting and Wei, Chih-Hsuan and Arighi, Cecilia N and Lu, Zhiyong},
  journal = {Briefings in Bioinformatics},
  volume  = {23},
  number  = {5},
  pages   = {bbac282},
  year    = {2022},
  doi     = {10.1093/bib/bbac282},
  pmid    = {35849818}
}

@article{islamaj2024bioredtrack,
  title   = {Overview of the BioCreative VIII BioRED track},
  author  = {Islamaj, Rezarta and others},
  journal = {Database},
  pages   = {baae069},
  year    = {2024},
  doi     = {10.1093/database/baae069},
  pmid    = {39114977},
  note    = {条目标题以 DOI 解析页为准;DOI 与 PMID 已核实}
}

@article{biorex2023,
  title   = {BioREx: biomedical relation extraction with entity marking and document-level encoding},
  author  = {{BioREx authors}},
  journal = {Journal of Biomedical Informatics},
  volume  = {146},
  pages   = {104487},
  year    = {2023},
  doi     = {10.1016/j.jbi.2023.104487},
  pmid    = {37673376},
  note    = {条目标题与作者列表以 DOI 解析页为准;DOI 与 PMID 已核实}
}

§9.3 引用指南

  • 用数据:引 luo2022biored(主引用,官方 README 要求引用论文);用了 BC8 扩展段则加引 baae069/baae071。
  • 比较成绩:与 BioREx/e2eBioMedRE/LLM 成绩同表时,标注各行的档位与实体口径,并优先引用原始论文而非汇总表。
  • 引用数字规范:本页所有统计(20,419/6,503/69%/分布表)的权威来源是论文本体与 PMID 38994795 分布表;转引时注明"统计口径 = 全集 600 篇"或"Train+Dev 求和",避免与 BC8 扩展段数字混淆。

§10 AI 使用声明卡

§10.1 本页面使用的 AI 模型

用途 模型/工具
资料检索与汇总 CodeBuddy(fast-model)
正文撰写与代码生成 CodeBuddy(fast-model)

§10.2 AI 参与范围

AI 负责检索核实公开资料、组织章节结构、撰写正文与示例代码;所有规模数字、成绩与协议描述均标注原始来源,检索与核验记录沉淀于同目录 FACTS.md(含两条证伪记录:种子档案的"450/150 划分"与"19 类关系"口径均已被官方来源纠正为 400/100/100 与 8 类非方向性);人工负责医学与数据工程交叉审核(见 §0)以及最终发布决定。

§10.3 输入来源列表

  1. Luo L, Lai PT, Wei CH, Arighi CN, Lu Z. BioRED: a unified resource for automatically extracting biomedical entities and relations. Briefings in Bioinformatics 2022;23(5):bbac282. DOI: 10.1093/bib/bbac282(PMID 35849818)
  2. BioRED arXiv 预印本. arXiv:2204.04263
  3. NCBI FTP BioRED 目录与 README.txt(许可与文件清单):https://ftp.ncbi.nlm.nih.gov/pub/lu/BioRED/
  4. BioRED Annotation Guideline(官方标注指南 PDF,16 页,2022-06-02):https://ftp.ncbi.nlm.nih.gov/pub/lu/BioRED/BioRED_Annotation_Guideline.pdf
  5. NCBI BioRED 官方 GitHub 仓库:https://github.com/ncbi/BioRED
  6. NCBI bert_gt 官方仓库(BERT-GT test F1 56.5):https://github.com/ncbi/bert_gt
  7. Islamaj R, et al. BioCreative VIII track overview. Database 2024:baae069. PMID 39114977
  8. BioRED-BCVIII 评测语料论文. Database 2024:baae071. PMID 39126204
  9. BioRED/BC8 语料统计论文(实体与概念对分布表). PMID 38994795
  10. BioREx. Journal of Biomedical Informatics 2023;146:104487. PMID 37673376
  11. BioREx 管线论文(关系分布与方向性说明). Database 2024:baae079. PMID 39197056
  12. 精准肿瘤 NLP 研究(BioRED 400/100/100 统计表转引). arXiv:2412.08900
  13. 引用计数:Google Scholar(227+,截至 2026-09)与 PlumX/Scopus(152)
  14. 文档级 RE 同口径对比与 LLM 零样本成绩:ACL 2026 CoRE 论文公开汇总表(e2eBioMedRE 64.44、Llama-1-8B 19.77、Qwen2.5-7B 26.77 为转引,已声明)

§10.4 人工校验记录

  • 核验 600 篇规模与 400/100/100 划分(官方 FTP README、arXiv 2412.08900 Table 1 双源一致)。
  • 核验 8 类非方向性关系定义(论文原文表述 + 标注指南 Table 4 映射 + baae079 方向性说明三源一致);确认指南第 9 标签 Cause 无发布实例。
  • 核验关系类型分布表(Train+Dev 求和 = 6,503,与论文总数吻合)与实体分布表(分集求和 = 600 篇总量)。
  • 核验 FTP 文件清单与时间戳、许可(Public Domain)、模型包内容说明。
  • 核验三档基准数字与 BC8 提交统计(baae069)。

§10.5 AI 生成章节标注

  • 全部章节由 AI 依 FACTS.md 事实清单起草;§0 免责声明为编辑部标准文本;§2.1/§2.1b 的 ICD-11 与 SNOMED CT 映射为示例性质(经 UMLS 交叉映射),已在正文显式声明并建议按 UMLS 版本复核。

§10.6 最后人工审核

  • 审核日期:2026-09-05
  • 审核范围:医学背景映射、偏倚与局限分析、评测协议与坑点工程判断
  • 审核结论:通过(published)

相关数据集导航

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

  • pubtator-central — 共享标签:医疗NLP / 生物医学文献 / 关系抽取 / 命名实体识别 / 知识图谱
  • medmentions — 共享标签:医疗NLP / 生物医学文献 / 命名实体识别 / 知识图谱
  • bc5cdr — 共享标签:医疗NLP / 生物医学文献 / 关系抽取 / 命名实体识别
  • craft — 共享标签:医疗NLP / 生物医学文献 / 命名实体识别 / 知识图谱
  • genia — 共享标签:医疗NLP / 生物医学文献 / 关系抽取 / 命名实体识别
  • s2orc — 共享标签:医疗NLP / 生物医学文献 / 知识图谱
  • cometa — 共享标签:医疗NLP / 命名实体识别 / 知识图谱
  • ncbi-disease — 共享标签:医疗NLP / 生物医学文献 / 命名实体识别
  • jnlpba — 共享标签:医疗NLP / 生物医学文献 / 命名实体识别
  • distemist — 共享标签:医疗NLP / 命名实体识别 / 知识图谱

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

返回 AI-Ready 数据集