模型简介
模型特点
模型能力
使用案例
🚀 🧬 OpenMed-NER-OncologyDetect-BigMed-560M
这是一款专注于癌症遗传学的专业模型,能够精准识别与癌症相关的遗传实体,为癌症研究和临床应用提供有力支持。
🚀 快速开始
安装
pip install transformers torch
使用
from transformers import pipeline
# 加载模型和分词器
# 模型地址: https://huggingface.co/OpenMed/OpenMed-NER-OncologyDetect-BigMed-560M
model_name = "OpenMed/OpenMed-NER-OncologyDetect-BigMed-560M"
# 创建管道
medical_ner_pipeline = pipeline(
model=model_name,
aggregation_strategy="simple"
)
# 示例用法
text = "Mutations in KRAS gene drive oncogenic transformation."
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 = [
"Mutations in KRAS gene drive oncogenic transformation.",
"The tumor suppressor p53 pathway was disrupted.",
"EGFR amplification promotes cancer cell proliferation.",
"Loss of function of the PTEN gene is common in many cancers.",
"The PI3K/AKT/mTOR pathway is a critical regulator of cell growth.",
]
# 使用优化的批量大小进行高效批量处理
# 根据您的 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)
✨ 主要特性
- 高精度:针对生物医学实体识别进行了优化。
- 特定领域:在精心策划的 BIONLP2013_CG 数据集上进行训练。
- 生产就绪:在临床基准上进行了验证。
- 易于集成:与 Hugging Face Transformers 生态系统兼容。
📦 安装指南
pip install transformers torch
💻 使用示例
基础用法
from transformers import pipeline
# 加载模型和分词器
# 模型地址: https://huggingface.co/OpenMed/OpenMed-NER-OncologyDetect-BigMed-560M
model_name = "OpenMed/OpenMed-NER-OncologyDetect-BigMed-560M"
# 创建管道
medical_ner_pipeline = pipeline(
model=model_name,
aggregation_strategy="simple"
)
# 示例用法
text = "Mutations in KRAS gene drive oncogenic transformation."
entities = medical_ner_pipeline(text)
print(entities)
token = entities[0]
print(text[token["start"] : token["end"]])
高级用法
批量处理
texts = [
"Mutations in KRAS gene drive oncogenic transformation.",
"The tumor suppressor p53 pathway was disrupted.",
"EGFR amplification promotes cancer cell proliferation.",
"Loss of function of the PTEN gene is common in many cancers.",
"The PI3K/AKT/mTOR pathway is a critical regulator of cell growth.",
]
# 使用优化的批量大小进行高效批量处理
# 根据您的 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)} 条文本")
性能优化
# 对于有限的 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)
📚 详细文档
模型概述
此模型是一个经过微调的先进变压器模型,旨在为癌症遗传学 - 癌症相关遗传实体提供企业级精度。这个专业模型擅长从临床文本、研究论文和医疗保健文档中识别和提取生物医学实体,为临床和研究应用提供如药物相互作用检测、从患者记录中提取药物信息、不良事件监测、药物发现的文献挖掘以及生物医学知识图谱构建等具有生产就绪可靠性的应用。
支持的实体类型
该模型可以识别和分类以下生物医学实体:
B-Amino_acid
B-Anatomical_system
B-Cancer
B-Cell
B-Cellular_component
查看另外 27 种实体类型...
B-Developing_anatomical_structure
B-Gene_or_gene_product
B-Immaterial_anatomical_entity
B-Multi-tissue_structure
B-Organ
B-Organism
B-Organism_subdivision
B-Organism_substance
B-Pathological_formation
B-Simple_chemical
B-Tissue
I-Amino_acid
I-Anatomical_system
I-Cancer
I-Cell
I-Cellular_component
I-Developing_anatomical_structure
I-Gene_or_gene_product
I-Immaterial_anatomical_entity
I-Multi-tissue_structure
I-Organ
I-Organism
I-Organism_subdivision
I-Organism_substance
I-Pathological_formation
I-Simple_chemical
I-Tissue
数据集
BioNLP 2013 CG 语料库专注于癌症遗传学实体,用于肿瘤学研究和癌症基因组学。
BioNLP 2013 CG(癌症遗传学)语料库是一个专门的数据集,专注于肿瘤学研究中的癌症遗传学实体和基因调控。该语料库包含与癌症生物学和肿瘤遗传学特别相关的基因、蛋白质和分子过程的注释。它是为 2013 年 BioNLP 共享任务开发的,支持开发用于癌症研究、肿瘤学研究和精准医学应用的文本挖掘系统。该数据集对于识别癌症研究文献中提到的癌症相关生物标志物、肿瘤抑制基因、癌基因和治疗靶点特别有价值。它作为评估癌症基因组学、个性化医学和肿瘤信息学中使用的命名实体识别(NER)系统的基准。
性能指标
当前模型性能
- F1 分数:
0.86
- 精确率:
0.86
- 召回率:
0.85
- 准确率:
0.93
🏆 在 BIONLP2013_CG 数据集上的比较性能
排名 | 模型 | F1 分数 | 精确率 | 召回率 | 准确率 |
---|---|---|---|---|---|
🥇 1 | OpenMed-NER-OncologyDetect-SuperMedical-355M | 0.8990 | 0.8926 | 0.9056 | 0.9416 |
🥈 2 | OpenMed-NER-OncologyDetect-ElectraMed-560M | 0.8841 | 0.8788 | 0.8895 | 0.9390 |
🥉 3 | OpenMed-NER-OncologyDetect-SnowMed-568M | 0.8801 | 0.8774 | 0.8828 | 0.9366 |
4 | OpenMed-NER-OncologyDetect-PubMed-335M | 0.8782 | 0.8834 | 0.8730 | 0.9539 |
5 | OpenMed-NER-OncologyDetect-MultiMed-568M | 0.8766 | 0.8749 | 0.8784 | 0.9351 |
6 | OpenMed-NER-OncologyDetect-SuperClinical-434M | 0.8684 | 0.8602 | 0.8768 | 0.9495 |
7 | OpenMed-NER-OncologyDetect-BioMed-335M | 0.8660 | 0.8540 | 0.8783 | 0.9516 |
8 | OpenMed-NER-OncologyDetect-PubMed-109M | 0.8606 | 0.8604 | 0.8608 | 0.9503 |
9 | OpenMed-NER-OncologyDetect-BigMed-560M | 0.8556 | 0.8582 | 0.8530 | 0.9250 |
10 | OpenMed-NER-OncologyDetect-ModernClinical-395M | 0.8471 | 0.8465 | 0.8476 | 0.9411 |
排名基于在该数据集上训练的所有模型的 F1 分数性能。
图:OpenMed(开源)与最新 SOTA(闭源)模型在生物医学 NER 数据集上的性能比较。
数据集信息
属性 | 详情 |
---|---|
数据集 | BIONLP2013_CG |
描述 | 癌症遗传学 - 癌症相关遗传实体 |
训练详情
属性 | 详情 |
---|---|
基础模型 | xlm-roberta-large |
训练框架 | Hugging Face Transformers |
优化 | 使用学习率调度的 AdamW 优化器 |
验证 | 在保留的测试集上进行交叉验证 |
模型架构
属性 | 详情 |
---|---|
基础架构 | xlm-roberta-large |
任务 | 标记分类(命名实体识别) |
标签 | 特定于数据集的实体类型 |
输入 | 分词后的生物医学文本 |
输出 | BIO 标记的实体预测 |
使用案例
该模型特别适用于:
- 临床文本挖掘:从医疗记录中提取实体。
- 生物医学研究:处理科学文献。
- 药物发现:识别化合物和药物。
- 医疗保健分析:分析患者数据和结果。
- 学术研究:支持生物医学自然语言处理研究。
🔧 技术细节
此模型基于 xlm - roberta - large 基础架构,针对癌症遗传学领域的命名实体识别任务进行了微调。在训练过程中,使用了 AdamW 优化器并结合学习率调度,以提高模型的性能和泛化能力。通过在 BIONLP2013_CG 数据集上进行训练和验证,模型能够准确地识别和分类与癌症相关的遗传实体。在处理输入时,将生物医学文本进行分词,然后输出经过 BIO 标记的实体预测。
📄 许可证
本模型采用 Apache 许可证 2.0。详情请见 LICENSE。
🤝 贡献
我们欢迎各种形式的贡献!无论您有想法、功能请求,还是想加入我们推进开源医疗人工智能的使命,我们都很乐意听取您的意见。
在 Hugging Face 🤗 上关注 OpenMed 组织 并点击“Watch”,以了解我们的最新版本和开发动态。








