biobert

GitHub
2.2k 477 中等 1 次阅读 2天前NOASSERTION语言模型其他
AI 解读 由 AI 自动生成,仅供参考

BioBERT 是一款专为生物医学领域打造的预训练语言模型,旨在提升计算机对专业医学文本的理解能力。它基于谷歌的 BERT 架构,利用海量的 PubMed 和 PMC 生物医学文献进行深度训练,有效解决了通用 AI 模型在面对复杂医学术语、缩写及特定语境时理解不足的问题。

借助 BioBERT,用户可以高效完成生物医学命名实体识别(如自动提取药物、疾病名称)、关系抽取(分析基因与疾病的关联)以及专业问答等任务。相较于通用模型,它在处理专业文献时表现出更高的准确率和适应性。

这款工具非常适合生物信息学研究人员、医疗 AI 开发者以及需要处理大量医学文本的数据科学家使用。如果您不熟悉编程但只需提取文本中的医学实体,也可以直接使用基于 BioBERT 开发的在线工具 BERN。

BioBERT 的技术亮点在于其提供了多个版本的预训练权重,涵盖不同规模的模型(Base/Large)及多样化的训练数据组合(如仅 PubMed 或结合 PMC),并支持 TensorFlow 和 PyTorch 主流框架。这种灵活性让研究者能根据具体任务需求和算力条件,选择最合适的模型进行微调,从而快速构建高性能的生物医学文本挖掘应用。

使用场景

某制药公司的药物研发部门正试图从海量医学文献中自动提取“药物 - 副作用”关联关系,以加速新药安全性评估。

没有 biobert 时

  • 术语识别率低:通用 NLP 模型无法准确理解"myocardial infarction"(心肌梗死)等专业术语,常将其错误拆解或忽略。
  • 上下文歧义严重:模型难以区分文中提到的药物是用于治疗疾病还是导致了疾病,导致关系抽取错误频发。
  • 人工标注成本高:由于自动化效果差,团队需雇佣大量生物医学专家手动清洗数据,耗时数周且成本高昂。
  • 泛化能力弱:面对新出现的病毒名称或基因突变缩写,旧模型完全无法识别,需重新训练整个底层架构。

使用 biobert 后

  • 专业实体精准捕获:biobert 基于 PubMed 和 PMC 海量语料预训练,能直接高精度识别基因、蛋白质及复杂疾病名称。
  • 语义关系深度理解:利用生物医学领域的上下文感知能力,biobert 能准确判断药物与副作用之间的因果方向,大幅减少误判。
  • 微调效率显著提升:研发团队只需少量标注数据对 biobert 进行微调,即可在几天内部署高精度提取管道,节省 90% 以上人力。
  • 前沿知识即时适应:得益于广泛的领域预训练,biobert 对未见过的专业缩写和新术语具有极强的推断和泛化能力。

biobert 通过将通用语言模型转化为生物医学专家,将原本需要数周的人工文献挖掘工作缩短至小时级,极大提升了医药研发的决策效率。

运行环境要求

操作系统
  • 未说明
GPU

必需,实验基于单张 TITAN Xp GPU (12GB 显存) 进行

内存

12GB+ (基于实验环境描述)

依赖
notes该仓库主要基于 TensorFlow 1 版本;若需使用 PyTorch 版本,请参考官方提供的 biobert-pytorch 仓库。运行部分评估脚本(如 BioASQ)需要安装 Java 环境。预训练权重需单独下载。
python<= 3.7
TensorFlow 1.x
BERT (Google 原版代码库)
Java (用于 BioASQ 评估脚本)
biobert hero image

快速开始

BioBERT

本仓库提供了微调 BioBERT 的代码,BioBERT 是一种专为生物医学文本挖掘任务设计的生物医学语言表示模型,适用于生物医学命名实体识别、关系抽取、问答等任务。 更多详情请参阅我们的论文 BioBERT: 用于生物医学文本挖掘的预训练生物医学语言表示模型。 本项目由 DMIS-Lab 完成。

下载

我们提供了五个版本的预训练权重。预训练基于 Google 提供的 原始 BERT 代码,训练细节在我们的论文中有所描述。目前可用的预训练权重版本如下(SHA1SUM):

请注意,v1.0 和 v1.1 基础模型(BioBERT-Base v1.0、BioBERT-Base v1.1)的性能已在论文中报告。 此外,您也可以从 这里 下载预训练权重。

安装

以下部分介绍了基于 Tensorflow 1(Python 版本 ≤ 3.7)的 BioBERT 安装和微调流程。 对于 PyTorch 版本的 BioBERT,请查看 此仓库。 如果您不熟悉编程,只想使用 BioBERT 识别文本中的生物医学实体,请使用 此工具,它利用 BioBERT 进行多类型 NER 和归一化。

要微调 BioBERT,您需要下载 BioBERT 的预训练权重。 下载预训练权重后,使用 requirements.txt 按照以下步骤安装 BioBERT:

$ git clone https://github.com/dmis-lab/biobert.git
$ cd biobert; pip install -r requirements.txt

请注意,本仓库基于 Google 的 BERT 仓库。 所有微调实验均在一台配备 12GB 内存的 TITAN Xp GPU 机器上进行。 您可能需要安装 java 才能使用 BioASQ 的官方评估脚本。其他详细信息请参阅 requirements.txt

快速链接

链接 详情
BioBERT-PyTorch 基于 PyTorch 的 BioBERT 实现
BERN 基于 Web 的生物医学 NER + 归一化,使用 BioBERT
BERN2 BERN 的高级版本(基于 Web 的生物医学 NER),结合 BioLM 的 NER 和 PubMedBERT 的 NEN
covidAsk 基于 BioBERT 的 COVID-19 实时问答模型
第 7 届 BioASQ 第七届 BioASQ 挑战赛获奖模型的代码(事实型/是/否/列表型问题)
论文 论文链接,附 BibTeX(Bioinformatics)

常见问题解答

数据集

我们为每个任务提供了预处理后的基准数据集,如下所示:

  • 命名实体识别:(17.3 MB),8 个生物医学命名实体识别数据集
  • 关系抽取:(2.5 MB),2 个生物医学关系抽取数据集
  • 问答:(5.23 MB),3 个生物医学问答任务数据集。

您可以直接运行 download.sh 一次性下载所有数据集。

$ ./download.sh

这会将数据集下载到 datasets 文件夹下。由于其他数据集存在版权问题,我们仅提供其链接:2010 i2b2/VAChemProt

微调 BioBERT

下载其中一个预训练权重后,将其解压到您希望的任何目录,并将其命名为 $BIOBERT_DIR。 例如,当使用 BioBERT-Base v1.1 (+ PubMed 1M) 时,设置 BIOBERT_DIR 环境变量如下:

$ export BIOBERT_DIR=./biobert_v1.1_pubmed
$ echo $BIOBERT_DIR
>>> ./biobert_v1.1_pubmed

命名实体识别 (NER)

$NER_DIR 表示一个包含 train_dev.tsvtrain.tsvdevel.tsvtest.tsv 的单个 NER 数据集文件夹。同时,将 $OUTPUT_DIR 设置为 NER 输出目录(包括训练好的模型、测试预测结果等)。例如,在 NCBI 疾病语料库上进行微调时:

$ export NER_DIR=./datasets/NER/NCBI-disease
$ export OUTPUT_DIR=./ner_outputs

以下命令使用默认参数运行 NER 微调代码。

$ mkdir -p $OUTPUT_DIR
$ python run_ner.py --do_train=true --do_eval=true --vocab_file=$BIOBERT_DIR/vocab.txt --bert_config_file=$BIOBERT_DIR/bert_config.json --init_checkpoint=$BIOBERT_DIR/model.ckpt-1000000 --num_train_epochs=10.0 --data_dir=$NER_DIR --output_dir=$OUTPUT_DIR

您可以根据需要修改这些参数。模型训练完成后,可以通过设置 --do_train=false --do_predict=true 来以推理模式对 test.tsv 进行评估。 标记级别的评估结果将以标准输出格式打印出来。 例如,NCBI 疾病数据集的评估结果如下:

INFO:tensorflow:***** 标记级别评估结果 *****
INFO:tensorflow:  eval_f = 0.8972311
INFO:tensorflow:  eval_precision = 0.88150835
INFO:tensorflow:  eval_recall = 0.9136615
INFO:tensorflow:  global_step = 2571
INFO:tensorflow:  loss = 28.247158

(提示:您需要向上翻几行才能找到结果,它出现在 INFO:tensorflow:**** 可训练变量 **** 之前)

请注意,此结果是标记级别的评估指标,而官方评估应使用实体级别的评估指标。python run_ner.py 的结果将被记录为 $OUTPUT_DIR 中的两个文件:token_test.txtlabel_test.txt。使用 ./biocodes/ner_detokenize.py 可以得到词级别的预测文件。

$ python biocodes/ner_detokenize.py --token_test_path=$OUTPUT_DIR/token_test.txt --label_test_path=$OUTPUT_DIR/label_test.txt --answer_path=$NER_DIR/test.tsv --output_dir=$OUTPUT_DIR

这将在 $OUTPUT_DIR 中生成 NER_result_conll.txt 文件。使用 ./biocodes/conlleval.pl 可以获得实体级别的精确匹配评估结果。

$ perl biocodes/conlleval.pl < $OUTPUT_DIR/NER_result_conll.txt

NCBI 疾病语料库的实体级别结果如下:

处理了 24497 个标记,共 960 个短语;发现 983 个短语;正确 852 个。
准确率:98.49%;精确率:86.67%;召回率:88.75%;FB1:87.70
             其他:精确率:86.67%;召回率:88.75%;FB1:87.70  983

请注意,这只是一个 NER 模型的示例运行。NER 模型的性能通常在超过 50 个 epoch 后才会收敛(建议学习率为 1e-5)。

关系抽取 (RE)

$RE_DIR 表示一个单个 RE 数据集的文件夹,$TASK_NAME 表示任务名称(有两个可选选项:{gad, euadr}),而 $OUTPUT_DIR 表示 RE 输出目录:

$ export RE_DIR=./datasets/RE/GAD/1
$ export TASK_NAME=gad
$ export OUTPUT_DIR=./re_outputs_1

以下命令使用默认参数运行 RE 微调代码。

$ python run_re.py --task_name=$TASK_NAME --do_train=true --do_eval=true --do_predict=true --vocab_file=$BIOBERT_DIR/vocab.txt --bert_config_file=$BIOBERT_DIR/bert_config.json --init_checkpoint=$BIOBERT_DIR/model.ckpt-1000000 --max_seq_length=128 --train_batch_size=32 --learning_rate=2e-5 --num_train_epochs=3.0 --do_lower_case=false --data_dir=$RE_DIR --output_dir=$OUTPUT_DIR

预测结果将保存到 $OUTPUT_DIR 中名为 test_results.tsv 的文件中。使用 ./biocodes/re_eval.py 进行评估。 请注意,CHEMPROT 数据集是一个多分类数据集,要评估 CHEMPROT 的结果,您需要在运行 re_eval.py 时添加 --task=chemprot 标志。

$ python ./biocodes/re_eval.py --output_path=$OUTPUT_DIR/test_results.tsv --answer_path=$RE_DIR/test.tsv

GAD 数据集的评估结果如下:

F1 分数    : 83.74%
召回率      : 90.75%
精确率   : 77.74%
特异性 : 71.15%

请注意,每次训练或测试新模型时,都需要更改 $OUTPUT_DIR。例如,由于大多数 RE 数据集采用 10 折交叉验证,因此您需要为每一折创建不同的输出目录来训练和测试模型(例如,$ export OUTPUT_DIR=./re_outputs_2)。

问答(QA)

要使用 BioASQ 数据集,您需要在 BioASQ 官网 注册,以获得使用该数据集的授权。 请将上述提供的预处理过的 BioASQ 数据集解压到目录 $QA_DIR 中。 例如,将 QA 输出目录设置为 $OUTPUT_DIR

$ export QA_DIR=./datasets/QA/BioASQ
$ export OUTPUT_DIR=./qa_outputs

名为 BioASQ-*.json 的文件用于模型的训练和测试,它们是 BioBERT 的预处理格式。 请注意,我们已在 SQuAD 数据集上对模型进行了预训练,以达到最先进的性能(详见 这里 获取在 SQuAD 上预训练的 BioBERT),您可能需要相应地调整 $BIOBERT_DIR。 以下命令将以默认参数运行 QA 任务的微调代码:

$ python run_qa.py --do_train=True --do_predict=True --vocab_file=$BIOBERT_DIR/vocab.txt --bert_config_file=$BIOBERT_DIR/bert_config.json --init_checkpoint=$BIOBERT_DIR/model.ckpt-1000000 --max_seq_length=384 --train_batch_size=12 --learning_rate=5e-6 --doc_stride=128 --num_train_epochs=5.0 --do_lower_case=False --train_file=$QA_DIR/BioASQ-train-factoid-4b.json --predict_file=$QA_DIR/BioASQ-test-factoid-4b-1.json --output_dir=$OUTPUT_DIR

预测结果将保存为 $OUTPUT_DIR 下的 predictions.jsonnbest_predictions.json 文件。 运行 ./biocodes/transform_nbset2bioasqform.pynbest_predictions.json 转换为 BioASQ JSON 格式,该格式将用于官方评估。

$ python ./biocodes/transform_nbset2bioasqform.py --nbest_path=$OUTPUT_DIR/nbest_predictions.json --output_path=$OUTPUT_DIR

这将在 $OUTPUT_DIR 中生成 BioASQform_BioASQ-answer.json。 从 BioASQ 的 GitHub 仓库克隆 evaluation code,并在 Evaluation-Measures 目录下运行评估代码。请注意,-e 参数应始终设置为 5。

$ git clone https://github.com/BioASQ/Evaluation-Measures.git
$ cd Evaluation-Measures
$ java -Xmx10G -cp $CLASSPATH:./flat/BioASQEvaluation/dist/BioASQEvaluation.jar evaluation.EvaluatorTask1b -phaseB -e 5 ../$QA_DIR/4B1_golden.json ../$OUTPUT_DIR/BioASQform_BioASQ-answer.json

由于我们的模型仅针对事实型问题,结果将如下所示:

0.0 0.3076923076923077 0.5384615384615384 0.394017094017094 0.0 0.0 0.0 0.0 0.0 0.0

其中,第二、第三和第四位数字分别为事实型问题的 SAcc、LAcc 和 MRR。 对于列表型和“是/否”型问题,请参阅我们的仓库中关于 BioBERT 在第七届 BioASQ 挑战赛中的应用 的内容。

许可与免责声明

详情请参阅 LICENSE 文件。下载数据即表示您同意我们的免责声明。

引用

@article{lee2020biobert,
  title={BioBERT: a pre-trained biomedical language representation model for biomedical text mining},
  author={Lee, Jinhyuk and Yoon, Wonjin and Kim, Sungdong and Kim, Donghyeon and Kim, Sunkyu and So, Chan Ho and Kang, Jaewoo},
  journal={Bioinformatics},
  volume={36},
  number={4},
  pages={1234--1240},
  year={2020},
  publisher={Oxford University Press}
}

联系方式

如在使用 BioBERT 时遇到任何问题或需要帮助,请提交 GitHub 问题。有关 BioBERT 的沟通事宜,请联系 Jinhyuk Lee (lee.jnhk (at) gmail.com) 或 Wonjin Yoon (wonjin.info (at) gmail.com)。

常见问题

相似工具推荐

everything-claude-code

everything-claude-code 是一套专为 AI 编程助手(如 Claude Code、Codex、Cursor 等)打造的高性能优化系统。它不仅仅是一组配置文件,而是一个经过长期实战打磨的完整框架,旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。 通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能,everything-claude-code 能显著提升 AI 在复杂任务中的表现,帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略,使得模型响应更快、成本更低,同时有效防御潜在的攻击向量。 这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库,还是需要 AI 协助进行安全审计与自动化测试,everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目,它融合了多语言支持与丰富的实战钩子(hooks),让 AI 真正成长为懂上

159.3k|★★☆☆☆|今天
开发框架Agent语言模型

LLMs-from-scratch

LLMs-from-scratch 是一个基于 PyTorch 的开源教育项目,旨在引导用户从零开始一步步构建一个类似 ChatGPT 的大型语言模型(LLM)。它不仅是同名技术著作的官方代码库,更提供了一套完整的实践方案,涵盖模型开发、预训练及微调的全过程。 该项目主要解决了大模型领域“黑盒化”的学习痛点。许多开发者虽能调用现成模型,却难以深入理解其内部架构与训练机制。通过亲手编写每一行核心代码,用户能够透彻掌握 Transformer 架构、注意力机制等关键原理,从而真正理解大模型是如何“思考”的。此外,项目还包含了加载大型预训练权重进行微调的代码,帮助用户将理论知识延伸至实际应用。 LLMs-from-scratch 特别适合希望深入底层原理的 AI 开发者、研究人员以及计算机专业的学生。对于不满足于仅使用 API,而是渴望探究模型构建细节的技术人员而言,这是极佳的学习资源。其独特的技术亮点在于“循序渐进”的教学设计:将复杂的系统工程拆解为清晰的步骤,配合详细的图表与示例,让构建一个虽小但功能完备的大模型变得触手可及。无论你是想夯实理论基础,还是为未来研发更大规模的模型做准备

90.1k|★★★☆☆|1周前
语言模型图像Agent

spec-kit

Spec Kit 是一款专为提升软件开发效率而设计的开源工具包,旨在帮助团队快速落地“规格驱动开发”(Spec-Driven Development)模式。传统开发中,需求文档往往与代码实现脱节,导致沟通成本高且结果不可控;而 Spec Kit 通过将规格说明书转化为可执行的指令,让 AI 直接依据明确的业务场景生成高质量代码,从而减少从零开始的随意编码,确保产出结果的可预测性。 该工具特别适合希望利用 AI 辅助编程的开发者、技术负责人及初创团队。无论是启动全新项目还是在现有工程中引入规范化流程,用户只需通过简单的命令行操作,即可初始化项目并集成主流的 AI 编程助手。其核心技术亮点在于“规格即代码”的理念,支持社区扩展与预设模板,允许用户根据特定技术栈定制开发流程。此外,Spec Kit 强调官方维护的安全性,提供稳定的版本管理,帮助开发者在享受 AI 红利的同时,依然牢牢掌握架构设计的主动权,真正实现从“凭感觉写代码”到“按规格建系统”的转变。

88.7k|★★☆☆☆|今天
语言模型图像Agent

NextChat

NextChat 是一款轻量且极速的 AI 助手,旨在为用户提供流畅、跨平台的大模型交互体验。它完美解决了用户在多设备间切换时难以保持对话连续性,以及面对众多 AI 模型不知如何统一管理的痛点。无论是日常办公、学习辅助还是创意激发,NextChat 都能让用户随时随地通过网页、iOS、Android、Windows、MacOS 或 Linux 端无缝接入智能服务。 这款工具非常适合普通用户、学生、职场人士以及需要私有化部署的企业团队使用。对于开发者而言,它也提供了便捷的自托管方案,支持一键部署到 Vercel 或 Zeabur 等平台。 NextChat 的核心亮点在于其广泛的模型兼容性,原生支持 Claude、DeepSeek、GPT-4 及 Gemini Pro 等主流大模型,让用户在一个界面即可自由切换不同 AI 能力。此外,它还率先支持 MCP(Model Context Protocol)协议,增强了上下文处理能力。针对企业用户,NextChat 提供专业版解决方案,具备品牌定制、细粒度权限控制、内部知识库整合及安全审计等功能,满足公司对数据隐私和个性化管理的高标准要求。

87.6k|★★☆☆☆|1周前
开发框架语言模型

ML-For-Beginners

ML-For-Beginners 是由微软推出的一套系统化机器学习入门课程,旨在帮助零基础用户轻松掌握经典机器学习知识。这套课程将学习路径规划为 12 周,包含 26 节精炼课程和 52 道配套测验,内容涵盖从基础概念到实际应用的完整流程,有效解决了初学者面对庞大知识体系时无从下手、缺乏结构化指导的痛点。 无论是希望转型的开发者、需要补充算法背景的研究人员,还是对人工智能充满好奇的普通爱好者,都能从中受益。课程不仅提供了清晰的理论讲解,还强调动手实践,让用户在循序渐进中建立扎实的技能基础。其独特的亮点在于强大的多语言支持,通过自动化机制提供了包括简体中文在内的 50 多种语言版本,极大地降低了全球不同背景用户的学习门槛。此外,项目采用开源协作模式,社区活跃且内容持续更新,确保学习者能获取前沿且准确的技术资讯。如果你正寻找一条清晰、友好且专业的机器学习入门之路,ML-For-Beginners 将是理想的起点。

85.1k|★★☆☆☆|1周前
图像数据工具视频

funNLP

funNLP 是一个专为中文自然语言处理(NLP)打造的超级资源库,被誉为"NLP 民工的乐园”。它并非单一的软件工具,而是一个汇集了海量开源项目、数据集、预训练模型和实用代码的综合性平台。 面对中文 NLP 领域资源分散、入门门槛高以及特定场景数据匮乏的痛点,funNLP 提供了“一站式”解决方案。这里不仅涵盖了分词、命名实体识别、情感分析、文本摘要等基础任务的标准工具,还独特地收录了丰富的垂直领域资源,如法律、医疗、金融行业的专用词库与数据集,甚至包含古诗词生成、歌词创作等趣味应用。其核心亮点在于极高的全面性与实用性,从基础的字典词典到前沿的 BERT、GPT-2 模型代码,再到高质量的标注数据和竞赛方案,应有尽有。 无论是刚刚踏入 NLP 领域的学生、需要快速验证想法的算法工程师,还是从事人工智能研究的学者,都能在这里找到急需的“武器弹药”。对于开发者而言,它能大幅减少寻找数据和复现模型的时间;对于研究者,它提供了丰富的基准测试资源和前沿技术参考。funNLP 以开放共享的精神,极大地降低了中文自然语言处理的开发与研究成本,是中文 AI 社区不可或缺的宝藏仓库。

79.9k|★☆☆☆☆|1周前
语言模型数据工具其他