license: mit
datasets:
- disi-unibo-nlp/Pile-NER-biomed-IOB
- disi-unibo-nlp/Pile-NER-biomed-descriptions
language:
- en
base_model:
- dmis-lab/biobert-v1.1
pipeline_tag: token-classification
tags:
- medical
OpenBioNER 模型卡片
我们推出 OpenBioNER,这是一款专为开放领域生物医学命名实体识别(NER)定制的轻量级 BERT 模型。
该模型仅需目标实体类型的自然语言描述即可识别未见过的实体类型,无需重新训练。
OpenBioNER 通过大语言模型(LLM)自监督生成的合成银标数据进行预训练。
大量实验表明,OpenBioNER 在零样本设置下优于 UniNER 和 GPT-4o 等专用 LLM,在多个生物医学基准测试中 F1 分数最高提升 10%。
与 GLiNER 等小型基线模型相比,我们的模型参数量减少多达 4 倍,性能却更优。
相关链接
安装
使用此模型前需安装 IBM Zshot 库(需从主分支安装,等待下一版本发布前):
!pip install git+https://github.com/IBM/zshot.git@main gliner --quiet
!python -m spacy download en_core_web_sm
使用示例
import spacy
from zshot import PipelineConfig, displacy
from zshot.linker import LinkerSMXM
from zshot.evaluation.metrics._seqeval._seqeval import Seqeval
from zshot.utils.data_models import Entity
from zshot.evaluation.zshot_evaluate import evaluate, prettify_evaluate_report
entities = [
Entity(name='BACTERIUM', description='细菌指能作为单细胞存在、可能引发感染或参与多种生物过程的微生物。例如肺炎链球菌(Streptococcus pneumoniae)和吸水链霉菌(Streptomyces ahygroscopicus)。', vocabulary=None),
]
nlp = spacy.blank("en")
nlp_config = PipelineConfig(
linker=LinkerSMXM(model_name="disi-unibo-nlp/openbioner-base"),
entities=entities,
device='cuda'
)
nlp.add_pipe("zshot", config=nlp_config, last=True)
sentence = "Impact of cofactor - binding loop mutations on thermotolerance and activity of E. coli transketolase"
doc = nlp(sentence)
displacy.render(doc, style="ent")
性能表现
OpenBioNER 超越所有竞争模型,在全部数据集上取得最高平均性能。
模型 |
参数量 |
AnatEM |
NCBI |
JNLPBA |
BC2GM |
BC4CHEMD |
BC5CDR |
JNLPBA-R |
MedMentions-R |
平均 |
GPT-4o |
- |
38.7 |
50.0 |
41.9 |
37.3 |
36.4 |
66.4 |
26.6 |
49.1 |
43.3 |
UniNER |
7B |
25.1 |
60.4 |
48.1 |
46.2 |
47.9 |
68.0 |
50.2 |
53.4 |
49.9 |
GLiNER_large-v1 |
459M |
33.3 |
61.9 |
57.1 |
47.9 |
43.1 |
66.4 |
51.9 |
53.4 |
51.9 |
OpenBioNER (本模型) |
110M |
35.2 |
58.5 |
57.1 |
49.1 |
48.0 |
60.4 |
63.9 |
50.9 |
52.9 |
⚠️ 免责声明:请注意,使用 zshot
库运行评估时,部分基准测试结果可能与论文报告值(上表)存在微小差异。这是由于对齐方式的差异:zshot
使用 spaCy 的基于字符的跨度匹配,而我们的实验采用基于 BERT 的 NER 流程的 token 级对齐。这种差异会影响实体跨度的匹配评估,特别是在涉及子词分词或标点符号的情况下。
� 如何撰写有效的实体类型描述
实体类型描述对提升 OpenBioNER 的泛化能力至关重要。优质的描述能帮助模型区分类型歧义、处理罕见类别,并适配不同数据集的实际使用场景。
✅ 最佳实践
- 明确定义开头:简要说明实体类型是什么
- 补充功能或上下文:描述其作用、用途或出现场景
- 列举 3–5 个具体实例:使用领域相关示例(如真实疾病、蛋白质或食品名称)
- 可添加子类型或同义词(可选):帮助捕捉词汇变体和罕见表述
- 保持简洁:推荐 1–3 句结构化描述
⚠️ 常见错误避免
- 模糊或过度泛化的描述
- 未提供示例
- 仅罗列术语
- 冗余或循环定义
🧪 推荐模板
[类型]是指[简明定义]。例如包括[示例1]、[示例2]和[示例3]。
作者
📬 联系方式
如有疑问、合作或反馈,欢迎联系: