bluebert

GitHub
589 81 中等 1 次阅读 5天前NOASSERTION语言模型
AI 解读 由 AI 自动生成,仅供参考

BlueBERT 是一款专为生物医学领域打造的预训练语言模型,旨在让机器更精准地理解复杂的医疗文本。它基于经典的 BERT 架构,但独特之处在于其训练数据完全源自专业的 PubMed 学术摘要和 MIMIC-III 临床病历笔记。这一设计有效解决了通用语言模型在处理医学术语、缩写及特定语境时表现不佳的痛点,显著提升了在疾病诊断、药物关系抽取等任务中的准确率。

BlueBERT 特别适合生物医学领域的研究人员、AI 开发者以及医疗数据分析专家使用。无论是需要构建疾病实体识别系统,还是进行临床文献的分类与相似度分析,BlueBERT 都能提供强大的底层支持。其核心亮点在于提供了多种预训练权重版本(包括仅基于文献版和结合临床笔记版),并支持直接在 Hugging Face 平台调用,极大地降低了领域适配的门槛。通过简单的微调代码,用户即可将其应用于命名实体识别、关系提取及多标签分类等十大基准任务,是探索医疗自然语言处理(NLP)应用的得力助手。

使用场景

某大型医院科研团队正试图从海量电子病历(MIMIC-III)和 PubMed 文献中自动提取药物与疾病的关联关系,以辅助新药研发决策。

没有 bluebert 时

  • 术语理解偏差:通用 NLP 模型无法准确识别“心肌梗死”与"MI"在医学语境下的等价性,导致大量关键实体漏标。
  • 训练成本高昂:由于缺乏医学领域预训练权重,团队需从头训练模型,耗费数周 GPU 算力仍难以收敛。
  • 上下文捕捉无力:面对临床笔记中复杂的否定句(如“无糖尿病史”),模型频繁误判为阳性症状,数据噪声极大。
  • 泛化能力薄弱:在跨数据集测试中,模型对未见过的医学缩写或生僻药名表现极差,需人工反复修正规则。

使用 bluebert 后

  • 领域知识内嵌:bluebert 已在 PubMed 摘要和临床笔记上预训练,能精准理解医学术语变体,实体识别准确率显著提升。
  • 快速微调部署:直接加载 bluebert 预训练权重进行微调,仅需少量标注数据和数小时即可完成高质量模型构建。
  • 复杂语义解析:凭借对临床文本的深度理解,bluebert 能准确处理否定、推测等复杂语境,大幅降低误报率。
  • 强泛化性能:在 ChemProt 等基准测试中验证过的架构,能轻松应对新出现的药物名称和罕见病描述,减少人工干预。

bluebert 通过将深厚的医学领域知识注入预训练模型,将原本需要数月攻坚的医疗文本挖掘任务缩短至数天,并显著提升了结果的临床可信度。

运行环境要求

操作系统
  • 未说明
GPU

未说明 (基于原始 BERT TensorFlow 代码,通常训练需要 GPU,但 README 未指定具体型号或显存)

内存

未说明

依赖
notes该工具基于原始的 Google BERT TensorFlow 实现(非 PyTorch/HuggingFace 原生代码,尽管模型权重已托管至 HuggingFace)。运行微调脚本需要配置 `$BlueBERT_DIR` 和 `$DATASET_DIR` 环境变量。代码中使用了 `.ckpt` 格式的检查点文件,表明其依赖 TensorFlow 1.x 环境。若使用 HuggingFace 提供的模型权重,可能需要自行编写或使用额外的转换/加载脚本,因为提供的示例命令是针对本地 TensorFlow 模型的。
python未说明 (需兼容原始 BERT 代码库的 Python 版本)
tensorflow (基于引用的 google-research/bert)
nltk
numpy
bluebert hero image

快速开始

BlueBERT

***** 新闻 2020年11月1日:BlueBERT 现可在 Hugging Face 上找到 *****

***** 新闻 2019年12月5日:NCBI_BERT 已更名为 BlueBERT *****

***** 新闻 2019年7月11日:预处理的 PubMed 文本 *****

我们上传了用于预训练 BlueBERT 模型的 预处理的 PubMed 文本


本仓库提供了基于 PubMed 摘要和临床记录(MIMIC-III)预训练的 BlueBERT 的代码及模型。更多详情请参阅我们的论文《生物医学自然语言处理中的迁移学习:BERT 和 ELMo 在十个基准数据集上的评估》(https://arxiv.org/abs/1906.05474)。

预训练模型与基准数据集

预训练的 BlueBERT 权重、词汇表和配置文件可从以下链接下载:

这些预训练权重也可在 Hugging Face 上找到:

基准数据集可从 https://github.com/ncbi-nlp/BLUE_Benchmark 下载。

微调 BlueBERT

假设 BlueBERT 模型已下载至 $BlueBERT_DIR,数据集已下载至 $DATASET_DIR

如有需要,请将本地目录添加到 $PYTHONPATH

export PYTHONPATH=.;$PYTHONPATH

句子相似度

python bluebert/run_bluebert_sts.py \
  --task_name='sts' \
  --do_train=true \
  --do_eval=false \
  --do_test=true \
  --vocab_file=$BlueBERT_DIR/vocab.txt \
  --bert_config_file=$BlueBERT_DIR/bert_config.json \
  --init_checkpoint=$BlueBERT_DIR/bert_model.ckpt \
  --max_seq_length=128 \
  --num_train_epochs=30.0 \
  --do_lower_case=true \
  --data_dir=$DATASET_DIR \
  --output_dir=$OUTPUT_DIR

命名实体识别

python bluebert/run_bluebert_ner.py \
  --do_prepare=true \
  --do_train=true \
  --do_eval=true \
  --do_predict=true \
  --task_name="bc5cdr" \
  --vocab_file=$BlueBERT_DIR/vocab.txt \
  --bert_config_file=$BlueBERT_DIR/bert_config.json \
  --init_checkpoint=$BlueBERT_DIR/bert_model.ckpt \
  --num_train_epochs=30.0 \
  --do_lower_case=true \
  --data_dir=$DATASET_DIR \
  --output_dir=$OUTPUT_DIR

任务名称可以是:

  • bc5cdr:BC5CDR 化学或疾病任务
  • clefe:ShARe/CLEFE 任务

关系抽取

python bluebert/run_bluebert.py \
  --do_train=true \
  --do_eval=false \
  --do_predict=true \
  --task_name="chemprot" \
  --vocab_file=$BlueBERT_DIR/vocab.txt \
  --bert_config_file=$BlueBERT_DIR/bert_config.json \
  --init_checkpoint=$BlueBERT_DIR/bert_model.ckpt \
  --num_train_epochs=10.0 \
  --data_dir=$DATASET_DIR \
  --output_dir=$OUTPUT_DIR \
  --do_lower_case=true 

任务名称可以是:

  • chemprot:BC6 ChemProt 任务
  • ddi:DDI 2013 任务
  • i2b2_2010:I2B2 2010 任务

文档多标签分类

python bluebert/run_bluebert_multi_labels.py \
  --task_name="hoc" \
  --do_train=true \
  --do_eval=true \
  --do_predict=true \
  --vocab_file=$BlueBERT_DIR/vocab.txt \
  --bert_config_file=$BlueBERT_DIR/bert_config.json \
  --init_checkpoint=$BlueBERT_DIR/bert_model.ckpt \
  --max_seq_length=128 \
  --train_batch_size=4 \
  --learning_rate=2e-5 \
  --num_train_epochs=3 \
  --num_classes=20 \
  --num_aspects=10 \
  --aspect_value_list="0,1" \
  --data_dir=$DATASET_DIR \
  --output_dir=$OUTPUT_DIR

推理任务

python bluebert/run_bluebert.py \
  --do_train=true \
  --do_eval=false \
  --do_predict=true \
  --task_name="mednli" \
  --vocab_file=$BlueBERT_DIR/vocab.txt \
  --bert_config_file=$BlueBERT_DIR/bert_config.json \
  --init_checkpoint=$BlueBERT_DIR/bert_model.ckpt \
  --num_train_epochs=10.0 \
  --data_dir=$DATASET_DIR \
  --output_dir=$OUTPUT_DIR \
  --do_lower_case=true 

预处理的 PubMed 文本

我们提供了用于预训练 BlueBERT 模型的 预处理的 PubMed 文本。该语料库包含约 40 亿词,来源于 PubMed ASCII 版本。其他处理步骤包括:

以下是详细代码片段:

value = value.lower()
value = re.sub(r'[\r\n]+', ' ', value)
value = re.sub(r'[^\x00-\x7F]+', ' ', value)

tokenized = TreebankWordTokenizer().tokenize(value)
sentence = ' '.join(tokenized)
sentence = re.sub(r"\s's\b", "'s", sentence)

使用 BERT 进行预训练

随后,我们使用以下代码生成预训练数据。更多详情请参阅 https://github.com/google-research/bert。

python bert/create_pretraining_data.py \
  --input_file=pubmed_uncased_sentence_nltk.txt \
  --output_file=pubmed_uncased_sentence_nltk.tfrecord \
  --vocab_file=bert_uncased_L-12_H-768_A-12_vocab.txt \
  --do_lower_case=True \
  --max_seq_length=128 \
  --max_predictions_per_seq=20 \
  --masked_lm_prob=0.15 \
  --random_seed=12345 \
  --dupe_factor=5

我们使用以下代码训练 BERT 模型。如果您是从头开始进行预训练,请勿包含 init_checkpoint。更多详情请参阅 https://github.com/google-research/bert。

python bert/run_pretraining.py \
  --input_file=pubmed_uncased_sentence_nltk.tfrecord \
  --output_dir=$BlueBERT_DIR \
  --do_train=True \
  --do_eval=True \
  --bert_config_file=$BlueBERT_DIR/bert_config.json \
  --init_checkpoint=$BlueBERT_DIR/bert_model.ckpt \
  --train_batch_size=32 \
  --max_seq_length=128 \
  --max_predictions_per_seq=20 \
  --num_train_steps=20000 \
  --num_warmup_steps=10 \
  --learning_rate=2e-5

引用 BlueBERT

@InProceedings{peng2019transfer,
  author    = {Yifan Peng 和 Shankai Yan 和 Zhiyong Lu},
  title     = {生物医学自然语言处理中的迁移学习:BERT 和 ELMo 在十个基准数据集上的评估},
  booktitle = {2019 年生物医学自然语言处理研讨会(BioNLP 2019)论文集},
  year      = {2019},
  pages     = {58--65},
}

致谢

本研究得到了美国国立卫生研究院、美国国家医学图书馆及临床中心的院内研究计划的支持。此外,本研究还获得了美国国立卫生研究院国家医学图书馆颁发的 K99LM013001-01 号资助。

我们亦感谢 BERT 和 ELMo 的作者将相关数据与代码公开发布。

同时,我们要特别感谢 Sun Kim 博士对 PubMed 文本的处理工作。

免责声明

本工具展示的是美国国立卫生研究院国家生物技术信息中心计算生物学研究组开展的研究成果。本网站所提供的信息并非用于直接诊断或在未经临床专业人员审查和指导的情况下作出医疗决策。个人不应仅凭本网站提供的信息改变自身的健康行为。美国国立卫生研究院不会独立核实本工具所生成信息的有效性或实用性。如您对本网站信息存有疑问,请咨询医疗卫生专业人士。有关 NCBI 免责声明政策的更多信息,请参阅相关说明。

版本历史

lymphnode2020/10/22

常见问题

相似工具推荐

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 真正成长为懂上

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

LLMs-from-scratch

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

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

spec-kit

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

88.7k|★★☆☆☆|3天前
语言模型图像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|★★☆☆☆|2周前
开发框架语言模型

ML-For-Beginners

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

85.3k|★★☆☆☆|2天前
图像数据工具视频

funNLP

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

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