信息速览
ChemProt (chemprot) — BioCreative VI 化学-蛋白关系抽取语料
一句话定义:ChemProt 是 2017 年 BioCreative VI 挑战赛 Track 5 构建的化学物-蛋白质(基因)关系抽取金标准语料——2,432 篇 PubMed 摘要、约 3.2 万个化学物提及与 3.0 万个基因/蛋白提及、10,031 条正例关系归并为 10 个语义类 CPR,以 Public Domain Mark 1.0 无限制开放,是化学-蛋白相互作用(CPI)文本挖掘领域被引用最多、被复现最充分的评测语料之一。
INFOBOX 速查表
| 字段 | 内容 |
|---|---|
| 正式全称 | BioCreative VI Chemical-Protein interaction corpus |
| 常用简称 | ChemProt corpus / CHEMPROT |
| 语料定位 | 挑战赛关系抽取语料(非数据库、非知识库) |
| 构建年份 | 2017(BioCreative VI Challenge Evaluation Workshop) |
| 牵头机构 | BioCreative VI 组委会;Track 5 由 Martin Krallinger(CNIO)团队牵头 |
| 文献来源 | PubMed 摘要(英语) |
| 摘要规模 | 2,432 篇(train 1,020 / dev 612 / test 800)+ 50 篇示例 |
| 实体类型 | CHEMICAL、GENE-Y、GENE-N 三类 |
| 实体规模 | 约 31,831 化学物提及、约 30,316 基因/蛋白提及(三段合计,另口径 30,338) |
| 关系类型 | 22 种原始类型 → 归并 10 类 CPR:1–CPR:10 |
| 评测类 | CPR:3 / CPR:4 / CPR:5 / CPR:6 / CPR:9 五类 |
| 正例关系数 | 10,031(train 4,157 / dev 2,416 / test 3,458) |
| 任务形式 | 句级多类关系分类(给定实体对判关系) |
| 评测指标 | F-measure(逐类 + 跨类宏平均) |
| 挑战赛规模 | 13 支队伍、45 个 run |
| 最佳成绩 | 跨类平均 F 64.10%;单类最高 Antagonist F 72.56% |
| 许可证 | Public Domain Mark 1.0(公有领域标记,无使用限制) |
| 获取方式 | 官方 zip(UDEL 托管)+ HuggingFace bigbio/chemprot 镜像(gated=false) |
| 数据体量 | 纯文本,dataset 7.6–8.6 MB(BigBio 三段配置) |
| 格式 | 原始 TSV 四表 + BigBio Parquet(3 配置 × 4 split) |
| 主参考论文 | Krallinger et al. 2017(BioCreative VI workshop 论文集 1:141-146,无 DOI) |
| 下游继任者 | BioCreative VII DrugProt(2021,5,000 摘要,13 类) |
| 库内对位条目 | BC5CDR(415)、CHEMDNER(450)、BioRED(457)、CRAFT(529) |
| AI-Ready 评级 | 公开直链 / Public Domain——最高可得开放档 |
§0 导读
§0.1 这篇条目写给谁
ChemProt 是一份被大量论文引用、却又极容易被误引用、误合并、误命名的语料。本篇条目的目标读者有三类:
- 算法与模型研究者:需要在一个"关系抽取"任务上做基准对比,希望快速理解 ChemProt 的任务定义、类别体系、评测口径与已知 SOTA 数字。
- 生物医学 NLP 工程实践者:需要把 ChemProt 接入自己的训练/评测管线,关心它的文件格式、实体偏移、类不平衡程度、tokenization 陷阱与 license 约束。
- 数据与知识工程从业者:需要在"化学物-蛋白关系"这一语义空间里选择合适的数据源,关心 ChemProt 与 ChemBL、PubChem、BC5CDR、CRAFT 等资源的分工与边界。
如果你只需要一句话结论:ChemProt 是化学-蛋白关系抽取的经典小规模金标准,适合做方法验证与文献级信息抽取的原型,不适合直接当作覆盖全化学空间的工业级知识库。
§0.2 为什么 ChemProt 值得单独成篇
在千方病案医数集的"化学-蛋白关系"主题簇中,已经有若干结构化资源(ChemBL 的生物活性、PubChem 的化合物记录)和若干文本资源(BC5CDR 的化学-疾病关系、CHEMDNER 的化学物识别)。ChemProt 的独特价值在于三点:
- 它是"多类关系分类"的标杆:多数关系抽取语料是二分类(有关系/无关系),ChemProt 把关系细分为 10 个语义类(上调、下调、激动剂、拮抗剂、底物等),且明确指定 5 类用于评测。这使它成为细粒度关系分类方法的标准试金石。
- 它是 BioCreative 化学物-基因赛道的承前启后者:实体标注规范直接继承 CHEMDNER 的 CEM/GPRO 指南,关系标注则是本赛道首次引入,并被 2021 年的 DrugProt 扩容继承。理解 ChemProt 有助于理解整条 BioCreative 化学-生物学文献挖掘脉络。
- 它有一个几乎同名的"孪生陷阱":存在另一个完全不同的同名资源 ChemProt-2.0(DTU 的疾病化学数据库,2013 年 NAR 论文)。检索、引用、数据集抓取时若不加限定词,极易张冠李戴。这一陷阱本身就是本篇条目要澄清的核心事实之一。
§0.3 本篇条目的组织方式
- §1–§2:先建立对语料本体、数字与来源的第一手认知(十问十答 + 数据构成硬数字)。
- §3–§4:深入任务定义、标注体系与格式规范,提供可直接运行的解析代码。
- §5–§6:评测基准、模型谱系,以及 license 与获取路径。
- §7–§8:生态定位、库内互链与方法学启示。
- §9–§10:库内关系总表与 8 个真实坑点的完整拆解,最后附 FAQ、事实清单、术语表与附录。
所有硬数字均标注来源口径;凡存在多口径冲突处,均在正文中并列呈现并在 §9 存照(参见 FACTS.md §9)。
§1 十问十答:先把 ChemProt 说清楚
Q1:ChemProt 到底是什么?是一份数据库吗?
不是数据库,是挑战赛标注语料(annotated corpus)。它由 2,432 篇 PubMed 摘要组成,每篇摘要带三类实体标注(化学物、可归一基因、不可归一基因)和化学物-基因之间的二元关系标注。它没有化合物结构、没有蛋白序列、没有活性数值——那些属于 ChemBL、PubChem、UniProt 的职责。ChemProt 的产物是**“文本 + 实体偏移 + 关系标签”**,用于训练和评测关系抽取模型。
一句话:ChemProt 是"文献里化学物和蛋白是什么关系"的答案集,不是"这个化学物和这个蛋白是什么"的属性表。
Q2:为什么叫 “ChemProt”?“CPR” 又是什么?
“ChemProt” = Chemical Protein,直译"化学物-蛋白"。语料中的关系统一用 CPR 前缀编号(Chemical-Protein Relation),从 CPR:1 到 CPR:10 共 10 类。需要特别注意:还有一个 2013 年的数据库也叫 “ChemProt”(后称 ChemProt-2.0),那是疾病化学生物学数据库,与本语料只是同名异体,详见 Q9 与坑点 1。
“CPR” 在本语料中不是心肺复苏(Cardiopulmonary Resuscitation)的缩写,也不是 C 反应蛋白(CRP),而是化学物-蛋白关系。这是医学读者最容易先入为主踩的坑。
Q3:ChemProt 有多少数据?三段划分是怎样的?
2,432 篇评测摘要,划分为:
- 训练集(Training):1,020 篇
- 开发集(Development):612 篇
- 测试集(Test):800 篇
另有 50 篇示例集(sample set),用于赛前演示,通常不计入"2432"这一官方口径(计入则语料包内含 2,482 篇)。
三段合计实体与关系:
| 子集 | 摘要 | 化学物 mention | 基因/蛋白 mention | 正例关系 |
|---|---|---|---|---|
| Training | 1,020 | 13,017 | 12,735 | 4,157 |
| Development | 612 | 8,004 | 7,563 | 2,416 |
| Test | 800 | 10,810 | 10,018 | 3,458 |
| 合计 | 2,432 | 31,831 | 30,316 | 10,031 |
注:基因/蛋白 mention 存在第二套口径(训练 12,752 / 开发 7,567 / 测试 10,019,合计 30,338),差异 ≤17,疑为实体切分或去重时点差异,详见 §2 与 §9。
Q4:10 个 CPR 类分别是什么?哪些用于评测?
CPR 把 22 种原始关系类型归并为 10 个语义类,其中只有 5 类用于评测:
| 组 | 评测 | 含义 | 组内原始关系类型 |
|---|---|---|---|
| CPR:1 | 否 | 部分-整体 | PART_OF |
| CPR:2 | 否 | 调节(未细化) | REGULATOR / DIRECT_REGULATOR / INDIRECT_REGULATOR |
| CPR:3 | 是 | 上调 / 激活 | UPREGULATOR / ACTIVATOR / INDIRECT_UPREGULATOR |
| CPR:4 | 是 | 下调 / 抑制 | DOWNREGULATOR / INHIBITOR / INDIRECT_DOWNREGULATOR |
| CPR:5 | 是 | 激动剂 | AGONIST / AGONIST-ACTIVATOR / AGONIST-INHIBITOR |
| CPR:6 | 是 | 拮抗剂 | ANTAGONIST |
| CPR:7 | 否 | 调节剂(双向) | MODULATOR / MODULATOR-ACTIVATOR / MODULATOR-INHIBITOR |
| CPR:8 | 否 | 辅因子 | COFACTOR |
| CPR:9 | 是 | 底物 / 产物 | SUBSTRATE / PRODUCT_OF / SUBSTRATE_PRODUCT_OF |
| CPR:10 | 否 | 无关系 | NOT |
实践中另有 3 例
CPR:0 = Undefined边界样本(2 例在 dev、1 例在 train),非官方 10 类之一,严格分类时需过滤,详见坑点 6。
Q5:评测的任务形式与指标是什么?
任务形式:给定一篇已预标注化学物与基因/蛋白 mention 的摘要(句子),对每一对 (CHEMICAL, GENE) 判定其关系类别——若属于 5 个评测类之一,则输出对应 CPR 标签,否则判为"无关系"(CPR:10 NOT 或不在评测范围内)。这本质上是句级多类分类/关系抽取。
评测粒度:句级。全文摘要一并提供,但官方建议仅在单句不足以判断时才参考文献级上下文。
评测指标:F-measure(正类)。由于类分布极不平衡(CPR:4 独大),逐类 F 与跨类宏平均 F 必须同时报告,单看宏平均会掩盖稀疏类的糟糕表现。
Q6:挑战赛成绩如何?现在的 SOTA 大概多少?
- 官方挑战赛(2017):13 支队伍、45 个 run,跨类平均最佳 F = 64.10%,单类最高为拮抗剂 CPR:6 F = 72.56%。
- 赛后典型系统:Peng/Lu 的 SVM+CNN+RNN 集成(OUP Database 2017)在官方 test 上取得当时最优 F;BioBERT/ELMo + BiLSTM + 多头注意力(PMC6534182)进一步提升了上下文建模;校准深度网络 + 自训练(arXiv:2011.02207)宣称 SOTA;端到端 span-based 方法(arXiv:2304.01344)指出 tokenization 是隐藏变量。
需要警惕的是:不同论文的"F"往往建立在不同的测试口径(官方 800 篇 test vs 自定义划分)与不同的评测类集上,跨论文直接比较分数经常是无效的,详见坑点 7。
Q7:License 是什么?可以商用吗?
Public Domain Mark 1.0(公有领域标记)。它表示作品已知处于全球公有领域,不保留任何权利,因此理论上可用于包括商用在内的一切用途。这与 CC0 效果相近,但法律机制不同:Public Domain Mark 是对"已知无版权"状态的标记,而非权利的放弃声明。
需要提醒的是:ChemProt 的摘要原文来自 PubMed,PubMed 收录的个别文献版权状态可能不同;但语料发布方已整体标记为公有领域,实践上按 PDM 1.0 使用即可。详见 §6 与坑点 8。
Q8:怎么下载?需要申请吗?
不需要申请,也不需要登录。两条路径:
- 官方直链(UDEL 托管):
https://biocreative.bioinformatics.udel.edu/media/store/files/2017/ChemProt_Corpus.zip - HuggingFace 镜像(推荐):
bigbio/chemprot,gated=false,可直接load_dataset("bigbio/chemprot")。
需要注意:官方主页 biocreative.bioinformatics.udel.edu/tasks/biocreative-vi/track-5/ 在抓取时点对非浏览器 UA 返回 HTTP 403(反爬策略,非资源下线);国内网络访问 HF 原站可能需要走 hf-mirror.com 镜像。详见 §6。
Q9:ChemProt 和 ChemProt-2.0 是一回事吗?
不是。这是两个同名但完全无关的资源:
| ChemProt(本条目) | ChemProt-2.0 | |
|---|---|---|
| 本质 | 挑战赛关系抽取语料 | 疾病化学生物学数据库 |
| 年份 | 2017 | 2013 |
| 机构 | BioCreative VI / CNIO | DTU(丹麦技术大学) |
| 内容 | 2,432 篇摘要 + 实体/关系标注 | >115 万化合物、532 万条活性测量、15,290 个蛋白 |
| 论文 | Krallinger et al. 2017(无 DOI) | NAR 2013;41:D464-9(有 DOI) |
| 用途 | 训练/评测关系抽取模型 | 查询化合物-疾病关联 |
检索 “ChemProt” 时两者会同时命中,引用或抓取时必须加限定词(“BioCreative VI” 或 “corpus”)。这是本条目反复强调的头号陷阱。
Q10:ChemProt 现在还有用吗?后继者是谁?
非常有用,且仍在被广泛使用。原因有三:规模小、许可宽松、任务定义清晰,使它成为方法验证的标准小基准——许多新模型(上下文表示、注意力机制、少样本学习)都优先在 ChemProt 上做快速验证。
它的直接继任者是 DrugProt(BioCreative VII,2021),规模扩至 5,000 篇摘要、13 类化学物-基因关系;ChemProt 仍是这条脉络上不可绕过的起点。对中文读者而言,ChemProt 也是理解"多类关系抽取"与"类不平衡"这两个生物医学 NLP 核心议题的最佳入门语料之一。
§2 数据构成与规格
要真正理解 ChemProt,必须先把它拆成三层来看:文献层(PubMed 摘要)、实体层(化学物与基因/蛋白 mention)、关系层(化学物-基因二元关系及其类别)。三层逐级递进,下层依赖上层,任何一层解析出错都会污染最终的关系标注。本节按这三层展开,并在末尾给出数据的物理形态(文件、体积、编码)。
2.1 文献层:2,432 篇 PubMed 摘要
ChemProt 的文献基础是 2,432 篇 PubMed 摘要,划分为三个互斥子集:
| 子集 | 官方英文名 | 摘要数 | 占比 |
|---|---|---|---|
| 训练集 | training set | 1,020 | 41.9% |
| 开发集 | development set | 612 | 25.2% |
| 测试集 | test set | 800 | 32.9% |
| 评测三段合计 | — | 2,432 | 100% |
需要特别说明的是,语料包内另有 50 篇示例摘要(sample set),是赛前发放给参赛队伍熟悉格式用的。HF BigBio 数据卡把 sample 作为独立 split 单列,因此若把 sample 计入,物理包内实际共 2,482 篇。本文的"官方规模 2,432"指三段评测集,这与 overview 论文口径一致。
从体裁看,这些摘要全部来自 PubMed,覆盖生物医学各领域,但整体偏向药理学、分子生物学与生物化学——因为要能标注出"某化学物调节某蛋白"这类关系,文献本身必须谈论化合物与靶点。摘要是典型的生物医学摘要结构:背景一句、方法一句、结果若干句、结论一句;关系句多数出现在"结果"段落,这也解释了为什么句级标注能覆盖 99% 以上的正例。
一个容易被忽略的细节:摘要文本保留原文的所有形态,包括基因符号的非常规拼写、化合物注册号、希腊字母、上下标与连字符。这使得实体偏移(offset)计算、tokenization 与文本清洗成为下游建模中反复踩坑的地方(详见 §4 与坑点 2、坑点 3)。
2.2 实体层:三类实体与两种基因
ChemProt 在文献之上标注了实体提及(mention)。实体分三类:
| 实体类型 | 含义 | 是否可数据库链接 | 典型例子 |
|---|---|---|---|
CHEMICAL |
化学物/药物提及 | 否(独立标注) | aspirin, imatinib, ATP |
GENE-Y |
可链接数据库标识符的基因/蛋白 | 是(UniProt/Entrez 等) | TP53, EGFR, COX-2 |
GENE-N |
无法链接数据库标识符的基因/蛋白 | 否 | 泛指名词、未登录名、歧义缩写 |
GENE-Y 与 GENE-N 的区分是 ChemProt 实体层最重要的设计。区分标准是:该 mention 能否被唯一地关联到一个规范的基因/蛋白数据库条目(通常是 UniProt 或 Entrez Gene)。能,则标 GENE-Y(Y = yes,可链接);不能,则标 GENE-N(N = no,不可链接)。
这个设计有三重意义:
- 区分了"实体识别"与"实体链接"两个子任务。
GENE-N的存在意味着语料承认:某些基因提及在上下文中就是无法归一化的,强行归一化反而引入噪声。 - 影响关系抽取的可达上限。若一个基因是
GENE-N,即使识别出关系,也无法落地到具体靶点,下游知识图谱构建者必须区别对待。 - 制造了长尾难度。
GENE-N多为缩写歧义(如 “CA” 在不同语境指不同基因)或泛指(如 “the kinase”),模型必须靠上下文判断,不能靠查表。
三段语料的实体规模(含两套基因计数口径):
| 子集 | 摘要 | CHEMICAL mention | 基因/蛋白 mention(口径 A) | 基因/蛋白 mention(口径 B) |
|---|---|---|---|---|
| Training | 1,020 | 13,017 | 12,735 | 12,752 |
| Development | 612 | 8,004 | 7,563 | 7,567 |
| Test | 800 | 10,810 | 10,018 | 10,019 |
| 合计 | 2,432 | 31,831 | 30,316 | 30,338 |
口径分歧说明:口径 A 来自一篇用户论文(PMC6534182)的 Table 2,口径 B 来自官方系统论文(bay073)与另一篇端到端论文(arXiv:2304.01344)的 Table II。两者差异 ≤17 个 mention,疑为基因实体切分或去重时点的细微差别(例如同一基因的嵌套/重叠 mention 是否计为一条)。对宏观结论无影响,但做精确复现时必须锁定自己采用的是哪套口径。
可以看到,化学物 mention(31,831)与基因 mention(约 30,300)在数量级上相当,但关系分布极不均衡(见 2.4)。平均每篇摘要约有 13 个化学物 mention 和 12.5 个基因 mention——这个密度远高于一般 NER 语料,说明标注是"穷尽式"的,而非只标关系参与方。
2.3 关系层:从 22 种原始类型到 10 个语义类
ChemProt 关系层最核心的设计选择是归并:标注者最初使用了 22 种细粒度的 compound-protein 关系类型,但为了评测的可操作性与一致性,官方把这 22 种归并成 10 个语义类,编号 CPR:1 到 CPR:10。其中只有 5 类被纳入评测。
完整映射表如下(Eval. 列 Y = 评测类):
| 语义类 | Eval. | 组内覆盖的原始关系类型 |
|---|---|---|
| CPR:1 | N | PART_OF |
| CPR:2 | N | REGULATOR、DIRECT_REGULATOR、INDIRECT_REGULATOR |
| CPR:3 | Y | UPREGULATOR、ACTIVATOR、INDIRECT_UPREGULATOR |
| CPR:4 | Y | DOWNREGULATOR、INHIBITOR、INDIRECT_DOWNREGULATOR |
| CPR:5 | Y | AGONIST、AGONIST-ACTIVATOR、AGONIST-INHIBITOR |
| CPR:6 | Y | ANTAGONIST |
| CPR:7 | N | MODULATOR、MODULATOR-ACTIVATOR、MODULATOR-INHIBITOR |
| CPR:8 | N | COFACTOR |
| CPR:9 | Y | SUBSTRATE、PRODUCT_OF、SUBSTRATE_PRODUCT_OF |
| CPR:10 | N | NOT |
读这张表有四个关键点:
- 评测类与非评测类的划分不是随机的。被评测的 5 类(3/4/5/6/9)都具有明确的方向性与药理语义:上调、下调、激动、拮抗、底物/产物。未被评测的类(1/2/7/8)要么过于笼统(
REGULATOR是上下调的父类),要么语义角色特殊(PART_OF是结构关系、COFACTOR是辅因子)。 CPR:10=NOT是显式的负例标记。它表示"这一对化学物-基因被审阅过,确认无关系"。与一般的"未标注即负例"不同,ChemProt 区分了"明确否定"与"未提及",这在评测里会影响负例采样的定义。- 归并会掩盖药理学细微差别。例如
AGONIST-INHIBITOR(激动剂-抑制剂)被并入CPR:5 AGONIST,但它在药理上其实是一种"抑制性激动剂"。做精细药物机制分析时,必须回到底层 22 类,不能只看 CPR:1–10。 INDIRECT_*与DIRECT_*的区分被放弃了。INDIRECT_UPREGULATOR与UPREGULATOR同归CPR:3,意味着"直接结合后上调"与"通过中间通路上调"在评测中不加区分——这是评测可操作性对生物精度的一次妥协。
2.4 类分布:极端不平衡的样本
关系层的类别分布是 ChemProt 最鲜明的特征,也是几乎所有下游建模工作的第一难题。各子集正例分布如下(bay073 Table 1):
| CPR 类 | 语义 | Training | Development | Test | 三段合计 | 占比 |
|---|---|---|---|---|---|---|
| CPR:3 | 上调/激活 | 768 | 550 | 665 | 1,983 | 19.8% |
| CPR:4 | 下调/抑制 | 2,254 | 1,094 | 1,661 | 5,009 | 49.9% |
| CPR:5 | 激动剂 | 173 | 116 | 195 | 484 | 4.8% |
| CPR:6 | 拮抗剂 | 235 | 199 | 293 | 727 | 7.2% |
| CPR:9 | 底物/产物 | 727 | 457 | 644 | 1,828 | 18.2% |
| 正例小计 | — | 4,157 | 2,416 | 3,458 | 10,031 | 100% |
三个必须记住的结论:
- CPR:4(下调/抑制)独占半壁江山:三段合计 5,009 条,占全部正例的 49.9%。任何一个"永远预测 CPR:4"的平凡基线都能拿到约 50% 的准确率,这使准确率(accuracy)在本任务上几乎无意义,必须看逐类 F1 与 macro-F1。
- CPR:5(激动剂)最稀疏:三段仅 484 条,测试集只有 195 条。稀少的正例使这一类极易被模型忽略,逐类 F1 通常最低。
- 正例总数 10,031 不是"全部标注关系":bay073 Table 1 的五项相加恰好等于其标注的 “Positive relation” 数(4,157 = 768+2,254+173+235+727),说明**"正例"专指 5 个评测类之和**,非评测类(CPR:1/2/7/8)的正例不计入该统计;CPR:10(NOT)是负例标记,更不计入。
还有两个规模相关的细节值得记录:
- 跨句关系极少。论文明确说明 “cross-sentence relations are rare in this corpus”。三段句内正例分别为 4,122 / 2,412 / 3,444,分别占各段正例的约 99.2% / 99.8% / 99.6%。这意味着:把关系抽取退化为句内二实体分类,几乎不会损失召回——这正是绝大多数 ChemProt 系统的做法,也是它比跨句任务"简单"的原因之一。
- 负例(未标注对)数量巨大但未官方公布总量。因为实体密度高(每篇约 25 个 mention),一篇摘要内化学物 × 基因的可能配对可达上百对,而其中仅极少数是正例。负例总量官方未在 overview 中给出,做二分类评测时必须自行定义负例采样策略,这也导致不同论文的"负例 F1"不可直接比较。
§3 任务定义与标注体系
上一节给出了"数据长什么样",本节回答"这个任务到底要模型做什么、评价什么、标注依据什么"。把任务定义讲清楚,是避免读者被各种论文里互相矛盾的数字误导的前提。
3.1 任务定义:句级多类关系抽取
BioCreative VI Track 5 的官方任务定义可以精确表述为:
给定一篇已预标注化学物与基因/蛋白 mention 的文献(句子为单位),对每一个 (CHEMICAL, GENE) mention 对,判定二者之间是否存在关系;若存在,则将其归入 5 个评测类之一(CPR:3/4/5/6/9);若被明确审阅为无关系,则标为 CPR:10(NOT)。
这个定义里有四个必须点明的限定词:
- “预标注 mention”:实体是给定的,不需要模型做 NER。这降低了任务难度,也意味着 ChemProt 评测的是关系分类能力,而不是端到端的实体+关系联合抽取。许多论文标题写 “chemical-protein interaction extraction”,实际做的是 mention 对分类。
- “句级(sentence-level)”:评测粒度是句子。虽然摘要全文一并提供,但官方建议仅在单句不足以判断时才参考文献级上下文。语料统计也支撑这一点——跨句正例不足 1%。
- “多类分类"而非"二分类”:需要区分 5 个互斥类别,这让 ChemProt 明显难于同期的二分类关系任务(如 BC5CDR 的化学-疾病关系)。
- “5 个评测类”:非评测的 CPR:1/2/7/8 类别在语料中存在标注,但不进入官方评测分数。做研究时可以选择忽略它们(只处理 5 类 + NOT),也可以做全 10 类,但后者无法与官方榜分对比。
因此,正确的任务名是"句内 chemical-gene 多类关系分类"。把它当作"CPI 抽取"或"CPI 挖掘"容易与端到端系统混淆。
3.2 评测粒度与指标
官方采用 **F-measure(F1)**作为主指标,且因为类不平衡极端,逐类 F1 与宏平均 F1(macro-F1)必须同时报告。
| 指标 | 定义 | 为何需要 |
|---|---|---|
| 逐类 F1 | 每个 CPR 类分别算精确率/召回率的调和平均 | 揭示模型在长尾类(CPR:5)上的真实表现 |
| Macro-F1 | 各类 F1 的算术平均 | 官方榜分口径;对长尾类与头部类等权 |
| Micro-F1 | 全局正阴性汇总后计算 | 受 CPR:4 主导,通常显著高于 macro-F1 |
| 加权 F1 | 按类样本量加权的 F1 | 反映"平均一篇摘要"的体验,掩盖长尾 |
使用这四个指标的正确姿势是同时看:micro-F1 高而 macro-F1 低,说明模型倒向了 CPR:4;macro-F1 高但 CPR:5 的 F1 仍低,说明长尾问题尚未解决。跨论文比较时,必须确认对方报告的是哪一个(很多论文只报 F1 而不注明口径,见坑点 7)。
官方挑战赛的核心结果(overview 论文口径):
- 参赛队伍 13 支,提交 45 个 run。
- 跨类平均最佳 F-measure = 64.10%。
- 单类最佳:Antagonist(CPR:6)F = 72.56%。
需要留意的是,overview 摘要只完整披露了上述两项数字,其余类别的分布散见于各系统论文。这解释了为什么"ChemProt 的 SOTA 是多少"这个问题没有唯一答案——不同论文用了不同的测试划分、不同的类集、不同的负例策略。
3.3 标注体系的传承:CEM + GPRO + CHEMPROT
ChemProt 的标注规范不是凭空设计的,而是继承了两套成熟的生物医学实体标注指南,并新增一套关系指南:
| 层级 | 指南 | 来源任务 | 作用 |
|---|---|---|---|
| 化学物实体 | CEM guidelines | CHEMDNER(BioCreative IV/V/V.5) | 界定什么算化学物 mention、边界如何取 |
| 基因/蛋白实体 | GPRO guidelines | 同系列基因/蛋白标注任务 | 界定基因/蛋白 mention 及 Y/N 判定 |
| 关系 | CHEMPROT guidelines v6 | 本 track 新增 | 界定 22 种原始关系类型及归并规则 |
这个传承链非常重要,它意味着:
- ChemProt 的实体标注与 CHEMDNER 高度可比。库内的
chemdner条目(rid 450)是本条目血缘最近的近亲——实体规范直接复用,只是 ChemProt 额外加了关系层。 - GENE-Y/GENE-N 的判定逻辑源自 GPRO 指南,而非本 track 独创。理解 GPRO 的归一化哲学,才能理解为什么有些基因被标为 N。
- 关系指南是 v6 版本,说明它经历过迭代。原始的 22 类关系清单及其归并规则,都收录在随语料发放的
CHEMPROT_guidelines_v6.pdf中(随 sample 集提供)。
标注方式上,overview 的措辞是"text exhaustively annotated by hand"(由领域专家手工穷尽式标注)。穷尽式意味着标注者不仅要标出关系对,还要审阅每一对可能的 mention 对并标记 NOT——这正是 CPR:10 存在的原因,也是负例相对可靠的保证。但需要注意:官方 overview 中并未公布标注者间一致性(IAA)数字,这是一个存照项(见 §9)。
3.4 边界与特殊情形
真实语料永远有边界情形,ChemProt 也不例外。以下三类是解析与建模时必须处理的:
(1)CPR:0(Undefined)边界样本。
BigBio 数据卡的标注脚本中注释:语料内存在 3 例 CPR:0(2 例在 dev、1 例在 train)。CPR:0 不属于官方 10 类,是未定义关系的兜底标记。做严格分类时应当过滤这 3 例,否则会把类别数误算为 11(坑点 6)。
(2)同一 mention 对多关系。
某些 (CHEMICAL, GENE) 对可能同时被标注了多条不同关系(例如既是 SUBSTRATE 又参与 PART_OF)。归并到 CPR 后可能产生同类多标或跨类多标。标准评测通常按"每个正类独立计分"处理,而非强制单标签。
(3)嵌套与重叠 mention。
基因/蛋白名常出现嵌套(如 “EGFR kinase domain” 与 “EGFR”)。是否把嵌套 mention 都计数,正是 §2.2 中两套基因计数口径(30,316 vs 30,338)分歧的最可能来源。
3.5 解析代码:从原始 TSV 到结构化记录
ChemProt 原始语料以 TSV 形式提供,每个子集四张表(abstracts / entities / relations / gold_standard)。下面给出一个最小可用的解析示例,说明三层数据如何拼装。注意本节代码仅为说明字段语义,真实使用时需按 §4 的格式规范处理偏移与实体链接。
import csv
from collections import defaultdict
def parse_chemprot_subset(dirpath: str, prefix: str):
"""
解析一个 ChemProt 子集(training / development / test_gs)。
四张 TSV:{prefix}_abstracts.tsv / _entities.tsv / _relations.tsv / _gold_standard.tsv
返回:abstracts, entities, relations 三个结构
"""
abstracts, entities, relations = {}, defaultdict(list), defaultdict(list)
# --- 1) 摘要表:PMID -> (标题, 摘要全文) ---
with open(f"{dirpath}/{prefix}_abstracts.tsv", encoding="utf-8") as f:
for row in csv.reader(f, delimiter="\t"):
if len(row) < 3:
continue
pmid, title, abstract = row[0], row[1], row[2]
abstracts[pmid] = {"title": title, "text": abstract}
# --- 2) 实体表:PMID -> [mention...] ---
# 典型列:PMID, 实体ID, 实体类型, 起止偏移, 实体文本
# 实体类型取值:CHEMICAL / GENE-Y / GENE-N
with open(f"{dirpath}/{prefix}_entities.tsv", encoding="utf-8") as f:
for row in csv.reader(f, delimiter="\t"):
if len(row) < 5:
continue
pmid, ent_id, ent_type, offsets, text = row[:5]
start, end = (offsets.split(" ") + [None])[:2] if " " in offsets else (offsets, None)
entities[pmid].append({
"id": ent_id,
"type": ent_type, # CHEMICAL / GENE-Y / GENE-N
"start": int(start),
"end": int(end) if end else None,
"text": text,
})
# --- 3) 关系表:PMID -> [关系...] ---
# 典型列:PMID, 关系ID, 关系类型, arg1, arg2
# 关系类型:22 种原始类型之一(如 UPREGULATOR / INHIBITOR / ANTAGONIST / NOT ...)
with open(f"{dirpath}/{prefix}_relations.tsv", encoding="utf-8") as f:
for row in csv.reader(f, delimiter="\t"):
if len(row) < 5:
continue
pmid, rel_id, rel_type, arg1, arg2 = row[:5]
relations[pmid].append({
"id": rel_id,
"type": rel_type, # 原始 22 类之一
"arg1": arg1, # 化学物实体 ID
"arg2": arg2, # 基因实体 ID
})
return abstracts, entities, relations
# 原始 22 类 -> 10 个 CPR 语义类 的归并字典
RAW_TO_CPR = {
"PART_OF": "CPR:1",
"REGULATOR": "CPR:2", "DIRECT_REGULATOR": "CPR:2", "INDIRECT_REGULATOR": "CPR:2",
"UPREGULATOR": "CPR:3", "ACTIVATOR": "CPR:3", "INDIRECT_UPREGULATOR": "CPR:3",
"DOWNREGULATOR": "CPR:4", "INHIBITOR": "CPR:4", "INDIRECT_DOWNREGULATOR": "CPR:4",
"AGONIST": "CPR:5", "AGONIST-ACTIVATOR": "CPR:5", "AGONIST-INHIBITOR": "CPR:5",
"ANTAGONIST": "CPR:6",
"MODULATOR": "CPR:7", "MODULATOR-ACTIVATOR": "CPR:7", "MODULATOR-INHIBITOR": "CPR:7",
"COFACTOR": "CPR:8",
"SUBSTRATE": "CPR:9", "PRODUCT_OF": "CPR:9", "SUBSTRATE_PRODUCT_OF": "CPR:9",
"NOT": "CPR:10",
}
EVAL_CLASSES = {"CPR:3", "CPR:4", "CPR:5", "CPR:6", "CPR:9"}
def to_eval_class(raw_type: str):
"""把原始关系类型映射到评测类;非评测类返回 None。"""
cpr = RAW_TO_CPR.get(raw_type)
return cpr if cpr in EVAL_CLASSES else None
if __name__ == "__main__":
abstracts, entities, relations = parse_chemprot_subset(
"ChemProt_Corpus/chemprot_training", "chemprot_training"
)
print(f"摘要数: {len(abstracts)}")
print(f"实体总数: {sum(len(v) for v in entities.values())}")
# 统计评测类正例数(应为 4,157)
pos = 0
for rs in relations.values():
for r in rs:
if to_eval_class(r["type"]):
pos += 1
print(f"训练集评测类正例: {pos}")
这段代码的关键点是归并映射 RAW_TO_CPR 与评测类集合 EVAL_CLASSES 必须显式维护:原始 TSV 里存的是 22 种细粒度类型,只有经过归并并筛选,才能得到与官方评测一致的口径。若直接用原始类型做分类,得到的类别数会是 22 而非 5,分数无法与官方对比。
3.6 与 HF BigBio 版本的对应关系
如果不想自己解析原始 TSV,最省事的路径是使用 HuggingFace 上的 bigbio/chemprot。它提供了三个配置,对应三种 schema:
| 配置名 | schema 取向 | 适合场景 |
|---|---|---|
chemprot_bigbio_kb |
BigBio 知识库统一 schema | 与其他 BigBio 数据集统一处理 |
chemprot_full_source |
全关系源 schema(保留 22 类) | 需要细粒度原始关系类型 |
chemprot_shared_task_eval_source |
仅评测 5 类 | 复现官方榜分 |
四个 split 为 sample(50) / train(1,020) / validation(612) / test(800)。注意 split 命名里 dev 叫 validation,且这三个配置的 schema 字段结构并不相同——混用会让代码在字段名上出错。
2.5 三种 schema 的字段差异详解
HF BigBio 版最容易被忽视的陷阱,是三个配置的字段结构并不统一。下面把差异摊开:
(1)chemprot_bigbio_kb(知识库 schema)
这是 BigBio 的通用知识库 schema,字段被规范成"文档-段落-句子-实体-关系"的层级:
| 字段 | 结构 |
|---|---|
id |
文档 ID(字符串) |
document_id |
原始 PMID |
passages |
段落列表,每个含 text 与 offsets |
entities |
实体列表,含 id/type/text/offsets/normalized |
relations |
关系列表,含 id/type/arg1_id/arg2_id/normalized |
这个 schema 的好处是与 BigBio 下其他数据集字段一致,可以写一套通用处理代码;代价是原始信息被"拍平"到统一样式,arg1/arg2 变成 arg1_id/arg2_id 的字符串引用,需要按 id 回查实体。
(2)chemprot_full_source(全关系源 schema)
保留完整的 22 种原始关系类型,适合需要细粒度药理学区分的场景。其 type 字段是原始类型字符串(如 UPREGULATOR),而不是归并后的 CPR:x。
(3)chemprot_shared_task_eval_source(仅评测 5 类)
只保留 5 个评测类,是用来复现官方榜分的配置。若目标是比官方分数,用这个配置最省心。
混用后果示例:用 chemprot_bigbio_kb 训练、却用 chemprot_full_source 的标签空间评估,会导致标签对不齐(前者可能已过滤非评测类,后者保留 22 类),评估结果完全无效。建议:整条管线只用一个配置,并在代码变量名里显式标注是哪个配置。
2.6 负例与评测口径的完整推演
§2.4 提到"负例总数官方未公布",这一点值得单独展开,因为它直接决定评测分数的可比性。
ChemProt 的负例有两个来源:
- 显式负例(CPR:10 = NOT):标注者审阅后确认无关系的 mention 对。
- 隐式负例(未标注对):语料中大量 mention 对既非正例也非显式 NOT。
评测时如何处理这两类负例,产生不同口径:
| 口径 | 定义 | 影响 |
|---|---|---|
| 仅显式 NOT 作负例 | 只把 CPR:10 当负类 | 负例少,精确率通常偏高 |
| 全部未标注对作负例 | 所有非正例 pair 当负类 | 负例极多,精确率通常偏低 |
| 采样负例 | 从非正例中按比例采样 | 比分随采样策略大幅波动 |
这就是为什么不同论文的 ChemProt"F1"不能直接比较——一个在"仅显式 NOT"口径下报 80% 的系统,换到"全部未标注对"口径可能只有 60%。参考官方榜分时,应确认对方采用的是官方 gold_standard 定义。
2.7 实体密度带来的负例爆炸
ChemProt 每篇摘要约 13 个化学物 mention、约 12.5 个基因 mention。即使只考虑句内配对,一篇摘要内可能的 (CHEMICAL, GENE) 对也可达数十上百对,而其中正例通常只有个位数。
粗算一笔:2,432 篇摘要 × 平均约 50 对/篇 ≈ 12 万对候选,正例 10,031(仅评测类)。正例率约 8%。这是典型的"高度不平衡的 pair 分类"场景。它意味着:
- 随机基线在正类上的精确率极低,必须靠强先验或上下文特征才能提上去。
- 负例采样策略对训练动态影响巨大——下采样过头会丢信息,不采样会让模型被负例淹没。
- 评测时必须明确负例集,否则"精确率"无从谈起。
2.8 数据划分的稳定性
官方三段划分(1020/612/800)是固定且公开的,这是 ChemProt 可复现性的基石。但有一个实践细节:不同论文有时会重新划分(如合并 dev 入 train,再从 train 中切出新 dev),理由是希望用更多数据训练。
重新划分的代价是:
- 无法与官方榜分对比。
- 不同重划论文之间也无法对比(除非重划种子一致)。
建议:做基准对比时坚持官方划分;只有在追求绝对性能上限、且不打算与官网对比时,才考虑重划,并显式声明。
§4 格式规范与解析踩坑
§3 的解析代码是"理想版本",现实中的 ChemProt_Corpus.zip 有不少隐式约定与历史包袱。本节先给出物理格式全貌,再逐项说明解析时最容易出错的细节,并在末尾给出可复用的稳健解析要点。
4.1 文件结构全貌
解压 ChemProt_Corpus.zip 后,是 25 个文件、5 个目录的结构:
ChemProt_Corpus/
├── chemprot_sample/ # 50 篇示例 + 三套指南 PDF + predictions 示例
│ ├── CHEMPROT_guidelines_v6.pdf # 关系标注指南(22 类定义与归并)
│ ├── CEM_guidelines.pdf # 化学物实体指南(继承自 CHEMDNER)
│ ├── GPRO_guidelines.pdf # 基因/蛋白实体指南(含 Y/N 判定)
│ └── chemprot_sample_*.tsv # 示例四表
├── chemprot_training/ # 1020 篇
│ ├── chemprot_training_abstracts.tsv
│ ├── chemprot_training_entities.tsv
│ ├── chemprot_training_relations.tsv
│ ├── chemprot_training_gold_standard.tsv
│ └── Readme.pdf
├── chemprot_development/ # 612 篇
│ ├── chemprot_development_abstracts.tsv
│ ├── chemprot_development_entities.tsv
│ ├── chemprot_development_relations.tsv
│ ├── chemprot_development_gold_standard.tsv
│ └── Readme.pdf
└── chemprot_test_gs/ # 800 篇(注意目录名带 _gs)
├── chemprot_test_abstracts_gs.tsv
├── chemprot_test_entities_gs.tsv
├── chemprot_test_relations_gs.tsv
└── chemprot_test_gold_standard.tsv
第一个坑就藏在目录命名:train 与 dev 的目录名是 chemprot_training / chemprot_development,而 test 是 chemprot_test_gs(多了 _gs 后缀,gs = gold standard)。硬编码路径的脚本在切到 test 时会直接报文件找不到。同时 test 的文件名后缀也与其他两个不同(_test_abstracts_gs.tsv 而非 _abstracts.tsv)。
4.2 四张 TSV 各自的字段
每张表的字段语义如下(制表符分隔,无表头行):
abstracts 表(每行一篇摘要):
| 列 | 内容 |
|---|---|
| 0 | PMID(PubMed 标识符) |
| 1 | 标题(title) |
| 2 | 摘要正文(abstract) |
entities 表(每行一个 mention):
| 列 | 内容 |
|---|---|
| 0 | PMID |
| 1 | 实体 ID(如 T1、T2…,在文档内唯一) |
| 2 | 实体类型:CHEMICAL / GENE-Y / GENE-N |
| 3 | 偏移(起止字符位置,常以空格或制表符表达 start/end) |
| 4 | 实体文本(surface form) |
relations 表(每行一条关系):
| 列 | 内容 |
|---|---|
| 0 | PMID |
| 1 | 关系 ID(如 R1、R2…) |
| 2 | 关系类型(22 种原始类型之一) |
| 3 | arg1(化学物实体 ID) |
| 4 | arg2(基因实体 ID) |
gold_standard 表:官方评测用的金标子集,通常只含用于计分的关系(评测 5 类),是复现官方分数时的依据。它与 relations 表并不完全等同——relations 表含全部标注(含非评测类与 NOT),gold_standard 只含计分部分。
4.3 解析六大坑点
坑 A:偏移基准不统一。
不同文献在描述实体偏移时,有的以"标题+空格+摘要"拼接串为基准,有的只以摘要正文为基准。若下游要按偏移切片取文本,基准不一致会导致切片错位。稳健做法:不要信任偏移,直接用实体文本在所在句中做匹配;若必须用偏移,先用一篇样本手工验证基准。
坑 B:制表符与空格混用。
部分字段(尤其偏移字段)内部用空格分隔,但若用 line.split() 而非 split("\t"),会把含空格的实体文本(如 “tumor necrosis factor alpha”)错误切碎。必须显式以 \t 为分隔符。
坑 C:文件编码与特殊字符。
摘要含希腊字母、上下标、Unicode 连字符(如 U+2010)。以默认编码读取可能抛 UnicodeDecodeError。统一按 UTF-8 读取,并注意文本中的非 ASCII 连字符会导致朴素字符串匹配失败。
坑 D:test 目录名与文件名后缀不同。
如 4.1 所述,chemprot_test_gs/ 与 _gs 后缀是专门的坑。用通配符或配置表映射,不要硬编码。
坑 E:关系端点的方向性。
(arg1, arg2) 的顺序对应 (化学物, 基因)。某些原始关系类型(如 PRODUCT_OF)语义上隐含方向,转换时若把 arg1/arg2 对调,会得到完全相反的关系。固定约定:arg1 恒为 CHEMICAL,arg2 恒为 GENE,并在代码里加断言校验实体类型。
坑 F:gold_standard 与 relations 的口径差。
若直接用 relations 表统计"正例数"会得到大于 10,031 的数(因为含非评测类与 CPR:10)。统计口径必须锁定为"评测 5 类",或用 gold_standard 表。
4.4 稳健解析checklist
在把 ChemProt 接入任何训练管线前,建议逐项自查:
| 检查项 | 期望结果 |
|---|---|
| 三段摘要数 | 1020 / 612 / 800,合计 2432 |
| 化学物 mention 合计 | 31,831 |
| 基因 mention 合计 | 30,316 或 30,338(明确采用哪套口径) |
| 评测类正例合计 | 10,031 |
| 训练集五类分解 | 768/2254/173/235/727 |
| 是否出现 CPR:0 | 全语料 3 例,应显式过滤 |
| 是否残留非评测类 | 若做 5 类评测,CPR:1/2/7/8 应剔除 |
| 关系端点方向 | arg1 全为 CHEMICAL,arg2 全为 GENE |
把这张表跑通,说明解析层没有系统性错误;否则后面所有模型对比都建立在错误口径上。
§5 评估、基准与排行榜
ChemProt 之所以至今活跃,很大程度上是因为它有一套可复现的评测协议和一串可供对标的历史分数。但正因为分数太多太杂,误用也最频繁。本节把"官方协议"与"论文自报口径"分开陈述,并给出横向对比的正确方式。
5.1 官方评测协议
| 维度 | 官方设定 |
|---|---|
| 评测粒度 | 句级(sentence-level) |
| 实体 | 预标注给定,不需模型识别 |
| 类别 | 5 个评测类(CPR:3/4/5/6/9)+ NOT(CPR:10)作负例 |
| 主指标 | F-measure(F1) |
| 汇总方式 | 逐类 F1 + macro 平均 |
| 计分依据 | gold_standard 表(仅评测类) |
协议的核心约束是"实体给定"。这意味着官方榜分不测 NER 能力,只测关系分类。任何声称"在 ChemProt 上做到 XX% 的端到端抽取"的论文,若包含自己的 NER,其分数与官方榜不可直接比较。
5.2 挑战赛结果(overview 论文口径)
BioCreative VI Track 5 的官方结果:
- 13 支队伍参赛,共提交 45 个 run。
- 跨类平均最佳 F-measure = 64.10%(top-scoring teams)。
- 单类最佳:Antagonist(CPR:6)F = 72.56%。
解读:
- 64.10% 的 macro-F1 是 2017 年的天花板。这个数字不高,反映了两点——多类关系分类本身困难,以及 CPR:5(激动剂)等长尾类拖低了宏平均。
- Antagonist 类表现最好(72.56%)。拮抗剂(CPR:6)在文献中往往有明确的词汇线索(“antagonist”、“blocks”、“inhibits … competitively”),比"激动剂"这类线索含糊的类更容易学。
- overview 只完整披露这两项。其余类别的分数散见各系统论文,导致"ChemProt 各类的 SOTA"没有一个权威汇总表——这是使用该语料时信息获取上的一大不便。
5.3 赛后代表性系统
赛后,ChemProt 成为方法验证的标准小基准。代表性系统与分数口径如下:
| 系统 | 年份 | 方法要点 | 报告口径 |
|---|---|---|---|
| Peng/Lu 集成 | 2017 | SVM + CNN + RNN 集成(bay073) | 官方 test,F 最优 |
| BioBERT/ELMo 系 | 2019 | ELMo 上下文 + BiLSTM + 多头注意力(PMC6534182) | 官方 test |
| 校准深度网络 + 自训练 | 2020 | mixup + confidence penalty(arXiv:2011.02207) | 宣称 SOTA |
| 端到端 span-based | 2023 | 指出 tokenization 是隐藏变量(arXiv:2304.01344) | 官方 test |
这些系统分数不能并列成一张表,原因有三:
- 划分口径不同:有的用官方 1,020/612/800,有的用自定义划分(如把 dev 并入 train 再重划)。
- 类集不同:有的只做 5 类,有的做全部 10 类,macro-F1 的分母不同。
- 负例策略不同:负例是"随机采样"还是"全部未标注对",会让 F1 差异巨大。
5.4 横向比较的正确做法
要公平比较两个 ChemProt 系统,至少要锁定以下四项:
- 划分:train/dev/test 是否为官方 1,020/612/800?
- 类集:macro 平均是否基于 5 个评测类?
- 实体来源:用官方金标 mention 还是系统自预测 mention?
- 指标定义:报告的是 macro-F1、micro-F1 还是加权 F1?
四项中任一不同,分数差 5–15 个点都很正常。"ChemProt 的 SOTA"是一个需要加限定词才有意义的问题(坑点 7)。
5.5 tokenization:被低估的隐藏变量
arXiv:2304.01344 的一项发现值得单独记录:ChemProt 上大量系统分数差异,部分来自 tokenization 而非模型能力。
该文实测指出:使用 ScispaCy 默认切分会丢失约 10% 的实体和约 20% 的关系(因为偏移对齐在切分后错位);而改用细粒度 regex 切分后,仅丢 0.4% 的实体和 1.37% 的关系。
这个发现的重要性在于:它说明许多"模型改进"的收益,可能只是预处理对齐做对了。复现任何 ChemProt 系统时,tokenization 与 offset 对齐必须作为一等公民来验证,而不是事后补救。
5.6 从官方分数到现实预期
对于刚接触 ChemProt 的团队,一个现实的问题是"什么样的分数算好"。基于官方与赛后文献,给出如下经验预期(官方划分、5 类、macro-F1 口径):
| 水平 | macro-F1 区间 | 说明 |
|---|---|---|
| 平凡基线(全预测 CPR:4) | ~10–20% | macro 下极低,因长尾类 F1≈0 |
| 简单特征 + 线性分类器 | ~45–55% | 词袋 + 实体类型特征的经典基线 |
| 预训练语言模型微调 | ~60–70% | BERT/BioBERT 级模型通常区间 |
| 集成 / 专门结构 | ~70%+ | 多头注意力、集成、校准等手段 |
这些数字是经验区间,具体实现差异很大。它们的用途是帮读者判断"我的系统是明显不行还是已经不错",而不是作为绝对标准。
5.7 类不平衡的评测应对策略
面对 CPR:4 独大,评测层面有几种处理方式,各有利弊:
| 策略 | 做法 | 优点 | 缺点 |
|---|---|---|---|
| 宏平均(官方) | 逐类 F1 再平均 | 长尾不受埋没 | 头部类噪声被放大 |
| 加权平均 | 按类样本量加权 | 反映整体体验 | 掩盖长尾 |
| 重采样 | 训练时下采样头部/上采样尾部 | 缓解偏斜 | 改变数据分布 |
| 类权重损失 | 给尾部类更高损失权重 | 保持数据完整 | 需调参 |
推荐做法:训练时用类权重或重采样缓解偏斜,评测时始终以宏平均为主指标并附逐类 F1,这样既改善性能又保持与官方口径可比。
§6 License、获取与版本链
6.1 License:Public Domain Mark 1.0
ChemProt 采用 Public Domain Mark 1.0(公有领域标记)。它的含义与使用边界如下:
| 项 | 说明 |
|---|---|
| 法律性质 | 标记"作品已知处于全球公有领域",而非权利放弃声明 |
| 权利保留 | 不保留任何权利(no rights reserved) |
| 商用 | 允许 |
| 再分发 | 允许 |
| 署名 | 非强制(但学术引用惯例上应引 overview 论文) |
| 与 CC0 的差别 | CC0 是主动放弃权利;PDM 是标记"已知无版权"。效果相近,法律机制不同 |
HF BigBio 数据卡的字段为 bigbio_license_shortname: PUBLIC_DOMAIN_MARK_1p0,dataset script 里 _LICENSE = 'Public Domain Mark 1.0',而在 HF 的 tags 中归为 license:other——因为 HF 没有 PDM 的原生枚举,只能压入 other。
一个需要注意的实务细节:语料的摘要原文来自 PubMed,而 PubMed 收录的个别文献版权状态可能与其他文献不同。语料发布方已整体标记为公有领域,实践上按 PDM 1.0 使用即可;但若要把某条摘要原文单独再分发用于商业产品,最稳妥的做法是回查该 PMID 的原始版权状态(坑点 8)。
6.2 获取路径
ChemProt 的获取门槛是公开直链、无需申请、无需登录,这在 AI-Ready 评估里属于最高一档。三条路径:
| 路径 | 地址 | 说明 |
|---|---|---|
| 官方主页 | https://biocreative.bioinformatics.udel.edu/tasks/biocreative-vi/track-5/ |
UDEL 托管;抓取时点对非浏览器 UA 返回 HTTP 403(反爬,非下线) |
| 官方直链 | https://biocreative.bioinformatics.udel.edu/media/store/files/2017/ChemProt_Corpus.zip |
历史直链 |
| HuggingFace 镜像(推荐) | bigbio/chemprot(gated=false) |
源包 + 12 个 Parquet;可直接 load_dataset |
推荐走 HF 镜像的原因:官方站点对自动化访问有 403 反爬策略(用伪装 UA 或浏览器可访问),而 HF 镜像 gated=false,load_dataset("bigbio/chemprot") 一行即可拿到,且同时提供原始 zip 与结构化 Parquet。国内网络访问 HF 原站若受限,可走 hf-mirror.com 镜像。
6.3 版本链与体量
| 项 | 值 |
|---|---|
| 语料源包名 | ChemProt_Corpus.zip |
| 源包内版本号 | v1.0.0(HF dataset script _SOURCE_VERSION = "1.0.0") |
| HF 最后修改 | 2025-06-19(抓取时点) |
| HF 下载量/点赞 | 3,195 downloads / 16 likes(抓取时点) |
| HF 配置数 | 3(bigbio_kb / full_source / shared_task_eval_source) |
| HF split 数 | 4(sample 50 / train 1020 / validation 612 / test 800) |
| download_size | 2.92–3.64 MB(依配置) |
| dataset_size | 7.64–8.62 MB |
体量极轻(纯文本,不到 10 MB)是 ChemProt 的一大优势:可以在几分钟内下载完、在单机 CPU 上跑通完整训练,非常适合教学、快速原型与方法验证。
6.4 二次镜像
除 HF 外,社区还有 GitHub 二次镜像:
ruiantunes/biocreative-vi-track-5-chemprot:某参赛系统的代码 + data.zip 双镜像。wenyuan-wu/chemprot-drugprot_testing_ground:目录结构存档,含 guidelines PDF。
这些镜像适合在官方站点不可达时做备份获取,但版本可能与 v1.0.0 有细微差异,正式复现建议以 HF bigbio/chemprot 或官方源包为准。
§7 生态、下游与影响
ChemProt 不是一座孤岛。它处在一张由"挑战赛—规范—后继语料—下游应用"编织的网络中。理解这张网络,才能理解为什么一份不到 10 MB 的小语料能有如此长的生命周期。
7.1 BioCreative 挑战赛谱系中的位置
ChemProt 是 BioCreative VI(第六届)的 Track 5。BioCreative 系列是生物文本挖掘社区最具影响力的共享评测(shared task)系列,自 2004 年起举办。与 ChemProt 直接相关的几届如下:
| 届次 | 年份 | 相关 track / 产出 | 与 ChemProt 的关系 |
|---|---|---|---|
| BioCreative IV/V | 2013–2015 | CHEMDNER 化学物 NER | 实体标注规范源头(CEM 指南) |
| BioCreative V | 2015 | BC5CDR(化学-疾病关系,CDR) | 关系抽取的同期姊妹任务 |
| BioCreative V.5 | 2017 | CEMP 专利化学物 NER | 化学物规范的延伸 |
| BioCreative VI | 2017 | Track 5 = ChemProt | 本条目主体 |
| BioCreative VII | 2021 | DrugProt | 直接继任者(扩容 + 扩类) |
这条谱系揭示了一个清晰的技术演进:先有实体(CHEMDNER)→ 再有二元关系(BC5CDR / ChemProt)→ 再到大规模式关系(DrugProt)。ChemProt 正好处在"从实体到关系"的转折点上。
7.2 直接继任者:DrugProt
ChemProt 之后的同赛道继任者是 DrugProt(BioCreative VII,2021)。两者的继承关系可以列成一张对照表:
| 维度 | ChemProt(2017) | DrugProt(2021) |
|---|---|---|
| 规模 | 2,432 篇摘要 | 5,000 篇摘要 |
| 划分 | 1020 / 612 / 800 | 3500 / 750 / 750 |
| 关系类 | 22 → 10(评 5) | 13 类化学物-基因关系 |
| 血缘 | 化学物-基因关系抽取 | 同一赛道扩容 |
DrugProt 之于 ChemProt,类似于"大模型时代的数据集扩容版"。但即便如此,ChemProt 依然没有被取代——原因在 §7.5 说明。
7.3 与同期关系抽取语料的横向对照
把 ChemProt 放进生物医学关系抽取数据集的大地图里,才能看清它的独特性:
| 语料 | 年份 | 规模(摘要) | 实体对 | 关系数 | 特点 |
|---|---|---|---|---|---|
| BC5CDR | 2016 | 1,500 | 化学物-疾病 | 2 类 | 二分类,含疾病实体 |
| ChemProt | 2017 | 2,432 | 化学物-基因 | 10 类(评 5) | 多类,类不平衡极端 |
| PrecMed / PM | 2017 | 5,509 | 化学物-疾病 | 多类 | 更大规模 |
| DrugProt | 2021 | 5,000 | 化学物-基因 | 13 类 | ChemProt 扩容继任 |
ChemProt 的独特性有两处:(1)它做的是化学物-基因关系(而非化学物-疾病),这直接对应药物靶点这一核心生物医学问题;(2)它的类别数适中(5 个评测类)却严重不平衡,天然成为研究类不平衡与长尾学习的理想试验台。
7.4 下游应用方向
ChemProt 标注的是"文献中陈述的化学物-蛋白关系",这类信息的下游用途广泛:
- 药物-靶点相互作用挖掘:从文献中自动抽取候选化合物与靶点的关系,补充结构化数据库。
- 药物重定位:发现已有药物的新靶点,推测新适应症。
- 系统药理学:构建多靶点-多通路的调控网络。
- 不良反应分子机制推断:结合拮抗/激动信息,解释副作用的分子基础。
- 生物医学知识图谱构建:作为化学物-基因边的文本来源之一,与结构化数据库(如 ChEMBL、PubChem)互补。
7.5 为什么小语料长盛不衰
ChemProt 规模小(<10 MB)、年代久(2017),却至今被广泛使用,原因有四:
- 许可宽松:Public Domain Mark,无任何使用门槛。
- 任务定义清晰:句级、预标注实体、5 类,边界明确,易于复现。
- 体量轻:单机 CPU 几分钟跑完,是新方法的快速验证台。
- 类不平衡特性:天然成为长尾/不平衡学习研究的基准,这一研究价值不随规模增大而消失。
正因如此,许多上下文表示、注意力机制、少样本学习的新方法都优先在 ChemProt 上做"是否 worth deeper exploration"的快速判断。它是生物医学 NLP 的"MNIST 时刻"——小、快、有代表性。
7.6 生态工具链
围绕 ChemProt 形成了一条工具链生态:
| 环节 | 工具/项目 | 作用 |
|---|---|---|
| 数据集整合 | BigBio(HF bigbio 组织) |
统一 schema、多语料托管 |
| 标注格式 | PubTator / BioC | 实体-关系标注的通用格式 |
| 预处理 | TEES(Turku Event Extraction System) | 关系抽取的经典预处理与特征工程 |
| 榜单托管 | BioCreative 官方 + 各系统论文 | 无统一长期榜,需人工汇总 |
其中 TEES 值得特别一提:它是事件抽取时代的经典框架,ChemProt 早期系统大量基于 TEES 做预处理。TEES 的存在解释了为什么 ChemProt 的原始格式带有"实体-关系-金标"三表分离的 BIE 风格——这是 Turku 系工具的通用约定。
7.7 与 DrugProt 的迁移关系
作为继任者,DrugProt 与 ChemProt 之间存在"预训练-微调式"的迁移关系:不少 DrugProt 系统先用 ChemProt 预训练关系分类器,再在 DrugProt 上微调。这种迁移之所以可行,是因为二者共享:
- 相同的实体对类型(化学物-基因/蛋白)。
- 相似的语义类别(上调/下调/激动/拮抗等在两套体系中都有)。
- 相同的数据来源(PubMed 摘要)。
差异则在规模与类别粒度:DrugProt 有 13 类,比 ChemProt 的评测 5 类更细。研究大规模关系抽取的读者,可以把 ChemProt 当作"入门与预训练",DrugProt 当作"进阶与评测"。
7.8 中文社区的使用状况
对中文研究者而言,ChemProt 的使用门槛较低:无需申请、体量小、格式简单,且已有大量中文教程与复现代码。常见的使用场景包括:
- 教学:作为 NLP 课程中"关系抽取"章节的动手数据集。
- 论文对照实验:新方法在 ChemProt 上做 quick check,再上更大语料。
- 课程设计/竞赛:因其类不平衡特性,适合作为"如何正确处理不平衡"的练习。
需要注意的是,中文社区部分教程直接复制了原始 TSV 的字段说明,但未指出 test 目录名带 _gs、dev 在 HF 中叫 validation 这两个陷阱,读者照抄代码时常在此处卡壳。
7.9 数据资产的长期可维护性评估
从基础设施视角评估 ChemProt 的长期可用性:
| 风险 | 现状 | 缓解 |
|---|---|---|
| 官方站点不可达 | 曾有下线历史,现对爬虫 403 | HF + GitHub 多源镜像 |
| 版本漂移 | 源包 v1.0.0,HF 镜像可能微调 | 锁定 HF commit / 校验 md5 |
| 许可变更 | PDM 1.0 不可撤销 | 风险极低 |
| 同名混淆 | ChemProt-2.0 持续存在 | 检索加限定词 |
| 格式腐化 | 纯文本 TSV,无二进制依赖 | 风险极低 |
总体判断:ChemProt 属于"长寿命数据资产"——许可不可撤销、格式简单、多源冗余,十年后大概率仍可获取与复现。
§8 方法学启示:ChemProt 教给我们的五件事
一份数据集的价值不只在数据本身,更在它能教会研究者什么。ChemProt 因其"小而典型",恰好浓缩了生物医学关系抽取的若干核心方法论议题。
8.1 类不平衡是关系抽取的常态,不是例外
CPR:4 独占约 50%、CPR:5 不足 5% 的分布,不是 ChemProt 的缺陷,而是生物医学关系的真实分布:文献里报告"某药抑制某蛋白"远多于报告"某药激动某蛋白"。这给建模的启示是:
- 不要在准确率上自欺。永远上报 macro-F1 与逐类 F1。
- 长尾类需要专门处理:重采样、类别加权、focal loss、few-shot 提示,都是在 ChemProt 上被反复验证的手段。
- 评估要区分 head/tail。把 CPR:4 与 CPR:5 的 F1 放在一起平均,会掩盖真正的问题。
8.2 预标注实体 vs 端到端:评测的分工
ChemProt 官方只测关系分类(实体给定),这是一个刻意的分工。它的方法学启示是:
- 关系抽取的效果,可由"关系分类"与"实体识别"两个环节分别衡量,便于定位瓶颈。
- 但真实应用中二者不可分割。端到端系统的错误会级联:NER 漏一个实体,对应关系必然漏。
- 因此引用 ChemProt 分数时必须注明是 pipeline 还是 end-to-end,否则没有意义。
8.3 预处理与 tokenization 是一等公民
§5.5 引用的发现(ScispaCy 默认切分丢约 10% 实体、20% 关系)是一个强烈的警示:分数差异可能来自预处理而非模型。方法学启示:
- 在比较两篇论文的 ChemProt 分数前,先比较它们的 tokenization 与 offset 对齐策略。
- 复现时把"实体/关系不丢"作为预处理阶段的验收标准(见 §4.4 checklist)。
- 报告方法时,预处理细节应当与模型细节同等详细地披露。
8.4 跨句关系虽少,但不可忽略
ChemProt 中跨句关系不足 1%,很多系统选择只做句内分类。这在基准分数上几乎无损,但在真实应用中有损:真实文献里,"该化合物……然而在另一实验中……抑制了 X"这类跨句表述并不罕见。方法学启示:
- 做基准时,句内简化是可接受的、并且被官方语料统计所支持的选择。
- 做产品时,必须显式评估跨句召回的损失,不能照搬基准结论。
8.5 数据规模与许可,决定方法的传播速度
ChemProt 的影响力部分来自"小而开放":因为体量小、许可宽,任何人都能在几分钟内拿到跑通。方法学启示(也是对该领域基础设施的一个提醒):
- 一个被广泛采用的小基准,对领域方法演进的推动,可能超过一个难以获取的大数据集。
- 对数据集作者的启示:降低获取摩擦(开放许可、直链、标准格式),本身就是对领域的方法学贡献。
8.6 标注规范的层级继承是一种工程智慧
ChemProt 复用 CHEMDNER 的 CEM 指南、复用 GPRO 指南、只新增关系指南(v6),这是标注成本控制的经典做法。方法学启示:
- 新任务应尽量复用成熟规范的实体层,只重写新增的任务层,既省成本又提高跨语料可比性。
- 这也解释了为什么 ChemProt 与 CHEMDNER 的实体可在同一坐标系下讨论——它们共享标注哲学。
8.7 显式负例的价值
CPR:10(NOT)是"审阅确认无关系"的显式负标记。方法学启示:
- 显式负例比隐式负例信息量高:它排除了"未提及"与"确认无"的混淆,使负类更干净。
- 但显式负例的覆盖有限(标注者不可能审阅所有 pair),因此仍需定义隐式负例策略。
- 做关系抽取数据集设计时,是否标注 NOT、标注到什么程度,是一个值得慎重权衡的设计决策。
8.8 可复现性的四要素
从 ChemProt 的实践中可提炼出一条可复现性清单,适用于任何关系抽取语料:
- 固定划分:公开且固定 train/dev/test(ChemProt 做到了)。
- 固定口径:类别映射、负例定义、指标口径都需显式声明(ChemProt 部分做到了)。
- 固定预处理:tokenization 与 offset 对齐需披露(往往被忽视)。
- 固定金标:计分依据需独立于训练标注(ChemProt 的 gold_standard 表做到了)。
四项齐备,才能让"分数"成为可比较的科学量,而非一篇论文的孤例。
§9 与库内条目的关系及互链建议
ChemProt 在一个精心编排的生物医学数据集知识库中并非孤立条目。它与其他条目存在血缘、对位、互补三类关系。以下互链点均已用 url_name 反查确认 rid(record_id)。
9.1 血缘最近:CHEMDNER(rid 450)
关系类型:规范继承。
ChemProt 的实体标注规范直接继承自 CHEMDNER 的 CEM 指南。可以说,CHEMDNER 定义了"什么算一个化学物提及",ChemProt 则在此基础上加了关系层。两篇条目应当互链,并在互链语中明示"实体规范传承"这一血缘。
- 建议链接语:ChemProt 的化学物实体标注沿用 CHEMDNER(BioCreative IV/V)的 CEM 指南。
- rid:450;url_name:
chemdner
9.2 最直接的前驱/对位:BC5CDR(rid 415)
关系类型:同期姊妹任务。
BC5CDR(BioCreative V,2016)做的是化学物-疾病关系(二分类),ChemProt(2017)做的是化学物-基因关系(多类)。两者同为 BioCreative 系列、同为 PubMed 摘要、同为关系抽取金标,是最自然的对照对。
- 建议链接语:与 BC5CDR 互为对照——同为 BioCreative 关系抽取语料,但实体对(化学-疾病 vs 化学-基因)与类别设定(二分类 vs 多类)不同。
- rid:415;url_name:
bc5cdr
9.3 实体层方法论源头:BC2GM(rid 434)
关系类型:方法论溯源的祖先。
GENE-Y/GENE-N 的判定哲学,源头可上溯至 BioCreative 系列的基因提及标注(BC2GM)。互链有助于读者理解"可链接性"这一设计的历史脉络。
- rid:434;url_name:
bc2gm
9.4 大规模对位:BioRED(rid 457)
关系类型:挑战赛语料 vs 大规模整合语料。
BioRED 是更大规模、文献级、多实体对关系的数据集。与 ChemProt 对照,可以展示"精心设计的小语料"与"覆盖广泛的大语料"两种不同的数据设计哲学。
- rid:457;url_name:
biored
9.5 同赛道但不同哲学:CRAFT(rid 529)
关系类型:目标相近、标注哲学不同。
CRAFT 同样涉及化学物-基因关系,但强调概念归一与全文本标注,与 ChemProt 的"句级、预标注 mention"路线形成对比。
- rid:529;url_name:
craft
9.6 实体归一对照:MedMentions(rid 390)
关系类型:实体层对照。
MedMentions 做的是 UMLS 实体提及归一,可用于理解 ChemProt GENE-Y 所要求的"可数据库链接"这一概念在更广语料中的对应做法。
- rid:390;url_name:
medmentions
9.7 结构化数据库一端:PubChem-PCBA 与 ChEMBL
关系类型:文本 vs 结构化。
ChemProt 抽取的是文献中陈述的化学物-蛋白关系;而 pubchem-pcba(rid 86)与 chembl(rid 572)提供的是实验测定的化学物-蛋白活性数据。三者构成"文本证据"与"实验证据"的互补两端,是构建知识图谱时天然需要联查的对象。
- rid:86;url_name:
pubchem-pcba - rid:572;url_name:
chembl
9.8 文献解析入口生态:PubTator Central(rid 752)
关系类型:实用解析入口。
PubTator Central(rid 752)是集中化的文献标注平台,为 ChemProt 这类语料提供了从 PMID 出发的实用解析入口(实体-关系标注的通用格式与查询)。
- rid:752;url_name:
pubtator-central
9.9 互链建议汇总表
| 目标条目 | rid | 关系类型 | 建议链接语方向 |
|---|---|---|---|
| chemdner | 450 | 规范继承 | ChemProt 复用 CHEMDNER 的 CEM 化学物规范 |
| bc5cdr | 415 | 同期姊妹任务 | 化学-疾病(二分类)vs 化学-基因(多类)对照 |
| bc2gm | 434 | 方法论溯源 | GENE-Y/N 判定哲学的历史源头 |
| biored | 457 | 大规模对位 | 小而精 vs 大而全 数据设计哲学 |
| craft | 529 | 目标相近哲学异 | 概念归一 vs 句级预标注 |
| medmentions | 390 | 实体层对照 | UMLS 归一 vs 数据库可链接性 |
| pubchem-pcba | 86 | 文本-实验互补 | 文献陈述 vs 实验测定活性 |
| chembl | 572 | 文本-实验互补 | 文献关系 vs 生物活性数据库 |
| pubtator-central | 752 | 解析入口 | PMID 出发的标注查询生态 |
§10 避坑清单(八坑)
以下是使用 ChemProt 时最容易踩的八个坑,每坑给出现象—根因—对策三段式。这些坑按严重程度排序:前四坑会直接导致错误结论,后四坑会导致复现困难或引用失范。
坑 1:把 ChemProt 与 ChemProt-2.0 混为一谈(头号陷阱)
- 现象:检索 “ChemProt” 时同时命中两个资源;有人在论文或数据集卡片里引用 “ChemProt” 却指向了错误的对象;抓取系统把两个资源的数字混进一条记录。
- 根因:存在一个完全不同的同名资源「ChemProt-2.0」(Kim Kjærulff et al., Nucleic Acids Research 2013;41:D464-9, doi:10.1093/nar/gks1166,丹麦技术大学 DTU)——那是一个疾病化学生物学数据库(>115 万化合物、532 万条活性测量、15,290 个蛋白),与 BioCreative VI 的语料无任何血缘关系,仅共享 “ChemProt” 之名。
- 对策:检索、抓取、引用时必须加限定词——“BioCreative VI” 或 “corpus”。看到"ChemProt"字样先问:是 2017 年的 NLP 语料,还是 2013 年的疾病化学数据库?
坑 2:tokenization 与 offset 对齐导致实体/关系静默丢失
- 现象:模型在 ChemProt 上分数偏低,排查后发现输入序列里的实体边界与标注偏移对不上;用不同 tokenizer 得到差异很大的分数。
- 根因:ChemProt 摘要含希腊字母、上下标、Unicode 连字符,朴素切分(如 ScispaCy 默认)会使偏移错位。实测可丢约 10% 实体、20% 关系。
- 对策:优先用细粒度 regex 切分(实测仅丢 0.4% 实体、1.37% 关系);在预处理阶段加断言,校验"切片文本 == 标注文本";把 preprocessing 作为一等公民报告。
坑 3:混淆"原始 22 类"与"评测 5 类"
- 现象:自己统计出的正例数远大于 10,031;模型类别数是 22 而非 5,分数无法与官方对比。
- 根因:raw TSV 存的是 22 种细粒度关系类型,官方评测只用归并后的 5 类(CPR:3/4/5/6/9)。
- 对策:显式维护
RAW_TO_CPR归并字典与EVAL_CLASSES集合(见 §3.5);统计口径锁定"评测 5 类",或用gold_standard表。
坑 4:用 accuracy 或 micro-F1 汇报,掩盖类不平衡
- 现象:报告一个很高的准确率(如 80%+),读者以为模型很好,实则只是倒了 CPR:4。
- 根因:CPR:4 独占约 50%,平凡基线即可刷高 accuracy / micro-F1。
- 对策:必须同时报 macro-F1 与逐类 F1;特别关注 CPR:5(最稀疏)的 F1;使用 macro 作为主指标,与官方口径一致。
坑 5:误信论文中的 “5031 abstracts” 笔误
- 现象:看到某论文(PMC6534182)Table 2 的 Total 行写 “5031 abstracts”,据此认为 ChemProt 有 5,031 篇摘要。
- 根因:那是该论文把 test 的 800 篇误写为 3,399 后加总(1020+612+3399=5031)的笔误。官方总摘要为 2,432(+sample 50)。
- 对策:以 overview 论文与 HF splits(1020/612/800)为准;引用时按 2,432,不引用笔误数字。
坑 6:把 CPR:0 当作官方类别,类别数算成 11
- 现象:统计类别数得到 11,或做 11 类分类。
- 根因:语料含 3 例 CPR:0(Undefined) 边界样本(2 dev + 1 train),不属于官方 10 类。
- 对策:显式过滤 CPR:0;官方类别数是 10(评 5),不是 11。
坑 7:跨论文直接比较 F1,忽视口径差异
- 现象:把不同论文的 ChemProt F1 排成一张榜,得出"某方法不如某方法"的结论。
- 根因:各论文的**划分(官方 vs 自定义)、类集(5 类 vs 10 类)、实体来源(金标 vs 自预测)、指标(macro/micro/加权)**四项可能各不相同。
- 对策:比较前先锁定四项口径;口径不同的分数不可并列;"ChemProt SOTA"需加限定词。
坑 8:忽略摘要原文的 PubMed 版权细节
- 现象:把 ChemProt 的某条摘要原文直接用于商业产品,未核查原始版权。
- 根因:语料整体标为 Public Domain Mark 1.0,但摘要原文来自 PubMed,个别文献版权状态可能不同。
- 对策:语料层面按 PDM 1.0 使用即可;若要单独再分发某条摘要原文于商业场景,回查该 PMID 原始版权状态。
§11 总结
ChemProt 是生物医学关系抽取领域一份"小而关键"的语料。用一句话概括它的身份:BioCreative VI Track 5 发布的、首个专门面向化学物-蛋白质相互作用的共享任务语料,2,432 篇 PubMed 摘要,10 个语义类(评测 5 类),Public Domain Mark 许可。
把它放在学科坐标上看,CheProt 有三个不可替代的位置:
- 技术史的转折点:它处在"实体识别(CHEMDNER)"与"大规模关系抽取(DrugProt)"之间,是二元关系抽取从概念验证走向工程的中间站。
- 方法学的标准试验台:因为规模小、边界清、类不平衡极端,它成为上下文表示、注意力机制、长尾学习等新方法的快速验证基准。
- 文本与实验的接合面:它抽取的是"文献陈述的化学物-靶点关系",与 ChEMBL、PubChem 等"实验测定的活性数据"互补,是知识图谱中文本证据的重要来源。
对中文读者而言,ChemProt 的价值还在于它是一个理解"多类关系抽取"与"类不平衡"两大核心议题的最佳入门语料:它足够小,可以在一台笔记本上跑通;又足够典型,能让你完整经历从数据解析、实体对齐、类别归并到宏平均评估的全流程。
若要用一句话提醒后来的使用者:警惕同名异体(ChemProt-2.0),锁定评测口径(5 类、macro-F1),并把预处理当成一等公民。
FAQ:常见问题速查
Q:ChemProt 是一份数据库吗?
不是。它是挑战赛关系抽取语料(BioCreative VI Track 5),提供的是带实体与关系标注的 PubMed 摘要文本,不是可查询的化合物/靶点数据库。注意与同名的 ChemProt-2.0 数据库区分。
Q:一定要自己解析原始 TSV 吗?
不必。推荐直接使用 HuggingFace bigbio/chemprot(gated=false),一行 load_dataset("bigbio/chemprot") 即可。但需注意其三个配置的 schema 不同,dev split 命名为 validation。
Q:官方评测的类别到底有几个?
语料标注有 10 个语义类(CPR:1–CPR:10),但只有 5 类用于评测(CPR:3/4/5/6/9)。另有 3 例 CPR:0(Undefined)为边界样本,不属于官方类别。
Q:正例关系总数是多少?
三段合计 10,031(4,157 + 2,416 + 3,458)。这是 5 个评测类之和,不含非评测类与 NOT。
Q:为什么 CPR:4 这么多?
因为文献中"下调/抑制"(downregulator/inhibitor)关系的报告远多于其他类型。这是语料的真实分布,也是类不平衡的来源。
Q:跨句关系多吗?
极少。论文明确 “cross-sentence relations are rare”,句内正例占各段正例的 99% 以上。
Q:能商用吗?
可以。语料采用 Public Domain Mark 1.0(不保留权利)。但摘要原文来自 PubMed,若单独再分发单条摘要原文,建议回查该 PMID 的原始版权状态。
Q:下载需要申请吗?
不需要。官方直链或 HF 镜像均可直接下载,无 gated、无登录。官方主页对自动化访问有 403 反爬,需伪装 UA 或走 HF 镜像。
Q:ChemProt 的 SOTA 是多少?
没有唯一答案。官方挑战赛跨类最佳 macro-F1 为 64.10%,单类最佳(Antagonist)72.56%。赛后的"更高分数"因口径不同(划分/类集/实体来源/指标)不能直接并列。
事实清单(Fact Sheet)
以下为本条目所依据的关键事实,逐条列出便于核查。抓取时点:2026-09-30。
- 全称:BioCreative VI Chemical-Protein interaction corpus(CHEMPROT corpus / ChemProt corpus)。
- 本质:挑战赛关系抽取语料,非数据库、非知识库。
- 任务:化学物-蛋白质(化学物-基因)相互作用关系抽取。
- 官方 slug:chemprot。
- 官方主页:
biocreative.bioinformatics.udel.edu/tasks/biocreative-vi/track-5/(抓取时点对非浏览器 UA 返回 403)。 - 主论文:Krallinger et al., “Overview of the BioCreative VI chemical-protein interaction Track”, Proceedings of the Sixth BioCreative Challenge Evaluation Workshop, 2017;1:141-146(无 DOI)。
- 主论文被引:313–362 之间浮动(Google Scholar 口径)。
- 时间线:2017 年;workshop 于 2017-10-18/19/20 在 Bethesda, Maryland 举办。
- 牵头人:Martin Krallinger(当时 CNIO 生物文本挖掘组)。
- 核心合作机构:CNIO、CIMA(西班牙纳瓦拉)、NTNU(挪威)、UDEL(美国特拉华)。
- 规模:2,432 篇 PubMed 摘要 = train 1,020 + dev 612 + test 800。
- 另有 sample set 50 篇(HF BigBio 单列为 split);计入则物理包内 2,482 篇。
- 化学物 mention 合计:31,831(13,017 + 8,004 + 10,810)。
- 基因/蛋白 mention 合计:30,316(口径 A)或 30,338(口径 B)。
- 评测类正例合计:10,031(4,157 + 2,416 + 3,458)。
- 原始关系类型:22 种。
- 归并语义类:10 个(CPR:1–CPR:10)。
- 评测类:5 个(CPR:3/4/5/6/9)。
- 实体类型:CHEMICAL / GENE-Y / GENE-N 三类。
- 训练集五类分解:CPR:3=768, CPR:4=2254, CPR:5=173, CPR:6=235, CPR:9=727。
- CPR:4 占全部正例约 49.9%(三段合计 5,009)。
- CPR:5 最稀疏,三段合计 484。
- 跨句关系极少(句内正例占比 >99%)。
- CPR:0(Undefined)边界样本 3 例(2 dev + 1 train)。
- 标注方式:“text exhaustively annotated by hand”(领域专家穷尽式手工标注)。
- 实体规范来源:CHEMDNER 的 CEM(化学物)+ GPRO(基因/蛋白)指南。
- 关系规范来源:本 track 新增
CHEMPROT_guidelines_v6.pdf。 - IAA(标注者间一致性)官方未公布。
- 挑战赛队伍数:13 支;提交 run 数:45 个。
- 官方最佳跨类平均 F:64.10%。
- 官方单类最佳:Antagonist(CPR:6)F = 72.56%。
- License:Public Domain Mark 1.0(不等同 CC0,同为无限制)。
- HF 镜像:
bigbio/chemprot,gated=false。 - HF 体量:download_size 2.92–3.64 MB;dataset_size 7.64–8.62 MB。
- HF 配置 3 个:chemprot_bigbio_kb / chemprot_full_source / chemprot_shared_task_eval_source。
- HF split 4 个:sample(50) / train(1020) / validation(612) / test(800)。
- 源包版本号 v1.0.0;源包名
ChemProt_Corpus.zip。 - 同名异体:ChemProt-2.0(DTU 疾病化学数据库,NAR 2013;41:D464-9, doi:10.1093/nar/gks1166)。
- 直接继任者:DrugProt(BioCreative VII,2021,5,000 摘要,13 类)。
- 同期对位:BC5CDR(2016,1,500 摘要,化学-疾病,二分类)。
术语表(Glossary)
| 术语 | 中文 | 释义 |
|---|---|---|
| CPI | 化学物-蛋白质相互作用 | Chemical-Protein Interaction;本语料的核心任务对象 |
| CPR | 化学物-蛋白关系(类) | Chemical-Protein Relation;语料中 10 个语义类的编号前缀 |
| CEM | 化学物实体标注指南 | Chemical Entity Mention;沿用自 CHEMDNER |
| GPRO | 基因/蛋白实体标注指南 | Gene/Protein;含 GENE-Y/N 判定规则 |
| CHEMDNER | 化学物识别挑战任务 | BioCreative IV/V/V.5 的化学物 NER 任务 |
| GENE-Y | 可链接基因 | 能关联到数据库标识符(UniProt/Entrez)的基因提及 |
| GENE-N | 不可链接基因 | 无法关联数据库标识符的基因提及 |
| NOT | 无关系(负例) | CPR:10;审阅确认无关系的显式负标记 |
| mention | 提及 | 文本中出现的实体片段 |
| offset | 偏移 | 实体在文本中的起止字符位置 |
| tokenization | 分词/切分 | 把文本切成模型输入单元的过程 |
| macro-F1 | 宏平均 F1 | 各类 F1 的算术平均,官方榜分口径 |
| micro-F1 | 微平均 F1 | 全局汇总后计算的 F1,受头部类主导 |
| class imbalance | 类不平衡 | 各类样本量悬殊,本语料中 CPR:4 独大 |
| PDM | 公有领域标记 | Public Domain Mark 1.0 |
| BioCreative | 生物文本挖掘挑战赛系列 | 2004 年起举办的共享评测系列 |
| BigBio | 生物医学 NLP 数据集整合项目 | HF 上的 bigbio 组织 |
| DrugProt | 药物-蛋白关系语料 | ChemProt 的继任者(BioCreative VII) |
| BC5CDR | 化学-疾病关系语料 | BioCreative V 的姊妹语料 |
| TEES | Turku 事件抽取系统 | 关系抽取经典预处理框架 |
附录 A:一页速览(Cheat Sheet)
身份 : BioCreative VI Track 5 化学物-蛋白关系抽取语料
全称 : BioCreative VI Chemical-Protein interaction corpus
规模 : 2,432 篇 PubMed 摘要(train 1020 / dev 612 / test 800)+ sample 50
实体类型 : CHEMICAL / GENE-Y(可链接)/ GENE-N(不可链接)
实体总量 : 化学物 31,831;基因 ~30,300(两口径)
关系体系 : 22 种原始类型 → 10 个语义类 CPR:1–10 → 评测 5 类
评测类 : CPR:3 上调 / 4 下调 / 5 激动 / 6 拮抗 / 9 底物产物
正例总数 : 10,031(5 类之和)
最不平衡 : CPR:4 占 ~49.9%;CPR:5 最稀疏(484)
任务粒度 : 句级;实体预标注;多类分类
主指标 : macro-F1(逐类 F1 必报)
官方成绩 : 13 队/45 run;跨类最佳 F=64.10%;Antagonist 最佳 F=72.56%
许可 : Public Domain Mark 1.0(可直接商用)
获取 : HF `bigbio/chemprot`(gated=false)或官方 zip
继任者 : DrugProt(BC VII, 2021)
头号陷阱 : 同名异体 ChemProt-2.0(DTU 2013 疾病化学数据库)
附录 B:DAIMS 维度评分
DAIMS(Data Asset Information Maturity Score)从五个维度评估数据资产的"AI-Ready 成熟度"。对 ChemProt 的评估如下:
| 维度 | 含义 | 观测事实 | 评分 |
|---|---|---|---|
| D — Discoverability(可发现性) | 能否被检索与定位 | 有独立 HF 条目(3,195 下载/16 赞)、独立论文、独立主页;但官方站点对爬虫 403;同名异体造成检索歧义 | 4 / 5 |
| A — Accessibility(可获取性) | 获取摩擦大小 | 公开直链、gated=false、无需登录、无需申请;体量 <10 MB | 5 / 5 |
| I — Interoperability(互操作性) | 格式与生态兼容 | 标准 TSV + HF 三 schema + BigBio 统一 schema;可对接 PubTator/BioC 工具链 | 4 / 5 |
| M — Metadata Quality(元数据质量) | 文档完整度 | 有 Readme、三套指南 PDF、论文详解;但 IAA 未公布、非评测类计数未披露、官方榜分不全 | 3 / 5 |
| S — Sustainability(可持续性) | 长期可维护性 | 公有领域许可最稳;HF 镜像 + GitHub 二次镜像多源冗余;但官方站点有下线/403 历史 | 4 / 5 |
| 综合 | — | — | 20 / 25 |
维度评分解读:
- A 得满分,因为 ChemProt 在"获取门槛"上几乎无法更优:开放许可 + 直链 + 小体量。
- M 是短板(3/5),集中体现在三处存照项:IAA 未公布、非评测类正例计数未在 Table 1 披露、overview 只完整公开两项分数。这些信息缺口迫使用户依赖二手论文。
- D 与 S 各扣 1 分,都与"官方站点 403 / 曾下线"这一运维历史相关,以及同名异体造成的检索噪声。
- I 扣 1 分,主要因三个 HF 配置 schema 不一致 + dev 被命名为 validation,存在使用陷阱。
综合 20/25 属于"高质量、可放心使用"档,与它的学术地位相符。
附录 C:证据链与来源
本条目所有硬数字均来自以下一手或权威二手来源,按性质分组:
官方与语料本体
- 官方主页:
https://biocreative.bioinformatics.udel.edu/tasks/biocreative-vi/track-5/ - 官方语料包:
ChemProt_Corpus.zip(含 sample / training / development / test_gs) - 标注指南:
CHEMPROT_guidelines_v6.pdf、CEM_guidelines.pdf、GPRO_guidelines.pdf
主论文(无 DOI)
- Krallinger M, Rabal O, Akhondi SA, et al. “Overview of the BioCreative VI chemical-protein interaction Track.” Proceedings of the Sixth BioCreative Challenge Evaluation Workshop, 2017;1:141-146.
HF 镜像(规模与许可)
https://huggingface.co/datasets/bigbio/chemprot(gated=false;3 配置 × 4 split;Parquet)
赛后系统论文(分数口径与分解)
- Peng/Lu 系:OUP Database 2017, doi:10.1093/database/bay073(PMC6051439)——Table 1 类分布、Table 2 实体计数。
- BioBERT/ELMo 系:PMC6534182——Table 2 结线计数(“5031” 笔误所在)。
- 校准深度网络 + 自训练:arXiv:2011.02207。
- 端到端 span-based:arXiv:2304.01344——Table II tokenization 丢失率。
同名异体警示来源
- Kim Kjærulff et al., Nucleic Acids Research 2013;41:D464-9, doi:10.1093/nar/gks1166(ChemProt-2.0 数据库)。
库内互链条目(rid 已用 url_name 反查确认)
- chemdner(450)、bc5cdr(415)、biored(457)、bc2gm(434)、craft(529)、pubtator-central(752)、medmentions(390)、pubchem-pcba(86)、chembl(572)。
双口径/存照记录
- 语料规模 2,432(评测三段)vs 2,482(含 sample 50)。
- 基因 mention 30,316(口径 A)vs 30,338(口径 B)。
- 正例数 10,031 = 评测 5 类之和(不含非评测类与 NOT)。
- “5031 abstracts” 为论文笔误。
- CPR:0(Undefined)3 例为边界样本。
- IAA 与部分类计数官方未公布(待核)。
相关数据集导航
以下为站内 AI-Ready 数据集百科中与本词条共享多个主题标签的相关数据集,按相关度降序排列:
- chemdner — 共享标签:医疗NLP / 生物医学文献 / 药物发现与化学
- rxnorm — 共享标签:医疗NLP / 药物发现与化学
- iuphar-bps — 共享标签:医疗NLP / 药物-靶点相互作用 / 药物发现与化学
- bc5cdr — 共享标签:医疗NLP / 生物医学文献 / 关系抽取
- biored — 共享标签:医疗NLP / 生物医学文献 / 关系抽取
- genia — 共享标签:医疗NLP / 生物医学文献 / 关系抽取
- pubtator-central — 共享标签:医疗NLP / 生物医学文献 / 关系抽取
- medhop — 共享标签:医疗NLP / 生物医学文献 / 关系抽取
- open-pmc — 共享标签:医疗NLP / 生物医学文献
- davis — 共享标签:药物-靶点相互作用 / 药物发现与化学
导航说明:本章节由全站统一标签体系自动计算生成(标签重合度算法),双向可达;点击链接可跳转至对应数据集词条。

