模型简介
模型特点
模型能力
使用案例
🚀 🧬 OpenMed-NER-ProteinDetect-BioMed-335M
这是一款专门用于生物医学实体识别的模型,能够精准识别多种生物医学实体,为临床和研究应用提供有力支持。
🚀 快速开始
安装
pip install transformers torch
使用
from transformers import pipeline
# 加载模型和分词器
# 模型地址: https://huggingface.co/OpenMed/OpenMed-NER-ProteinDetect-BioMed-335M
model_name = "OpenMed/OpenMed-NER-ProteinDetect-BioMed-335M"
# 创建管道
medical_ner_pipeline = pipeline(
model=model_name,
aggregation_strategy="simple"
)
# 示例用法
text = "The Maillard reaction is responsible for the browning of many foods."
entities = medical_ner_pipeline(text)
print(entities)
token = entities[0]
print(text[token["start"] : token["end"]])
⚠️ 重要提示
aggregation_strategy
参数定义了如何将标记预测分组为实体。有关详细解释,请参考 Hugging Face 文档。
以下是可用策略的总结:
none
:返回原始标记预测,不进行任何聚合。simple
:将具有相同实体类型的相邻标记分组(例如,B-LOC
后跟I-LOC
)。first
:对于基于单词的模型,如果一个单词内的标记具有不同的实体标签,则将第一个标记的标签分配给整个单词。average
:对于基于单词的模型,此策略对一个单词内的标记分数进行平均,并应用得分最高的标签。max
:对于基于单词的模型,将一个单词内得分最高的标记的实体标签分配给整个单词。
批量处理
为了高效处理大型数据集,请使用 batch_size
参数进行适当的批量处理:
texts = [
"The Maillard reaction is responsible for the browning of many foods.",
"Casein micelles are the primary protein component of milk.",
"Starch gelatinization is a key process in cooking pasta and rice.",
"Polyphenols in green tea have antioxidant properties.",
"Omega-3 fatty acids are essential fats found in fish oil.",
]
# 使用优化的批量大小进行高效批量处理
# 根据您的 GPU 内存调整 batch_size(通常为 8、16、32 或 64)
results = medical_ner_pipeline(texts, batch_size=8)
for i, entities in enumerate(results):
print(f"文本 {i+1} 的实体:")
for entity in entities:
print(f" - {entity['word']} ({entity['entity_group']}): {entity['score']:.4f}")
大型数据集处理
为了高效处理大型数据集:
from transformers.pipelines.pt_utils import KeyDataset
from datasets import Dataset
import pandas as pd
# 加载数据
# 从 Hugging Face 加载医学数据集
from datasets import load_dataset
# 加载公共医学数据集(使用子集进行测试)
medical_dataset = load_dataset("BI55/MedText", split="train[:100]") # 加载前 100 个示例
data = pd.DataFrame({"text": medical_dataset["Completion"]})
dataset = Dataset.from_pandas(data)
# 根据您的硬件进行最优批量处理
batch_size = 16 # 根据您的 GPU 内存调整此值
results = []
for out in medical_ner_pipeline(KeyDataset(dataset, "text"), batch_size=batch_size):
results.extend(out)
print(f"使用批量处理处理了 {len(results)} 个文本")
性能优化
批量大小指南:
- CPU:从 batch_size=1 - 4 开始。
- 单 GPU:根据 GPU 内存尝试 batch_size=8 - 32。
- 高端 GPU:可以处理 batch_size=64 或更高。
- 监控 GPU 利用率,以找到适合您硬件的最佳批量大小。
内存考虑:
# 对于有限的 GPU 内存,使用较小的批量
medical_ner_pipeline = pipeline(
model=model_name,
aggregation_strategy="simple",
device=0 # 指定 GPU 设备
)
# 使用节省内存的批量处理
for batch_start in range(0, len(texts), batch_size):
batch = texts[batch_start:batch_start + batch_size]
batch_results = medical_ner_pipeline(batch, batch_size=len(batch))
results.extend(batch_results)
✨ 主要特性
- 高精度:针对生物医学实体识别进行了优化。
- 特定领域:在精心策划的 FSU 数据集上进行训练。
- 可用于生产:在临床基准上进行了验证。
- 易于集成:与 Hugging Face Transformers 生态系统兼容。
📦 安装指南
pip install transformers torch
💻 使用示例
基础用法
from transformers import pipeline
# 加载模型和分词器
# 模型地址: https://huggingface.co/OpenMed/OpenMed-NER-ProteinDetect-BioMed-335M
model_name = "OpenMed/OpenMed-NER-ProteinDetect-BioMed-335M"
# 创建管道
medical_ner_pipeline = pipeline(
model=model_name,
aggregation_strategy="simple"
)
# 示例用法
text = "The Maillard reaction is responsible for the browning of many foods."
entities = medical_ner_pipeline(text)
print(entities)
token = entities[0]
print(text[token["start"] : token["end"]])
高级用法
texts = [
"The Maillard reaction is responsible for the browning of many foods.",
"Casein micelles are the primary protein component of milk.",
"Starch gelatinization is a key process in cooking pasta and rice.",
"Polyphenols in green tea have antioxidant properties.",
"Omega-3 fatty acids are essential fats found in fish oil.",
]
# 使用优化的批量大小进行高效批量处理
# 根据您的 GPU 内存调整 batch_size(通常为 8、16、32 或 64)
results = medical_ner_pipeline(texts, batch_size=8)
for i, entities in enumerate(results):
print(f"文本 {i+1} 的实体:")
for entity in entities:
print(f" - {entity['word']} ({entity['entity_group']}): {entity['score']:.4f}")
📚 详细文档
📋 模型概述
该模型是一款经过微调的最先进的变换器模型,旨在为生物医学实体识别提供企业级的准确性,可识别多种生物医学实体。这款专业模型擅长从临床文本、研究论文和医疗保健文档中识别和提取生物医学实体,支持诸如药物相互作用检测、从患者记录中提取药物信息、不良事件监测、药物发现的文献挖掘以及生物医学知识图谱构建等应用,为临床和研究应用提供了可用于生产的可靠性。
🏷️ 支持的实体类型
该模型可以识别和分类以下生物医学实体:
B-protein
B-protein_complex
B-protein_enum
B-protein_familiy_or_group
B-protein_variant
查看另外 5 种实体类型...
I-protein
I-protein_complex
I-protein_enum
I-protein_familiy_or_group
I-protein_variant
📊 数据集
FSU 语料库专注于蛋白质相互作用和分子生物学实体,用于系统生物学研究。
FSU(佛罗里达州立大学)语料库是一个生物医学 NER 数据集,旨在用于蛋白质相互作用识别和分子生物学实体提取。该语料库包含与系统生物学和生物化学研究相关的蛋白质、蛋白质复合物、蛋白质家族、蛋白质变体和分子相互作用实体的注释。该数据集支持开发用于蛋白质 - 蛋白质相互作用提取、分子途径分析和系统生物学应用的文本挖掘系统。它对于识别参与细胞过程、信号转导途径和分子机制的蛋白质实体特别有价值。该语料库可作为评估蛋白质组学研究、药物发现和分子生物学信息学中使用的 NER 系统的基准。
📊 性能指标
当前模型性能
- F1 分数:
0.94
- 精确率:
0.93
- 召回率:
0.95
- 准确率:
0.98
🏆 在 FSU 数据集上的比较性能
排名 | 模型 | F1 分数 | 精确率 | 召回率 | 准确率 |
---|---|---|---|---|---|
🥇 1 | OpenMed-NER-ProteinDetect-SnowMed-568M | 0.9609 | 0.9576 | 0.9642 | 0.9803 |
🥈 2 | OpenMed-NER-ProteinDetect-ElectraMed-560M | 0.9609 | 0.9581 | 0.9636 | 0.9802 |
🥉 3 | OpenMed-NER-ProteinDetect-MultiMed-568M | 0.9579 | 0.9564 | 0.9595 | 0.9788 |
4 | OpenMed-NER-ProteinDetect-BigMed-560M | 0.9549 | 0.9520 | 0.9578 | 0.9778 |
5 | OpenMed-NER-ProteinDetect-SuperMedical-355M | 0.9547 | 0.9517 | 0.9576 | 0.9749 |
6 | OpenMed-NER-ProteinDetect-EuroMed-212M | 0.9482 | 0.9482 | 0.9482 | 0.9770 |
7 | OpenMed-NER-ProteinDetect-BigMed-278M | 0.9466 | 0.9434 | 0.9499 | 0.9738 |
8 | OpenMed-NER-ProteinDetect-SuperMedical-125M | 0.9465 | 0.9423 | 0.9507 | 0.9714 |
9 | OpenMed-NER-ProteinDetect-SuperClinical-434M | 0.9412 | 0.9351 | 0.9474 | 0.9802 |
10 | OpenMed-NER-ProteinDetect-TinyMed-82M | 0.9398 | 0.9331 | 0.9467 | 0.9680 |
排名基于在该数据集上训练的所有模型的 F1 分数性能。
图:OpenMed(开源)与最新 SOTA(闭源)在生物医学 NER 数据集上的性能比较。
📚 数据集信息
属性 | 详情 |
---|---|
数据集 | FSU |
描述 | 生物医学实体识别 - 多种生物医学实体 |
训练详情
- 基础模型:BiomedNLP-BiomedELECTRA-large-uncased-abstract
- 训练框架:Hugging Face Transformers
- 优化:使用学习率调度的 AdamW 优化器
- 验证:在保留的测试集上进行交叉验证
🔬 模型架构
- 基础架构:BiomedNLP-BiomedELECTRA-large-uncased-abstract
- 任务:标记分类(命名实体识别)
- 标签:特定于数据集的实体类型
- 输入:分词后的生物医学文本
- 输出:BIO 标签的实体预测
💡 使用案例
该模型特别适用于以下场景:
- 临床文本挖掘:从医疗记录中提取实体。
- 生物医学研究:处理科学文献。
- 药物发现:识别化合物和药物。
- 医疗保健分析:分析患者数据和结果。
- 学术研究:支持生物医学 NLP 研究。
📄 许可证
本模型采用 Apache 许可证 2.0。详情请见 LICENSE。
🤝 贡献
我们欢迎各种形式的贡献!无论您有新的想法、功能请求,还是想加入我们推动开源医疗 AI 发展的使命,我们都很乐意听取您的意见。
在 Hugging Face 🤗 上关注 OpenMed 组织,并点击“Watch”以了解我们的最新版本和开发动态。








