信息速览

BC2GM 基因提及 — 生物医学 NER 基准语料 AI-Ready Wikipedia
INFOBOX
| 字段 | 内容 |
|---|---|
| 数据集名称 | BC2GM 基因提及 |
| 英文全称 | BioCreative II Gene Mention Recognition Corpus |
| 别名/简称 | BC2GM、bc2gm_corpus、BioCreative II GM |
| 疾病分类(ICD-11) | 不限定疾病(覆盖 MEDLINE 生物医学文献全谱) |
| SNOMED CT | 无单一直接概念;实体经 Entrez Gene / UMLS 术语集间接关联 |
| 数据模态 | 生物医学文本(句级 token 序列 + 序列标注) |
| AI 任务类型 | 命名实体识别(基因/蛋白提及识别,NER) |
| 样本总数 | 20,000 句(15,000 训练 + 5,000 测试);正式标注 24,596 个提及 |
| 数据大小 | 约 4.6MB(parquet 镜像版) |
| 数据格式 | 原始文本 + 字符偏移标注;CoNLL TSV(O/B-GENE/I-GENE);parquet |
| 许可证 | 未声明(License: unknown) |
| 访问级别 | 开放 |
| DUO 标签 | NRES(无限制) |
| 语言 | 英语 |
| 首发日期 | 2007-04(BioCreative II 挑战赛发布) |
| 最后更新 | 2008-09(Genome Biology 官方概述论文发表) |
| 发布机构 | BioCreative II 组织者(NCBI 等) |
| 官方主页 | https://biocreative.bioinformatics.udel.edu/resources/corpora/biocreative-ii-corpus/ |
| 下载地址 | https://github.com/spyysalo/bc2gm-corpus |
| DOI | 10.1186/gb-2008-9-s2-s2 |
| 引用次数 | 500+(OpenAlex,截至 2026-09) |
| AI 就绪度评分 | ⭐⭐⭐⭐(4/5)— 官方划分明确、CoNLL/parquet 版可一键加载;扣分项:原始版未分词、无官方预处理脚本、license 未声明 |
| 页面状态 | published |
§0 E-E-A-T 审核声明
医学审核者:千方病案医学编辑部交叉审核:§2 医学背景(基因命名复杂性与术语映射、任务定义、金标准描述)、§7 偏倚分析。
数据工程审核者:千方病案医学编辑部交叉审核:医疗 AI 数据工程师,审核范围:§4 DAIMS 数据字典、§5 数据划分策略、§6 预处理 Pipeline 和坑点。
审核日期:2026-09-05
医疗免责声明:本页面提供的医学信息仅供研究和教育目的,不构成医疗建议、诊断或治疗方案。数据集的医学描述基于公开发表的文献,未经逐一临床验证。任何基于该数据集训练的 AI 模型在应用于临床决策前,必须经过独立的临床验证和监管审批。
技术免责声明:本页面的代码示例、预处理建议和基准性能数据基于公开资料整理,不保证在特定环境下的准确性和适用性。使用者应自行验证代码安全性和数据预处理流程的正确性。千方病案医数集不对因使用本页面信息而导致的任何直接或间接损失承担责任。
数据使用合规:使用本页面描述的数据集前,请务必阅读并遵守数据集原始许可协议。BC2GM 语料以开放方式免费分发,但发行方未声明正式许可证(License: unknown),商业使用前请与 BioCreative 组织方确认授权范围。DUO 标签仅供参考,具体使用限制以数据集官方协议为准。
§1 数据集概览
§1.0 📌 30 秒速览
这是什么? BC2GM 是一份"基因名词找茬"的标注题库:20,000 句从 MEDLINE 摘要中选出的科学文献句子,每句中被人工标记出基因和蛋白的名称——比如 “alkaline phosphatases”(碱性磷酸酶)这样的片段。它诞生于 2007 年的 BioCreative II 国际评测赛,19 支队伍曾用它一较高下,此后成为生物医学文本挖掘领域最常用的入门与基准数据集之一。
为什么重要? 每年有数百万篇生物医学论文发表,人工阅读已不可能。让 AI 自动从文献中"认出"基因名,是文献知识库(如基因-疾病关联数据库)建设的第一道工序。BC2GM 用专家标注提供了这道工序的训练与考试题,19 支参赛队伍中最高单系统 F1 达 0.8721,为后续所有生物医学 NER 模型树立了可比较的标尺。
我能用它做什么? 如果你在训练生物医学 NER 模型(BioBERT、PubMedBERT 等),BC2GM 是标准训练/测试集之一;如果你在做 BLURB 基准评测,它是 NER 组的四个数据集之一;如果你在教学生什么是序列标注(IOB 标签),它的 3 类标签是最简洁的教材;如果你在搭建文献挖掘流水线,它是基因归一化模块之前的第一个组件。
§1.1 摘要
BC2GM(BioCreative II Gene Mention Recognition Corpus)由美国国家生物技术信息中心(NCBI)的 Smith、Tanabe、Wilbur 等人组织构建,服务于 2007 年 4 月举行的 BioCreative II 挑战赛基因提及任务(GM task)。语料为 20,000 句 MEDLINE 摘要句子,构建时特意从"高分文档"与"低分文档"各取 10,000 句以平衡实体密度。官方划分:15,000 句训练 + 5,000 句测试。原始标注为字符偏移(start/end),每个正式 GENE 标注可附人工判定语义等价的替代边界(ALTGENE),全语料共约 44,500 条 GENE + ALTGENE 标注,其中正式基因提及在训练集为 18,265 个、测试集为 6,331 个(合计 24,596 个)。评测采用严格边界匹配的精确率/召回率/F1,19 支队伍中 11 支使用条件随机场(CRF),最高单系统 F1 为 0.8721(IBM 团队,半监督 ASO + CRF),将全部 19 个系统的输出融合后可达 0.9066。2008 年 9 月官方概述论文发表于 Genome Biology。社区经由 standoff2conll 工具将其转换为 CoNLL TSV(标签集 O/B-GENE/I-GENE),HuggingFace 镜像(spyysalo/bc2gm_corpus)划分为 train 12,500 / validation 2,500 / test 5,000,并被微软 BLURB 基准收录为 NER 组任务。
§1.2 战略价值
维度一:生物医学 NER 的"公共标尺"。 从 2007 年 CRF 时代到 2020 年预训练语言模型时代,BC2GM 一直是新模型发表时的默认试金石之一。微软 2020 年发布的 BLURB 基准将其列为 NER 组任务,BioBERT(F1 83.82)、SciBERT(83.36)、BERT(81.23)等主流预训练模型的成绩可在同一协议下直接对比(Gu et al., 2021)。选择 BC2GM 意味着你的结果可以进入一个跨越近二十年的可比谱系。
维度二:单实体类型、纯文本、即开即用的低门槛。 相较 JNLPBA 的五类实体嵌套或 BC5CDR 的化学-疾病联合标注,BC2GM 只有基因/蛋白一种实体、三个 IOB 标签、约 4.6MB 的 parquet 文件,从下载到第一个 DataLoader 运行不超过十分钟。这使它成为生物医学 NLP 教学、消融实验和快速原型验证的理想载体;同时它的 ALTGENE 替代边界机制也是讲授"标注不确定性"的罕见真实案例。
§1.3 同类数据集横向对比
| 数据集 | 规模 | 实体类型 | 标注形式 | 与 BC2GM 的差异 |
|---|---|---|---|---|
| BC2GM | 20,000 句(15,000 训练 + 5,000 测试) | 基因/蛋白提及(单类型) | 字符偏移;CoNLL 版 O/B-GENE/I-GENE | — |
| JNLPBA | 22,402 句(18,546 训练 + 3,856 测试) | 蛋白、DNA、RNA、细胞系、细胞类型(五类) | 预分词 IOB | 多类型、源自 GENIA、句已预分词 |
| NCBI-Disease | 793 篇摘要、6,892 个疾病提及 | 疾病(含概念链接) | 提及 + 概念 ID | 疾病而非基因,附带归一化标签 |
| BC5CDR | 1,500 篇摘要(训练/开发/测试三等分) | 化学、疾病 | 提及 + 关系 | 联合抽取,规模更小 |
数据来源:JNLPBA 与 NCBI-Disease 规模见 Wiley 2014 对比研究;BC5CDR 与 NCBI-Disease 描述见 ACM THR 2021。
§1.4 版本时间轴
| 时间 | 版本/事件 | 说明 |
|---|---|---|
| 2006-2007 | 语料构建与标注 | 20,000 句 MEDLINE 句子,字符偏移标注,含 ALTGENE |
| 2007-04 | BioCreative II workshop(马德里) | 19 支队伍评测,最高单系统 F1 0.8721 |
| 2008-09-01 | Genome Biology 9(Suppl 2):S2 发表 | 官方概述论文,CC-BY 2.0 开放获取 |
| 2017 | Crichton et al. 预处理版 | 从训练集切出 2,500 句作开发集,后被 BLURB 采用 |
| 2023-08 | HuggingFace 镜像修复尾随空例 | 样本数由 12,501/2,501/5,001 修正为 12,500/2,500/5,000 |
§1.5 典型应用场景
- 基因提及识别器训练:以 CoNLL 版训练 token 分类模型,为文献挖掘流水线提供第一级实体识别。24,596 个实体足以把一个 base 级预训练模型微调到 F1 80+ 区间。
- 领域预训练模型评测:作为 BLURB NER 组任务,横向比较 BERT/BioBERT/PubMedBERT 等模型的领域适配收益——这是它当前最主要的基准用途。
- 归一化前置模块:识别出的提及送入 Entrez Gene 词典匹配或 BioCreative II 基因归一化模型,完成"提及 → 基因 ID"的链接;官方词典 entrezGeneLexicon.list(32,975 个基因、182,989 个名称)可直接作为候选词表。
- 序列标注教学:三类标签、干净划分、小体积,适合课堂演示 IOB 编码、评估指标与误差分析;一个 epoch 在单卡上分钟级完成。
- 消融与快速实验:验证分词器、子词对齐策略、学习率调度对 token 分类的影响;单实体类型使变量隔离更干净。
- 系统集成基线:官方 19 系统融合实验(F1 0.8721 → 0.9066)是模型集成/系统融合研究的经典复现目标。
§2 医学背景
§2.1 术语与 ICD-11 映射
BC2GM 是文献级语料,不限定任何疾病;其标注对象(基因/蛋白名称)本身不是疾病分类学概念。下表给出该语料覆盖的示例疾病域与 ICD-11 章节的对应关系,供下游把"基因提及"落到疾病语境时参考:
| 概念标签 | ICD-11 编码(示例章节) | ICD-11 术语 | 说明 |
|---|---|---|---|
| 基因/蛋白提及(不限疾病) | 不适用 — 全文献谱覆盖 | — | 语料句子覆盖 MEDLINE 生物医学文献,不限定疾病章节 |
| 肿瘤研究相关提及 | 2A00-2F9Z | 恶性肿瘤 | 癌基因/抑癌基因(如 TP53 类)研究文献密集 |
| 代谢研究相关提及 | 5A00-5D46 | 内分泌、营养或代谢性疾病 | 酶与受体类基因(如碱性磷酸酶类)常见 |
| 遗传病研究相关提及 | 20 号章 | 发育异常 | 先天畸形与发育异常相关基因文献 |
⚠️ 上表为章节级示例映射,ICD-11 编码以 WHO 官方浏览器为准;BC2GM 本身不提供句子与任何 ICD-11 编码的链接。
§2.1b SNOMED CT 映射
| 语料要素 | SNOMED CT 关联方式 | 术语说明 |
|---|---|---|
| 基因/蛋白提及 | 无单一直接概念,经 UMLS Metathesaurus 间接关联 | Entrez Gene 词汇与 SNOMED CT 之间的映射需经 UMLS 检索,BC2GM 不内置该映射 |
| 基因归一化目标 | Entrez Gene ID(官方 gene normalization 任务的目标体系) | 需配合 BioCreative II 基因归一化任务的词典资源 |
§2.2 背景简介:基因命名为什么难
基因与蛋白的名称是自然语言中最难识别的实体之一。官方概述论文与社区分析归纳了三类系统性困难:
- 命名缺乏标准化:同一基因可有官方符号、全名、历史别名、家族名等多种写法,且新名称持续涌现。
- 与普通英文词重叠:大量基因名同时是日常词汇(例如经 TranscriptionFactor 数据库考察的常见缩写词),仅靠词典匹配会产生海量误报,系统性评测指出歧义是核心挑战。
- 边界判断主观性:修饰语是否算入名称(如 “human factor IX” 中的物种词、“p53 gene” 中的 “gene” 一词)专家之间也有分歧——官方为此引入 ALTGENE 替代边界来容纳合理的差异判断。
流行病学层面本语料不适用(文献语料,无患者队列);其"文献流行病学"是:句子取自曾被 NCBI AbGene 流程打分的高分与低分文档各 10,000 句,保证语料同时覆盖基因密集与稀疏的文本分布(Smith et al., 2008)。
一句真实例句看三类难点(gold 标注见 HF 数据查看器):
Comparison with alkaline phosphatases and 5 - nucleotidase
[O] [O] [B-GENE ][I-GENE ] [O] [O] [O] [O]
- 多词实体:“alkaline phosphatases” 两个 token 合成一个提及,边界错一个词即判错;
- 符号噪声:连字符与数字段(“5 - nucleotidase”)考验分词与边界约定;
- 替代边界:官方 gold 为此类提及记录了等价 span(如 “human factor IX” 与 “factor IX”),评估时按 ALTGENE 规则接受——同一句文本可以有一个以上"正确答案"。
§2.3 临床/科研任务定义
BC2GM 对应的科研任务是**生物医学命名实体识别(Biomedical NER)**中的基因提及识别(Gene Mention Recognition):
| 任务环节 | 输入 | 输出 | 在流水线中的位置 |
|---|---|---|---|
| 基因提及识别(本语料) | 句级 token 序列 | 实体边界 span(IOB 序列) | 第一级 |
| 基因归一化(BioCreative II GN 任务) | 提及 + 上下文 | Entrez Gene ID | 第二级 |
| 关系/事件抽取 | 实体对 + 句子 | 交互、调控关系 | 第三级 |
筛查、诊断、分级、预后等临床任务不直接适用本语料;其产出服务于文献检索、知识库维护(如基因-疾病关联整理)与生物标志物文献调研。
在文献挖掘生态中的位置:与同期发布的基因归一化(Gene Normalization, GN)任务构成上下游——GM 产出文本 span,GN 把 span 链接到 Entrez Gene ID。官方 GN 概述论文报告了 20 支队伍、最佳融合 F1 0.92 的成绩(Morgan et al., 2008, Genome Biology 9(Suppl 2):S3)。只做提及识别不等于知道"说的是哪个基因"——跨物种同名(如不同物种的 Ly9)与描述式指称(如 “p65 subunit of NF-kappaB”)是 GN 层的固有难题,BC2GM 对此不提供答案。
§2.4 "人群"画像
| 维度 | 内容 |
|---|---|
| 数据来源 | MEDLINE 摘要句子(2006-2007 年选取) |
| 研究对象 | 文献句子,而非患者;无年龄/性别/种族字段 |
| 文档分布 | 高分文档句 10,000 + 低分文档句 10,000 |
| 划分构成 | 训练 = train + test + round1 三个 5,000 句子集;测试 = round2 的 5,000 句 |
| 物种信息 | 未随语料公布 |
§2.5 科研与文献挖掘价值
基因提及识别是文献知识自动化的守门员环节:识别质量直接决定下游归一化与关系抽取的上限。BioCreative II 组织者的结论是,单一系统在 2007 年即达 F1 0.8721 的平台期,而融合 19 个异构系统可达 0.9066——这一"融合增益"发现至今仍是模型集成研究常引的证据(Smith et al., 2008)。对今天的团队而言,BC2GM 提供了量化"预训练 + 微调范式相对 CRF 特征工程收益"的干净基准。
§2.6 金标准属性
| 属性 | 内容 |
|---|---|
| 划分 | 官方 15,000 训练 + 5,000 测试(盲测集) |
| 标注方式 | 人工标注字符偏移;正式 GENE 标注 + ALTGENE 替代边界 |
| 标注者 | 具分子生物学背景的人类标注者(人数与资质细节官方未公布) |
| 标注性质 | 静态金标准;一致性审查中约 1,500 个字符串被发现在不同句子间标注不一致,涉及约 13,500 处提及并经人工复核修正 |
| 评估指标 | 严格边界匹配 P/R/F1;同一 gold 标注只计一个 TP;ALTGENE 边界可被接受 |
数据来源:Smith et al., 2008, Genome Biology 9(Suppl 2):S2。
§3 数据集规格
§3.0 版本抉择矩阵
| 你的需求 | 推荐版本 | 大小 | 理由 |
|---|---|---|---|
| 快速训练 NER 模型/复现 BLURB | HuggingFace spyysalo/bc2gm_corpus(parquet) | 约 4.6MB | 一键加载,12,500/2,500/5,000 划分,O/B-GENE/I-GENE |
| 逐句文本研究、自定义分词 | GitHub spyysalo/bc2gm-corpus(CoNLL TSV) | 约 6MB | 纯文本可审计,三文件结构清晰 |
| 历史复现/官方评测协议研究 | BioCreative 官方原始包 | 官方原始包 | 15,000/5,000 划分 + 字符偏移 + ALTGENE |
| TensorFlow 生态 | TFDS huggingface:bc2gm_corpus |
与 HF 版一致 | tf.data 直接消费 |
⚠️ 三个版本划分不同、分数不可直接比较(详见坑点 3)。
§3.1 模态详情
BC2GM 是单模态纯文本语料。每个样本是一个独立句子(不保留摘要级文档结构与句序上下文),文本未提供分词(原始版),需由使用者分词或直接使用社区 CoNLL 版的既定分词。标注对象是基因/蛋白名称的文本 span——基因与基因产物不区分,统一标注为 GENE;不含物种词、细胞系、药物等其他实体类型。
§3.2 子集样本数
| 子集 | 官方原始版 | CoNLL/HF 版 | 正式 GENE 提及数 |
|---|---|---|---|
| 训练 | 15,000 句 | 12,500 句 | 18,265(官方训练集) |
| 验证 | — | 2,500 句 | 官方训练集内切出(Crichton 版实体数 3,061) |
| 测试 | 5,000 句 | 5,000 句 | 6,331 |
| 合计 | 20,000 句 | 20,000 句 | 24,596 |
数据来源:官方句数与构成见 Smith et al., 2008;提及数见 Wiley 2014 Table 1;CoNLL 划分见 HuggingFace 数据卡;Crichton 版实体数见 BLURB 论文 Table 3。由此推算:官方训练集平均每句约 1.22 个提及,测试集约 1.27 个。
§3.3 数据格式
| 版本 | 文件 | 格式 | 标签体系 |
|---|---|---|---|
| 官方原始版 | 句子文件 + gold 偏移文件 | 纯文本,每行一句;gold 为 start-end 字符偏移 |
GENE / ALTGENE |
| CoNLL 版 | train.tsv / devel.tsv / test.tsv | tab 分隔 token\ttag,空行分句 |
O / B-GENE / I-GENE |
| HF 镜像 | parquet | id + tokens(字符串序列)+ ner_tags(0/1/2 ↔ O/B-GENE/I-GENE) |
O / B-GENE / I-GENE |
§3.4 存储大小
HuggingFace parquet 版下载体积为 4,636,753 字节(约 4.6MB),解压后数据集约 9.77MB(数据卡);GitHub CoNLL 版三个 TSV 合计约 6MB 级别;官方原始包体积未在公开页面公布。全部版本在单机本地即可承载,无需分布式存储。
§3.5 标注方式
人工标注。标注者为具分子生物学背景的人员(官方概述论文未公布具体人数与资质分布),按 GENETAG 系列规范标注基因/蛋白提及的字符偏移;每个正式 GENE 标注可附人工判定"语义等价"的替代边界 ALTGENE。一致性审查发现约 1,500 个字符串(≥2 字符)在不同句间标注不一致,牵涉约 13,500 处提及(其中 4,300 处为 GENE、2,200 处为 ALTGENE、7,000 处未标注),均经人工复核修正(Smith et al., 2008)。
§3.6 标注者资质与一致性
官方论文未公布标注者人数、雇佣结构与量化一致性系数(如 Cohen’s kappa);可追溯的质量控制是上述全量一致性审查与人工复核流程。使用者应把 2007 年的边界约定(如物种词处理)视为金标准的一部分,而非噪声——详见坑点 2 与 §7.2。
§3.7 采集周期
语料于 2006-2007 年构建:从 NCBI 历史检索与 AbGene 打分的 MEDLINE 文档池中选句、标注、并以 2007 年 4 月 BioCreative II workshop 的盲测完成定稿;句子若已从 Medline 撤除则以当时存档句子替换(Smith et al., 2008)。
§3.8 地域覆盖
不限定地理范围。MEDLINE 收录全球期刊文献,语料语言为英语;具体期刊/国家分布官方未公布。
§3.9 设备与采集规格
不适用。本语料为文本标注数据,无传感器、影像设备或采样协议字段。
§3.10 深度溯源链
MEDLINE 文献库
→ AbGene 流程对文档打分(高分/低分池)
→ 选句:高分 10,000 + 低分 10,000 = 20,000 句
→ 人工标注:基因/蛋白提及字符偏移 + ALTGENE 替代边界
→ 一致性审查(约 1,500 个字符串跨句不一致 → 复核修正)
→ 2007-04 BioCreative II GM task 盲测(19 支队伍)
→ 2008-09 官方概述论文定稿发表(Genome Biology)
→ 社区转换:standoff2conll → CoNLL TSV → HuggingFace parquet
§4 数据结构
§4.0 目录树
GitHub CoNLL 版(推荐研读形态)解压后结构:
bc2gm-corpus/
├── conll/
│ ├── train.tsv # 12,500 句,每行 token\ttag,空行分句
│ ├── devel.tsv # 2,500 句(社区验证集,来自官方训练集切分)
│ └── test.tsv # 5,000 句(官方盲测集)
├── standoff/ # 原始字符偏移格式(standoff2conll 的输入)
└── README.md
HuggingFace parquet 版加载后的字段结构(每行一个样本):
{
"id": "0", # 句子唯一 ID(string)
"tokens": ["Comparison", "with", "alkaline", "phosphatases", "and", "5", "-", "nucleotidase", ...],
"ner_tags": [0, 0, 1, 2, 0, 0, 0, 0, ...] # 0=O, 1=B-GENE, 2=I-GENE
}
§4.1 DAIMS 字段字典
| 字段名 | 类型 | 说明 | 示例值 | AI 用途 | 观测误差 | 信息性缺失编码 | 取值范围 |
|---|---|---|---|---|---|---|---|
| id | string | 句子唯一 ID(HF 版) | “0” | 主键/复现 | 无 | 无缺失 | 连续整数 |
| tokens | string 序列 | 分词后的句子 token 序列 | [“Comparison”,“with”,…] | 模型输入 | 分词器差异(坑点 1) | 无缺失 | 长度 1-213 |
| ner_tags | enum 序列 | 与 tokens 逐位对齐的 IOB 标签 | [0,0,1,2,0,…] | 监督信号 | 无 | 无缺失 | {0,1,2} = |
| sentence(原始版) | string | 原始句子文本(未分词) | “Comparison with alkaline…” | 偏移还原/自选分词 | 无 | 无缺失 | 自由文本 |
| offset_start(原始 gold) | int | 提及起始字符偏移 | 16 | span 还原 | 无 | 无缺失 | 0 至句长-1 |
| offset_end(原始 gold) | int | 提及结束字符偏移 | 37 | span 还原 | 无 | 无缺失 | 1 至句长 |
| label(原始 gold) | enum | 正式/替代标注 | GENE | 评估 | 无 | 无缺失 | |
| split | enum | 样本所属划分 | train | 复现实验 | 版本间划分不同 | 无缺失 |
tokens 长度上下界 1-213 来自 HuggingFace 数据查看器统计。
标签语义与边界规则速查:
| 标签/规则 | 语义 | 使用要点 |
|---|---|---|
| O | 非实体 token | 占绝大多数 token |
| B-GENE | 实体首 token | 解码时开启新 span |
| I-GENE | 实体内部 token | 必须紧跟 B-GENE 或同实体 I-GENE,否则为非法序列 |
| span 还原(CoNLL 版) | 连续 B+I 序列合并为一个 span | seqeval 默认即此逻辑 |
| span 还原(官方原始版) | 字符偏移 start-end 直接给出 | 无需解码,但需自选分词(坑点 1) |
| ALTGENE(官方原始版) | 语义等价的替代边界 | 评估时可作为可接受匹配(坑点 2);CoNLL 版中已坍缩为单一边界 |
§4.1b 解码约束
IOB2 编码隐含两条硬约束:其一,I-GENE 不能出现在非实体上下文(句首或 O 之后);其二,一个实体恰好由一个 B-GENE 开头。解码后应显式校验这两条约束,非法序列(如连续两个 B-GENE 之间的孤立 I-GENE)按你的评估口径决定是重置为 O 还是拆分为两个实体——不同口径会造成 1-2 个千分点的 F1 差异,务必与比较对象保持一致。
§4.2 标签分布
提及级(实体级)分布由官方与社区论文给出;token 级分布取决于分词器,官方未提供标准计数:
| 统计口径 | 训练集 | 测试集 | 来源 |
|---|---|---|---|
| 句子数 | 15,000(官方)/ 12,500(CoNLL) | 5,000 | Smith et al. 2008 |
| 正式 GENE 提及 | 18,265 | 6,331 | Wiley 2014 Table 1 |
| 平均每句提及数(推算) | ≈1.22 | ≈1.27 | 由上两行推算 |
| 标签类别 | 3 类(O/B-GENE/I-GENE) | 同左 | HF 数据卡 |
token 级的实践观察:多数 token 为 O,B-GENE 与 I-GENE 合计通常不到两成,且 I-GENE 多于 B-GENE(多词实体常见);使用加权损失或采样策略时应以此为准做本地统计,而不是假设均衡。
§4.3 关键统计
- 全语料 GENE + ALTGENE 标注:约 44,500 条(20,000 句),即替代边界约占标注总量的四成(Smith et al., 2008)。
- 参赛系统 TP 中命中 ALTGENE 的比例:约 15%-30%(官方 Table 1),提示严格边界匹配下有可观的"边界分歧合理命中"。
- 最长句子 213 个 token(CoNLL 版分词口径,HF 查看器),建议序列长度上限设 256。
- 实体类型单一:GENE 一类(基因与基因产物合并),无嵌套类型层级。
- 句子独立性:20,000 句互不关联地来自不同摘要位置,平均句长约 25-30 个 token(CoNLL 分词口径,由 213 的上界与短句占比推断的量级),无长文档依赖。
官方一致性审计数字(Smith et al., 2008):
| 审计项 | 数值 |
|---|---|
| 跨句标注不一致的字符串(≥2 字符) | 约 1,500 个 |
| 受牵涉的提及处数 | 约 13,500 处 |
| — 其中正式 GENE 标注 | 4,300 处 |
| — 其中 ALTGENE 标注 | 2,200 处 |
| — 其中未标注 | 7,000 处 |
§4.4 数据层级
语料(corpus)
└── 句子(sentence,唯一 ID;官方版含原文 + gold 偏移文件)
└── 提及(mention;GENE / ALTGENE,字符偏移 start-end)
└── token(CoNLL 版:B-GENE 起始位 + I-GENE 延续位)
注意:句子是从摘要中独立抽取的,语料不保留文档结构与句间顺序——这是与 JNLPBA(保留文档分节)的重要差异。
§4.5 缺失值与信息性缺失
序列标注语料不存在传统表格意义的缺失单元格:每句每个 token 必有标签,字段字典中不设缺失编码。真正的"缺失"在元数据层:物种、发表年份、期刊、标注者背景均未随语料提供(§3.6、§3.8),需要外部补全时应注明数据来源版本。
§5 划分与使用建议
§5.1 官方划分
官方划分:15,000 句训练(由 train、test、round1 三个 5,000 句子集组成)+ 5,000 句盲测(round2),盲测集在赛事期间未对参赛者开放(Smith et al., 2008)。
§5.2 社区惯例划分
CoNLL/HF 版把官方训练集切为 train 12,500 + validation 2,500(即 Crichton et al. 2017 的预处理方案,被 BLURB 沿用),test 5,000 保持官方盲测集不变(BLURB 论文)。在此版本上,验证集用于早停与超参选择,测试集只在最终报告时使用一次。
§5.3 泄漏风险(重点)
| 风险 | 描述 | 缓解 |
|---|---|---|
| 同文献跨划分 | 句子按"抽取"而非按"文档"划分,同一摘要的句子可能分属训练与测试 | 报告时注明句子级划分;严格场景自行按文档重划分(但官方 gold 偏移不含文档 ID,需用原始检索溯源) |
| 测试集调参 | 在 BLURB 协议中误用 test 5,000 句做早停 | 早停只允许使用 validation 2,500 句 |
| 版本混淆 | Crichton 版 dev(2,500 句)来自官方 train;若把"官方 train + CoNLL dev"与"Crichton train"混用会造成训练量不一致 | 锁定单一版本并记录(坑点 3) |
§5.4 交叉验证建议
官方测试集仅 5,000 句且禁止反复调参;若需更稳健的估计,可在官方训练集内做 5 折句子级交叉验证(保持 CoNLL 文件块结构,不要打碎句子),最终用官方 test 报告一次。
§5.5 外部验证建议
训练后的模型建议在 JNLPBA(多类型基因产物实体)、NCBI-Disease(疾病 NER)上验证跨实体类型的泛化;若目标是临床文本,应另在临床 NER 语料上评估领域迁移损失——文献摘要模型直接用于病历文本通常显著掉点(§7.3)。
§5.6 划分决策速查
| 你的目标 | 用哪个划分 | 注意事项 |
|---|---|---|
| 复现官方赛成绩/研究官方评估器 | 官方原始版 15,000/5,000 | 需自选分词,评估器须支持 ALTGENE |
| 参与或对标 BLURB 榜单 | CoNLL/HF 版 12,500/2,500/5,000 | 严格 entity-level F1,多种子平均 |
| 内部迭代与消融 | train+devel 交叉验证 | 官方 test 只在最终报告用一次 |
| 教学/演示 | HF 版 train 子集抽样 | 保持标签完整,勿截断实体 |
§6 AI 就绪指南 ⭐
§6.0 云端快速启动
无需申请与注册,任意可访问 HuggingFace 的环境(含 Colab)即可加载:
from datasets import load_dataset
ds = load_dataset("spyysalo/bc2gm_corpus")
# DatasetDict: train=12,500 / validation=2,500 / test=5,000
print(ds["train"][0]["tokens"][:8])
# ['Comparison', 'with', 'alkaline', 'phosphatases', 'and', '5', '-', 'nucleotidase']
print(ds["train"][0]["ner_tags"][:8])
# [0, 0, 1, 2, 0, 0, 0, 0] # 0=O, 1=B-GENE, 2=I-GENE
TensorFlow 生态等价加载(TFDS 镜像):
import tensorflow_datasets as tfds
ds_tf = tfds.load("huggingface:bc2gm_corpus/bc2gm_corpus")
# 字段映射与 HF 版一致:tokens(字符串序列)+ ner_tags(0/1/2)
加载后立即做样本数断言与空句过滤(坑点 4 的防御):
assert len(ds["train"]) in (12_500, 12_501) # 12,501 = 未修复的旧缓存
assert len(ds["validation"]) in (2_500, 2_501)
assert len(ds["test"]) in (5_000, 5_001)
ds = ds.filter(lambda ex: len(ex["tokens"]) > 0) # 过滤历史空尾句
§6.1 快速上手(本地 CoNLL 版)
# ── 目录结构预期 ─────────────────────────────────────────────
# data_root/
# └── bc2gm/
# └── conll/
# ├── train.tsv # 12,500 句(CoNLL:token\ttag,空行分句)
# ├── devel.tsv # 2,500 句(验证集)
# └── test.tsv # 5,000 句(官方盲测集)
# ── data_root 拼接关系:所有路径 = data_root/bc2gm/conll/<file>
# ── 最小可用子集:仅 test.tsv(5,000 句)即可评估已训练模型
from pathlib import Path
def load_conll(path):
"""读取 CoNLL TSV → [(tokens, tags), ...]"""
sentences, tokens, tags = [], [], []
with open(path, encoding="utf-8") as f:
for line in f:
line = line.rstrip("\n")
if not line or line.startswith("-DOCSTART-"):
if tokens:
sentences.append((tokens, tags))
tokens, tags = [], []
else:
tok, tag = line.split("\t")
tokens.append(tok)
tags.append(tag)
if tokens: # 防御:过滤文件末尾可能的空句(坑点 4)
sentences.append((tokens, tags))
return sentences
train = load_conll(Path("data_root/bc2gm/conll/train.tsv"))
assert len(train) == 12_500
print(train[0][0][:8]) # ['Comparison', 'with', 'alkaline', 'phosphatases', 'and', '5', '-', 'nucleotidase']
print(train[0][1][:8]) # ['O', 'O', 'B-GENE', 'I-GENE', 'O', 'O', 'O', 'O']
§6.2 数据获取
| 渠道 | 链接 | 格式 | 大小 | 适用 |
|---|---|---|---|---|
| BioCreative 官网 | https://biocreative.bioinformatics.udel.edu/resources/corpora/biocreative-ii-corpus/ | 原始文本 + 偏移 | 官方原始包 | 历史协议研究 |
| GitHub CoNLL | https://github.com/spyysalo/bc2gm-corpus | CoNLL TSV | 约 6MB | 推荐,可审计 |
| HuggingFace | https://huggingface.co/datasets/spyysalo/bc2gm_corpus | parquet | 约 4.6MB | 一键加载 |
| TFDS | tfds.load('huggingface:bc2gm_corpus') |
tf.data | 同 HF | TF 生态 |
获取流程:以上渠道均无需注册、免费直接下载。原始论文(Genome Biology)以 CC-BY 2.0 发表,但数据文件本身的许可证未声明(License: unknown,见 HF 数据卡),商业使用前请先完成合规确认(坑点 8)。
命令行获取:
# 方式一:克隆 CoNLL 版仓库(CoNLL 文件位于 conll/{train,devel,test}.tsv)
git clone https://github.com/spyysalo/bc2gm-corpus.git data_root/bc2gm
# 方式二:Python 一键拉取 HF parquet 版
python -c "from datasets import load_dataset; load_dataset('spyysalo/bc2gm_corpus')"
# 方式三:TF 生态
python -c "import tensorflow_datasets as tfds; tfds.load('huggingface:bc2gm_corpus/bc2gm_corpus')"
无任何申请、审批或凭证要求;从克隆到可读数据通常在一分钟内完成。
§6.3 预处理全流程
路线 A(推荐):直接使用 CoNLL 版。 该版本由 standoff2conll 从官方偏移标注转换而来,分词与标签对齐已经过社区广泛使用。
路线 B:使用官方原始版自选分词。 若你研究分词影响,需自行将 start-end 偏移投影到 token 上:
def spans_to_iob(tokens, token_char_offsets, spans):
"""把字符偏移 span 集合投影到 token 级 IOB。
tokens: List[str]; token_char_offsets: List[(s, e)]; spans: List[(s, e, kind)]
"""
tags = ["O"] * len(tokens)
for span_start, span_end, kind in spans:
started = False
for i, (ts, te) in enumerate(token_char_offsets):
if te <= span_start or ts >= span_end:
continue
tags[i] = f"B-{kind}" if not started else f"I-{kind}"
started = True
return tags
清洗与标准化要点:
- 过滤
-DOCSTART-行与空句子块(坑点 4)。 - 不要小写化:基因名大小写敏感(如 “bcl-2” 与 “BCL-2” 的区分依赖大小写),现代 transformer 分词器均支持保留大小写。
- 不要做去停用词/词干化——序列标注需要完整原始 token 序列。
- 统一分词器并写进实验记录:官方未提供分词(坑点 1)。
路线 B 完整示例(自选分词后把偏移投影为 IOB):
tokens = ["Comparison", "with", "alkaline", "phosphatases", "and", "5", "-", "nucleotidase"]
# 步骤 1:记录每个 token 的字符偏移(自选分词后必须保留,这是投影的桥梁)
char, offsets = 0, []
for tok in tokens:
offsets.append((char, char + len(tok)))
char += len(tok) + 1 # +1 对应还原时的空格
# 步骤 2:从官方 gold 偏移文件读取该句的 span(此处为变量示意,实际值以 gold 文件为准)
spans = [(gene_start, gene_end, "GENE") for gene_start, gene_end in official_gold_offsets]
# 步骤 3:投影为 IOB(spans_to_iob 定义见上)
tags = spans_to_iob(tokens, offsets, spans)
print(list(zip(tokens, tags)))
§6.4 PyTorch DataLoader 完整代码
import torch
from pathlib import Path
from torch.utils.data import Dataset, DataLoader
from transformers import AutoTokenizer
class Bc2gmDataset(Dataset):
"""BC2GM CoNLL → subword token classification。
预期目录:data_root/bc2gm/conll/{train,devel,test}.tsv
"""
LABELS = ["O", "B-GENE", "I-GENE"]
def __init__(self, tsv_path, tokenizer, max_len=256, label_all_tokens=False):
self.examples = load_conll(Path(tsv_path))
self.tokenizer = tokenizer
self.max_len = max_len
self.label2id = {l: i for i, l in enumerate(self.LABELS)}
self.label_all_tokens = label_all_tokens # True 时子词全部继承标签(常见于缓解坑点 5)
def __len__(self):
return len(self.examples)
def __getitem__(self, idx):
words, tags = self.examples[idx]
word_ids_cache = []
enc = self.tokenizer(
words,
is_split_into_words=True,
truncation=True,
max_length=self.max_len,
padding="max_length",
return_offsets_mapping=False,
)
word_ids = enc.word_ids()
label_ids = []
prev = None
for wid in word_ids:
if wid is None:
label_ids.append(-100) # special token 不计损失
elif wid != prev:
label_ids.append(self.label2id[tags[wid]])
else: # 同一 word 的后续子词
label_ids.append(self.label2id[tags[wid]] if self.label_all_tokens else -100)
prev = wid
return {
"input_ids": torch.tensor(enc["input_ids"]),
"attention_mask": torch.tensor(enc["attention_mask"]),
"labels": torch.tensor(label_ids),
}
tokenizer = AutoTokenizer.from_pretrained("dmis-lab/biobert-base-cased-v1.2")
train_ds = Bc2gmDataset("data_root/bc2gm/conll/train.tsv", tokenizer, label_all_tokens=True)
dev_ds = Bc2gmDataset("data_root/bc2gm/conll/devel.tsv", tokenizer, label_all_tokens=True)
train_loader = DataLoader(train_ds, batch_size=16, shuffle=True, num_workers=2)
dev_loader = DataLoader(dev_ds, batch_size=32, shuffle=False, num_workers=2)
配套的最小训练与验证循环(单卡可运行):
import torch
from torch.nn import CrossEntropyLoss
from torch.optim import AdamW
from transformers import AutoModelForTokenClassification, get_linear_schedule_with_warmup
LABELS = Bc2gmDataset.LABELS # ["O", "B-GENE", "I-GENE"]
device = "cuda" if torch.cuda.is_available() else "cpu"
model = AutoModelForTokenClassification.from_pretrained(
"dmis-lab/biobert-base-cased-v1.2",
num_labels=len(LABELS),
id2label={i: l for i, l in enumerate(LABELS)},
label2id={l: i for i, l in enumerate(LABELS)},
).to(device)
optimizer = AdamW(model.parameters(), lr=5e-5, weight_decay=0.01)
num_epochs = 5
total_steps = len(train_loader) * num_epochs
scheduler = get_linear_schedule_with_warmup(
optimizer,
num_warmup_steps=int(0.1 * total_steps),
num_training_steps=total_steps,
)
loss_fn = CrossEntropyLoss()
for epoch in range(num_epochs):
# ── 训练 ──
model.train()
for batch in train_loader:
batch = {k: v.to(device) for k, v in batch.items()}
loss = model(**batch).loss
loss.backward()
torch.nn.utils.clip_grad_norm_(model.parameters(), 1.0)
optimizer.step()
scheduler.step()
optimizer.zero_grad()
# ── 验证(word 级还原标签,过滤 -100)──
model.eval()
all_true, all_pred = [], []
with torch.no_grad():
for batch in dev_loader:
batch = {k: v.to(device) for k, v in batch.items()}
preds = model(**batch).logits.argmax(-1).cpu().tolist()
labels = batch["labels"].cpu().tolist()
for p, l in zip(preds, labels):
keep = [i for i, t in enumerate(l) if t != -100]
all_pred.append([LABELS[p[i]] for i in keep])
all_true.append([LABELS[l[i]] for i in keep])
from seqeval.metrics import f1_score
print(f"epoch {epoch}: dev F1 = {f1_score(all_true, all_pred):.4f}")
§6.5 坑点速查(8 个实测坑点)
⚠️ 坑点 1:原始版未分词,直接
split(" ")会错位(分类:预处理陷阱)问题:官方原始语料只给句子文本与字符偏移,不提供分词;按空格切分会把 “5 - nucleotidase”、“NF-kappa B” 等切成错误单元,实体边界随之漂移。
症状:复现文献 F1 时差 2-5 个百分点;同一模型换分词器后结果不可比。
解决:
- 简单方法:直接用社区 CoNLL 版(standoff2conll 转换,分词已定)。
- 进阶方法:用 GENIA tagger 等生物医学分词器处理原始版——2014 年的对比研究即采用该方案并明确指出 BC2GM 未预分词(Wiley 2014)。
- SOTA 方法:把分词器选择作为实验变量记录在数据卡中,报告时注明;跨论文比较时优先引用同分词口径的数字。
参考:https://github.com/spyysalo/standoff2conll ;https://onlinelibrary.wiley.com/doi/abs/10.1155/2014/240403
⚠️ 坑点 2:把 ALTGENE 替代边界当噪声忽略(分类:评估误用)
问题:官方 gold 中每个正式 GENE 标注可附 ALTGENE 替代边界(如 “factor IX” 与 “factor IX antigen”);参赛系统命中替代边界占其 TP 的 15%-30%,只用"最长/最短单一边界"评估会系统性失真。
症状:自评 F1 与官方报告差距明显;边界位移一两个词就被判全错。
解决:
- 简单方法:用 seqeval 报严格 entity-level F1,同时意识到这是下界。
- 进阶方法:实现官方评估规则——输出与 GENE 或 ALTGENE 任一匹配即计 TP,且同一 gold 标注只计一个 TP(Smith et al., 2008)。
- SOTA 方法:同时报告严格 F1 与"接受替代边界"F1 两个口径,并报告 TP 中命中 ALTGENE 的比例。
参考:https://genomebiology.biomedcentral.com/articles/10.1186/gb-2008-9-s2-s2
⚠️ 坑点 3:官方版 / CoNLL 版 / BLURB 版划分混用(分类:工程陷阱)
问题:官方原始划分为 15,000 训练 + 5,000 测试;CoNLL/HF 版为 12,500 训练 + 2,500 验证 + 5,000 测试;BLURB 使用的 Crichton 预处理版实体数另为 15,197/3,061/6,325。三者训练量不同、指标口径不同。
症状:论文间数字"看起来相近实则不可比";合并训练集时样本重复或缺失。
解决:
- 简单方法:锁定一个版本(推荐 CoNLL 版)并在实验记录中写明。
- 进阶方法:建立版本对照表(§3.0)纳入数据卡;加载时断言样本数(12,500/2,500/5,000)。
- SOTA 方法:分别在两种口径下各跑一次并在报告中并列给出(官方 test 口径 + BLURB 口径)。
参考:https://arxiv.org/html/2007.15779v5 ;https://huggingface.co/datasets/spyysalo/bc2gm_corpus
⚠️ 坑点 4:HuggingFace 旧缓存含尾随空句(分类:工程陷阱)
问题:2023-08 之前 HF 版每个 split 末尾带一个空样本,样本数为 12,501/2,501/5,001;修复后为 12,500/2,500/5,000(修复记录)。
症状:collate 函数对空 tokens 报 IndexError;或断言样本数失败。
解决:
- 简单方法:加载后过滤
len(tokens) == 0的样本。- 进阶方法:删除旧缓存目录(
~/.cache/huggingface/datasets下对应条目)重新下载。- SOTA 方法:数据加载层统一内置空句防御(§6.1 的
if tokens:判断),对任何 CoNLL 文件成立。
参考:https://huggingface.co/datasets/spyysalo/bc2gm_corpus/discussions/4/files
⚠️ 坑点 5:子词对齐把 I-GENE 标到特殊 token 或只标首子词(分类:标签理解)
问题:BERT 类分词器把 “phosphatases” 切成多个子词;若把标签错对齐(标到 [CLS]/[SEP]、或子词继承混乱),损失函数会学到噪声。
症状:训练损失不降或抖动;解码出的实体碎片化(连续 B-GENE)。
解决:
- 简单方法:仅第一个子词持有标签,其余设 -100(不参与损失)。
- 进阶方法:
label_all_tokens=True让子词全部继承标签,通常小幅提升召回(§6.4 已实现)。- SOTA 方法:解码时在 word 级还原 IOB 并校验"B-GENE 必须开启新实体、I-GENE 必须有前驱"约束,非法序列重置为 O。
参考:https://huggingface.co/docs/transformers/tokenizer_summary
⚠️ 坑点 6:基因名与普通英文词重叠导致词典/正则误报(分类:预处理陷阱)
问题:大量基因名同时是常见英文词或通用缩写;纯词典 AER 匹配会整句误标,大小写一变匹配全错。
症状:基于词典的基线在通用句上出现海量误报;lowercase 预处理后 F1 断崖下跌。
解决:
- 简单方法:保留原大小写;加入边界词性/上下文特征。
- 进阶方法:用统计模型(CRF/transformer)而非纯词典;官方词典 entrezGeneLexicon.list(32,975 个基因、182,989 个名称)只作候选来源(Yi Wang, 2013)。
- SOTA 方法:领域预训练模型(BioBERT/PubMedBERT)+ 微调,隐式利用上下文消歧(§6.7)。
参考:https://lacuna.tiptreesystems.com/paper/overview-of-biocreative-ii-gene-mention-recognition/art_07ff81c00fe749ce8311aaf21ad3bc65
⚠️ 坑点 7:重叠/长短提及在 IOB 中被静默丢弃(分类:标签理解)
问题:gold 中存在长短等价边界(“factor IX” 与 “factor IX antigen”),转成 IOB 后只能保留一种;系统重叠输出须按官方规则去重,否则同一 gold 会被多次计数。
症状:评估脚本 TP 计数大于 gold 提及数;融合多模型输出时指标反而下降。
解决:
- 简单方法:单模型输出按"保留较长 span"过滤重叠(2007 年参赛系统通用策略)。
- 进阶方法:按官方规则实现"每个 gold 标注至多一个 TP"的计数器。
- SOTA 方法:融合多系统时先做 span 级投票再统一去重——官方融合实验(19 系统输出 + CRF/BDT)证明低分系统也贡献增量,F1 从 0.8721 提至 0.9066。
参考:https://genomebiology.biomedcentral.com/articles/10.1186/gb-2008-9-s2-s2
⚠️ 坑点 8:License unknown 下的商用合规风险(分类:工程陷阱)
问题:发行方未声明数据许可证(HF 卡片明示 License: unknown;TFDS 标注"无已知许可"),商用产品内嵌该数据集(或以其训练的模型)存在授权瑕疵。
症状:法务/合规评审要求补充授权证明;开源发布时许可证字段无法填写。
解决:
- 简单方法:研究与教育用途按学界惯例使用,并在成果中完整引用官方论文。
- 进阶方法:联系 BioCreative 组织方(官方 corpus 页面)获取书面授权说明存档。
- SOTA 方法:商用管线改用许可证明确的数据集(如许可证清晰的社区再标注版本)或自建标注,BC2GM 仅作内部基线。
参考:https://huggingface.co/datasets/spyysalo/bc2gm_corpus ;https://biocreative.bioinformatics.udel.edu/resources/corpora/biocreative-ii-corpus/
§6.6 数据增强(安全 vs 危险)
| 策略 | 安全性 | 说明 |
|---|---|---|
| 子词随机遮蔽(token dropout,标签位同步置 -100) | ✅ 安全 | 不改变实体边界 |
| 同句随机截断至子句(在实体外切断) | ✅ 安全 | 需校验不破坏实体 span |
| 句子顺序/文档级重组 | ✅ 安全(但无意义) | 语料本身无文档结构 |
| 同义词替换实体内部词 | ❌ 危险 | 直接改变实体 span,标签错位 |
| 小写化 / 去大小写信息 | ❌ 危险 | 基因名大小写是判别特征(坑点 6) |
| 回译生成"新句子"后继承原标签 | ❌ 危险 | 词序变化破坏 IOB 对齐,须重新标注 |
| 把其他基因名替换进实体(实体替换增强) | ⚠️ 谨慎 | 可行但需保证替换词在词法上合理(如同为连字符含数字型) |
§6.7 模型推荐
| 模型 | BC2GM F1(BLURB 复现口径) | 说明 |
|---|---|---|
| BioBERT v1.1 base | 83.82 | 生物医学预训练经典基线 |
| SciBERT scivocab | 83.36 | 科学文本词汇表 |
| ClinicalBERT | 83.36 | 含临床文本预训练 |
| BERT base | 81.23 | 通用域对照 |
| RoBERTa base | 80.90 | 通用域对照 |
| PubMedBERT | 81.71 | 领域从头预训练,多任务平均最优 |
数字来源:Gu et al., ACM THR 2021, Table 6(统一微调协议下的复现值,详见 §8.1 的可比性说明)。
§6.8 硬件需求
| 场景 | 配置建议 | 说明 |
|---|---|---|
| base 模型微调 | 1× GPU(≥16GB 显存),batch 16、max_len 256 | 单次训练分钟级到小时级 |
| 推理/评估 | CPU 可行,GPU 加速 | 5,000 句测试集秒级 |
| 多种子实验(≥5 seeds) | 同上配置循环 | 报告均值 ± 标准差 |
§6.9 评估指标代码
from seqeval.metrics import precision_score, recall_score, f1_score
LABELS = ["O", "B-GENE", "I-GENE"]
def to_label_sequences(id_batch):
return [[LABELS[i] for i in seq] for seq in id_batch]
def evaluate(y_true_ids, y_pred_ids):
y_true = to_label_sequences(y_true_ids)
y_pred = to_label_sequences(y_pred_ids)
return {
"precision": precision_score(y_true, y_pred), # entity-level
"recall": recall_score(y_true, y_pred),
"f1": f1_score(y_true, y_pred), # 严格边界匹配(下界,见坑点 2)
}
注意:seqeval 给出的是严格边界匹配口径;官方协议额外接受 ALTGENE 替代边界且同一 gold 只计一次 TP,跨论文比较时务必确认口径(坑点 2、坑点 3)。
官方口径评估器(span 级,可直接嵌入 pipeline):
def official_prf(pred_spans_by_sent, gold_spans_by_sent):
"""按 BioCreative II GM 官方规则计算 P/R/F1。
规则:输出 span 与任一 gold span(GENE 或 ALTGENE,合并后的可接受边界集合)
完全一致即计 TP;每个 gold span 至多被计一次 TP。
pred_spans_by_sent: List[List[(start, end)]] # 系统输出
gold_spans_by_sent: List[List[(start, end)]] # GENE ∪ ALTGENE 合并边界
"""
tp = 0
for preds, golds in zip(pred_spans_by_sent, gold_spans_by_sent):
used = set()
for g in golds:
for i, p in enumerate(preds):
if i not in used and p == g:
tp += 1
used.add(i)
break
n_pred = sum(len(p) for p in pred_spans_by_sent)
n_gold = sum(len(g) for g in gold_spans_by_sent)
precision = tp / n_pred if n_pred else 0.0
recall = tp / n_gold if n_gold else 0.0
f1 = 2 * precision * recall / (precision + recall) if (precision + recall) else 0.0
return {"precision": precision, "recall": recall, "f1": f1}
与 seqeval 的差异点:该实现工作在字符偏移层面(官方协议)、把 GENE 与 ALTGENE 边界并入同一可接受集合、并强制"每个 gold 至多一个 TP"。若你在 CoNLL token 层评估,先把预测解码回 span 再比对。
§6.10 MLOps 笔记
- 版本锁定:记录数据版本(HF revision/commit、CoNLL 文件 md5)、分词器型号与
label_all_tokens设置。 - 样本数断言:加载后断言 12,500/2,500/5,000(并防御空句,坑点 4)。
- 口径双报:严格 F1 与官方 ALTGENE 容纳口径并列(坑点 2)。
- 多种子:≥5 个随机种子报告均值 ± 标准差,BC2GM 小语料上方差不可忽略。
- 数据卡:把 §3.0 版本矩阵与 §5.3 泄漏表写入项目数据卡,供下游审计。
建议的最小实验记录字段:
| 字段 | 示例值 | 目的 |
|---|---|---|
| data_version | spyysalo/bc2gm_corpus@<commit> | 复现数据 |
| split_assert | train=12500/dev=2500/test=5000 | 拦截旧缓存 |
| tokenizer | dmis-lab/biobert-base-cased-v1.2 | 口径可比 |
| label_all_tokens | true | 口径可比 |
| eval_protocol | seqeval-strict + official-alt | 双口径报告 |
| seeds | [13, 42, 2024, 7, 99] | 方差控制 |
| best_dev_f1 / test_f1 | 数值对 | 只在选定模型后跑一次 test |
§7 质量评估与局限性
§7.1 已知偏倚
| 偏倚类型 | 描述 | 严重程度 | 缓解建议 |
|---|---|---|---|
| 文献热度偏倚 | 高/低分文档各半的平衡设计已缓解部分偏差,但摘要文献仍过度代表热门人类基因与常见模式生物 | 中 | 评估时补充分布外测试(罕见基因家族) |
| 年代偏倚 | 2007 年命名约定与现代命名(如新符号规则)存在漂移 | 中 | 下游使用时结合当前 Entrez Gene 词典校准 |
| 实体类型单一 | 基因与基因产物不区分,无法训练类型区分模型 | 低(设计使然) | 多类型需求改用 JNLPBA/GENIA |
| 物种不可知 | 语料未提供物种标注,跨物种归一化需外部资源 | 中 | 与基因归一化任务词表联合使用 |
| 边界约定主观性 | 物种词、“gene” 一词等是否入 span 存在专家分歧(官方以 ALTGENE 容纳) | 低 | 评估采用官方双口径(坑点 2) |
§7.2 标注质量
官方流程包含一次系统性一致性审查:跨句比对发现约 1,500 个字符串(≥2 字符)在不同句子中被不一致地标注(标注/不标注/替代边界),涉及约 13,500 处提及(4,300 GENE、2,200 ALTGENE、7,000 未标注),全部经人工复核修正(Smith et al., 2008)。这是 2007 年少见的全量级质量审计;未公布标注者间量化一致性系数(如 kappa)是主要信息缺口。
§7.3 泛化性
| 目标场景 | 失效风险 | 证据 |
|---|---|---|
| 摘要 → 全文 | 中 | 语料仅含摘要句子,全文含方法节大量非规范写法 |
| 文献 → 临床病历 | 高 | 领域迁移;BLURB 统一协议下同模型在临床相关任务表现分布不同(Gu et al., 2021) |
| 基因 → 其他生物实体 | 高 | 单类型训练的模型不识别药物/疾病/细胞系 |
| 2007 → 当代文献 | 低-中 | 命名漂移与新实体类型(如新候选物)逐年累积 |
迁移实验的设计建议:先用 CoNLL 版在同一模型上分别跑 BC2GM 与 JNLPBA(同为 BLURB 口径),得到的"任务难度差"比跨论文比较干净得多;若目标场景是全文/专利/临床文本,务必自建 200-500 句的领域内验证集,仅凭文献摘要成绩外推会产生系统性乐观偏差。
§7.4 伦理
语料全部为公开发表的 MEDLINE 摘要句子,不含患者个体信息、无 PHI、无需伦理审批;原始概述论文以 CC-BY 2.0 开放出版。唯一合规关注点是数据文件本身未声明许可证(§6.2、坑点 8)。
§7.5 公平性
不适用患者人群维度。文献维度的公平性表现为热门基因/物种的过采样(§7.1),训练的模型对冷门基因家族的召回系统性偏低,部署于文献监控场景时应监控长尾实体召回。
§7.6 数据漂移
基因命名随时间演化(官方符号变更、新基因命名),2007 年语料与现代文献之间存在词汇分布漂移;模型上线后建议按季度监控实体词表覆盖率与 F1 衰减,触发阈值后用新文献增量标注再训练。
§7.7 DAIMS 数据集评估
| # | 检查项 | 状态 | 说明 |
|---|---|---|---|
| 1 | 宽格式 | ✅ | CoNLL TSV/parquet 行式结构,一行一句 |
| 2 | 唯一标识 | ⚠️ | 官方原始版无句子 ID(仅文件行位);HF 版有 id 字段 |
| 3 | 特殊字符 | ⚠️ | 基因名含连字符、希腊字母、方括号、数字段,需保留原样 |
| 4 | 重复行 | ✅ | 无重复句子;HF 历史空尾句已修复(坑点 4) |
| 5 | 缺失编码 | ✅ | 序列标注无缺失单元格 |
| 6 | 标签标识 | ✅ | O/B-GENE/I-GENE 语义明确、对齐文档化 |
| 7 | 罕见类分组 | ✅ | 单实体类型,无类别失衡分组问题 |
| 8 | 偏倚评估 | ✅ | 高/低分文档平衡采样的构建设计可追溯(§7.1) |
| 9 | 数据字典 | ⚠️ | 无官方字段字典;标签含义散见论文与社区数据卡 |
| 10 | 信息性缺失解释 | ✅ | 无缺失值设计;元数据缺失(物种/年份)在论文中如实声明 |
| 11 | 设备记录 | ❌ | 文本语料,不适用设备元数据 |
| 12 | 共线性 | ❌ | 不适用(非表格特征建模场景) |
| 13 | 编码映射 | ⚠️ | 仅提及不附带 Entrez Gene ID;归一化需外部词表 |
| 14 | 时间戳处理 | ❌ | 句子无发表时间元数据 |
| 15 | 划分建议 | ✅ | 官方 15,000/5,000 与社区 12,500/2,500/5,000 均有文档(§5) |
| 16 | 泄漏讨论 | ⚠️ | 句子级跨文献划分风险存在但官方未提供文档 ID 供按文档划分 |
| 17 | 标签分布 | ✅ | 提及级计数有官方与社区双重来源(§4.2) |
| 18 | 测量偏倚 | ⚠️ | 标注者人数/资质未公布,边界约定主观性只能部分量化 |
| 19 | 外部验证建议 | ✅ | BLURB/JNLPBA/NCBI-Disease 可形成验证矩阵(§7.8) |
| 20 | 版本记录 | ⚠️ | 无正式版本号体系;官方/CoNLL/Crichton 三版本并存且差异需自行考证 |
| 21 | 预处理脚本 | ✅ | standoff2conll 开源可复现 CoNLL 转换 |
| 22 | 合规要求 | ⚠️ | License: unknown,商用授权不明确(坑点 8) |
| 23 | 多模态对齐 | ❌ | 纯文本单模态,不适用 |
| 24 | 去标识化 | ✅ | 公开摘要文献,无 PHI,无需脱敏管线 |
DAIMS 评分:12 / 24
评分解读:12 项达标集中在"标注体系与划分文档"(数据本体干净、标签清晰、划分可复现),失分项集中于"元数据与治理"(无句子级元数据、无正式版本治理、license 不明确、标注者信息缺失)——这是 2007 年学术语料的典型画像:数据本体可用性高于元数据完备性。
对你意味着什么:
- 可以直接把它当训练/评测语料(本体质量 ✅ 项支撑),从下载到首个模型不超过十分钟。
- 工程上必须自带治理层:为样本补 ID、记录版本与分词口径、内置空句防御(⚠️ 项与坑点 1/3/4 的行动项)。
- 立项前先解决合规:license 未声明意味着商业产品应在获取书面授权前仅将其用于内部基线(坑点 8)。
- 需要归一化/时间/物种元数据的下游任务,不要指望本语料自带——预算外部资源接入(⚠️ 13/14 项)。
§7.8 外部验证矩阵
| 外部数据集/场景 | 来源机构 | 评估任务 | 性能指标 | 相对内部变化 | 关键发现 |
|---|---|---|---|---|---|
| BLURB-JNLPBA(Crichton 版) | 微软(Gu et al. 2021 复现) | 五类基因产物实体 NER | BioBERT F1 78.55 | BC2GM 83.82 → 78.55(约 -5.3) | 多类型与边界歧义使任务更难 |
| BLURB-NCBI-Disease | 微软(Gu et al. 2021 复现) | 疾病 NER | BioBERT F1 89.13 | 约 +5.3 | 疾病实体词典效应更强 |
| BLURB-BC5-chem | 微软(Gu et al. 2021 复现) | 化学 NER | BioBERT F1 92.85 | 约 +9.0 | 化学名边界更规则 |
数字来源:ACM Computing Surveys 2023 汇总表与 BLURB 论文 Table 6;均为 BioBERT v1.1 在统一微调协议下的同行评审复现值。
外部验证的三条经验规律值得注意:其一,从 BC2GM(单类型)迁移到 JNLPBA(五类型)损失约 5 个 F1 点,主要来自类型混淆而非边界识别;其二,疾病/化学实体的词典效应更强,同类模型反而更容易;其三,跨任务比较必须锁定同一预处理版(Crichton 版),否则划分差异会淹没模型差异。
§8 基准性能与生态
§8.1 排行榜
| 排名 | 模型/系统 | 性能(F1) | 年份 | 关键技术 | 完整引用 | 代码 |
|---|---|---|---|---|---|---|
| 1(官方赛) | IBM ASO + CRF | 0.8721(官方 5,000 句盲测) | 2007 | 半监督 ASO 利用无标注 Medline | Rie K. Ando (IBM Research), BioCreative II Workshop Proceedings, 2007, Madrid;转引自 Smith et al., 2008, Genome Biology 9(Suppl 2):S2. DOI 10.1186/gb-2008-9-s2-s2 | 未公开 |
| 融合 | 19 系统输出融合 | 0.9066 | 2008 | CRF 特征融合/BDT 投票 | Smith et al., 2008, Genome Biology 9(Suppl 2):S2. DOI 10.1186/gb-2008-9-s2-s2 | 未公开 |
| 1(BLURB 复现) | BioBERT v1.1 | 83.82(Crichton 版划分) | 2020-2021 | 领域预训练 + 统一微调 | Gu Y, et al., 2021, ACM Trans. Comput. Healthcare. DOI 10.1145/3458754 | 公开 |
| 2 | SciBERT | 83.36 | 2020-2021 | 科学文本词表 | 同上(Gu et al. 2021) | 公开 |
| 3 | PubMedBERT (cased) | 81.71 | 2020-2021 | 领域从头预训练 | 同上(Gu et al. 2021) | 公开 |
| 4 | BERT base | 81.23 | 2020-2021 | 通用域对照 | 同上(Gu et al. 2021) | 公开 |
| 5 | RoBERTa base | 80.90 | 2020-2021 | 通用域对照 | 同上(Gu et al. 2021) | 公开 |
| 社区榜 | bio-lm (RoBERTa-PM-M3) | 0.87 | 2021 | 检索增强微调 | 见 SOTA2 BLURB NER 榜单 | 公开 |
⚠️ 数值不可直接比较:官方赛数字来自 15,000/5,000 原始划分与"接受 ALTGENE"的官方评估器;BLURB 数字来自 Crichton 版划分(含 2,500 验证集)与严格 entity-level F1;社区榜微调协议各异。比较任何两个数字前先核对划分与评估器(坑点 2、坑点 3)。
§8.2 SOTA 总结与选型建议
- 想刷 BLURB 榜:从 BioBERT/PubMedBERT base 起步,重点投入超参与子词对齐策略(坑点 5),而非模型容量;BLURB 协议下各 base 模型差距在 3 个 F1 点内,微调细节往往比选型更关键。
- 想要稳健生产基线:BioBERT 微调(F1 约 84)已接近 2007 年系统融合上限的量级;再往上提升应做集成/投票——官方融合实验证明低分系统也有增量。
- 资源受限场景:CoNLL 版 4.6MB、base 模型 5 epoch 即可复现 80+ 基线,适合作为更大流水线中的低成本组件反复迭代。
- 2007 → 2020 的启示:领域预训练把 F1 从 0.8721 附近推到 84-87 区间(不同口径),收益主要来自词表与领域语料,而非结构创新——这为"领域自适应预训练仍值得投入"提供了跨时代的证据。
§8.3 评测协议
- 官方协议(BioCreative II GM):字符偏移严格匹配;输出与任一 GENE/ALTGENE 匹配计 TP;同一 gold 标注至多计一个 TP;以 5,000 句盲测集 bootstrap 评估系统间显著性(Smith et al., 2008)。官方分析还发现 ALTGENE 匹配占各系统 TP 的约 15%-30%,且前三名系统成绩在统计上不可区分——单一系统在当年已达平台期。
- BLURB 协议:Crichton 版划分(12,500/2,500/5,000),entity-level F1,统一微调超参,多种子平均。
- 社区惯例:seqeval 严格 F1,训练集内早停于 validation 2,500 句。
三套协议的互不兼容点集中在:划分(15,000/5,000 vs 12,500/2,500/5,000)、匹配口径(ALTGENE 容纳 vs 严格)、评估层(字符偏移 vs token 解码)。引用任何数字前,先确认它出自哪一套。
§8.4 相关数据集
| 数据集 | 规模 | 任务关系 | 说明 |
|---|---|---|---|
| GENETAG | 基因/蛋白标注语料 | BC2GM 标注规范的前身 | 同一标注团队(Tanabe et al.) |
| JNLPBA | 22,402 句 | 多类型基因产物 NER | 五类实体,预分词 |
| NCBI-Disease | 793 摘要 | 疾病 NER + 归一化 | 与 GM→GN 流水线互补 |
| BC5CDR | 1,500 摘要 | 化学/疾病联合 | BioCreative V 系列 |
§8.5 关键论文 Top 8
- Smith L, Tanabe LK, Ando RJ, et al. Overview of BioCreative II gene mention recognition. Genome Biology 2008;9(Suppl 2):S2. DOI 10.1186/gb-2008-9-s2-s2 — 官方概述:任务定义、19 系统成绩、融合分析。
- Wilbur WJ, Smith LH, Tanabe LK. BioCreative 2. Gene mention task. Proc. Second BioCreative Challenge Evaluation Workshop 2007; Madrid: 7-16 — 任务书与语料构建细则。
- Yeh AS, Morgan A, Colosimo M, Hirschman L. BioCreAtIvE task 1A: gene mention finding evaluation. BMC Bioinformatics 2005;6(Suppl 1):S2 — 第一代基线(F1 0.836 的由来)。
- Tanabe L, Xie N, Thom LH, Matten W, Wilbur WJ. GENETAG: a tagged corpus for gene/protein named entity recognition. BMC Bioinformatics 2005;6(Suppl 1):S3 — 标注规范的源头语料。
- Crichton G, Pyysalo S, Chiu B, Korhonen A. A neural network multi-task learning approach to biomedical named entity recognition. BMC Medical Informatics and Decision Making 2017;17:87 — BC2GM 现代预处理版(BLURB 采用)的出处。
- Gu Y, Tinn R, Cheng H, et al. Domain-Specific Language Model Pretraining for Biomedical Natural Language Processing. ACM Trans. Comput. Healthcare 2021. DOI 10.1145/3458754 — BLURB 基准与统一复现协议。
- Lee J, Yoon W, Kim S, et al. BioBERT: a pre-trained biomedical language representation model for biomedical text mining. Bioinformatics 2020;36(4):1234-1240. DOI 10.1093/bioinformatics/btz682 — 领域预训练范式的代表作。
- Smith L, Tanabe LK, Wilbur WJ 等 19 支参赛队系统描述合集,见 Genome Biology 2008;9(Suppl 2) 各队方法论文 — CRF 特征工程时代的完整技术档案。
§8.6 社区活跃度
BC2GM 通过三条分发渠道持续被消费:BioCreative 官网(原始版)、GitHub CoNLL 仓库(NLP 社区事实标准)、HuggingFace/TFDS 镜像(训练框架用户);同时作为 BLURB NER 组常驻任务出现在微软榜单与多家评测框架中。无官方维护的独立社区论坛;问题主要沉淀在 HF 数据集 Discussions 与 GitHub 仓库 issue 中(如 2023 年的空尾句修复)。
活跃度的三个观察点:其一,作为 BLURB 组成任务,每个新生物医学预训练模型发布时通常附带 BC2GM 数字,维持了稳定的评测需求;其二,数据本体已冻结(2008 年定稿),社区活动集中在加载器维护与格式转换,而非数据演进;其三,引用曲线稳定——OpenAlex 记录显示近年每年新增引用约 20-50 次(截至 2026-09)。
§8.7 生态快照
| 资源 | 类型 | 链接 | 推荐理由 |
|---|---|---|---|
| BioCreative II corpus 页面 | 官方下载 | https://biocreative.bioinformatics.udel.edu/resources/corpora/biocreative-ii-corpus/ | 原始版唯一官方入口 |
| spyysalo/bc2gm-corpus | GitHub 仓库 | https://github.com/spyysalo/bc2gm-corpus | CoNLL 版事实标准 |
| spyysalo/bc2gm_corpus | HF 数据集 | https://huggingface.co/datasets/spyysalo/bc2gm_corpus | 一键加载 + 查看器 |
| standoff2conll | 转换工具 | https://github.com/spyysalo/standoff2conll | 偏移 → CoNLL 可复现转换 |
| BLURB 基准 | 榜单/协议 | https://arxiv.org/html/2007.15779v5 | 统一评测口径 |
§9 相关资源与引用
§9.1 官方文档与教程
- 官方概述论文全文(开放获取):https://www.ncbi.nlm.nih.gov/pmc/articles/PMC2559986/
- BioCreative 官方语料页:https://biocreative.bioinformatics.udel.edu/resources/corpora/biocreative-ii-corpus/
- CoNLL 版仓库(含 standoff 原始格式):https://github.com/spyysalo/bc2gm-corpus
- HuggingFace 数据卡与在线查看器:https://huggingface.co/datasets/spyysalo/bc2gm_corpus
- 转换工具 standoff2conll:https://github.com/spyysalo/standoff2conll
- TFDS 目录页:https://www.tensorflow.org/datasets/community_catalog/huggingface/bc2gm_corpus
按需选资源:
| 需求 | 去哪个资源 |
|---|---|
| 查一句 gold 原文与替代边界 | PMC 全文 + 官方原始包 |
| 下载即训练 | HF 数据卡 |
| 审计分词/转换逻辑 | standoff2conll 源码 + CoNLL 仓库 |
| 查社区修复历史(空尾句等) | HF Discussions |
| 统一评测协议与榜单 | BLURB 论文 + aka.ms/BLURB |
§9.2 BibTeX 完整引用
@article{smith2008overview,
author = {Smith, Larry and Tanabe, Lorraine K. and Ando, Rie Johnson and others},
title = {Overview of {BioCreative II} gene mention recognition},
journal = {Genome Biology},
year = {2008},
volume = {9},
number = {Suppl 2},
pages = {S2},
doi = {10.1186/gb-2008-9-s2-s2}
}
@inproceedings{wilbur2007biocreative2,
author = {Wilbur, W. John and Smith, Larry H. and Tanabe, Lorraine K.},
title = {{BioCreative 2}. Gene mention task},
booktitle = {Proceedings of the Second BioCreative Challenge Evaluation Workshop},
year = {2007},
address = {Madrid, Spain},
pages = {7--16}
}
@article{yeh2005biocreative,
author = {Yeh, Alexander S. and Morgan, Alexander A. and Colosimo, Marc E. and Hirschman, Lynette},
title = {{BioCreAtIvE} task 1A: gene mention finding evaluation},
journal = {BMC Bioinformatics},
year = {2005},
volume = {6},
number = {Suppl 1},
pages = {S2}
}
@article{gu2021domain,
author = {Gu, Yu and Tinn, Robert and Cheng, Hao and others},
title = {Domain-Specific Language Model Pretraining for Biomedical Natural Language Processing},
journal = {ACM Transactions on Computing for Healthcare},
year = {2021},
doi = {10.1145/3458754}
}
@article{crichton2017neural,
author = {Crichton, Gamal and Pyysalo, Sampo and Chiu, Billy and Korhonen, Anna},
title = {A neural network multi-task learning approach to biomedical named entity recognition},
journal = {BMC Medical Informatics and Decision Making},
year = {2017},
volume = {17},
pages = {87}
}
§9.3 引用指南
使用 BC2GM 数据本身请引用 Smith et al. 2008(条目 1);沿用 CoNLL 转换版请同时致谢 standoff2conll 仓库;在 BLURB 协议下报告结果请引用 Gu et al. 2021 并注明"Crichton 预处理版划分"。
§10 AI 使用声明卡
§10.1 AI 模型列表
| 模型 | 版本 | 用途 |
|---|---|---|
| CodeBuddy(fast-model) | 2026-09 | 本词条文本生成、代码示例编写、表格整理 |
| 内置联网检索 | 2026-09 | 事实核查与来源收集(WebSearch/WebFetch) |
§10.2 AI 参与范围
AI 负责初稿撰写、结构组织、代码示例与引用整理;全部关键数字(规模、划分、F1、引用数、日期)均来自 §10.3 列出的公开来源并由人工复核;编辑负责终审并对发布内容负责。
§10.3 输入来源列表
- Smith L, Tanabe LK, Ando RJ, et al. Overview of BioCreative II gene mention recognition. Genome Biology 2008;9(Suppl 2):S2. DOI 10.1186/gb-2008-9-s2-s2.
- Wilbur WJ, Smith LH, Tanabe LK. BioCreative 2. Gene mention task. Proc. Second BioCreative Challenge Evaluation Workshop; 2007; Madrid: 7-16.
- Yeh AS, Morgan A, Colosimo M, Hirschman L. BioCreAtIvE task 1A: gene mention finding evaluation. BMC Bioinformatics 2005;6(Suppl 1):S2.
- Tanabe L, Xie N, Thom LH, Matten W, Wilbur WJ. GENETAG: a tagged corpus for gene/protein named entity recognition. BMC Bioinformatics 2005;6(Suppl 1):S3.
- Gu Y, Tinn R, Cheng H, et al. Domain-Specific Language Model Pretraining for Biomedical NLP. ACM Trans. Comput. Healthcare 2021. DOI 10.1145/3458754.
- Crichton G, Pyysalo S, Chiu B, Korhonen A. A neural network multi-task learning approach to biomedical NER. BMC Med Inform Decis Mak 2017;17:87.
- Lee J, Yoon W, Kim S, et al. BioBERT: a pre-trained biomedical language representation model. Bioinformatics 2020;36(4):1234-1240. DOI 10.1093/bioinformatics/btz682.
- Evaluating Word Representation Features in Biomedical Named Entity Recognition Tasks. BioMed Research International 2014. DOI 10.1155/2014/240403.
- BioCreative II corpus 官方页面(biocreative.bioinformatics.udel.edu)。
- spyysalo/bc2gm-corpus GitHub 仓库(CoNLL 版)。
- HuggingFace 数据集卡 spyysalo/bc2gm_corpus 及其 Discussions #4(尾随空例修复)。
- HuggingFace datasets PR #1414(加载器源码)。
- TensorFlow Datasets 社区目录 bc2gm_corpus。
- PubMed 记录 18834493(PMID/PMCID/DOI 核对)。
- OpenAlex 记录 DOI 10.1186/gb-2008-9-s2-s2(引用计数 500+,截至 2026-09)。
- SOTA2 BLURB NER 榜单汇总页。
- Yi Wang. A Gene Name Normalization Framework. LIACS 硕士论文, 2013(官方词典规模数据)。
§10.4 人工校验记录
| 内容模块 | 审核者 | 审核方式 | 审核状态 |
|---|---|---|---|
| 规模与划分数字(§1、§3、§4) | 千方病案医学编辑部 | 逐项对照官方论文与数据卡 | ✅ 已通过/已验证 |
| 基准数字与排行榜(§8) | 千方病案医学编辑部 | 对照 BLURB 论文与 ACM 汇总表 | ✅ 已通过/已验证 |
| 8 个坑点(§6.5) | 千方病案医学编辑部 | 逐条对照官方论文/修复记录 | ✅ 已通过/已验证 |
| 代码示例(§6) | 千方病案医学编辑部 | 逻辑与 API 人工走查 | ✅ 已通过/已验证 |
| DAIMS 24 项与偏倚分析(§7) | 千方病案医学编辑部 | 逐项核对证据链 | ✅ 已通过/已验证 |
§10.5 AI 生成章节标注
全部章节由 AI 生成初稿,经 §10.4 所列人工校验流程后发布;事实性数字一律回溯至 §10.3 来源,未采用任何无来源生成内容。
§10.6 最后人工审核日期
2026-09-05(与 §0.3 审核日期一致)
页面状态:published(全部内容已完成审核并发布)
相关数据集导航
以下为站内 AI-Ready 数据集百科中与本词条共享多个主题标签的相关数据集,按相关度降序排列:
- i2b2-n2c2-nlp — 共享标签:医疗NLP / 医学问答与基准 / 评测基准
- cblue — 共享标签:医疗NLP / 医学问答与基准 / 评测基准
- blurb — 共享标签:医疗NLP / 医学问答与基准 / 评测基准
- blue-benchmark — 共享标签:医疗NLP / 医学问答与基准 / 评测基准
- rxqa — 共享标签:医疗NLP / 医学问答与基准 / 评测基准
- craft — 共享标签:医疗NLP / 命名实体识别 / 评测基准
- genia — 共享标签:医疗NLP / 命名实体识别 / 评测基准
- scifact — 共享标签:医疗NLP / 医学问答与基准 / 评测基准
- healthsearchqa — 共享标签:医疗NLP / 医学问答与基准 / 评测基准
- claimify — 共享标签:医疗NLP / 医学问答与基准 / 评测基准
导航说明:本章节由全站统一标签体系自动计算生成(标签重合度算法),双向可达;点击链接可跳转至对应数据集词条。
