信息速览
INFOBOX — DrugProt 一屏速览
维度 内容 本质 BioCreative VII Track 1 官方化学品-基因/蛋白相互作用(CPI)关系抽取黄金语料 + 大规模银标扩展 团队 巴塞罗那超级计算中心 BSC(主导)+ 图尔库大学 + 加泰罗尼亚理工大学 UPC;通讯 Martin Krallinger 论文 Database (Oxford) 2023, baad080(doi:10.1093/database/baad080);会议 overview 见 BC VII workshop 2021 黄金数据 训练 3,500 篇 + 开发 750 篇 + 测试 750 篇 = 5,000 篇 PubMed 摘要;实体 108,387;公开关系 21,053 关系体系 13 类细粒度:INHIBITOR( inhibitor 最多大类 5,392)到 AGONIST-INHIBITOR(最少 13)跨度 400 倍 银标扩展 Large Scale:2,366,081 篇摘要 + 53,993,602 条自动实体注释;衍生 KG 53,993,602 节点 / 19,367,406 边 前身 ChemProt(BioCreative VI Track 5,2,432 摘要,22 类归并 10 组只评 5 组)——DrugProt 补上粒度与可扩展性两块短板 评测 主赛道 30 队 / 四大洲 110 人 / 107 runs;个别关系类型 P/R 峰值 0.9167 / 0.9542;多数参赛者用 BERT 类预训练模型 Large Scale 冠军 NLM-NCBI,best run F1 0.788602(P 0.772977 / R 0.804871);UTHealth 0.773216 次之 许可 CC BY-4.0(Zenodo API 权威确认,网页端 license 字段不可见——坑 6) 获取 Zenodo 5042151(gold)+ 5119878(Large Scale),TSV 三表 zip,3,796,908 bytes,md5 eeb92882… 库内互链 ChemProt(753)(前身)、ChemDNER(450)、BioRED(457)、DrugBank(89)、DrugCentral(344)、ChEBI(314)
DrugProt 是一个「把 5,000 篇文献摘要变成化学品与蛋白之间 13 种关系答案之书」的语料工程:它由巴塞罗那超级计算中心(BSC)与图尔库大学团队为 BioCreative VII 挑战赛 Track 1 构建,任务直指药物发现最基础的一步——从文献里读出「哪个化合物对哪个蛋白做了什么」。它的价值不止于一份 gold 数据:配套的 Large Scale 赛道把同样的任务推到 236 万篇摘要的工业级规模上,让「实验室精度」与「全文献库吞吐」第一次在同一届挑战赛里同台较量。
导语读法三则:
- 只想下数据:直奔 §6 获取与许可——CC BY-4.0、Zenodo 两个 DOI、TSV 三表格式十分钟即可跑通(§9 有加载代码)。
- 关心任务设计:直奔 §3 十三类关系详解与 §5 ChemProt 谱系对照——为什么 22 类归并 10 组的 ChemProt 要重做成 13 类细粒度。
- 要对标成绩:直奔 §7 评估与基准——主赛道 30 队全景、Large Scale 九队成绩表、高频错误实体清单。
§0 导读:这个数据集解决什么问题
药物发现的文献瓶颈是一个老问题:一个药物化学家想回答「化合物 X 是否抑制蛋白 Y」这类问题,最可靠的证据几乎都在 PubMed 摘要里,但人读文献的速度永远追不上文献增长的速度。化学品-蛋白相互作用(chemical-protein interaction,CPI)抽取因此成为生物医学自然语言处理(NLP)的经典任务——给定一篇摘要,找出其中所有化学品与基因/蛋白的提及,并判断每对化学品-蛋白之间属于哪种相互作用。
这个任务此前最好的公开基准是 ChemProt——BioCreative VI 挑战赛 Track 5 的产物。ChemProt 有两大先天局限。其一是粒度:原始注释有 22 种细粒度关系,但公开版本把它们归并成 10 组(CPR:1-10),其中只有 5 组参与评估,研究者无法在完整粒度上建模「抑制」与「间接上调」这类语义差别。其二是规模盲区:ChemProt 只有 2,432 篇摘要,没有任何机制检验模型在百万级文献库上的吞吐与精度衰减。
DrugProt 是对这两个问题的正面回答。粒度上,它直接公开 13 种细粒度关系类型的人工标注,从最大类 INHIBITOR(训练集 5,392 条)到最稀有的 AGONIST-INHIBITOR(仅 13 条)完整呈现长尾;规模上,除 5,000 篇黄金摘要外,组织方用自动流水线构建了 2,366,081 篇摘要、5,399 万实体注释的 Large Scale 银标语料,并设专门赛道评估「在一小部分人工数据上训练、在全部文献库上评估」的可扩展性。2021 年赛道举办时,30 支队伍、横跨四大洲的 110 名参赛者提交了 107 个运行结果;两年后的期刊扩展版(Database 2023)补全了数据描述、结果分析与衍生知识图谱。
§0 读法三则:
- 这个条目覆盖「gold 语料 + silver 扩展 + 挑战赛基准」三层结构:三层的数据质量、许可、获取方式全部一致(CC BY-4.0 公开),但标注性质完全不同——黄金层人工、银标层自动,混用前必读 §2.4 与坑 5。
- 全文硬数字均出自 Zenodo 官方 Summary statistics 与期刊论文(Database 2023, baad080);第三方参赛队论文的计数与官方有小幅出入,已在坑 2 存照,引用一律以官方为准。
- 检索时注意:官方指定的 Zenodo 引用模板(krallinger2017overview)实际指向的是前身 CHEMPROT 的 2017 年 overview——这不是错误而是官方有意为之(坑 7),写论文引用时建议改用 2021 会议 overview 或 2023 期刊版。
§1 数据集速览:十问十答
Q1:DrugProt 的「黄金」部分到底有多少数据?
训练集 3,500 篇摘要 + 开发集 750 篇,合计 4,250 篇随数据包公开;测试集 750 篇的标注不公开、只用于 CodaLab 在线评估。三者合计 5,000 篇 PubMed 摘要——这是期刊论文的官方口径。折算 token:训练 1,001,168 + 开发 199,620 = 1,200,788 个。
Q2:实体和关系各有多少?
公开部分(训练+开发)共 108,387 个实体注释:化学品 46,274+9,853,基因/蛋白 43,255+9,005(训练集内再分可归一 GENE-Y 28,421 与不可归一 GENE-N 14,834)。关系 21,053 条(训练 17,288 + 开发 3,765),覆盖 13 种细粒度类型;若计入未公开的测试集 gold(可由官方总量 24,526 反推为 3,473 条),全库约 24,526 条。
Q3:13 种关系类型是什么?
按训练集数量从大到小:INHIBITOR(抑制剂,5,392)、DIRECT-REGULATOR(直接调控,2,250)、SUBSTRATE(底物,2,003)、ACTIVATOR(激活剂,1,429)、INDIRECT-UPREGULATOR(间接上调,1,379)、INDIRECT-DOWNREGULATOR(间接下调,1,330)、ANTAGONIST(拮抗剂,972)、PRODUCT-OF(产物,921)、PART-OF(部分,886)、AGONIST(激动剂,659)、AGONIST-ACTIVATOR(29)、SUBSTRATE_PRODUCT-OF(25)、AGONIST-INHIBITOR(13)。每类语义见 §3。
Q4:数据长什么样?
三个 TSV 表:abstracts.tsv(PMID、标题、摘要三列);entities.tsv(PMID、实体编号、类型、起止字符偏移、原文六列);relations.tsv(PMID、关系类型、化学品参数、基因参数四列)。偏移基于「标题+摘要」拼接后的全文。示例:12488248 INHIBITOR Arg1:T1 Arg2:T52 表示 PMID 12488248 中 T1 号化学品对 T52 号基因构成抑制关系。
Q5:基因实体为什么分 GENE-Y 和 GENE-N?
训练集里基因/蛋白注释分两类:GENE-Y [Normalizable] 是能归一到数据库 ID 的实体,GENE-N [Non-Normalizable] 是无法归一的(如基因家族、片段、变异体描述)。开发集不再做这个区分、统一标 GENE——这是跨 split 联合训练时最容易踩的格式差异(坑 4)。
Q6:Large Scale 银标扩展是什么?
Zenodo 5119878 提供的 2,366,081 篇摘要(large_scale_abstracts.tsv)加 53,993,602 条自动实体注释(large_scale_entities.tsv,GPRO 对象类型)。注释由自动流水线生成而非人工,噪声显著;其中还有 222 条不同 PMID 但同题同摘要的重复记录(官方 README 自曝,坑 5)。组织方由它构建了 53,993,602 节点、19,367,406 边的知识图谱。
Q7:挑战赛结果如何?
主赛道 30 支队伍(四大洲 110 人)提交 107 个运行结果,多数参赛者微调 BERT/BioBERT 类预训练语言模型;个别关系类型的精确率/召回率峰值分别达到 0.9167 与 0.9542。Large Scale 赛道 9 支队伍 21 个运行,冠军 NLM-NCBI 的 best run micro-F1 为 0.788602。完整成绩表与高频错误分析见 §7。
Q8:和 ChemProt 是什么关系?
ChemProt(BioCreative VI Track 5)是直接前身:2,432 篇摘要、22 种原始关系归并 10 组只评 5 组、BC VI 冠军 F 值 64.1。DrugProt 保留其任务内核,但改成 13 类完整细粒度公开 + 新增大规模可扩展性赛道——两大改进精确对应 ChemProt 的两大局限(§5 详述)。
Q9:我现在能拿到什么、什么许可?
全部三层都公开:黄金训练/开发集(Zenodo 5042151)、Large Scale 银标(Zenodo 5119878)、三份注释指南与 FAQ(各自 DOI)——统一 CC BY-4.0。测试集 gold 是唯一拿不到的部分(只能提交 CodaLab 评估)。
Q10:为什么它对 AI-Ready 重要?
它是「挑战赛即发布」的典范:任务结束即全量公开(gold+silver+指南+评估脚本),CC BY-4.0 无任何附加条款,TSV 纯文本格式无需任何专用解析器,评估库直接 pip 安装——从下载到跑出第一个 micro-F1 不超过半小时。库内同类关系抽取条目(如 ChemProt、BioRED)多数依赖主办方网页或第三方整理版,DrugProt 的自包含程度明显更高。
§1A 快速适配性判断:DrugProt 适不适合你的任务
十问十答给出的是「它是什么」;本节回答「要不要用它」。四个适配场景与三个不适配场景:
适配场景
- 场景一:训练/评估一个 CPI 或广义关系抽取模型。 这是它的原生用途——4,250 篇公开人工标注摘要、13 类细粒度标签、官方评估脚本三位一体,且参照基线明确(Turku-BSC 约 0.744,§7.1)。选它的决定性理由是标签粒度:需要区分「直接抑制」与「间接下调」时,ChemProt 的 5 组评估口径不够用,DrugProt 的 13 类是公开可得的最细粒度(§5);
- 场景二:生物医学 NER 的预训练或领域自适应。 10.8 万公开实体注释(化学品+基因)自带字符级偏移, Large Scale 的 5,399 万自动注释可作大规模自适应语料——注意后者是银标,须按坑 5 的边界使用;
- 场景三:LLM 的生物医学能力评测。 13 类干净的多分类标签、纯文本输入输出、官方 micro-F1 脚本——把摘要加候选对塞进 prompt、把标签当答案,零样本/少样本评测的搭建成本极低;§10.3 已指出这是近年 LLM 评测的常见做法;
- 场景四:药物发现信息学的文献证据层。 INHIBITOR/ACTIVATOR/SUBSTRATE 类关系可直接喂给靶点-化合物管线;银标衍生的 5,399 万节点 KG 可作检索底座(§7.5)。
不适配场景
- 场景五:需要测试集本地复现的严格对比实验。 test gold 只在 CodaLab 后端(坑 1),本地只能做 train/dev 实验;论文如果必须报告测试集分数且不能联网提交,要么接受 dev 口径并明示,要么换用完全公开的语料;
- 场景六:多实体类型/跨句关系抽取。 DrugProt 只覆盖化学品与基因/蛋白两类实体、只标注摘要内(句子级为主)的关系;需要疾病、细胞系等多实体类型关系时,库内 BioRED(457) 是更合适的下一站(§10.2);
- 场景七:文档级/全文级关系抽取。 语料单位是摘要(标题+摘要拼接),不含正文段落——全文级任务只能把它当预训练或组件评测素材。
换轨指引
如果落在不适配场景,库内的相邻条目按需替换:多实体类型关系 → BioRED(457);化学品 mention 检测 → ChemDNER(450);基因 mention 检测的祖源基准 → BC2GM(434);结构化药物-靶点金源(非文献抽取)→ DrugBank(89)/DrugCentral(344);经典基因/蛋白 NER 对比 → JNLPBA(442)。完整互链表见 §10.2。
§2 数据构成与规格
2.1 黄金语料三方划分
DrugProt 黄金标准(Gold Standard)由 5,000 篇 PubMed 摘要构成,三方划分如下:
| 子集 | 摘要数 | tokens | 实体注释 | 关系 | 标注公开性 |
|---|---|---|---|---|---|
| Training set | 3,500 | 1,001,168 | 89,529 | 17,288 | 随数据包公开 |
| Development set | 750 | 199,620 | 18,858 | 3,765 | 随数据包公开 |
| Test set | 750 | 未公开 | 未公开 | 约 3,473(推算) | 不公开,仅 CodaLab |
| 合计 | 5,000 | 约 1,200,788+(公开部分) | 108,387(公开部分) | 24,526(官方总量口径) | — |
三方划分的两点说明:
- 测试集摘要本身的文本(PMID+标题+摘要)在测试阶段对参赛者可见,但其 gold 实体与关系标注至今未公开——这是「挑战赛即发布」模式里少数没有落地的部分,也意味着本地完整复现三方评估不可能(坑 1)。
- 关系总量 24,526 出自官方口径;公开部分 17,288+3,765=21,053,差值 3,473 即未公开测试集 gold 的关系数。这个推算自洽,但注意 24,526 与 21,053 两个数字在不同来源里都会出现,引用时必须说明口径(存照 §9)。
2.2 实体构成与分布
| 实体类型 | Training | Development | 说明 |
|---|---|---|---|
| CHEMICAL | 46,274 | 9,853 | 化合物、药物、化学品家族等 |
| GENE-Y [Normalizable] | 28,421 | — | 可归一到数据库 ID 的基因/蛋白 |
| GENE-N [Non-Normalizable] | 14,834 | — | 不可归一(家族、片段、变异描述等) |
| Gene Total (N+Y) | 43,255 | 9,005 | 开发集不再区分 Y/N |
| 合计 | 89,529 | 18,858 | — |
实体体系的三点观察:
- 化学品略多于基因(约 51:49),这在 CPI 语料里是均衡设计——任务天然要求每条关系一端化学品一端基因,实体比例失衡会限制关系密度。
- 不可归一实体占基因总数约 34%(14,834/43,255):基因家族(如「cyclin-dependent kinases」)、蛋白片段、带突变描述的实体在真实文献里占比很高,这是实体归一(normalization)研究常被低估的难度来源。
- 开发集统一 GENE 标签意味着:模型在开发集上无法学习「可归一性」这个信号,只能在训练集上学——这是任务设计的有意取舍还是遗留不一致,官方未说明(坑 4 的根源)。
2.3 关系类型全表(13 类,按数量降序)
| 关系类型 | Training | Development | 合计(公开) |
|---|---|---|---|
| INHIBITOR | 5,392 | 1,152 | 6,544 |
| DIRECT-REGULATOR | 2,250 | 458 | 2,708 |
| SUBSTRATE | 2,003 | 495 | 2,498 |
| ACTIVATOR | 1,429 | 246 | 1,675 |
| INDIRECT-UPREGULATOR | 1,379 | 302 | 1,681 |
| INDIRECT-DOWNREGULATOR | 1,330 | 332 | 1,662 |
| ANTAGONIST | 972 | 218 | 1,190 |
| PRODUCT-OF | 921 | 158 | 1,079 |
| PART-OF | 886 | 258 | 1,144 |
| AGONIST | 659 | 131 | 790 |
| AGONIST-ACTIVATOR | 29 | 10 | 39 |
| SUBSTRATE_PRODUCT-OF | 25 | 3 | 28 |
| AGONIST-INHIBITOR | 13 | 2 | 15 |
| 合计 | 17,288 | 3,765 | 21,053 |
2.4 文件格式与官方示例
数据包 drugprot-gs-training-development.zip(3,796,908 bytes,md5 eeb928823d1357510a415256f8957066)内含三个 TSV:
| 文件 | 列数 | 列结构 |
|---|---|---|
| drugprot_training_abstracts.tsv / drugprot_development_abstracts.tsv | 3 | PMID|Title|Abstract |
| drugprot_training_entities.tsv / drugprot_development_entities.tsv | 6 | PMID|TermNumber|Type|StartOffset|EndOffset|Text |
| drugprot_training_relations.tsv / drugprot_development_relations.tsv | 4 | PMID|Relation|Arg1:T# CHEMICAL|Arg2:T# GENE |
官方文档给出的示例行(原样):
11808879 T12 GENE-Y 1860 1866 KIR6.2
11808879 T13 GENE-N 1993 2016 glutamate dehydrogenase
23017395 T1 CHEMICAL 216 223 HMG-CoA
23017395 T2 CHEMICAL 258 261 EPA
12488248 INHIBITOR Arg1:T1 Arg2:T52
23220562 INDIRECT-DOWNREGULATOR Arg1:T1 Arg2:T14
解析要点四则:
- 偏移基准是 title+abstract 拼接全文:entities.tsv 里的 StartOffset/EndOffset 从标题第一个字符起算、连续贯穿摘要正文。若你的流程只处理摘要正文,必须先在头部叠加标题长度偏移,否则所有实体位置都会错位(坑 3)。
- 关系参数写法:
Arg1:T1指向 entities.tsv 里的 TermNumber T1,关系方向固定为化学品在前(Arg1=CHEMICAL)、基因在后(Arg2=GENE)。 - 实体编号不跨摘要复用:T1、T2……每篇摘要独立编号,跨行 join 必须以 PMID 为复合键。
- TSV 分隔符与文本内容冲突:摘要正文里可能出现制表符残片(OCR 或排版产物),稳妥的读取方式是按列数从右侧切分而非朴素 split。
2.5 Large Scale 银标扩展
| 属性 | 数值 |
|---|---|
| 摘要总量(large_scale_abstracts.tsv) | 2,366,081 records |
| 有效去重后 | 2,365,859(222 条重复 PMID,同题同摘要) |
| 实体注释总量(large_scale_entities.tsv) | 53,993,602 |
| 编码规范 | UTF8 NFC 规范化 |
| 实体类型框架 | GPRO 对象(BioCreative V 期间定义的基因/蛋白归类框架) |
| 衍生知识图谱 | 53,993,602 节点 / 19,367,406 边(silver standard KG) |
银标的生成逻辑:对 PubMed 大规模检索命中的摘要运行自动实体识别(化学品+基因/蛋白),不做人关系抽取——关系层面的银标不存在,Large Scale 赛道的评估方式是把参赛系统在黄金测试子集上的表现,与它在全库吞吐上的效率指标联合考察。这也是它和黄金层最本质的区别:银标只有实体没有 gold 关系,不能直接当关系抽取训练集用(坑 5)。
222 条重复的官方说明:这些记录 PMID 不同但标题与摘要完全相同(多为期刊勘误、多次索引或数据库合并的痕迹),官方 README 建议下游使用前自行去重。
2.6 官方样例走查:从三行 TSV 读出全部格式约定
§2.4 给出了官方文档的示例行原样;本节逐行走查,把每行背后的格式约定讲透。这三行实体注释——
11808879 T12 GENE-Y 1860 1866 KIR6.2
11808879 T13 GENE-N 1993 2016 glutamate dehydrogenase
23017395 T1 CHEMICAL 216 223 HMG-CoA
与两行关系注释——
12488248 INHIBITOR Arg1:T1 Arg2:T52
23220562 INDIRECT-DOWNREGULATOR Arg1:T1 Arg2:T14
按列拆解后的完整信息:
| 字段 | 示例值 | 语义与约定 |
|---|---|---|
| PMID | 11808879 |
PubMed 摘要标识,三张表的主外键;同一 PMID 的实体与关系散布在各自文件的连续行段里 |
| TermNumber | T12、T13、T1 |
T 前缀编号,每篇摘要独立计数——两行 T1 分属不同 PMID(11808879 与 23017395),互不相干;跨表 join 必须带 PMID 复合键 |
| Type | GENE-Y、GENE-N、CHEMICAL |
GENE-Y = 可归一到数据库 ID;GENE-N = 不可归一(此例中「glutamate dehydrogenase」这类描述性名称未指向单一数据库条目);此二分仅训练集存在(坑 4) |
| StartOffset / EndOffset | 1860/1866 |
字符偏移对;基准是 title+abstract 拼接全文——1860 这个数字大概率已落在摘要正文深处,因为偏移把标题长度也计入了 |
| Text | KIR6.2、HMG-CoA |
偏移区间内的原文切片;含点号、连字符等标点,做分词与对齐时须原样保留 |
关系行的读法以 12488248 INHIBITOR Arg1:T1 Arg2:T52 为例:
Arg1:T1指向该 PMID 实体表里 TermNumber 为 T1 的化学品(方向约定:Arg1 恒为 CHEMICAL);Arg2:T52指向 T52 的基因/蛋白(Arg2 恒为 GENE);INHIBITOR是 13 类标签之一,全大写蛇形命名(§3A.1 的数据契约);- 注意关系行的 PMID(12488248)与上面实体示例的 PMID(11808879/23017395)不同——这是官方文档刻意分开举例,提醒使用者实体行与关系行通过「PMID + TermNumber」联合寻址,不是按行号对应。
走查导出的四条实践规则(与 §2.4 解析要点互为表里):
- 建索引时以
(PMID, TermNumber)为复合主键,任何单键索引都会在跨摘要处出错; - GENE-Y/GENE-N 的归并决策要在数据加载层一次性做完(§9A 的
type_aligned列),不要散落在训练代码里; - 偏移校验的黄金标准就是本节示例:加载后抽验
text[start:end]是否逐字符等于 Text 列(§9.1 的 assert); - 示例里
KIR6.2、HMG-CoA这类含符号的表面形式提醒 tokenizer 选型要保守——WordPiece/BPE 会把符号拆碎,实体边界对齐要基于字符偏移而非 token 索引。
§3 任务定义:十三类关系逐一详解
任务输入是一篇摘要(标题+摘要拼接文本),输出分两步:实体识别(CHEMICAL、GENE 两类,训练集基因细分为 GENE-Y/GENE-N)与关系分类(每对化学品-基因实体给一个 13 类标签或「无关系」)。官方评估以关系 micro-F1 为主指标。以下按数量降序逐类解释(语义描述综合三份官方注释指南):
3.1 INHIBITOR(抑制剂,5,392+1,152)——化学品降低基因/蛋白的生物活性、表达量或功能。覆盖直接酶抑制(「X inhibits COX-2 activity」)、表达抑制(「X downregulates Y mRNA」)等最常见药理叙述。这是全语料的最大类,占比约 31%——药理文献中「抑制」本来就是最高频的因果动词。
3.2 DIRECT-REGULATOR(直接调控,2,250+458)——化学品与蛋白发生直接物理结合并调控其活性,但所述方向(激活/抑制)不明确或双向。它是「绑定且调控但说不清方向」的兜底大类,与 INHIBITOR/ACTIVATOR 的区别在于陈述明确性。
3.3 SUBSTRATE(底物,2,003+495)——化学品是基因/蛋白(通常是酶或转运体)的代谢底物或转运底物。CYP450 酶系与药物代谢文献是这一类的集中来源,也是药物相互作用预测建模最关心的类别之一。
3.4 ACTIVATOR(激活剂,1,429+246)——化学品提高基因/蛋白的活性或表达。与 INHIBITOR 互为镜像,占比约为其四分之一——文献里「抑制」叙述远多于「激活」。
3.5 INDIRECT-UPREGULATOR(间接上调,1,379+302)——化学品通过多步机制或未知中间环节最终上调基因/蛋白。典型句式「X treatment leads to increased expression of Y」且未给出直接结合证据。
3.6 INDIRECT-DOWNREGULATOR(间接下调,1,330+332)——间接上调的镜像。注意官方示例行 23220562 INDIRECT-DOWNREGULATOR Arg1:T1 Arg2:T14 正属此列。
3.7 ANTAGONIST(拮抗剂,972+218)——化学品(通常为受体配体)结合受体并阻断其天然信号转导。与 INHIBITOR 的语义分野在于「受体阻断」这一药理学专指——同一对实体在叙述角度不同时可能同时满足两类,注释指南对优先级有规定。
3.8 PRODUCT-OF(产物,921+158)——化学品是基因/蛋白反应的产物(如某酶催化生成的代谢物)。方向恰好与 SUBSTRATE 相反:SUBSTRATE 是「吃进酶里」,PRODUCT-OF 是「酶吐出来」。
3.9 PART-OF(部分,886+258)——化学品是基因/蛋白结构的一部分,或蛋白复合物与组分的归属关系(如辅基、结合的金属离子)。它继承自 ChemProt 未评估组里的 CPR:1 PART_OF——在 DrugProt 里首次进入正式评估。
3.10 AGONIST(激动剂,659+131)——化学品结合受体并激活其信号(与 ANTAGONIST 相对)。
3.11 AGONIST-ACTIVATOR(29+10)——兼具激动与激活双重陈述的复合类。
3.12 SUBSTRATE_PRODUCT-OF(25+3)——同一实体既是某酶的底物又是其产物(可逆反应叙述)。
3.13 AGONIST-INHIBITOR(13+2)——兼具激动与抑制双重陈述的复合类,全语料最稀有类别。
三个使用提醒:
- 长尾极度倾斜:前 6 大类占公开关系总量约 84%,后 4 类合计不足 0.6%。模型在这 4 类上的表现主要受采样策略而非架构影响——官方成绩单里「个别关系类型 P/R 峰值 0.9167/0.9542」与长尾类的惨淡成绩并存。
- 复合类是 ChemProt 没有的新增设计:AGONIST-ACTIVATOR、AGONIST-INHIBITOR、SUBSTRATE_PRODUCT-OF 三类在 ChemProt 的 10 组体系里没有对应物,直接迁移 ChemProt 标签映射会丢掉这三种复合语义。
- NOT 关系没有复活:ChemProt 的 CPR:10 NOT(否定关系)在 DrugProt 的 13 类里没有对应——否定叙述的处理方式官方未单列(存照 §9)。
§3A 标签空间的工程设计:十三类标签如何被组织
3A.1 命名与书写规范
DrugProt 的 13 个关系标签在机器可读性上遵循一套统一的书写约定,理解这套约定是用好数据的前提:
- 全大写蛇形命名(upper snake case):INHIBITOR、DIRECT-REGULATOR、INDIRECT-UPREGULATOR——所有标签不含空格、词间用连字符,可直接作为分类头(classification head)的类别名或文件名,无需任何清洗;
- 复合类用连字符连接两个语义角色:AGONIST-ACTIVATOR = AGONIST + ACTIVATOR 的双重陈述,SUBSTRATE_PRODUCT-OF = SUBSTRATE + PRODUCT-OF 的双重陈述——连字符在这里是「同时满足」的合取记号,不是并列枚举的分隔符;
- 方向前缀显式编码直接性:DIRECT-REGULATOR 与 INDIRECT-UPREGULATOR/INDIRECT-DOWNREGULATOR 把「直接/间接」写进标签本身,下游做分层评估时可直接按前缀分组聚合;
- 标签无层级编码:13 类是扁平集合而非树——不存在「REGULATOR 父类下挂 DIRECT/INDIRECT 子类」的显式层级。需要层级视角时,语义分组要靠使用者自行归纳(见 3A.2)。
3A.2 按语义维度重新组织 13 类
官方标签是按「数量降序」呈现的,但对建模者更有用的是按语义维度重组。13 类可沿三个正交维度理解:
维度一:效果方向(direction)
| 方向 | 标签 |
|---|---|
| 下调/抑制 | INHIBITOR、INDIRECT-DOWNREGULATOR、ANTAGONIST、AGONIST-INHIBITOR |
| 上调/激活 | ACTIVATOR、INDIRECT-UPREGULATOR、AGONIST、AGONIST-ACTIVATOR |
| 中性/双向 | DIRECT-REGULATOR |
| 代谢角色 | SUBSTRATE、PRODUCT-OF、SUBSTRATE_PRODUCT-OF、PART-OF |
维度二:机制直接性(directness)
- 直接类(物理结合或一步机制):INHIBITOR、ACTIVATOR、AGONIST、ANTAGONIST、DIRECT-REGULATOR、SUBSTRATE、PRODUCT-OF、PART-OF 及三个复合类;
- 间接类(多步机制、未明中间环节):INDIRECT-UPREGULATOR、INDIRECT-DOWNREGULATOR——这两类正是 §7.2 指出的最难类别,因为「间接」的判定需要跨越句法边界甚至句间推理。
维度三:药理角色专指性(specificity)
- 通用因果类:INHIBITOR、ACTIVATOR、DIRECT-REGULATOR、INDIRECT-*;
- 受体药理类:AGONIST、ANTAGONIST 及其复合类——要求化学品端是受体配体这一药理学专指;
- 酶学/代谢类:SUBSTRATE、PRODUCT-OF、SUBSTRATE_PRODUCT-OF——集中于 CYP450 酶系与药物代谢文献。
这种三维重组的意义在于:当某一细类样本太少(如 AGONIST-INHIBITOR 训练集仅 13 条)时,可以退到维度聚合层面(「下调类合并训练」)做层级分类或标签平滑,而不必在 13 类的扁平空间里硬学长尾。
3A.3 与 ChemProt 标签体系的映射摩擦
跨语料使用者最常踩的坑集中在 ChemProt CPR 组与 DrugProt 13 类的映射上(完整对照速查表见附录 A.3)。三条结构性结论:
- 不存在一一对应:CPR:9 substrate 系同时对应 SUBSTRATE 与 SUBSTRATE_PRODUCT-OF 两类;CPR:2 REGULATOR 的语义被拆进 DIRECT-REGULATOR 与 INDIRECT-* 类;三个复合类在 ChemProt 体系里完全没有对应物。任何声称「直接映射」的脚本都应在审计后废弃;
- 评估口径不同:ChemProt 公开版本只评 5 组(CPR:3/4/5/6/9),DrugProt 全部 13 类参与评估——把 ChemProt 上训练的模型直接在 DrugProt 上报分,或反向迁移,评估结果都不可比;
- NOT 关系的断层:ChemProt 的 CPR:10 NOT(否定关系)没有进入 DrugProt 的 13 类。若上游管线依赖否定检测,需要自行叠加句法/语义层面的否定处理,不能指望标签体系兜底。
3A.4 标签空间的实践清单
- 把 13 类标签字符串视为数据契约的一部分:任何预处理(小写化、去连字符)都会破坏与官方评估脚本的兼容性;
- 报告成绩时同时给出 micro-F1(官方主指标)与 per-type F1——只报 micro 会掩盖长尾类接近随机的现实(§3 提醒 1);
- 做层级建模时,3A.2 的三维重组可作为先验分组起点,但分组本身应作为超参数在 dev 上验证,而非当作官方规定;
- 迁移实验里,先做标签对齐审计(哪几类有对应物、哪几类是复合拆分、哪几类无对应),再动模型。
§3B 类别不平衡:长尾关系的建模策略
3B.1 不平衡的实际形状
DrugProt 公开关系(train+dev 合计 21,053 条)的分布是典型的重尾形态:最大类 INHIBITOR(6,544 条)与最小类 AGONIST-INHIBITOR(15 条)之间跨越约 400 倍。三个量化观察:
- 头部集中:前 6 大类(INHIBITOR、DIRECT-REGULATOR、SUBSTRATE、ACTIVATOR、INDIRECT-UPREGULATOR、INDIRECT-DOWNREGULATOR)合计约占公开关系总量的 84%;
- 尾部极稀:三个复合类(AGONIST-ACTIVATOR 39、SUBSTRATE_PRODUCT-OF 28、AGONIST-INHIBITOR 15,均为 train+dev 合计)加起来不足 90 条——平均每类不足 30 个样本;
- 中间塌陷:第 7-10 类(ANTAGONIST、PRODUCT-OF、PART-OF、AGONIST,均在 790-1,190 区间)与头部之间存在明显断层,这些「中腰部」类别往往是 per-type F1 曲线上最陡峭的爬升段。
3B.2 策略清单(按工程介入顺序)
- 候选对剪枝先行:关系分类的输入空间是「摘要内全部化学品×基因对」,绝大多数对是负例。先用词典与句法距离剪掉明显不可能的候选对,比在分类器上做任何加权都更划算——Max-recall baseline(P 0.0022)量化的正是全报正例的代价,反过来说明候选对生成阶段有巨大优化空间;
- 损失层面:对 13 类做逆频率加权(inverse-frequency weighting)或 focal loss,是长尾分类的标准起步方案;注意对复合类的权重不宜无限放大——15 个样本加权 400 倍会把训练动态搅乱,通常给权重设上限;
- 采样层面:批次内按类均衡采样(class-balanced sampling)优于全局随机采样,但会放大头部类的欠拟合,需要与重放缓冲(replay buffer)或混合采样配合;
- 任务分解:两阶段方案(先二分类判「有无关系」,再在正例对上做 13 类细分)能把极度不平衡问题转化为温和不平衡问题,代价是多一套误差传播要管理;
- 层级与聚合:利用 3A.2 的语义分组,先在方向维度(上调/下调/中性/代谢)上保证粗粒度正确,再细分细粒度——对间接类尤其有效;
- 数据增广:ChemProt 与 DrugProt 域一致(同为 PubMed 摘要、同为人工 gold,§5.4),ChemProt 的对应关系样本可作为长尾类的补充语料,但必须先做 3A.3 的标签对齐审计;
- 评估纪律:分层报告 per-type F1,长尾类单独列示;把「复合类接近随机」当作预期基线而非失败——官方成绩单里「个别关系类型 P/R 峰值 0.9167/0.9542」与长尾类的惨淡成绩并存,就是这个现实的官方注脚。
3B.3 一个务实的预期管理
给新入场的团队一个校准:在主赛道第一梯队(F1 约 0.77+,§7.1)的水平线上,增量收益几乎全部来自高频类的错误挤压与间接类的上下文建模;在长尾复合类上,任何架构改进都不如「多标几百条数据」直接。因此务实的路线是:把 13 类当成「10 个可学类 + 3 个需要特殊处理的稀疏类」来分配工程预算,而不是均匀用力。
§4 标注规范与指南
4.1 标注流程与人员
黄金标注由 BSC 与图尔库团队的生物医学文本挖掘专家完成(化学品实体与关系标注以 BSC 为主,基因/蛋白标注规范由图尔库方面深度参与——两机构在此前的 BioCreative 系列任务中长期分工协作)。标注对象为 PubMed 摘要全文(标题与摘要拼接),每个实体给出字符级偏移,每条关系给出化学品-基因参数对。标注决策的全部细则沉淀在三份公开注释指南里,均以独立 DOI 发布在 Zenodo:
- 关系指南(关系类型定义与判定优先级):doi:10.5281/zenodo.4957137
- 基因/蛋白实体指南(GENE-Y/GENE-N 判据与 GPRO 框架):doi:10.5281/zenodo.4957576
- 化学品实体指南(化学品家族、混合物、缩写处理):doi:10.5281/zenodo.4957518
- 补充 FAQ(参赛期高频问题汇编):doi:10.5281/zenodo.5042178
三份指南独立成 DOI 的做法本身就是可复用资产:后来者构建自己的 CPI 语料时可直接引用这套判据,而不必从论文附录里抠规则。
4.2 判定难点与指南对策
官方指南明确处理过的典型边界情形:
- 一词多类:同一个词在语境中可能是化学品也可能是基因(如「iron」既是元素化学品又是含铁蛋白的组成部分)——指南规定按句内陈述的生物学角色判定,而非词表查表。
- 关系方向与优先级:一对实体同时满足多类关系时(「X is an agonist that inhibits Y」),按指南规定的复合类或优先级处理。
- 不可归一实体:基因家族(「the Raf kinases」)、基因片段、融合蛋白描述等标 GENE-N——它们不指向单一数据库条目。
- 化学品家族与混合物:药物类别名(如「statins」)是否计入化学品,指南给出宽口径处理。
4.3 评估协议
- 主指标:关系抽取 micro-F1(全部关系类型合并计算),官方评估脚本开源在 GitHub 仓库
tonifuc3m/drugprot-evaluation-library,可 pip 安装本地复算。 - 评估同时报告实体识别分量(化学品与基因分开),但参赛排名以关系 F1 为准。
- 主赛道使用 CodaLab 持久评估场景:挑战赛结束后测试集保持可提交状态,系统无需重跑即可持续对标——这在 2021 年的生物医学挑战赛里属于较先进的基础设施安排。
- 测试集 gold 不公开,杜绝了测试集泄漏;代价是本地永远无法复现完整三方评估(坑 1)。
4.4 注释指南使用手册:按场景查表
四份公开文档(§4.1 的三个指南 DOI + FAQ)合计是 DrugProt 的「标注宪法」,但全文通读的成本不低。本节按使用场景给出直达路径:
| 你遇到的问题 | 查哪份 | 直达 DOI |
|---|---|---|
| 这对化学品-基因该标 INHIBITOR 还是 INDIRECT-DOWNREGULATOR?直接还是间接怎么判? | 关系指南 | 10.5281/zenodo.4957137 |
| 一对实体同时满足多类(如既 AGONIST 又 ACTIVATOR)时优先级如何? | 关系指南 | 10.5281/zenodo.4957137 |
| 这个基因家族/片段/变异描述算 GENE-Y 还是 GENE-N? | 基因/蛋白指南 | 10.5281/zenodo.4957576 |
| GPRO 对象类型的归类框架与边界 | 基因/蛋白指南 | 10.5281/zenodo.4957576 |
| 药物类别名(如 statins)、混合物、盐型算不算化学品实体? | 化学品指南 | 10.5281/zenodo.4957518 |
| 缩写首次出现与后续指称的标注口径 | 化学品指南 + FAQ | 10.5281/zenodo.4957518 / 10.5281/zenodo.5042178 |
| 偏移要不要含前后空格、标点怎么算 | FAQ | 10.5281/zenodo.5042178 |
| 参赛期对任务定义的官方澄清(含格式类问题) | FAQ | 10.5281/zenodo.5042178 |
使用手册的四点说明:
- 指南是判定细则的权威源:本条目 §3 的十三类语义描述与 §4.2 的边界情形均为综合转述,裁决级细节以指南原文为准——把指南当「规范文档」而非「背景阅读」,是复现标注一致性的前提;
- 四份文档独立成 DOI 的检索策略:Zenodo 概念页可查各指南的版本更新;FAQ 的 DOI(5042178)在时间上晚于三份指南,收录的是参赛期真实高频问题——遇到指南没写清的情形,先翻 FAQ 再自行决策;
- 指南复用价值:构建自有 CPI 语料时,直接引用这套判据可省去从头定义标签体系的工作;引用时用各指南的独立 DOI,不要只引主论文(附录 B);
- 指南与数据的版本配套:指南发布于 2021 年参赛期,与 v1.1 数据(5042151)配套;期刊扩展版(2023)未发布新指南——若你在更晚时间点使用,以数据包内 README 与指南原文的并集为准。
4.5 判定流程的伪代码化
把指南的判定逻辑压缩成可执行的决策序(供实现弱监督标注器或审计自己模型输出时参考;正式规则以指南原文为准):
判定一对 (化学品 c, 基因/蛋白 g) 的关系标签:
1. 文本中 c 与 g 是否存在药理学陈述?
否 → 无关系(不进入 relations.tsv)
2. 陈述是直接物理作用还是多步/未明机制?
多步/未明 → INDIRECT-UPREGULATOR 或 INDIRECT-DOWNREGULATOR(按最终方向)
3. 直接作用中,方向是否明确?
下调/抑制 → INHIBITOR;上调/激活 → ACTIVATOR;绑定但方向不明 → DIRECT-REGULATOR
4. 是否为受体药理专指叙述?
激活受体 → AGONIST;阻断受体 → ANTAGONIST;兼具双重陈述 → 复合类(AGONIST-ACTIVATOR / AGONIST-INHIBITOR)
5. 是否为酶学/代谢角色?
底物 → SUBSTRATE;产物 → PRODUCT-OF;兼具 → SUBSTRATE_PRODUCT-OF
6. 结构归属叙述 → PART-OF
这个六步序的顺序本身就是指南优先级的体现:间接性判断先于方向判断,方向判断先于药理专指,专指判断先于代谢角色——顺序错了会把「间接上调」误判成「直接激活」。用它审计模型错误时,可以定位到具体是哪一步的判断出了偏差(方向?机制?专指?),比笼统的 confusion matrix 更可行动。
§5 从 ChemProt 到 DrugProt:谱系与改进
5.1 前身 ChemProt(BioCreative VI Track 5)
ChemProt 是 2017 年 BioCreative VI 挑战赛 Track 5 的产物,也是 CPI 抽取任务的奠基基准:
| 维度 | ChemProt(2017) | DrugProt(2021) |
|---|---|---|
| 摘要规模 | 2,432(train 1,020 / dev 612 / test 800) | 5,000(train 3,500 / dev 750 / test 750) |
| 原始关系注释 | 22 种细粒度 | 13 种细粒度(全部公开) |
| 公开版本关系组 | 归并为 10 组(CPR:1-10) | 不归并,13 类直接公开 |
| 参与评估的组 | 仅 5 组(CPR:3/4/5/6/9) | 全部 13 类 |
| 未评估组 | CPR:1 PART_OF、CPR:2 REGULATOR、CPR:7 MODULATOR、CPR:8 COFACTOR、CPR:10 NOT | 无(PART-OF 进入正式评估;REGULATOR 语义并入 DIRECT/INDIRECT 类;NOT 未保留) |
| 可扩展性评估 | 无 | Large Scale 专门赛道(236 万摘要) |
| 冠军成绩 | F 64.1(RNN+CNN 集成) | 主赛道第一梯队 F1 约 77%+ |
5.2 两大局限与两大改进
ChemProt 的局限一:粒度合并。22 种原始注释被压成 10 组再砍到 5 组评估,「抑制」家族内部的直接/间接、上调/下调四类语义被强行折叠,研究者无法建模药理学家真正关心的区分。DrugProt 的回应是 13 类完整公开、全部参与评估。
ChemProt 的局限二:无可扩展性评估。2,432 篇摘要训练出的模型在真实文献库上的衰减无人知晓。DrugProt 的回应是 Large Scale 赛道:给定 236 万篇银标摘要,参赛系统需在黄金测试子集上保持精度、在全库上保持吞吐——UTHealth 队在 240 万文档规模上跑出 micro F1 77.32%(9 队第 2)就是这条赛道的直接产出。
5.3 冠军成绩的四年演进
ChemProt 冠军(2017)F 64.1 → DrugProt 主赛道第一梯队(2021)F1 77%+:四年约 13 个百分点的提升。归因上,官方结果分析明确指出多数参赛者采用 BERT/BioBERT 类预训练语言模型微调——这一时期预训练模型的普及是主因,而非任务设计变化。换言之,DrugProt 记录了 CPI 任务在预训练时代的真实水位线。
5.4 迁移使用注意
- 标签映射:ChemProt CPR 组与 DrugProt 13 类不存在一一对应(如 CPR:9 SUBSTRATE 系对应 SUBSTRATE 与 SUBSTRATE_PRODUCT-OF 两类;复合类无对应物)。跨语料迁移学习需按语义对齐表重映射,不能沿用任何网上流传的「直接映射」脚本。
- 域一致性:两者都来自 PubMed 摘要、都是人标 gold,预训练后互为天然增补数据——这是社区已验证的可行方向。
- 许可差异:ChemProt 的许可口径与其发布渠道绑定,DrugProt 为无附加条款的 CC BY-4.0,合并发布衍生语料时以后者为准更稳妥。
§6 获取、许可与版本链
6.1 获取入口
| 资源 | DOI / 入口 | 内容 |
|---|---|---|
| 黄金训练+开发集 v1.1 | 10.5281/zenodo.5042151 | drugprot-gs-training-development.zip(3,796,908 bytes;md5 eeb928823d1357510a415256f8957066) |
| 概念页(全版本) | 10.5281/zenodo.4955410 | 版本链入口 |
| Large Scale 银标 | 10.5281/zenodo.5119878 | large_scale_abstracts.tsv(2,366,081 行)+ large_scale_entities.tsv(53,993,602 行) |
| 关系注释指南 | 10.5281/zenodo.4957137 | 13 类关系判定细则 |
| 基因/蛋白指南 | 10.5281/zenodo.4957576 | GENE-Y/N 判据、GPRO 框架 |
| 化学品指南 | 10.5281/zenodo.4957518 | 化学品实体判定细则 |
| FAQ | 10.5281/zenodo.5042178 | 参赛期高频问题 |
| 评估库 | github.com/tonifuc3m/drugprot-evaluation-library | pip 安装,micro-F1 官方实现 |
| 任务页 | biocreative.bioinformatics.udel.edu/tasks/biocreative-vii/track-1/ | 挑战赛原始说明与 leaderboard |
6.2 版本链
- v1.0(Zenodo 4955411):2021-06-15 发布,仅含训练集——比赛开赛时的首发版本。
- v1.1(Zenodo 5042151):2021-06-29 发布(API created 2021-06-29T15:53:50),补入开发集,成为事实上的标准引用版本;记录于 2023-08-15 还有一次元数据修订(API revision 13)。
- 概念页(conceptrecid 4955410):聚合两版,引用概念 DOI 10.5281/zenodo.4955410 可自动指向最新版。
6.3 许可确认过程(存照性说明)
Zenodo 网页端的 license 显示位对这条记录并不渲染(坑 6 的来源)——但 Zenodo REST API 的元数据里字段齐全:GET https://zenodo.org/api/records/5042151 返回 metadata.license.id = "cc-by-4.0"、access_right = "open"。API 是权威口径,本条目采用 CC BY-4.0。Zenodo 记录的关键词字段为:NLP、relation extraction、NER、biomedical NLP、biocreative;社区归属 medicalnlp;语言 eng;资源类型 dataset。
6.4 资助与联系
- 资助:欧盟 EC BIOMATDB(Grant Agreement 101058779)+ 西班牙 Plan TL(Plan de Impulso de las Tecnologías del Lenguaje de la Agenda Digital)。
- 联系:krallinger.martin@gmail.com / antoniomiresc@gmail.com。
- 团队归属:BSC(巴塞罗那超级计算中心)+ 图尔库大学(Turun yliopisto)+ 加泰罗尼亚理工大学(UPC)。
§6.5 坑点清单(8 则)
坑 1:测试集 gold 永远拿不到。 测试集 750 篇的标注只存在于 CodaLab 评估后端,任何声称「DrugProt 完整数据下载」的第三方镜像都无法提供它。本地只能做 train/dev 交叉验证;论文里凡出现「5,000 篇全部评估」的说法都要检查其测试口径。引用关系总量时注意 21,053(公开)与 24,526(官方总量含未公开测试 gold)两个口径(§2.1)。
坑 2:第三方论文的关系计数与官方不一致。 参赛队论文常报与 Zenodo 官方 Summary statistics 有小幅出入的训练集计数:INHIBITOR 官方 5,392,CU-UD 论文写 5,277,HyperAI 论文(arXiv 2111.00611)写 5,392/1,150;AGONIST 官方 659 vs 658/652;ACTIVATOR 官方 1,429 vs 1,428/1,394;ANTAGONIST 官方 972 vs 931。这些偏差多半源于 dev 集合并、早期版本或自行去重。引用一律以 Zenodo 官方为准,本条目全表采用官方数。
坑 3:偏移基准是 title+abstract 拼接全文。 entities.tsv 的字符偏移从标题第一个字符起算。最常见事故:只加载摘要正文就开始切片,全部实体错位;或者预处理时把多空格/换行规范化掉,偏移整体漂移。正确姿势:保留原文逐字节不动,仅在需要正文局部时叠加标题长度偏移。
坑 4:GENE-Y/GENE-N 只在训练集存在。 开发集实体表统一标 GENE。跨 split 联合训练或做实体类型分类时,若不把 GENE-Y/GENE-N 归并为 GENE,训练与开发的标签空间不一致会直接报错或静默丢数据。归一(normalization)方向的研究则相反——开发集没有可归一性标注,只能回训练集找监督。
坑 5:Large Scale 银标不是关系训练集。 它只有自动实体注释、没有关系标注;且含 222 条不同 PMID 但同题同摘要的重复记录(官方 README 自曝)。把它当「236 万篇关系语料」使用是社区最常见误解;正确用法是实体检测器预训练/领域自适应/知识图谱构建,关系监督仍只能来自 4,250 篇黄金集。
坑 6:网页端看不到 license 字段。 Zenodo 网页对这条记录的 license 显示位不渲染,Google 搜索结果页也因此常有「license 未知」的误述。权威确认走 REST API(zenodo.org/api/records/5042151 → metadata.license.id = cc-by-4.0)。本库条目按 API 口径写 CC BY-4.0。
坑 7:官方引用模板指向前身。 Zenodo 记录给出的引用格式模板(key 为 krallinger2017overview)实际引用的是 BioCreative VI CHEMPROT overview(2017 年会议论文集)——官方有意把 Challenge 系列作为连续谱系引用。写论文时若要引用 DrugProt 本体,建议改用 2021 年第七届 workshop overview(miranda2021overview)或 2023 年期刊版(miranda2023overview,Database baad080)。
坑 8:两版 Zenodo 记录并存。 v1.0(4955411,仅训练集)与 v1.1(5042151,训练+开发)都是可访问的独立记录。用 4955411 下载只能拿到训练集,且部分第三方教程至今仍指向它。引用概念 DOI 10.5281/zenodo.4955410 或直接用 5042151 才能拿到完整训练+开发包。
§7 评估与基准
7.1 主赛道(Gold Standard Track)全景
BioCreative VII Track 1 主赛道于 2021 年举办,参赛规模与结果概貌:
- 30 支队伍报名,参赛者横跨四大洲共 110 人;
- 累计提交 107 个运行结果(runs),多数队伍迭代了 3-4 个版本;
- 多数参赛者采用 BERT/BioBERT 类预训练语言模型微调,少数结合规则、词典与图特征;
- 个别关系类型上出现精确率峰值 0.9167、召回率峰值 0.9542——细粒度类别的天花板已经相当高,但这是分类型峰值而非全场平均;
- 官方组织方参照系统(Turku-BSC 自研基线)micro-F1 约 0.744,为参赛者提供了赶超锚点;
- Max-recall baseline(全部化学品-基因对都报 INHIBITOR 的退路策略):P 0.0022 / R 1.0 / F1 0.0044——它量化的正是「不排全靠蒙」的代价。
第三方视角的锚点:UTHealth 队在 MEDINFO 2023 论文(doi:10.3233/SHTI231043)中自述其主赛道最佳系统 F1 77.60%、在 30 队中排名第 4。由此可推:主赛道前三名的成绩在 77.6% 以上(精确名次与分数见期刊论文 leaderboard 表;本场第 1 名的精确 F1 未在本条目抓取的开放来源中直接捕获,存照 §9)。
7.2 主赛道结果分析要点(期刊版口径)
- 预训练语言模型是分水岭:BERT 家族微调普遍越过 0.74 参照线,传统特征工程方法整体落在其下;
- 关系类型分解显示:高频类(INHIBITOR 等)成绩接近实体识别上限,而低频复合类(AGONIST-ACTIVATOR、AGONIST-INHIBITOR、SUBSTRATE_PRODUCT-OF 合计不足 60 条)几乎全靠运气——样本量而非算法决定了长尾命运;
- 错误分析表明间接关系(INDIRECT-UP/DOWNREGULATOR)是最难的两类:判断「间接」需要跨越句法边界甚至句间推理,摘要级上下文建模至今仍是开放问题。
7.3 Large Scale 赛道成绩表(9 队 / 21 runs)
Large Scale 赛道评估分设于不同评估中心提交窗口(NLM-NCBI 窗口 18 队提交、UTHealth-CCC 窗口 7 队等),各队 best run 的 micro-F1 如下:
| 排名参考 | 队伍 | best run | P | R | F1 |
|---|---|---|---|---|---|
| 1 | NLM-NCBI | run 2 | 0.772977 | 0.804871 | 0.788602 |
| 2 | UTHealth-CCC | run 3 | — | — | 0.773216 |
| 3 | CU-UD | — | — | — | 0.763305 |
| 4 | KU-AZ | — | — | — | 0.757689 |
| 5 | good team | — | — | — | 0.742714 |
| 6 | FSU2021 | — | — | — | 0.716747 |
| 7 | The Three Musketeers | — | — | — | 0.63529 |
| 8 | TMU_NLP | — | — | — | 0.583417 |
| 9 | NVhealthNLP | — | — | — | 0.457537 |
(表中「—」为期刊成绩表未列出分项的条目;F1 为官方 leaderboard 口径。)
要点解读:
- 冠军 NLM-NCBI 的 0.788602 是在 240 万文档规模评估下取得——精度与主赛道第一梯队(约 0.77-0.78)几乎无差,说明「黄金小子集训练 + 全文献库部署」的精度衰减可控。
- UTHealth 的双赛道稳定:主赛道 77.60%(第 4)、Large Scale 77.32%(第 2),其 MEDINFO 2023 论文给出的工程细节(2.4M 文档 micro F1)是目前公开资料里最好的大规模部署参考。
- 成绩断层:第 5 名(0.742714)到第 8 名(0.583417)掉了近 16 个百分点——大规模推理的工程效率(批处理、缓存、候选对剪枝)成为中后段队伍的主要瓶颈,而非模型精度本身。
7.4 高频错误实体清单(Large Scale,期刊版错误分析)
系统在大规模推理中最容易搞错的实体(FN = 漏报次数 / FP = 误报次数):
| 类型 | 实体 | FN | FP | 常见混淆模式 |
|---|---|---|---|---|
| 化学品(CEM 类) | Ca 2+ | 1,711 | 1,339 | 离子/信号分子/蛋白结合辅因子三重身份 |
| 化学品(CEM 类) | N(氮) | 1,216 | 1,096 | 单字母元素名与氨基酸缩写/N 端歧义 |
| 化学品(CEM 类) | BAY 50-4798 | 1,077 | 921 | 药企编码名,语料内长尾 |
| 化学品(CEM 类) | Sulindac | 944 | 843 | 老药名在多疾病语境反复出现 |
| 蛋白(GPRO 类) | COX-2 | 1,873 | 2,151 | 基因名/蛋白名/抑制剂作用对象混写 |
| 蛋白(GPRO 类) | AChE | 1,570 | 1,468 | 缩写多义(乙酰胆碱酯酶等) |
| 蛋白(GPRO 类) | Cyclin D1 | 822 | 650 | 基因官方符号(CCND1)与俗名并存 |
这份清单的实际价值:它是「大规模生物医学 NER/RE 系统上线前该先修哪些词典规则」的现成优先级表——离子缩写、单字母元素、药企编码名、多义蛋白缩写是四大重灾区。
7.5 衍生知识图谱
组织方由 Large Scale 银标注释构建了 silver standard 知识图谱:53,993,602 节点 / 19,367,406 边。节点与实体注释一一对应(同值 53,993,602,§9 存照说明),边代表摘要内共现与候选关系。它的定位是 CPI 下游研究的检索底座(药物重定位、靶点发现类项目的高召回起点),不是可直接消费的 gold 图谱。
7.6 成绩引用与对标口径规范
引用或对标 DrugProt 成绩时的口径清单——每一项都对应一个真实存在过的误引模式:
- 分赛道引用:主赛道(Gold Standard Track,30 队)与 Large Scale 赛道(9 队)的成绩不可互换引用。UTHealth 的 77.60% 是主赛道、77.32% 是 Large Scale——同队双赛道数字相近但口径完全不同;
- 分指标引用:官方主指标是关系抽取 micro-F1;「个别关系类型 P 0.9167 / R 0.9542」是分类型峰值,不能写成「系统精确率 0.9167」;
- 分 split 口径:dev 上调参的实验与 CodaLab 测试集提交是两种口径;论文里混写是审稿高频抓点(§9E 实验记录清单第三条);
- 参照线引用:组织方参照系统约 0.744 是「赶超锚点」而非「历史最好成绩」——低于它说明实现有问题,高于它是正常水位(§9.4);
- 基线下界引用:Max-recall baseline(P 0.0022 / R 1.0 / F1 0.0044)的价值是量化「全报正例」的代价,用于 sanity check 而非性能对标;
- 第三方数字引用:UTHealth 的 MEDINFO 2023 自述、CU-UD 的 arXiv 2112.03004、HyperAI 的 arXiv 2111.00611 都是参赛队自报口径——关系计数与官方有出入(坑 2,附录 E),引用时注明「参赛队论文口径」。
对标报告的最小模板(可直接套用):
模型 X 在 DrugProt 上的表现:
- 评估口径:CodaLab 测试集提交 / dev 交叉验证(二选一明示)
- 主指标:关系抽取 micro-F1 = [分数](官方评估库版本 [版本号])
- 参照系:组织方参照 0.744 / 主赛道 UTHealth 第 4 名 77.60% / Large Scale 冠军 NLM-NCBI 0.788602
- 分解报告:per-type F1 全表(尤其三个复合类单列)
- 数据版本:Zenodo 5042151(v1.1),md5 校验通过
这个模板的每一条都是在防一种误引:不写口径,读者会默认测试集成绩;不写评估库版本,数字不可复现;不写参照系,分数失去坐标系;不写 per-type,长尾问题被 micro 平均掩盖。
§8 DAIMS 评估(数据集 AI-Readiness 五维打分)
| 维度 | 评分 | 依据 |
|---|---|---|
| Documentation 文档完备 | 9/10 | 三份注释指南 + FAQ 各有独立 DOI;任务页、论文(会议+期刊)、评估库文档齐备;扣 1 分:主赛道第 1 名精确成绩与部分 P/R 分项未在开放来源集中可得 |
| Accessibility 可获取 | 9/10 | CC BY-4.0 无附加条款;Zenodo 直链 + md5 校验值官方给出;测试集 gold 除外(设计使然);Large Scale 236 万篇为纯 TSV 可分块流式读 |
| Interoperability 互操作 | 8/10 | 纯 TSV 三表、PMID 外键可直接 join PubMed/ChEBI/UniProt;字符偏移无 XML 包裹;扣分点:偏移基准(title+abstract 拼接)与 GENE-Y/N 的 split 不一致需要使用者自行处理 |
| Maintenance 维护 | 8/10 | v1.1 元数据 2023-08-15 仍有修订(revision 13);CodaLab 持久评估场景挑战赛后仍可提交;评估库 GitHub 可用;扣分:测试集标注未随期刊版补齐公开,银标 222 条重复未见官方去重版发布 |
| Standardization 规范对齐 | 8/10 | 13 类关系标签全大写蛇形命名、实体类型对齐 GPRO/BioCreative 惯例;JSON-LD/MLCommons Croissant 生态可直接映射 cr:RecordSet;扣分:ChemProt 旧标签体系(CPR 组)在社区仍广泛流通,双体系并存带来映射摩擦 |
| 合计 | 42/50 | AI-Ready 高分样本:自包含、许可干净、格式朴素;主要短板集中在测试集不可得与跨版本标签摩擦 |
8.1 五维打分的证据明细
§8 的 DAIMS 表给出分数与扣分理由;本节把每一维的证据点展开到具体出处,便于复核与更新:
D(Documentation,9/10)的证据面
- 加分:三份注释指南 + FAQ 各有独立 DOI(§4.1);会议 overview(2021)与期刊扩展版(Database 2023, baad080)双论文齐备;官方评估库 GitHub 有 README 与安装说明;任务页(biocreative.bioinformatics.udel.edu)保留原始说明;
- 扣 1 分:主赛道第 1 名的精确队名与 F1、部分分项 P/R 未在开放来源集中可得(附录 H.3 遗留疑点第一条)——「最关键的一个数字要翻纸质论文表」本身就是文档完备性的小缺口。
A(Accessibility,9/10)的证据面
- 加分:CC BY-4.0 无附加条款(API 权威确认);Zenodo 直链下载 + 官方 md5 校验值;数据包仅 3,796,908 bytes(下载成本可忽略);Large Scale 236 万篇为纯 TSV,可流式分块(§9D);指南、FAQ、评估脚本全部开放;
- 扣 1 分:测试集 gold 不可得——这是挑战赛设计使然而非许可限制,但对「完全离线复现」的用法构成实质障碍(坑 1)。
I(Interoperability,8/10)的证据面
- 加分:纯 TSV 三表无 XML/专有格式包裹;PMID 是全库主外键,可直接 join PubMed、ChEBI(314)、UniProt 等外部体系;13 类标签全大写蛇形命名可直接作分类头类别名;MLCommons Croissant 的 cr:RecordSet 语义可直接映射(本条目 frontmatter 已示范);
- 扣 2 分:偏移基准(title+abstract 拼接)是隐式约定、文档外不显眼(坑 3);GENE-Y/N 与 GENE 的 split 不一致需要使用侧归并(坑 4)——两处都是「不读文档就必踩」的互操作摩擦。
M(Maintenance,8/10)的证据面
- 加分:v1.1 元数据 2023-08-15 仍有修订(API revision 13,发布两年后仍在维护);CodaLab 持久评估场景赛后仍可提交(§4.3);评估库 GitHub 存活;
- 扣 2 分:测试集标注未随期刊版补齐公开;银标 222 条重复未见官方去重版发布(坑 5)——两个已知的完善机会在期刊版(2023)窗口内没有落地。
S(Standardization,8/10)的证据面
- 加分:关系标签全大写蛇形命名;实体类型对齐 GPRO 框架(BioCreative V 确立的社区惯例);GPRO 与 BioCreative 谱系惯例延续性强;
- 扣 2 分:ChemProt 的 CPR 组标签体系在社区长期流通,双体系并存带来映射摩擦(§3A.3);偏移口径与部分同类语料(如以 XML 标注为载体的语料)不对齐,跨语料管线要写适配层。
8.2 分数的正确用法
- 42/50 是对本条目核验时点的快照,不是永久属性——若官方日后发布去重银标或补公开测试标注,M 维与 A 维应上调;使用本条目时建议重跑 §6.1 的获取入口确认版本;
- 五维分数之间不可互换补偿:I 维的 8 分不能抵消 A 维测试集不可得的约束——一个维度上的硬缺口(test gold 无本地副本)是使用方式层面的限制,不会因为其他维度优秀而消失;
- 与其他条目横向比较时注意口径:DAIMS 是同一评分框架下的相对刻画,跨条目比较应连同证据明细(本节)一起看,而非只比总分。
§9 复现实战指南
9.1 十分钟跑通:下载与加载
# 黄金训练+开发集(v1.1,训练+开发)
wget https://zenodo.org/records/5042151/files/drugprot-gs-training-development.zip
unzip drugprot-gs-training-development.zip
md5sum drugprot-gs-training-development.zip
# 期望:eeb928823d1357510a415256f8957066
# Large Scale 银标(236 万篇,文件较大建议断点续传)
wget -c https://zenodo.org/records/5119878/files/large_scale_abstracts.tsv.gz
wget -c https://zenodo.org/records/5119878/files/large_scale_entities.tsv.gz
# 最小加载示例:构建 (PMID, 全文) 与实体表
import csv
def load_abstracts(path):
rows = {}
with open(path, encoding="utf-8") as f:
for line in f:
pmid, title, abstract = line.rstrip("\n").split("\t", 2)
rows[pmid] = title + abstract # 偏移基准:标题+摘要拼接
return rows
def load_entities(path):
ents = []
with open(path, encoding="utf-8") as f:
for line in f:
pmid, tnum, etype, start, end, text = line.rstrip("\n").split("\t")
ents.append((pmid, tnum, etype, int(start), int(end), text))
return ents
abstracts = load_abstracts("drugprot_training_abstracts.tsv")
entities = load_entities("drugprot_training_entities.tsv")
# 自检:抽样验证实体 span 与原文一致
pmid, tnum, etype, s, e, text = entities[0]
assert abstracts[pmid][s:e] == text, "偏移错位!检查是否叠加了标题偏移"
print("span check OK:", text)
两个实现细节:TSV 逐行 split("\t") 而非 csv 模块的通用方言处理(避免引号转义改写字节);断言 span 是必做自检——它是坑 3 的第一道防线。
9.2 官方评估脚本复算
pip install drugprot-evaluation-library
# 或从源码安装:
git clone https://github.com/tonifuc3m/drugprot-evaluation-library.git
# micro-F1 复算示意:与官方 leaderboard 同口径
#(完整参数与格式样例见仓库 README)
from drugprot.evaluation import evaluate_relation_extraction
score = evaluate_relation_extraction(
gold_path="gold_test_pred/", # 官方格式的关系预测文件目录
pred_path="my_system_output/",
)
print(score)
注意:本地复算只能针对自己构造的 dev 切分或半正式评测;测试集评估必须走 CodaLab 提交(主赛道场景在挑战赛后仍保持开放,这也是它比一般挑战赛更 AI-Ready 的地方)。
9.3 跨版本/跨语料对齐清单
开工前逐项打勾:
- 实体类型归并:训练集 GENE-Y/GENE-N → 统一 GENE(若与 dev 联合训练);
- 偏移校验:每个 batch 抽样
abstract[pmid][s:e] == text; - 标签映射:ChemProt CPR 组 → DrugProt 13 类需语义对齐表,禁用任何「直接映射」脚本;
- 去重:Large Scale 加载后按(标题,摘要)内容去重,剔除 222 条重复;
- 银标用法:仅用于实体预训练/自适应/共现图,关系监督只认黄金集 4,250 篇。
9.4 已验证的基线参考
- 组织方参照系统(Turku-BSC):micro-F1 约 0.744——低于它说明实现有 bug 高于它是正常水位;
- 预训练模型微调(BERT/BioBERT 家族):主赛道多数参赛者的共同选择,第一梯队约 0.77+;
- Large Scale 部署参考:UTHealth MEDINFO 2023 论文(doi:10.3233/SHTI231043)——2.4M 文档 micro F1 77.32%,含工程取舍细节;
- 长尾策略:后 4 类复合关系(合计 82 条公开样本)建议用提示学习/少样本方案单独处理,常规微调在这四类上接近随机。
9A. 工程化加载:pandas 与 HuggingFace datasets
§9.1 的最小加载示例适合快速验证;进入训练循环后,推荐用 pandas 或 HuggingFace datasets 封装。以下两段代码同样基于 §2.4 的三表结构,可直接落盘。
# pandas 版:三表一次加载为 DataFrame
import pandas as pd
COLS = {
"abstracts": ["pmid", "title", "abstract"],
"entities": ["pmid", "term", "type", "start", "end", "text"],
"relations": ["pmid", "relation", "arg1", "arg2"],
}
def load_split(prefix):
"""prefix 形如 drugprot_training / drugprot_development"""
abstracts = pd.read_csv(f"{prefix}_abstracts.tsv", sep="\t",
names=COLS["abstracts"], dtype=str, quoting=3)
entities = pd.read_csv(f"{prefix}_entities.tsv", sep="\t",
names=COLS["entities"], dtype=str, quoting=3)
relations = pd.read_csv(f"{prefix}_relations.tsv", sep="\t",
names=COLS["relations"], dtype=str, quoting=3)
return abstracts, entities, relations
train_abs, train_ent, train_rel = load_split("drugprot_training")
dev_abs, dev_ent, dev_rel = load_split("drugprot_development")
# 类型归并(坑 4):GENE-Y/GENE-N -> GENE,与 dev 对齐
train_ent["type_aligned"] = train_ent["type"].replace(
{"GENE-Y": "GENE", "GENE-N": "GENE"})
三个参数说明:quoting=3(QUOTE_NONE)关闭 csv 方言的引号解释,防止摘要文本里的引号被改写字节——这是坑 3「保留原文逐字节不动」的 pandas 落地;dtype=str 防止 PMID 被读成整数丢失前导零风险;sep="\t" 配合「从右侧切分」的防御性读取(§2.4 解析要点第四条)在大文件上若遇列数异常行,可退回逐行处理并记录坏行。
# HuggingFace datasets 版:支持 streaming 与缓存
from datasets import Dataset, DatasetDict
def to_hf(abstracts, entities, relations):
ent_grouped = entities.groupby("pmid", sort=False).apply(
lambda g: g.to_dict("records")).to_dict()
rel_grouped = relations.groupby("pmid", sort=False).apply(
lambda g: g.to_dict("records")).to_dict()
rows = []
for r in abstracts.itertuples(index=False):
rows.append({
"pmid": r.pmid,
"text": r.title + r.abstract, # 坑 3:偏移基准 = title+abstract 拼接
"entities": ent_grouped.get(r.pmid, []),
"relations": rel_grouped.get(r.pmid, []),
})
return Dataset.from_list(rows)
drugprot = DatasetDict({
"train": to_hf(train_abs, train_ent, train_rel),
"dev": to_hf(dev_abs, dev_ent, dev_rel),
})
封装成结构化 DatasetDict 之后,跨 split 的样本级抽样校验、按关系类型的分层切分、错误分析时的按 PMID 回溯都变成一行 groupby 的事。
9B. 候选对生成与负采样工作台
关系监督只标注了「存在关系的化学品-基因对」;训练需要显式负例。候选对生成的标准做法:每篇摘要内,全部化学品实体 × 全部基因实体做笛卡尔积,出现在 relations.tsv 里的为正例,其余为负例。
def generate_candidates(entities_df, relations_df, pmid):
"""返回 (chem_term, gene_term, label, relation_type) 四元组列表"""
ents = entities_df[entities_df["pmid"] == pmid]
chems = ents[ents["type"].isin(["CHEMICAL"])]
genes = ents[ents["type"].isin(["GENE", "GENE-Y", "GENE-N"])]
positive = relations_df[relations_df["pmid"] == pmid]
pos_keys = {
(row.arg1.split(":")[1], row.arg2.split(":")[1]): row.relation
for row in positive.itertuples(index=False)
}
out = []
for c in chems.itertuples(index=False):
for g in genes.itertuples(index=False):
key = (c.term, g.term)
out.append({
"pmid": pmid, "chem": c.term, "gene": g.term,
"label": 1 if key in pos_keys else 0,
"relation": pos_keys.get(key, "NONE"),
"chem_span": (int(c.start), int(c.end)),
"gene_span": (int(g.start), int(g.end)),
})
return out
负采样纪律五条:
- 负例远多于正例:每篇摘要平均约 21 个实体(公开部分 108,387 实体 / 5,000 篇),候选对与正例的比例悬殊,直接全量训练会让模型退化成「全判负」——用 3B.2 的采样策略对冲;
- 正例键 = (Arg1 的 T 编号, Arg2 的 T 编号):关系方向固定化学品在前(§2.4 解析要点第二条),生成负例时保持同一方向约定,避免「反向对泄漏」——即同一对实体正反两个方向都被当成独立样本;
- 候选对范围限定在同篇摘要内:PMID 是复合键的一部分(§2.4 解析要点第三条),跨摘要配对是无效样本;
- 实体 span 校验随批执行:每个 batch 抽样断言
text[start:end] == 实体原文(§9.1 的 assert),偏移错位在训练前暴露的成本远低于训练后; - 评估阶段的候选对必须全量:官方评估不做负采样——提交系统需对全部候选对给判,CodaLab 后端按 gold 对齐计算 micro-F1,训练时偷懒剪枝的策略不能带进评估。
9C. 错误分析工作台
以 §7.4 高频错误实体清单为线索,错误分析的标准闭环是:按实体回溯 FN/FP → 归类混淆模式 → 修词典/规则或采样 → 复评。以下脚本给出按实体聚合 FN/FP 的最小实现:
from collections import Counter
def error_by_entity(gold_rels, pred_rels, entities_df):
"""gold/pred: {(pmid, chem_term, gene_term): relation_label}"""
fn, fp = Counter(), Counter()
for key, gold_label in gold_rels.items():
pred_label = pred_rels.get(key, "NONE")
pmid, chem, gene = key
if gold_label != pred_label:
bucket = fn if gold_label != "NONE" else fp
# 定位到具体实体原文,便于人工归因
ents = entities_df[(entities_df["pmid"] == pmid)
& (entities_df["term"].isin([chem, gene]))]
for surface in ents["text"]:
bucket[surface] += 1
return fn, fp
# 用法示例(伪数据):
# fn, fp = error_by_entity(gold, pred, dev_ent)
# print(fn.most_common(20)) # 漏报最多的实体原文
# print(fp.most_common(20)) # 误报最多的实体原文
期刊版错误分析(§7.4)揭示的四大重灾区——离子缩写(Ca 2+)、单字母元素名(N)、药企编码名(BAY 50-4798)、多义蛋白缩写(AChE/COX-2)——都可以用这个工作台在自己的系统输出上复现:如果你们的 FN/FP 榜首也是这些实体,说明问题在实体层的歧义消解而非关系分类器,先修 NER 与词典优先级,再动关系模型。
9D. Large Scale 银标的分块处理与去重管线
2,366,081 行摘要、53,993,602 行实体注释的 TSV 无法整表读入内存,标准做法是分块流式处理;222 条同题同摘要重复(坑 5)在流式里用内容哈希去重:
import hashlib
def iter_dedup_abstracts(path, chunksize=100_000):
"""流式读取 large_scale_abstracts.tsv,按(标题,摘要)内容去重。
返回 (pmid, title, abstract);去重后约 2,365,859 篇。"""
seen = set()
for chunk in pd.read_csv(path, sep="\t", names=["pmid", "title", "abstract"],
dtype=str, quoting=3, chunksize=chunksize,
iterator=True):
for r in chunk.itertuples(index=False):
h = hashlib.sha256((r.title + "\x1f" + r.abstract).encode("utf-8"))
if h.digest() not in seen:
seen.add(h.digest())
yield r
去重键的选择有讲究:官方 README 说明重复记录是「PMID 不同但标题与摘要相同」,因此键必须取内容(title+abstract)而非 PMID——按 PMID 去重一条都去不掉。分隔符用 \x1f(ASCII 单元分隔符)而非空串拼接,避免标题尾字符与摘要首字符拼出假碰撞。
银标的推荐用法重申(坑 5):实体检测器预训练、领域自适应、共现图构建——三层都没有关系监督;关系层面的训练永远只来自 4,250 篇黄金集。若要用银标做弱监督关系抽取,必须自建「共现对 + 远程监督打标」的管线,并接受噪声率不可控的现实。
9E. 实验记录清单:跑第一个正式实验前
- 环境:记录
drugprot-evaluation-library版本号与评估脚本 commit hash——官方库更新会导致 F1 口径漂移; - 数据指纹:下载后核对 md5
eeb928823d1357510a415256f8957066(§6.1),训练日志里记录 train/dev 文件行数与关系计数(应为 17,288 / 3,765),偏差即数据损坏或版本错拿(坑 8 的 4955411 只有训练集); - 口径声明:报告的是公开 split 交叉验证还是 CodaLab 测试集成绩,两者不可混写——论文里最常见的自我矛盾就是 dev 调参、test 报分却共用同一组超参;
- 标签版本:记录是否做了 GENE-Y/N 归并(坑 4)、是否做了 13 类到聚合层的映射(3A.2)——实验可复现性的最小元数据;
- 长尾基线:任何新方法都先报 per-type F1 全表,特别是三个复合类(合计不足 90 条)——只报 micro-F1 的实验记录对后续工作几乎没有信息量。
§10 生态位与库内互链
10.1 在生物医学 NLP 语料谱系中的位置
DrugProt 处于 BioCreative 系列挑战赛的直系血脉上,与三条相邻谱系交汇:
- BioCreative 谱系(任务演进线):BC II 基因mention识别 → BC IV 蛋白归一 → BC V GPRO 框架(DrugProt 银标实体类型直接沿用)→ BC VI Track 5 ChemProt(前身)→ BC VII Track 1 DrugProt(本条目) → BC 后续多文档/文献挖掘辅助任务;
- CPI/-DDI 任务线:ChemProt 与 DDI 语料共同构成药物相互作用与药物-靶点关系抽取的两大基准,DrugProt 是其中唯一同时具备 13 类细粒度 + 百万级扩展的;
- 化学品/药物 NER 线:ChemDNER(化合物 mention 检测)解决「找到化学品」,DrugProt 解决「找到关系」——前者是后者的天然上游预训练素材。
10.2 库内互链条目(rid 为库内实查)
| 条目 | rid | 互链逻辑 |
|---|---|---|
| ChemProt | 753 | 直接前身:同任务、同团队、标签体系演进关系,必互链 |
| ChemDNER | 450 | BioCreative 谱系化学品 NER 基准:DrugProt 化学品实体层的上游同源 |
| BioRED | 457 | BioCreative 后续多实体类型关系基准:任务接力与对比评估的下一站 |
| DrugBank | 89 | 手工策展药物-靶点数据库:DrugProt 归一目标与交叉验证金源 |
| DrugCentral | 344 | 药物-靶点/适应症库:同上,CPI 关系核查来源 |
| DrugComb | 274 | 药物组合数据:CPI 关系下游应用(组合用药建模) |
| ChEBI | 314 | 化学实体本体:DrugProt 化学品归一的参考本体 |
| BC2GM | 434 | BioCreative II 基因 mention 语料:基因实体检测的祖源基准 |
| JNLPBA | 442 | 基因/蛋白 NER 经典基准:实体层跨语料对比 |
| MedMentions | 390 | 大规模实体链接语料:GENE-N 类实体归一研究的参照 |
注意两点:库内 DrugBank 与 ChEMBL 各有两条同 url_name 记录(DrugBank 89/571、ChEMBL 85/572),互链引用取 89/85;ChEMBL(85) 亦可作为化学品归一补充互链,但首选 ChEBI(314) 与 DrugBank(89)(与本语料关系层的语义距离更近)。
10.3 下游应用图景
- 药物发现信息学:靶点-化合物关系自动抽取,喂给虚拟筛选与药物重定位管线(库内药物发现类条目的文献证据层);
- 知识图谱构建:silver KG(5,399 万节点)作为生物医学图谱的文献共现先验;
- 药品安全信号检测:INHIBITOR/ANTAGONIST 类关系与不良反应信号交叉(可与库内药物警戒类语料联动);
- 大语言模型评测:13 类细粒度标签天然适配零样本/少样本指令评测——近年多篇 LLM 生物医学评测把 DrugProt 或 ChemProt 列入任务集,因为它有干净的多分类标签与官方评估脚本。
§11 实战决策指南
11.1 按角色规划使用路径
不同角色从 DrugProt 获得的价值面不同,推荐路径如下:
- NLP 模型开发者:第一周用 §9.1 跑通数据加载与 span 自检 → 第二周在 train/dev 上复现参照基线(Turku-BSC 约 0.744 是健康水位线)→ 之后按 §3B 的不平衡策略改进长尾 → 最后走 CodaLab 报测试集分数(主赛道场景赛后仍开放,§4.3);
- 药物发现信息学团队:先从 §7.5 的银标 KG 做检索底座验证召回 → 再用黄金集关系做高精度验证层 → 与 DrugBank(89)/DrugCentral(344) 的结构化金源交叉核对——文献层给广度、金源层给精度;
- LLM 评测者:直接按 §10.3 的思路构造指令评测——摘要+候选对入 prompt、13 类标签做约束输出、官方脚本算 micro-F1;长尾复合类单独设子集报告(§3B.3 的预期管理同样适用);
- 实体归一(normalization)研究者:训练集的 GENE-Y/GENE-N 二分是唯一可用的可归一性监督(dev 无此标注,坑 4),银标 GPRO 框架提供类型先验,MedMentions(390) 可作跨语料参照;
- 学生与新团队:从 §0 → §1 → §9.1 的顺序读与做,第一周即可产出第一个 micro-F1;不建议一上来就读三份注释指南全文——先在数据上踩坑,再回头查指南(§4.1 的四个 DOI)效率更高。
11.2 DAIMS 短板的补救路线
§8 的五维打分(合计 42/50)里每个扣分点,都有对应的工程补救动作:
| 短板 | 扣分点 | 使用侧补救 |
|---|---|---|
| D(文档) | 主赛道第 1 名精确成绩与部分 P/R 分项未集中可得 | 以 UTHealth 77.60%(第 4)作上界锚点定位自己(§7.1);per-type 分项自己做 dev 上的分解报告(§3B.2) |
| A(可获取) | 测试集 gold 不可得 | 本地实验改用 train/dev 交叉验证并明示口径;正式对标走 CodaLab(坑 1) |
| I(互操作) | 偏移基准与 GENE-Y/N 的 split 不一致 | §9.1 的 span 断言 + 坑 4 的类型归并,两道防线都是一次性成本 |
| M(维护) | 银标 222 条重复未见官方去重版 | 用 §9D 的内容哈希去重管线自处理(键取内容不取 PMID) |
| S(规范) | ChemProt 旧标签体系仍在社区流通 | 引用与建模统一 13 类官方口径;跨语料迁移先过附录 A.3 的对照审计(§3A.3) |
11.3 常见误用清单(从坑点反推)
以下每一条都是社区里真实出现过的事故模式,与 §6.5 坑点一一对应:
- 把「236 万篇银标」当关系训练集(反坑 5)——银标只有实体注释,没有 gold 关系;
- 只加载摘要正文就切片(反坑 3)——偏移基准是 title+abstract 拼接全文,错位必然发生;
- 跨 split 联合训练不归并 GENE-Y/N(反坑 4)——标签空间不一致直接报错或静默丢样本;
- 用第三方论文的关系计数复现实验(反坑 2)——与官方 Summary statistics 有小幅出入,先对附录 E 的对照表;
- 从 v1.0(4955411)下载却期望拿到 dev 集(反坑 8)——它只有训练集;
- 引用时照抄 Zenodo 官方模板却不知它指向 2017 年的 CHEMPROT overview(反坑 7);
- 声称「完整数据已下载」却拿不出测试集 gold(反坑 1)——任何第三方镜像都给不出它;
- 在网上查 license 看到「未知」就放弃(反坑 6)——权威口径在 Zenodo REST API 的 metadata.license.id。
清单的正确用法:接入管线前逐条 grep 自己的代码与配置,八条全过再开训。
11.4 与库内条目的组合拳
单个语料的价值上限取决于组合方式。三个已验证的组合模式:
- 粒度阶梯组合:ChemProt(753) 的 5 组粗口径做快速迭代 → DrugProt 的 13 类细口径做正式训练与评估 → BioRED(457) 的多实体类型做泛化验证——同谱系三代基准覆盖从粗到细、从单任务到多任务;
- 抽取+金源双轨:DrugProt 文献抽取层给「候选关系」,DrugBank(89)/DrugCentral(344) 结构化层给「已确认关系」,DrugComb(274) 给组合用药场景——三层的重合与差集本身就是信息(新发现的候选靶点关系往往落在文献有、金源无的差集里);
- 实体层打底:BC2GM(434)/JNLPBA(442) 练基因实体检测、ChemDNER(450) 练化学品检测,再上 DrugProt 做关系——实体检测器的质量直接决定关系层的候选对质量(§9B 的候选对生成以实体表为输入)。
附录 A 数据字典
A.1 黄金集文件(Zenodo 5042151)
| 字段(文件) | 类型 | 说明 |
|---|---|---|
| PMID(abstracts/entities/relations) | string | PubMed 摘要标识,全库主键 |
| Title, Abstract(abstracts) | string | 摘要两部分;偏移基准 = Title+Abstract 拼接 |
| TermNumber(entities) | string | T1, T2, …,每 PMID 内唯一 |
| Type(entities) | enum | CHEMICAL;训练集基因:GENE-Y / GENE-N;开发集基因:GENE |
| StartOffset, EndOffset(entities) | int | 字符偏移,左闭右开(0 起,基准为拼接全文) |
| Text(entities) | string | 实体原文,与 span 严格一致(官方样例验证) |
| Relation(relations) | enum | 13 类标签,全大写蛇形命名 |
| Arg1 / Arg2(relations) | ref | Arg1:T# CHEMICAL(化学品端);Arg2:T# GENE(基因端) |
A.2 Large Scale 文件(Zenodo 5119878)
| 字段 | 类型 | 说明 |
|---|---|---|
| large_scale_abstracts.tsv | 3 列 | 同黄金集 abstracts;共 2,366,081 行(含 222 重复) |
| large_scale_entities.tsv | 6 列 | 同黄金集 entities;共 53,993,602 行;Type 为 GPRO 对象框架;自动生成 |
A.3 关系类型与 ChemProt CPR 组对照速查
| DrugProt 类 | 近似 ChemProt 组 | 备注 |
|---|---|---|
| INHIBITOR | CPR:4 downregulator 系 | 语义更细(直接/间接分列) |
| ACTIVATOR | CPR:3 upregulator 系 | 同上 |
| INDIRECT-UPREGULATOR | CPR:3 upregulator 系 | 与 ACTIVATOR 分离 |
| INDIRECT-DOWNREGULATOR | CPR:4 downregulator 系 | 与 INHIBITOR 分离 |
| AGONIST | CPR:5 agonist 系 | 直接对应 |
| ANTAGONIST | CPR:6 antagonist | 直接对应 |
| SUBSTRATE | CPR:9 substrate 系 | 与 SUBSTRATE_PRODUCT-OF 拆分 |
| PART-OF | CPR:1 PART_OF | ChemProt 未评估组→DrugProt 转正 |
| DIRECT-REGULATOR | CPR:2 REGULATOR | 语义部分对应 |
| PRODUCT-OF | — | 无对应组 |
| AGONIST-ACTIVATOR / AGONIST-INHIBITOR / SUBSTRATE_PRODUCT-OF | — | DrugProt 新增复合类 |
附录 B 引用格式
B.1 数据集引用(Zenodo 官方口径)
Zenodo 记录给出的引用模板指向 BioCreative VI CHEMPROT overview(krallinger2017overview,坑 7);引用 DrugProt 本体建议采用:
- 会议 overview:Miranda-Escalada A, 等. Overview of DrugProt-CPI track at BioCreative VII. Proceedings of the seventh BioCreative challenge evaluation workshop, 2021.
- 期刊扩展版:Miranda-Escalada A, Mehryary F, Luoma S, Estrada-Zavala Z, Gasco L, Pyysalo S, Valencia A, Krallinger M. DrugProt: A Large-Scale Corpus for Chemical-Protein Interaction Extraction. Database (Oxford). 2023;2023:baad080. doi:10.1093/database/baad080. PMID 38015956; PMCID PMC10683943.
- 数据 DOI:10.5281/zenodo.4955410(概念页)/ 10.5281/zenodo.5042151(v1.1)/ 10.5281/zenodo.5119878(Large Scale)。
B.2 相关论文锚点
- UTHealth 参赛论文:MEDINFO 2023, doi:10.3233/SHTI231043(主赛道 77.60% 第 4;Large Scale 2.4M 文档 F1 77.32% 第 2);
- CU-UD 参赛论文:arXiv 2112.03004(含 train 3,500/dev 750/test 750 的独立口径印证);
- HyperAI 参赛论文:arXiv 2111.00611(关系计数与官方有出入,坑 2 存照)。
附录 C 术语表
| 术语 | 英文 | 释义 |
|---|---|---|
| 化学品-蛋白相互作用抽取 | chemical-protein interaction (CPI) extraction | 从文本中识别化学品与基因/蛋白对并分类其相互作用的 NLP 任务 |
| 关系抽取 | relation extraction | 判定文本中实体对语义关系的任务大类 |
| 命名实体识别 | named entity recognition (NER) | 定位并分类文本中实体提及的任务 |
| 实体归一 | entity normalization | 将实体提及映射到数据库标准 ID;GENE-Y 即可归一实体 |
| 黄金标准 | gold standard | 人工标注、作为评估真值的数据子集 |
| 银标准 | silver standard | 自动方法生成的大规模弱标注 |
| 字符偏移 | character offset | 实体在原文中的起止字符位置 |
| 细粒度标签 | fine-grained labels | 未经归并的原始分类体系(13 类) |
| 长尾类别 | long-tail classes | 样本量极小的类别(本语料后 4 类) |
| micro-F1 | micro-averaged F1 | 各类合并计数后计算的 F1,官方主指标 |
| 可扩展性评估 | scalability evaluation | 在大规模数据上检验系统精度与吞吐的评估设计 |
| GPRO | Gene and Protein Related Objects | BioCreative V 定义的基因/蛋白对象归类框架 |
| Plan TL | Plan de Impulso de las Tecnologías del Lenguaje | 西班牙语言技术推进计划(本项目资助方之一) |
| CodaLab | CodaLab | 微软与斯坦福发起的挑战赛与可复现评估平台 |
附录 D 快速核对卡(数据包指纹与关键计数)
数据包 drugprot-gs-training-development.zip
大小 3,796,908 bytes
MD5 eeb928823d1357510a415256f8957066
许可 CC BY-4.0(Zenodo API metadata.license.id)
摘要数 train 3,500 | dev 750 | test 750(gold 未公开)= 5,000
tokens train 1,001,168 | dev 199,620 = 1,200,788(公开部分)
实体 train 89,529 | dev 18,858 = 108,387(公开部分)
化学品 46,274 | 9,853
基因 43,255 | 9,005(train 内 Y 28,421 / N 14,834)
关系(公开) train 17,288 | dev 3,765 = 21,053
关系(官方总量口径) 24,526(差值 3,473 = 未公开 test gold)
最大类 INHIBITOR 5,392(train) 最小类 AGONIST-INHIBITOR 13(train)
Large Scale 摘要 2,366,081(222 重复)| 实体注释 53,993,602
衍生 KG 53,993,602 节点 | 19,367,406 边
主赛道 30 队 | 四大洲 110 人 | 107 runs
Large Scale 9 队 | 21 runs | 冠军 NLM-NCBI F1 0.788602
附录 E 双口径计数对照速查
同一属性在不同来源中的计数差异是引用 DrugProt 时最高频的出错点。本附录把散落在坑点与存照里的双口径集中成一张表,右列均为本条目采用的口径:
| 属性 | 口径 A | 口径 B | 采用与理由 |
|---|---|---|---|
| 关系总量(全库) | 21,053(train+dev 公开) | 24,526(官方总量口径) | 两者并存:21,053 指公开可下载部分;24,526 含未公开 test gold(差值 3,473)。引用时必须注明口径 |
| 黄金集摘要数 | 5,000(期刊官方:3500+750+750) | 10,750(UTHealth 论文「main corpora」) | 5,000;10,750 疑含 Large Scale 混计,仅存照 |
| train 集 INHIBITOR | 5,392(Zenodo 官方 Summary statistics) | 5,277(CU-UD 论文);5,392/1,150(HyperAI arXiv 2111.00611) | 5,392;第三方论文计数普遍有小幅偏差 |
| train 集 AGONIST | 659 | 658 / 652(第三方论文) | 659 |
| train 集 ACTIVATOR | 1,429 | 1,428 / 1,394(第三方论文) | 1,429 |
| train 集 ANTAGONIST | 972 | 931(第三方论文) | 972 |
| Large Scale 摘要数 | 2,366,081(TSV 精确行数) | 2.3M / 2.4M(论文圆整) | 2,366,081;圆整口径仅用于行文 |
| KG 节点数 | 53,993,602 | 53,993,602(= 实体注释行数) | 同值非冲突:节点与实体注释 1:1 对应 |
| 银标去重后摘要数 | 2,365,859 | 2,366,081(含 222 条同题同摘要重复) | 按用途:统计规模用 2,366,081,建模用去重后 2,365,859 |
| dev 集 INHIBITOR | 1,152(Zenodo 官方) | 1,150(HyperAI) | 1,152 |
| 测试集关系数 | 约 3,473(由 24,526−21,053 推算) | 未公开 | 推算值仅作参考,非官方发布 |
双口径的根因归纳:第三方参赛队论文计数偏差多半源于 dev 集合并、早期版本(v1.0 仅训练集,坑 8)或自行去重;圆整口径源于论文行文习惯。一切以 Zenodo 官方 Summary statistics 与期刊论文为准——这也是本条目全表采用官方数的理由。
附录 F Dataset Card 要点(自描述模板)
本附录按社区通行的 dataset card(数据集卡)惯例,把 DrugProt 的自描述要点收敛成一节,下游团队可直接以此为骨架撰写自己的衍生数据集文档:
F.1 身份卡
- 名称:DrugProt Corpus(BioCreative VII Track 1 Chemical-Protein Interaction Track);
- 任务:摘要级化学品-基因/蛋白实体识别 + 13 类细粒度关系分类(chemical-protein interaction extraction);
- 构建方:巴塞罗那超级计算中心 BSC + 图尔库大学 + 加泰罗尼亚理工大学 UPC;通讯 Martin Krallinger;
- 发布年份:2021(挑战赛即发布);期刊扩展 2023(Database, baad080);
- 语言:英语(PubMed 摘要);许可:CC BY-4.0(Zenodo API 权威确认)。
F.2 数据卡
- 组成:黄金集 5,000 篇摘要(train 3,500 / dev 750 / test 750,test gold 不公开)+ Large Scale 银标 2,366,081 篇摘要与 53,993,602 条自动实体注释;
- 格式:TSV 三表(abstracts / entities / relations),偏移基准为 title+abstract 拼接全文;
- 标签体系:实体 2+1 类(CHEMICAL / GENE-Y+GENE-N / dev 统一 GENE);关系 13 类全大写蛇形命名;
- 规模锚点:公开实体 108,387、公开关系 21,053(口径详见附录 E)。
F.3 意向用途与局限
- 意向用途:CPI/关系抽取模型训练与基准评估、生物医学 NER 预训练、药物发现信息学的文献证据抽取、LLM 生物医学能力评测;
- 超出意向的用途:临床决策支持(摘要是研究文献而非病历)、化学品安全评估的唯一证据源(银标噪声显著);
- 已知局限:测试集 gold 不可得(坑 1);GENE-Y/N 仅训练集区分(坑 4);银标含 222 条重复(坑 5);第三方计数口径混乱(坑 2,附录 E);
- 偏差声明:语料来自 PubMed 摘要,研究文献的病种、分子类型与期刊覆盖偏差会直接传导给模型——长尾复合类的极端稀疏(附录 E)本身也是一种结构性偏差。
F.4 引用卡
- 数据 DOI:10.5281/zenodo.4955410(概念页,自动指向最新版);
- 论文:Miranda-Escalada 等,Database (Oxford) 2023, baad080(期刊扩展版);会议 overview 见 BC VII workshop 2021;
- 引用模板陷阱:Zenodo 官方模板指向前身 CHEMPROT(krallinger2017overview,坑 7)——引用 DrugProt 本体请用上面两条。
附录 G 谱系年表:从 BC II 到 DrugProt
BioCreative 系列挑战赛与 DrugProt 直接相关的节点,按时间排列:
| 年份 | 节点 | 与 DrugProt 的关系 |
|---|---|---|
| 2004-2006 | BioCreative II 基因 mention 识别(BC2GM 语料) | 基因实体检测的祖源基准;库内条目 BC2GM(434) |
| BioCreative V 期间 | GPRO(Gene and Protein Related Objects)框架定义 | DrugProt 银标实体注释的类型框架直接沿用(§2.5) |
| 2017 | BioCreative VI Track 5:ChemProt 发布 | 直接前身:2,432 篇摘要、22 类归并 10 组只评 5 组(§5.1) |
| 2017 | CHEMPROT overview(krallinger2017overview) | 被 Zenodo 设为官方引用模板的「谱系引用」对象(坑 7) |
| 2021-06-15 | DrugProt v1.0 发布(Zenodo 4955411,仅训练集) | 比赛开赛首发版本(§6.2) |
| 2021-06-29 | DrugProt v1.1 发布(Zenodo 5042151,训练+开发) | 事实上的标准引用版本 |
| 2021 | BioCreative VII Track 1 主赛道 + Large Scale 赛道 | 30 队 110 人 107 runs;银标扩展同期发布(§7) |
| 2021-07-21 | Large Scale 银标语料发布(Zenodo 5119878) | 2,366,081 篇摘要 + 5,399 万实体注释 |
| 2023-08-15 | v1.1 元数据修订(Zenodo API revision 13) | 维护活跃度证据(§8 DAIMS 的 M 维依据) |
| 2023-11-28 | 期刊扩展版发表(Database, baad080) | 补全数据描述、结果分析与衍生知识图谱 |
年表揭示的一个结构性事实:DrugProt 不是一次性的挑战赛产物,而是同一批团队(BSC + 图尔库)在 BioCreative 谱系上持续十余年迭代的结果——ChemProt 的局限在 DrugProt 里被逐项修复(§5.2),DrugProt 的注释指南又以独立 DOI 沉淀为可复用资产(§4.1)。这种「任务族长期主义」在生物医学 NLP 语料里相当罕见,也是它作为基准的可信度来源:每一代设计决策都有前一代的实证教训背书。
附录 H 三源核验记录(存照性附录)
本条目硬数字的核验过程记录如下,供后续维护者复核时直达原始来源:
H.1 核验来源矩阵
| 数据项 | 来源一 | 来源二 | 来源三 | 一致性 |
|---|---|---|---|---|
| 训练/开发集规模与计数 | Zenodo 记录页 5042151(Summary statistics) | Zenodo REST API records/5042151 元数据 |
期刊论文(Database 2023, baad080) | 一致 |
| 版本链(v1.0 → v1.1) | Zenodo 4955411(v1.0 记录页) | Zenodo API conceptrecid 4955410 | 期刊论文版本说明 | 一致 |
| Large Scale 规模 | Zenodo 5119878 记录页与 README | Zenodo API records/5119878 |
期刊论文(2,366,081 精确行数口径) | 一致(论文圆整口径除外) |
| license | Zenodo API metadata.license.id = cc-by-4.0 |
access_right = open |
网页端不渲染(坑 6,无第三方可对照) | API 单源权威 |
| 主赛道参赛规模 | 期刊论文(30 队/110 人/107 runs) | 任务页(biocreative.bioinformatics.udel.edu) | UTHealth 论文(参赛队视角) | 一致 |
| UTHealth 成绩 | MEDINFO 2023(doi:10.3233/SHTI231043)自述 | Large Scale leaderboard(期刊口径) | — | 一致 |
| CU-UD train/dev/test 划分 | arXiv 2112.03004 原文 | 5,000 总数反推 | Zenodo Summary statistics | 一致 |
| 数据包指纹 | Zenodo 文件页(3,796,908 bytes) | 官方 md5 eeb928823d1357510a415256f8957066 |
— | 一致 |
H.2 抓取环境备注
- Zenodo 元数据以 REST API 为权威(网页端对部分字段——如 license——不渲染,坑 6);API 抓取字段包括 metadata.license.id、access_right、created(2021-06-29T15:53:50)、modified(2023-08-15,revision 13)、creator ORCID 列表、资助方 notes 字段;
- 期刊论文经多镜像抓取(Database (Oxford) 为开放获取,PMID 38015956 / PMCID PMC10683943);UPC 机构库 HANDLE 2117/401480 提供元数据对照;
- 参赛队论文抓取自 arXiv(2112.03004、2111.00611)与 PubMed 摘要层;主赛道第 1 名的精确队名与 F1 未在上述开放来源中直接捕获(尾注存照第 3 条)。
H.3 遗留疑点清单(继承自尾注存照)
- 主赛道第 1 名队名与精确 F1:待核(期刊 leaderboard 表数字未完整抓取;上界锚点为 UTHealth 77.60% 居第 4);
- 作者 Estrada-Zavala 的名(Zhihao?)拼写:待核(以期刊 PDF 为准);
- Zenodo 5119878 页面顶部出现的 5119879 版本链链接:未深究,不影响数据获取;
- UTHealth「main corpora of 10,750 abstracts」的口径构成:疑含 Large Scale 混计,以官方 5,000 为准(附录 E)。
上述疑点均不阻碍本条目核心数字的可用性——它们集中在「第 1 名是谁」与「人名拼写」这类叙事细节,而非数据规模、许可、获取方式等结构性事实。
附录 I 常见问题速答(FAQ 十五则)
以下问答浓缩自正文各节,每条附正文锚点,供快速排查;细节以锚点章节为准。
Q1:为什么我下载的包里没有开发集?
你拿的是 v1.0(Zenodo 4955411,仅训练集)。完整训练+开发包在 v1.1(Zenodo 5042151),或用概念 DOI 10.5281/zenodo.4955410 自动指向最新版(坑 8,§6.2)。
Q2:实体偏移对不上原文怎么办?
先检查两件事:是否只加载了摘要正文(偏移基准是 title+abstract 拼接全文,须叠加标题长度);是否在预处理里规范化了空白字符(会整体漂移偏移)。自检断言见 §9.1(坑 3)。
Q3:训练报错「标签不在类别列表里」?
训练集的 GENE-Y/GENE-N 与开发集的 GENE 混进了同一标签空间。在加载层统一归并为 GENE(§9A 的 type_aligned),一次解决(坑 4)。
Q4:能把 Large Scale 当关系抽取训练集吗?
不能。它只有自动实体注释、没有 gold 关系;正确用法是实体预训练、领域自适应、共现图(坑 5,§9D)。
Q5:Zenodo 页面上看不到 license,这数据能用吗?
能。网页端 license 显示位对这条记录不渲染,权威口径走 REST API:metadata.license.id = cc-by-4.0(坑 6,§6.3)。
Q6:引用该引哪篇论文?
注意 Zenodo 官方模板指向的是 2017 年前身 CHEMPROT overview(官方有意为之)。引 DrugProt 本体用 2021 会议 overview 或 2023 期刊版(Database baad080)(坑 7,附录 B)。
Q7:为什么我复现的关系计数和别人论文不一样?
第三方参赛队论文的计数与 Zenodo 官方 Summary statistics 普遍有小幅出入(INHIBITOR 5,392 vs 5,277 等)。以官方为准,对照表见附录 E(坑 2)。
Q8:测试集分数怎么来的?本地算不出来吗?
测试集 750 篇的 gold 只在 CodaLab 评估后端,本地永远无法复现三方评估;正式对标走 CodaLab 提交(主赛道场景赛后仍开放)(坑 1,§4.3)。
Q9:21,053 和 24,526 两个关系总数该用哪个?
都是官方口径:21,053 = 公开部分(train+dev);24,526 = 官方总量(含未公开 test gold,差值 3,473)。引用时注明口径(§2.1,附录 E)。
Q10:我的系统 F1 只有 0.70,是不是实现有 bug?
不一定。组织方参照系统约 0.744,主赛道第一梯队约 0.77+;0.70 低于参照线说明实现或特征有改进空间,但先检查评估口径是否与官方一致(附录 F 的评估库版本),再查候选对生成与标签映射(§7.1,§9E)。
Q11:长尾复合类(AGONIST-INHIBITOR 等)怎么处理?
三类合计不足 90 条公开样本,常规微调接近随机。务实方案:语义聚合训练(§3A.2 分组)、少样本/提示学习单独处理、ChemProt 对应样本增补(先做标签对齐审计)(§3B)。
Q12:ChemProt 的模型能直接迁移过来吗?
数据和任务内核可以迁移(域一致、同为人工 gold),但标签体系没有一一对应——先过附录 A.3 的对照审计,废弃任何「直接映射」脚本(§3A.3,§5.4)。
Q13:银标里的 222 条重复怎么去?
按内容去重(标题+摘要的哈希),不是按 PMID——重复记录恰恰是 PMID 不同、内容相同(坑 5,§9D 的流式去重管线)。
Q14:想做多实体类型关系抽取,用这个数据合适吗?
不合适。DrugProt 只覆盖化学品与基因/蛋白两类实体、摘要级关系;多实体类型需求转库内 BioRED(457)(§1A 场景六)。
Q15:项目资助方是谁?用于致谢或合规审查时写什么?
欧盟 EC BIOMATDB(Grant Agreement 101058779)+ 西班牙 Plan TL(Plan de Impulso de las Tecnologías del Lenguaje de la Agenda Digital)(§6.4,Zenodo notes 字段)。
尾注与存照
本条目全部硬数字经三源交叉验证:Zenodo 记录页 + Zenodo REST API(records/5042151 与 5119878)+ 期刊论文(Database 2023, baad080,经多镜像抓取)与参赛队论文(UTHealth MEDINFO 2023、CU-UD arXiv 2112.03004)。双口径冲突与待核事项逐条存照如下(与 FACTS.md 第 9 节一致):
- 关系总量:21,053(公开)与 24,526(官方总量)并存,差值 3,473 为未公开测试集 gold,引用须注明口径;
- 黄金规模:期刊官方 5,000 篇为准;UTHealth 论文「main corpora of 10,750 abstracts」为异口径存照(疑含 Large Scale 混计);
- 主赛道第 1 名队名与精确 F1 未在开放来源直接捕获(期刊 leaderboard 表未完整抓取);UTHealth 自述 77.60% 居第 4 可作上界锚点;
- 第三方参赛队论文关系计数与 Zenodo 官方小幅出入(坑 2),全条目以官方为准;
- 银标 KG 节点数与实体注释行数同为 53,993,602——1:1 对应关系而非巧合冲突;
- 作者名单中 Estrada-Zavala 的名字拼写(Zhihao 等)以期刊 PDF 为准,本条目未逐一核验全名;
- Zenodo 5119878 页面顶部出现 5119879 版本链链接,未深究(不影响数据获取);
- 官方引用模板指向前身 CHEMPROT(坑 7),属官方有意为之的谱系引用习惯。
数据集团队(BSC + 图尔库大学 + UPC)在 BioCreative 系列上的持续投入——从 BC II 基因识别到 BC VII DrugProt 再到 BC 后续任务——构成了一条罕见的「同一团队打磨同一任务族十年」的谱系,这也是 DrugProt 注释指南、评估脚本与任务设计都异常自洽的深层原因。对想进入生物医学关系抽取领域的新团队,本库的建议路径是:以 DrugProt 黄金集为第一站,用其 Large Scale 检验工程化能力,再向库内 BioRED(457) 的多实体类型任务与 DrugBank(89)/DrugCentral(344) 的结构化金源延伸。
相关数据集导航
以下为站内 AI-Ready 数据集百科中与本词条共享多个主题标签的相关数据集,按相关度降序排列:
- chemprot — 共享标签:医疗NLP / 关系抽取 / 药物发现与化学 / 药物-靶点相互作用 / 挑战赛数据集
- onsides — 共享标签:医疗NLP / 关系抽取 / 命名实体识别 / 药物发现与化学
- meddoprof — 共享标签:医疗NLP / 命名实体识别 / 挑战赛数据集
- radgraph — 共享标签:医疗NLP / 关系抽取 / 命名实体识别
- iuphar-bps — 共享标签:医疗NLP / 药物发现与化学 / 药物-靶点相互作用
- bc5cdr — 共享标签:医疗NLP / 关系抽取 / 命名实体识别
- biored — 共享标签:医疗NLP / 关系抽取 / 命名实体识别
- thyme — 共享标签:医疗NLP / 关系抽取 / 命名实体识别
- genia — 共享标签:医疗NLP / 关系抽取 / 命名实体识别
- semmeddb — 共享标签:医疗NLP / 关系抽取 / 命名实体识别
导航说明:本章节由全站统一标签体系自动计算生成(标签重合度算法),双向可达;点击链接可跳转至对应数据集词条。

