[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"similar-dmis-lab--biobert":3,"tool-dmis-lab--biobert":65},[4,17,27,35,43,56],{"id":5,"name":6,"github_repo":7,"description_zh":8,"stars":9,"difficulty_score":10,"last_commit_at":11,"category_tags":12,"status":16},1381,"everything-claude-code","affaan-m\u002Feverything-claude-code","everything-claude-code 是一套专为 AI 编程助手（如 Claude Code、Codex、Cursor 等）打造的高性能优化系统。它不仅仅是一组配置文件，而是一个经过长期实战打磨的完整框架，旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。\n\n通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能，everything-claude-code 能显著提升 AI 在复杂任务中的表现，帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略，使得模型响应更快、成本更低，同时有效防御潜在的攻击向量。\n\n这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库，还是需要 AI 协助进行安全审计与自动化测试，everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目，它融合了多语言支持与丰富的实战钩子（hooks），让 AI 真正成长为懂上",159267,2,"2026-04-17T11:29:14",[13,14,15],"开发框架","Agent","语言模型","ready",{"id":18,"name":19,"github_repo":20,"description_zh":21,"stars":22,"difficulty_score":23,"last_commit_at":24,"category_tags":25,"status":16},4487,"LLMs-from-scratch","rasbt\u002FLLMs-from-scratch","LLMs-from-scratch 是一个基于 PyTorch 的开源教育项目，旨在引导用户从零开始一步步构建一个类似 ChatGPT 的大型语言模型（LLM）。它不仅是同名技术著作的官方代码库，更提供了一套完整的实践方案，涵盖模型开发、预训练及微调的全过程。\n\n该项目主要解决了大模型领域“黑盒化”的学习痛点。许多开发者虽能调用现成模型，却难以深入理解其内部架构与训练机制。通过亲手编写每一行核心代码，用户能够透彻掌握 Transformer 架构、注意力机制等关键原理，从而真正理解大模型是如何“思考”的。此外，项目还包含了加载大型预训练权重进行微调的代码，帮助用户将理论知识延伸至实际应用。\n\nLLMs-from-scratch 特别适合希望深入底层原理的 AI 开发者、研究人员以及计算机专业的学生。对于不满足于仅使用 API，而是渴望探究模型构建细节的技术人员而言，这是极佳的学习资源。其独特的技术亮点在于“循序渐进”的教学设计：将复杂的系统工程拆解为清晰的步骤，配合详细的图表与示例，让构建一个虽小但功能完备的大模型变得触手可及。无论你是想夯实理论基础，还是为未来研发更大规模的模型做准备",90106,3,"2026-04-06T11:19:32",[15,26,14,13],"图像",{"id":28,"name":29,"github_repo":30,"description_zh":31,"stars":32,"difficulty_score":10,"last_commit_at":33,"category_tags":34,"status":16},8553,"spec-kit","github\u002Fspec-kit","Spec Kit 是一款专为提升软件开发效率而设计的开源工具包，旨在帮助团队快速落地“规格驱动开发”（Spec-Driven Development）模式。传统开发中，需求文档往往与代码实现脱节，导致沟通成本高且结果不可控；而 Spec Kit 通过将规格说明书转化为可执行的指令，让 AI 直接依据明确的业务场景生成高质量代码，从而减少从零开始的随意编码，确保产出结果的可预测性。\n\n该工具特别适合希望利用 AI 辅助编程的开发者、技术负责人及初创团队。无论是启动全新项目还是在现有工程中引入规范化流程，用户只需通过简单的命令行操作，即可初始化项目并集成主流的 AI 编程助手。其核心技术亮点在于“规格即代码”的理念，支持社区扩展与预设模板，允许用户根据特定技术栈定制开发流程。此外，Spec Kit 强调官方维护的安全性，提供稳定的版本管理，帮助开发者在享受 AI 红利的同时，依然牢牢掌握架构设计的主动权，真正实现从“凭感觉写代码”到“按规格建系统”的转变。",88749,"2026-04-17T09:48:14",[15,26,14,13],{"id":36,"name":37,"github_repo":38,"description_zh":39,"stars":40,"difficulty_score":10,"last_commit_at":41,"category_tags":42,"status":16},3704,"NextChat","ChatGPTNextWeb\u002FNextChat","NextChat 是一款轻量且极速的 AI 助手，旨在为用户提供流畅、跨平台的大模型交互体验。它完美解决了用户在多设备间切换时难以保持对话连续性，以及面对众多 AI 模型不知如何统一管理的痛点。无论是日常办公、学习辅助还是创意激发，NextChat 都能让用户随时随地通过网页、iOS、Android、Windows、MacOS 或 Linux 端无缝接入智能服务。\n\n这款工具非常适合普通用户、学生、职场人士以及需要私有化部署的企业团队使用。对于开发者而言，它也提供了便捷的自托管方案，支持一键部署到 Vercel 或 Zeabur 等平台。\n\nNextChat 的核心亮点在于其广泛的模型兼容性，原生支持 Claude、DeepSeek、GPT-4 及 Gemini Pro 等主流大模型，让用户在一个界面即可自由切换不同 AI 能力。此外，它还率先支持 MCP（Model Context Protocol）协议，增强了上下文处理能力。针对企业用户，NextChat 提供专业版解决方案，具备品牌定制、细粒度权限控制、内部知识库整合及安全审计等功能，满足公司对数据隐私和个性化管理的高标准要求。",87618,"2026-04-05T07:20:52",[13,15],{"id":44,"name":45,"github_repo":46,"description_zh":47,"stars":48,"difficulty_score":10,"last_commit_at":49,"category_tags":50,"status":16},2268,"ML-For-Beginners","microsoft\u002FML-For-Beginners","ML-For-Beginners 是由微软推出的一套系统化机器学习入门课程，旨在帮助零基础用户轻松掌握经典机器学习知识。这套课程将学习路径规划为 12 周，包含 26 节精炼课程和 52 道配套测验，内容涵盖从基础概念到实际应用的完整流程，有效解决了初学者面对庞大知识体系时无从下手、缺乏结构化指导的痛点。\n\n无论是希望转型的开发者、需要补充算法背景的研究人员，还是对人工智能充满好奇的普通爱好者，都能从中受益。课程不仅提供了清晰的理论讲解，还强调动手实践，让用户在循序渐进中建立扎实的技能基础。其独特的亮点在于强大的多语言支持，通过自动化机制提供了包括简体中文在内的 50 多种语言版本，极大地降低了全球不同背景用户的学习门槛。此外，项目采用开源协作模式，社区活跃且内容持续更新，确保学习者能获取前沿且准确的技术资讯。如果你正寻找一条清晰、友好且专业的机器学习入门之路，ML-For-Beginners 将是理想的起点。",85092,"2026-04-10T11:13:16",[26,51,52,53,14,54,15,13,55],"数据工具","视频","插件","其他","音频",{"id":57,"name":58,"github_repo":59,"description_zh":60,"stars":61,"difficulty_score":62,"last_commit_at":63,"category_tags":64,"status":16},5784,"funNLP","fighting41love\u002FfunNLP","funNLP 是一个专为中文自然语言处理（NLP）打造的超级资源库，被誉为\"NLP 民工的乐园”。它并非单一的软件工具，而是一个汇集了海量开源项目、数据集、预训练模型和实用代码的综合性平台。\n\n面对中文 NLP 领域资源分散、入门门槛高以及特定场景数据匮乏的痛点，funNLP 提供了“一站式”解决方案。这里不仅涵盖了分词、命名实体识别、情感分析、文本摘要等基础任务的标准工具，还独特地收录了丰富的垂直领域资源，如法律、医疗、金融行业的专用词库与数据集，甚至包含古诗词生成、歌词创作等趣味应用。其核心亮点在于极高的全面性与实用性，从基础的字典词典到前沿的 BERT、GPT-2 模型代码，再到高质量的标注数据和竞赛方案，应有尽有。\n\n无论是刚刚踏入 NLP 领域的学生、需要快速验证想法的算法工程师，还是从事人工智能研究的学者，都能在这里找到急需的“武器弹药”。对于开发者而言，它能大幅减少寻找数据和复现模型的时间；对于研究者，它提供了丰富的基准测试资源和前沿技术参考。funNLP 以开放共享的精神，极大地降低了中文自然语言处理的开发与研究成本，是中文 AI 社区不可或缺的宝藏仓库。",79857,1,"2026-04-08T20:11:31",[15,51,54],{"id":66,"github_repo":67,"name":68,"description_en":69,"description_zh":70,"ai_summary_zh":71,"readme_en":72,"readme_zh":73,"quickstart_zh":74,"use_case_zh":75,"hero_image_url":76,"owner_login":77,"owner_name":78,"owner_avatar_url":79,"owner_bio":80,"owner_company":81,"owner_location":81,"owner_email":81,"owner_twitter":81,"owner_website":82,"owner_url":83,"languages":84,"stars":97,"forks":98,"last_commit_at":99,"license":100,"difficulty_score":23,"env_os":101,"env_gpu":102,"env_ram":103,"env_deps":104,"category_tags":111,"github_topics":81,"view_count":10,"oss_zip_url":81,"oss_zip_packed_at":81,"status":16,"created_at":112,"updated_at":113,"faqs":114,"releases":144},8543,"dmis-lab\u002Fbiobert","biobert","Bioinformatics'2020: BioBERT: a pre-trained biomedical language representation model for biomedical text mining","BioBERT 是一款专为生物医学领域打造的预训练语言模型，旨在提升计算机对专业医学文本的理解能力。它基于谷歌的 BERT 架构，利用海量的 PubMed 和 PMC 生物医学文献进行深度训练，有效解决了通用 AI 模型在面对复杂医学术语、缩写及特定语境时理解不足的问题。\n\n借助 BioBERT，用户可以高效完成生物医学命名实体识别（如自动提取药物、疾病名称）、关系抽取（分析基因与疾病的关联）以及专业问答等任务。相较于通用模型，它在处理专业文献时表现出更高的准确率和适应性。\n\n这款工具非常适合生物信息学研究人员、医疗 AI 开发者以及需要处理大量医学文本的数据科学家使用。如果您不熟悉编程但只需提取文本中的医学实体，也可以直接使用基于 BioBERT 开发的在线工具 BERN。\n\nBioBERT 的技术亮点在于其提供了多个版本的预训练权重，涵盖不同规模的模型（Base\u002FLarge）及多样化的训练数据组合（如仅 PubMed 或结合 PMC），并支持 TensorFlow 和 PyTorch 主流框架。这种灵活性让研究者能根据具体任务需求和算力条件，选择最合适的模型进行微调，从而快速构建高","BioBERT 是一款专为生物医学领域打造的预训练语言模型，旨在提升计算机对专业医学文本的理解能力。它基于谷歌的 BERT 架构，利用海量的 PubMed 和 PMC 生物医学文献进行深度训练，有效解决了通用 AI 模型在面对复杂医学术语、缩写及特定语境时理解不足的问题。\n\n借助 BioBERT，用户可以高效完成生物医学命名实体识别（如自动提取药物、疾病名称）、关系抽取（分析基因与疾病的关联）以及专业问答等任务。相较于通用模型，它在处理专业文献时表现出更高的准确率和适应性。\n\n这款工具非常适合生物信息学研究人员、医疗 AI 开发者以及需要处理大量医学文本的数据科学家使用。如果您不熟悉编程但只需提取文本中的医学实体，也可以直接使用基于 BioBERT 开发的在线工具 BERN。\n\nBioBERT 的技术亮点在于其提供了多个版本的预训练权重，涵盖不同规模的模型（Base\u002FLarge）及多样化的训练数据组合（如仅 PubMed 或结合 PMC），并支持 TensorFlow 和 PyTorch 主流框架。这种灵活性让研究者能根据具体任务需求和算力条件，选择最合适的模型进行微调，从而快速构建高性能的生物医学文本挖掘应用。","# BioBERT\nThis repository provides the code for fine-tuning BioBERT, a biomedical language representation model designed for biomedical text mining tasks such as biomedical named entity recognition, relation extraction, question answering, etc.\nPlease refer to our paper [BioBERT: a pre-trained biomedical language representation model for biomedical text mining](http:\u002F\u002Fdoi.org\u002F10.1093\u002Fbioinformatics\u002Fbtz682) for more details.\nThis project is done by [DMIS-Lab](https:\u002F\u002Fdmis.korea.ac.kr).\n\n## Download\nWe provide five versions of pre-trained weights. Pre-training was based on the [original BERT code](https:\u002F\u002Fgithub.com\u002Fgoogle-research\u002Fbert) provided by Google, and training details are described in our paper. Currently available versions of pre-trained weights are as follows ([SHA1SUM](http:\u002F\u002Fnlp.dmis.korea.edu\u002Fprojects\u002Fbiobert-2020-checkpoints\u002Fsha1sum.html)):\n\n* **[BioBERT-Base v1.2 (+ PubMed 1M)](https:\u002F\u002Fhuggingface.co\u002Fdmis-lab\u002Fbiobert-base-cased-v1.2)** - trained in the same way as BioBERT-Base v1.1 but includes LM head, which can be useful for probing (available in PyTorch)\n* **[BioBERT-Large v1.1 (+ PubMed 1M)](http:\u002F\u002Fnlp.dmis.korea.edu\u002Fprojects\u002Fbiobert-2020-checkpoints\u002Fbiobert_large_v1.1_pubmed.tar.gz)** - based on BERT-large-Cased (custom 30k vocabulary), [NER\u002FQA Results](https:\u002F\u002Fgithub.com\u002Fdmis-lab\u002Fbiobert\u002Fwiki\u002FBioBERT-Large-Results)\n* **[BioBERT-Base v1.1 (+ PubMed 1M)](http:\u002F\u002Fnlp.dmis.korea.edu\u002Fprojects\u002Fbiobert-2020-checkpoints\u002Fbiobert_v1.1_pubmed.tar.gz)** - based on BERT-base-Cased (same vocabulary), [Results in the Paper](http:\u002F\u002Fdoi.org\u002F10.1093\u002Fbioinformatics\u002Fbtz682)\n* **[BioBERT-Base v1.0 (+ PubMed 200K)](http:\u002F\u002Fnlp.dmis.korea.edu\u002Fprojects\u002Fbiobert-2020-checkpoints\u002Fbiobert_v1.0_pubmed.tar.gz)** - based on BERT-base-Cased (same vocabulary), [Results in the Paper](http:\u002F\u002Fdoi.org\u002F10.1093\u002Fbioinformatics\u002Fbtz682)\n* **[BioBERT-Base v1.0 (+ PMC 270K)](http:\u002F\u002Fnlp.dmis.korea.edu\u002Fprojects\u002Fbiobert-2020-checkpoints\u002Fbiobert_v1.0_pmc.tar.gz)** - based on BERT-base-Cased (same vocabulary), [Results in the Paper](http:\u002F\u002Fdoi.org\u002F10.1093\u002Fbioinformatics\u002Fbtz682)\n* **[BioBERT-Base v1.0 (+ PubMed 200K + PMC 270K)](http:\u002F\u002Fnlp.dmis.korea.edu\u002Fprojects\u002Fbiobert-2020-checkpoints\u002Fbiobert_v1.0_pubmed_pmc.tar.gz)** - based on BERT-base-Cased (same vocabulary), [Results in the Paper](http:\u002F\u002Fdoi.org\u002F10.1093\u002Fbioinformatics\u002Fbtz682)\n\nNote that the performances of v1.0 and v1.1 base models (BioBERT-Base v1.0, BioBERT-Base v1.1) are reported in the paper.\nAlternately, you can download pre-trained weights from [here](https:\u002F\u002Fgithub.com\u002Fnaver\u002Fbiobert-pretrained\u002Freleases)\n\n## Installation\nSections below describe the installation and the fine-tuning process of BioBERT based on Tensorflow 1 (python version \u003C= 3.7).\nFor PyTorch version of BioBERT, you can check out [this repository](https:\u002F\u002Fgithub.com\u002Fdmis-lab\u002Fbiobert-pytorch).\nIf you are not familiar with coding and just want to recognize biomedical entities in your text using BioBERT, please use [this tool](https:\u002F\u002Fbern.korea.ac.kr) which uses BioBERT for multi-type NER and normalization.\n\nTo fine-tune BioBERT, you need to download the [pre-trained weights of BioBERT](https:\u002F\u002Fgithub.com\u002Fnaver\u002Fbiobert-pretrained).\nAfter downloading the pre-trained weights, use `requirements.txt` to install BioBERT as follows:\n```bash\n$ git clone https:\u002F\u002Fgithub.com\u002Fdmis-lab\u002Fbiobert.git\n$ cd biobert; pip install -r requirements.txt\n```\nNote that this repository is based on the [BERT repository](https:\u002F\u002Fgithub.com\u002Fgoogle-research\u002Fbert) by Google.\nAll the fine-tuning experiments were conducted on a single TITAN Xp GPU machine which has 12GB of RAM.\nYou might want to install `java` to use the official evaluation script of BioASQ. See `requirements.txt` for other details.\n\n## Quick Links\nLink | Detail\n------------- | -------------\n[BioBERT-PyTorch](https:\u002F\u002Fgithub.com\u002Fdmis-lab\u002Fbiobert-pytorch) | PyTorch-based BioBERT implementation\n[BERN](http:\u002F\u002Fbern.korea.ac.kr) | Web-based biomedical NER + normalization using BioBERT\n[BERN2](http:\u002F\u002Fbern2.korea.ac.kr) | Advanced version of BERN (web-based biomedical NER) w\u002F NER from BioLM + NEN from PubMedBERT\n[covidAsk](https:\u002F\u002Fcovidask.korea.ac.kr) | BioBERT based real-time question answering model for COVID-19\n[7th BioASQ](https:\u002F\u002Fgithub.com\u002Fdmis-lab\u002Fbioasq-biobert) | Code for the seventh BioASQ challenge winning model (factoid\u002Fyesno\u002Flist)\n[Paper](https:\u002F\u002Facademic.oup.com\u002Fbioinformatics\u002Fadvance-article\u002Fdoi\u002F10.1093\u002Fbioinformatics\u002Fbtz682\u002F5566506) | Paper link with [BibTeX](https:\u002F\u002Fgithub.com\u002Fdmis-lab\u002Fbiobert#citation) (Bioinformatics)\n\n## FAQs\n*   [How can I use BioBERT with PyTorch?](https:\u002F\u002Fgithub.com\u002Fdmis-lab\u002Fbiobert-pytorch)\n*   [Can I get word\u002Fsentence embeddings using BioBERT?](https:\u002F\u002Fgithub.com\u002Fdmis-lab\u002Fbiobert\u002Fissues\u002F23)\n*   [How can I pre-train QA models on SQuAD?](https:\u002F\u002Fgithub.com\u002Fdmis-lab\u002Fbiobert\u002Fissues\u002F10)\n*   [What vocabulary does BioBERT use?](https:\u002F\u002Fgithub.com\u002Fnaver\u002Fbiobert-pretrained\u002Fissues\u002F1)\n\n## Datasets\nWe provide a pre-processed version of benchmark datasets for each task as follows:\n*   **[`Named Entity Recognition`](http:\u002F\u002Fnlp.dmis.korea.edu\u002Fprojects\u002Fbiobert-2020-checkpoints\u002FNERdata.zip)**: (17.3 MB), 8 datasets on biomedical named entity recognition\n*   **[`Relation Extraction`](http:\u002F\u002Fnlp.dmis.korea.edu\u002Fprojects\u002Fbiobert-2020-checkpoints\u002FREdata.zip)**: (2.5 MB), 2 datasets on biomedical relation extraction\n*   **[`Question Answering`](http:\u002F\u002Fnlp.dmis.korea.edu\u002Fprojects\u002Fbiobert-2020-checkpoints\u002FQA.zip)**: (5.23 MB), 3 datasets on biomedical question answering task.\n\nYou can simply run `download.sh` to download all the datasets at once.\n```bash\n$ .\u002Fdownload.sh\n```\nThis will download the datasets under the folder `datasets`.\nDue to the copyright issue of other datasets, we provide links of those datasets instead: **[`2010 i2b2\u002FVA`](https:\u002F\u002Fwww.i2b2.org\u002FNLP\u002FDataSets\u002FMain.php)**, **[`ChemProt`](http:\u002F\u002Fwww.biocreative.org\u002F)**.\n\n## Fine-tuning BioBERT\nAfter downloading one of the pre-trained weights, unpack it to any directory you want, and we will denote this as `$BIOBERT_DIR`.\nFor instance, when using BioBERT-Base v1.1 (+ PubMed 1M), set `BIOBERT_DIR` environment variable as:\n```bash\n$ export BIOBERT_DIR=.\u002Fbiobert_v1.1_pubmed\n$ echo $BIOBERT_DIR\n>>> .\u002Fbiobert_v1.1_pubmed\n```\n\n### Named Entity Recognition (NER)\nLet `$NER_DIR` indicate a folder for a single NER dataset which contains `train_dev.tsv`, `train.tsv`, `devel.tsv` and `test.tsv`. Also, set `$OUTPUT_DIR` as a directory for NER outputs (trained models, test predictions, etc). For example, when fine-tuning on the NCBI disease corpus,\n```bash\n$ export NER_DIR=.\u002Fdatasets\u002FNER\u002FNCBI-disease\n$ export OUTPUT_DIR=.\u002Fner_outputs\n```\nFollowing command runs fine-tuning code on NER with default arguments.\n```bash\n$ mkdir -p $OUTPUT_DIR\n$ python run_ner.py --do_train=true --do_eval=true --vocab_file=$BIOBERT_DIR\u002Fvocab.txt --bert_config_file=$BIOBERT_DIR\u002Fbert_config.json --init_checkpoint=$BIOBERT_DIR\u002Fmodel.ckpt-1000000 --num_train_epochs=10.0 --data_dir=$NER_DIR --output_dir=$OUTPUT_DIR\n```\nYou can change the arguments as you want. Once you have trained your model, you can use it in inference mode by using `--do_train=false --do_predict=true` for evaluating `test.tsv`.\nThe token-level evaluation result will be printed as stdout format.\nFor example, the result for NCBI-disease dataset will be like this:\n```\nINFO:tensorflow:***** token-level evaluation results *****\nINFO:tensorflow:  eval_f = 0.8972311\nINFO:tensorflow:  eval_precision = 0.88150835\nINFO:tensorflow:  eval_recall = 0.9136615\nINFO:tensorflow:  global_step = 2571\nINFO:tensorflow:  loss = 28.247158\n```\n(tips : You should go up a few lines to find the result. It comes before `INFO:tensorflow:**** Trainable Variables ****` )\n\nNote that this result is the token-level evaluation measure while the official evaluation should use the entity-level evaluation measure. \nThe results of `python run_ner.py` will be recorded as two files: `token_test.txt` and `label_test.txt` in `$OUTPUT_DIR`.\nUse `.\u002Fbiocodes\u002Fner_detokenize.py` to obtain word level prediction file.\n```bash\n$ python biocodes\u002Fner_detokenize.py --token_test_path=$OUTPUT_DIR\u002Ftoken_test.txt --label_test_path=$OUTPUT_DIR\u002Flabel_test.txt --answer_path=$NER_DIR\u002Ftest.tsv --output_dir=$OUTPUT_DIR\n```\nThis will generate `NER_result_conll.txt` in `$OUTPUT_DIR`.\nUse `.\u002Fbiocodes\u002Fconlleval.pl` for entity-level exact match evaluation results.\n```bash\n$ perl biocodes\u002Fconlleval.pl \u003C $OUTPUT_DIR\u002FNER_result_conll.txt\n```\n\nThe entity-level results for the NCBI disease corpus will be like:\n```\nprocessed 24497 tokens with 960 phrases; found: 983 phrases; correct: 852.\naccuracy:  98.49%; precision:  86.67%; recall:  88.75%; FB1:  87.70\n             MISC: precision:  86.67%; recall:  88.75%; FB1:  87.70  983\n``` \nNote that this is a sample run of an NER model.\nThe performance of NER models usually converges at more than 50 epochs (learning rate = 1e-5 is recommended).\n\n### Relation Extraction (RE)\nLet `$RE_DIR` indicate a folder for a single RE dataset, `$TASK_NAME` denote the name of task (two possible options: {gad, euadr}), and `$OUTPUT_DIR` denote a directory for RE outputs:\n```bash\n$ export RE_DIR=.\u002Fdatasets\u002FRE\u002FGAD\u002F1\n$ export TASK_NAME=gad\n$ export OUTPUT_DIR=.\u002Fre_outputs_1\n```\nFollowing command runs fine-tuning code on RE with default arguments.\n```bash\n$ python run_re.py --task_name=$TASK_NAME --do_train=true --do_eval=true --do_predict=true --vocab_file=$BIOBERT_DIR\u002Fvocab.txt --bert_config_file=$BIOBERT_DIR\u002Fbert_config.json --init_checkpoint=$BIOBERT_DIR\u002Fmodel.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\n```\nThe predictions will be saved into a file called `test_results.tsv` in the `$OUTPUT_DIR`.\nUse `.\u002Fbiocodes\u002Fre_eval.py` for the evaluation.\nNote that the CHEMPROT dataset is a multi-class classification dataset and to evaluate the CHEMPROT result, you should run `re_eval.py` with additional `--task=chemprot` flag.\n```bash\n$ python .\u002Fbiocodes\u002Fre_eval.py --output_path=$OUTPUT_DIR\u002Ftest_results.tsv --answer_path=$RE_DIR\u002Ftest.tsv\n```\nThe result for GAD dataset will be like this:\n```\nf1 score    : 83.74%\nrecall      : 90.75%\nprecision   : 77.74%\nspecificity : 71.15%\n```\nPlease be aware that you have to change `$OUTPUT_DIR` to train\u002Ftest a new model.\nFor instance, as most RE datasets are in 10-fold, you have to make a different output directory to train\u002Ftest a model for a different fold (e.g., `$ export OUTPUT_DIR=.\u002Fre_outputs_2`).\n\n### Question Answering (QA)\nTo use the BioASQ dataset, you need to register in the [BioASQ website](http:\u002F\u002Fparticipants-area.bioasq.org\u002Fgeneral_information\u002Fgeneral_information_registration\u002F) which authorizes the use of the dataset.\nPlease unpack the pre-processed BioASQ dataset provided above to a directory `$QA_DIR`.\nFor example, with `$OUTPUT_DIR` for QA outputs, set as:\n```bash\n$ export QA_DIR=.\u002Fdatasets\u002FQA\u002FBioASQ\n$ export OUTPUT_DIR=.\u002Fqa_outputs\n```\nFiles named as `BioASQ-*.json` are used for training and testing the model which are the pre-processed format for BioBERT.\nNote that we pre-trained our model on SQuAD dataset to get state-of-the-art performance (see [here](https:\u002F\u002Fgithub.com\u002Fdmis-lab\u002Fbioasq-biobert) to get BioBERT pre-trained on SQuAD), and you might have to change `$BIOBERT_DIR` accordingly.\nFollowing command runs fine-tuning code on QA with default arguments.\n```bash\n$ python run_qa.py --do_train=True --do_predict=True --vocab_file=$BIOBERT_DIR\u002Fvocab.txt --bert_config_file=$BIOBERT_DIR\u002Fbert_config.json --init_checkpoint=$BIOBERT_DIR\u002Fmodel.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\u002FBioASQ-train-factoid-4b.json --predict_file=$QA_DIR\u002FBioASQ-test-factoid-4b-1.json --output_dir=$OUTPUT_DIR\n```\nThe predictions will be saved into a file called `predictions.json` and `nbest_predictions.json` in `$OUTPUT_DIR`.\nRun `.\u002Fbiocodes\u002Ftransform_nbset2bioasqform.py` to convert `nbest_predictions.json` to the BioASQ JSON format, which will be used for the official evaluation.\n```bash\n$ python .\u002Fbiocodes\u002Ftransform_nbset2bioasqform.py --nbest_path=$OUTPUT_DIR\u002Fnbest_predictions.json --output_path=$OUTPUT_DIR\n```\nThis will generate `BioASQform_BioASQ-answer.json` in `$OUTPUT_DIR`.\nClone **[`evaluation code`](https:\u002F\u002Fgithub.com\u002FBioASQ\u002FEvaluation-Measures)** from BioASQ github and run evaluation code on `Evaluation-Measures` directory. Please note that you should always put 5 as parameter for -e.\n```bash\n$ git clone https:\u002F\u002Fgithub.com\u002FBioASQ\u002FEvaluation-Measures.git\n$ cd Evaluation-Measures\n$ java -Xmx10G -cp $CLASSPATH:.\u002Fflat\u002FBioASQEvaluation\u002Fdist\u002FBioASQEvaluation.jar evaluation.EvaluatorTask1b -phaseB -e 5 ..\u002F$QA_DIR\u002F4B1_golden.json ..\u002F$OUTPUT_DIR\u002FBioASQform_BioASQ-answer.json\n```\nAs our model is only on factoid questions, the result will be like,\n```\n0.0 0.3076923076923077 0.5384615384615384 0.394017094017094 0.0 0.0 0.0 0.0 0.0 0.0\n```\nwhere the second, third and fourth numbers will be SAcc, LAcc, and MRR of factoid questions respectively.\nFor list and yes\u002Fno type questions, please refer to our repository for [BioBERT at the 7th BioASQ Challenge](https:\u002F\u002Fgithub.com\u002Fdmis-lab\u002Fbioasq-biobert).\n\n## License and Disclaimer\nPlease see the LICENSE file for details. Downloading data indicates your acceptance of our disclaimer.\n\n## Citation\n```bibtex\n@article{lee2020biobert,\n  title={BioBERT: a pre-trained biomedical language representation model for biomedical text mining},\n  author={Lee, Jinhyuk and Yoon, Wonjin and Kim, Sungdong and Kim, Donghyeon and Kim, Sunkyu and So, Chan Ho and Kang, Jaewoo},\n  journal={Bioinformatics},\n  volume={36},\n  number={4},\n  pages={1234--1240},\n  year={2020},\n  publisher={Oxford University Press}\n}\n```\n\n## Contact Information\nFor help or issues using BioBERT, please submit a GitHub issue. Please contact Jinhyuk Lee\n(`lee.jnhk (at) gmail.com`), or Wonjin Yoon (`wonjin.info (at) gmail.com`) for communication related to BioBERT.\n","# BioBERT\n本仓库提供了微调 BioBERT 的代码，BioBERT 是一种专为生物医学文本挖掘任务设计的生物医学语言表示模型，适用于生物医学命名实体识别、关系抽取、问答等任务。\n更多详情请参阅我们的论文 [BioBERT: 用于生物医学文本挖掘的预训练生物医学语言表示模型](http:\u002F\u002Fdoi.org\u002F10.1093\u002Fbioinformatics\u002Fbtz682)。\n本项目由 [DMIS-Lab](https:\u002F\u002Fdmis.korea.ac.kr) 完成。\n\n## 下载\n我们提供了五个版本的预训练权重。预训练基于 Google 提供的 [原始 BERT 代码](https:\u002F\u002Fgithub.com\u002Fgoogle-research\u002Fbert)，训练细节在我们的论文中有所描述。目前可用的预训练权重版本如下（[SHA1SUM](http:\u002F\u002Fnlp.dmis.korea.edu\u002Fprojects\u002Fbiobert-2020-checkpoints\u002Fsha1sum.html)）：\n\n* **[BioBERT-Base v1.2 (+ PubMed 1M)](https:\u002F\u002Fhuggingface.co\u002Fdmis-lab\u002Fbiobert-base-cased-v1.2)** - 训练方式与 BioBERT-Base v1.1 相同，但包含 LM 头，可用于探针任务（PyTorch 版本）\n* **[BioBERT-Large v1.1 (+ PubMed 1M)](http:\u002F\u002Fnlp.dmis.korea.edu\u002Fprojects\u002Fbiobert-2020-checkpoints\u002Fbiobert_large_v1.1_pubmed.tar.gz)** - 基于 BERT-large-Cased（自定义 3 万词汇表），[NER\u002FQA 结果](https:\u002F\u002Fgithub.com\u002Fdmis-lab\u002Fbiobert\u002Fwiki\u002FBioBERT-Large-Results)\n* **[BioBERT-Base v1.1 (+ PubMed 1M)](http:\u002F\u002Fnlp.dmis.korea.edu\u002Fprojects\u002Fbiobert-2020-checkpoints\u002Fbiobert_v1.1_pubmed.tar.gz)** - 基于 BERT-base-Cased（相同词汇表），[论文中的结果](http:\u002F\u002Fdoi.org\u002F10.1093\u002Fbioinformatics\u002Fbtz682)\n* **[BioBERT-Base v1.0 (+ PubMed 200K)](http:\u002F\u002Fnlp.dmis.korea.edu\u002Fprojects\u002Fbiobert-2020-checkpoints\u002Fbiobert_v1.0_pubmed.tar.gz)** - 基于 BERT-base-Cased（相同词汇表），[论文中的结果](http:\u002F\u002Fdoi.org\u002F10.1093\u002Fbioinformatics\u002Fbtz682)\n* **[BioBERT-Base v1.0 (+ PMC 270K)](http:\u002F\u002Fnlp.dmis.korea.edu\u002Fprojects\u002Fbiobert-2020-checkpoints\u002Fbiobert_v1.0_pmc.tar.gz)** - 基于 BERT-base-Cased（相同词汇表），[论文中的结果](http:\u002F\u002Fdoi.org\u002F10.1093\u002Fbioinformatics\u002Fbtz682)\n* **[BioBERT-Base v1.0 (+ PubMed 200K + PMC 270K)](http:\u002F\u002Fnlp.dmis.korea.edu\u002Fprojects\u002Fbiobert-2020-checkpoints\u002Fbiobert_v1.0_pubmed_pmc.tar.gz)** - 基于 BERT-base-Cased（相同词汇表），[论文中的结果](http:\u002F\u002Fdoi.org\u002F10.1093\u002Fbioinformatics\u002Fbtz682)\n\n请注意，v1.0 和 v1.1 基础模型（BioBERT-Base v1.0、BioBERT-Base v1.1）的性能已在论文中报告。\n此外，您也可以从 [这里](https:\u002F\u002Fgithub.com\u002Fnaver\u002Fbiobert-pretrained\u002Freleases) 下载预训练权重。\n\n## 安装\n以下部分介绍了基于 Tensorflow 1（Python 版本 ≤ 3.7）的 BioBERT 安装和微调流程。\n对于 PyTorch 版本的 BioBERT，请查看 [此仓库](https:\u002F\u002Fgithub.com\u002Fdmis-lab\u002Fbiobert-pytorch)。\n如果您不熟悉编程，只想使用 BioBERT 识别文本中的生物医学实体，请使用 [此工具](https:\u002F\u002Fbern.korea.ac.kr)，它利用 BioBERT 进行多类型 NER 和归一化。\n\n要微调 BioBERT，您需要下载 [BioBERT 的预训练权重](https:\u002F\u002Fgithub.com\u002Fnaver\u002Fbiobert-pretrained)。\n下载预训练权重后，使用 `requirements.txt` 按照以下步骤安装 BioBERT：\n```bash\n$ git clone https:\u002F\u002Fgithub.com\u002Fdmis-lab\u002Fbiobert.git\n$ cd biobert; pip install -r requirements.txt\n```\n请注意，本仓库基于 Google 的 [BERT 仓库](https:\u002F\u002Fgithub.com\u002Fgoogle-research\u002Fbert)。\n所有微调实验均在一台配备 12GB 内存的 TITAN Xp GPU 机器上进行。\n您可能需要安装 `java` 才能使用 BioASQ 的官方评估脚本。其他详细信息请参阅 `requirements.txt`。\n\n## 快速链接\n链接 | 详情\n------------- | -------------\n[BioBERT-PyTorch](https:\u002F\u002Fgithub.com\u002Fdmis-lab\u002Fbiobert-pytorch) | 基于 PyTorch 的 BioBERT 实现\n[BERN](http:\u002F\u002Fbern.korea.ac.kr) | 基于 Web 的生物医学 NER + 归一化，使用 BioBERT\n[BERN2](http:\u002F\u002Fbern2.korea.ac.kr) | BERN 的高级版本（基于 Web 的生物医学 NER），结合 BioLM 的 NER 和 PubMedBERT 的 NEN\n[covidAsk](https:\u002F\u002Fcovidask.korea.ac.kr) | 基于 BioBERT 的 COVID-19 实时问答模型\n[第 7 届 BioASQ](https:\u002F\u002Fgithub.com\u002Fdmis-lab\u002Fbioasq-biobert) | 第七届 BioASQ 挑战赛获奖模型的代码（事实型\u002F是\u002F否\u002F列表型问题）\n[论文](https:\u002F\u002Facademic.oup.com\u002Fbioinformatics\u002Fadvance-article\u002Fdoi\u002F10.1093\u002Fbioinformatics\u002Fbtz682\u002F5566506) | 论文链接，附 [BibTeX](https:\u002F\u002Fgithub.com\u002Fdmis-lab\u002Fbiobert#citation)（Bioinformatics）\n\n## 常见问题解答\n*   [如何使用 PyTorch 版本的 BioBERT？](https:\u002F\u002Fgithub.com\u002Fdmis-lab\u002Fbiobert-pytorch)\n*   [能否使用 BioBERT 获取词或句子嵌入？](https:\u002F\u002Fgithub.com\u002Fdmis-lab\u002Fbiobert\u002Fissues\u002F23)\n*   [如何在 SQuAD 数据集上预训练 QA 模型？](https:\u002F\u002Fgithub.com\u002Fdmis-lab\u002Fbiobert\u002Fissues\u002F10)\n*   [BioBERT 使用什么词汇表？](https:\u002F\u002Fgithub.com\u002Fnaver\u002Fbiobert-pretrained\u002Fissues\u002F1)\n\n## 数据集\n我们为每个任务提供了预处理后的基准数据集，如下所示：\n*   **[`命名实体识别`](http:\u002F\u002Fnlp.dmis.korea.edu\u002Fprojects\u002Fbiobert-2020-checkpoints\u002FNERdata.zip)**：（17.3 MB），8 个生物医学命名实体识别数据集\n*   **[`关系抽取`](http:\u002F\u002Fnlp.dmis.korea.edu\u002Fprojects\u002Fbiobert-2020-checkpoints\u002FREdata.zip)**：（2.5 MB），2 个生物医学关系抽取数据集\n*   **[`问答`](http:\u002F\u002Fnlp.dmis.korea.edu\u002Fprojects\u002Fbiobert-2020-checkpoints\u002FQA.zip)**：（5.23 MB），3 个生物医学问答任务数据集。\n\n您可以直接运行 `download.sh` 一次性下载所有数据集。\n```bash\n$ .\u002Fdownload.sh\n```\n这会将数据集下载到 `datasets` 文件夹下。由于其他数据集存在版权问题，我们仅提供其链接：**[`2010 i2b2\u002FVA`](https:\u002F\u002Fwww.i2b2.org\u002FNLP\u002FDataSets\u002FMain.php)**，**[`ChemProt`](http:\u002F\u002Fwww.biocreative.org\u002F)**。\n\n## 微调 BioBERT\n下载其中一个预训练权重后，将其解压到您希望的任何目录，并将其命名为 `$BIOBERT_DIR`。\n例如，当使用 BioBERT-Base v1.1 (+ PubMed 1M) 时，设置 `BIOBERT_DIR` 环境变量如下：\n```bash\n$ export BIOBERT_DIR=.\u002Fbiobert_v1.1_pubmed\n$ echo $BIOBERT_DIR\n>>> .\u002Fbiobert_v1.1_pubmed\n```\n\n### 命名实体识别 (NER)\n设 `$NER_DIR` 表示一个包含 `train_dev.tsv`、`train.tsv`、`devel.tsv` 和 `test.tsv` 的单个 NER 数据集文件夹。同时，将 `$OUTPUT_DIR` 设置为 NER 输出目录（包括训练好的模型、测试预测结果等）。例如，在 NCBI 疾病语料库上进行微调时：\n```bash\n$ export NER_DIR=.\u002Fdatasets\u002FNER\u002FNCBI-disease\n$ export OUTPUT_DIR=.\u002Fner_outputs\n```\n以下命令使用默认参数运行 NER 微调代码。\n```bash\n$ mkdir -p $OUTPUT_DIR\n$ python run_ner.py --do_train=true --do_eval=true --vocab_file=$BIOBERT_DIR\u002Fvocab.txt --bert_config_file=$BIOBERT_DIR\u002Fbert_config.json --init_checkpoint=$BIOBERT_DIR\u002Fmodel.ckpt-1000000 --num_train_epochs=10.0 --data_dir=$NER_DIR --output_dir=$OUTPUT_DIR\n```\n您可以根据需要修改这些参数。模型训练完成后，可以通过设置 `--do_train=false --do_predict=true` 来以推理模式对 `test.tsv` 进行评估。\n标记级别的评估结果将以标准输出格式打印出来。\n例如，NCBI 疾病数据集的评估结果如下：\n```\nINFO:tensorflow:***** 标记级别评估结果 *****\nINFO:tensorflow:  eval_f = 0.8972311\nINFO:tensorflow:  eval_precision = 0.88150835\nINFO:tensorflow:  eval_recall = 0.9136615\nINFO:tensorflow:  global_step = 2571\nINFO:tensorflow:  loss = 28.247158\n```\n（提示：您需要向上翻几行才能找到结果，它出现在 `INFO:tensorflow:**** 可训练变量 ****` 之前）\n\n请注意，此结果是标记级别的评估指标，而官方评估应使用实体级别的评估指标。`python run_ner.py` 的结果将被记录为 `$OUTPUT_DIR` 中的两个文件：`token_test.txt` 和 `label_test.txt`。使用 `.\u002Fbiocodes\u002Fner_detokenize.py` 可以得到词级别的预测文件。\n```bash\n$ python biocodes\u002Fner_detokenize.py --token_test_path=$OUTPUT_DIR\u002Ftoken_test.txt --label_test_path=$OUTPUT_DIR\u002Flabel_test.txt --answer_path=$NER_DIR\u002Ftest.tsv --output_dir=$OUTPUT_DIR\n```\n这将在 `$OUTPUT_DIR` 中生成 `NER_result_conll.txt` 文件。使用 `.\u002Fbiocodes\u002Fconlleval.pl` 可以获得实体级别的精确匹配评估结果。\n```bash\n$ perl biocodes\u002Fconlleval.pl \u003C $OUTPUT_DIR\u002FNER_result_conll.txt\n```\n\nNCBI 疾病语料库的实体级别结果如下：\n```\n处理了 24497 个标记，共 960 个短语；发现 983 个短语；正确 852 个。\n准确率：98.49%；精确率：86.67%；召回率：88.75%；FB1：87.70\n             其他：精确率：86.67%；召回率：88.75%；FB1：87.70  983\n``` \n请注意，这只是一个 NER 模型的示例运行。NER 模型的性能通常在超过 50 个 epoch 后才会收敛（建议学习率为 1e-5）。\n\n### 关系抽取 (RE)\n设 `$RE_DIR` 表示一个单个 RE 数据集的文件夹，`$TASK_NAME` 表示任务名称（有两个可选选项：{gad, euadr}），而 `$OUTPUT_DIR` 表示 RE 输出目录：\n```bash\n$ export RE_DIR=.\u002Fdatasets\u002FRE\u002FGAD\u002F1\n$ export TASK_NAME=gad\n$ export OUTPUT_DIR=.\u002Fre_outputs_1\n```\n以下命令使用默认参数运行 RE 微调代码。\n```bash\n$ python run_re.py --task_name=$TASK_NAME --do_train=true --do_eval=true --do_predict=true --vocab_file=$BIOBERT_DIR\u002Fvocab.txt --bert_config_file=$BIOBERT_DIR\u002Fbert_config.json --init_checkpoint=$BIOBERT_DIR\u002Fmodel.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\n```\n预测结果将保存到 `$OUTPUT_DIR` 中名为 `test_results.tsv` 的文件中。使用 `.\u002Fbiocodes\u002Fre_eval.py` 进行评估。\n请注意，CHEMPROT 数据集是一个多分类数据集，要评估 CHEMPROT 的结果，您需要在运行 `re_eval.py` 时添加 `--task=chemprot` 标志。\n```bash\n$ python .\u002Fbiocodes\u002Fre_eval.py --output_path=$OUTPUT_DIR\u002Ftest_results.tsv --answer_path=$RE_DIR\u002Ftest.tsv\n```\nGAD 数据集的评估结果如下：\n```\nF1 分数    : 83.74%\n召回率      : 90.75%\n精确率   : 77.74%\n特异性 : 71.15%\n```\n请注意，每次训练或测试新模型时，都需要更改 `$OUTPUT_DIR`。例如，由于大多数 RE 数据集采用 10 折交叉验证，因此您需要为每一折创建不同的输出目录来训练和测试模型（例如，`$ export OUTPUT_DIR=.\u002Fre_outputs_2`）。\n\n### 问答（QA）\n要使用 BioASQ 数据集，您需要在 [BioASQ 官网](http:\u002F\u002Fparticipants-area.bioasq.org\u002Fgeneral_information\u002Fgeneral_information_registration\u002F) 注册，以获得使用该数据集的授权。\n请将上述提供的预处理过的 BioASQ 数据集解压到目录 `$QA_DIR` 中。\n例如，将 QA 输出目录设置为 `$OUTPUT_DIR`：\n```bash\n$ export QA_DIR=.\u002Fdatasets\u002FQA\u002FBioASQ\n$ export OUTPUT_DIR=.\u002Fqa_outputs\n```\n名为 `BioASQ-*.json` 的文件用于模型的训练和测试，它们是 BioBERT 的预处理格式。\n请注意，我们已在 SQuAD 数据集上对模型进行了预训练，以达到最先进的性能（详见 [这里](https:\u002F\u002Fgithub.com\u002Fdmis-lab\u002Fbioasq-biobert) 获取在 SQuAD 上预训练的 BioBERT），您可能需要相应地调整 `$BIOBERT_DIR`。\n以下命令将以默认参数运行 QA 任务的微调代码：\n```bash\n$ python run_qa.py --do_train=True --do_predict=True --vocab_file=$BIOBERT_DIR\u002Fvocab.txt --bert_config_file=$BIOBERT_DIR\u002Fbert_config.json --init_checkpoint=$BIOBERT_DIR\u002Fmodel.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\u002FBioASQ-train-factoid-4b.json --predict_file=$QA_DIR\u002FBioASQ-test-factoid-4b-1.json --output_dir=$OUTPUT_DIR\n```\n预测结果将保存为 `$OUTPUT_DIR` 下的 `predictions.json` 和 `nbest_predictions.json` 文件。\n运行 `.\u002Fbiocodes\u002Ftransform_nbset2bioasqform.py` 将 `nbest_predictions.json` 转换为 BioASQ JSON 格式，该格式将用于官方评估。\n```bash\n$ python .\u002Fbiocodes\u002Ftransform_nbset2bioasqform.py --nbest_path=$OUTPUT_DIR\u002Fnbest_predictions.json --output_path=$OUTPUT_DIR\n```\n这将在 `$OUTPUT_DIR` 中生成 `BioASQform_BioASQ-answer.json`。\n从 BioASQ 的 GitHub 仓库克隆 **[`evaluation code`](https:\u002F\u002Fgithub.com\u002FBioASQ\u002FEvaluation-Measures)**，并在 `Evaluation-Measures` 目录下运行评估代码。请注意，`-e` 参数应始终设置为 5。\n```bash\n$ git clone https:\u002F\u002Fgithub.com\u002FBioASQ\u002FEvaluation-Measures.git\n$ cd Evaluation-Measures\n$ java -Xmx10G -cp $CLASSPATH:.\u002Fflat\u002FBioASQEvaluation\u002Fdist\u002FBioASQEvaluation.jar evaluation.EvaluatorTask1b -phaseB -e 5 ..\u002F$QA_DIR\u002F4B1_golden.json ..\u002F$OUTPUT_DIR\u002FBioASQform_BioASQ-answer.json\n```\n由于我们的模型仅针对事实型问题，结果将如下所示：\n```\n0.0 0.3076923076923077 0.5384615384615384 0.394017094017094 0.0 0.0 0.0 0.0 0.0 0.0\n```\n其中，第二、第三和第四位数字分别为事实型问题的 SAcc、LAcc 和 MRR。\n对于列表型和“是\u002F否”型问题，请参阅我们的仓库中关于 [BioBERT 在第七届 BioASQ 挑战赛中的应用](https:\u002F\u002Fgithub.com\u002Fdmis-lab\u002Fbioasq-biobert) 的内容。\n\n## 许可与免责声明\n详情请参阅 LICENSE 文件。下载数据即表示您同意我们的免责声明。\n\n## 引用\n```bibtex\n@article{lee2020biobert,\n  title={BioBERT: a pre-trained biomedical language representation model for biomedical text mining},\n  author={Lee, Jinhyuk and Yoon, Wonjin and Kim, Sungdong and Kim, Donghyeon and Kim, Sunkyu and So, Chan Ho and Kang, Jaewoo},\n  journal={Bioinformatics},\n  volume={36},\n  number={4},\n  pages={1234--1240},\n  year={2020},\n  publisher={Oxford University Press}\n}\n```\n\n## 联系方式\n如在使用 BioBERT 时遇到任何问题或需要帮助，请提交 GitHub 问题。有关 BioBERT 的沟通事宜，请联系 Jinhyuk Lee (`lee.jnhk (at) gmail.com`) 或 Wonjin Yoon (`wonjin.info (at) gmail.com`)。","# BioBERT 快速上手指南\n\nBioBERT 是专为生物医学文本挖掘任务（如命名实体识别、关系抽取、问答系统等）设计的预训练语言模型。本指南基于 TensorFlow 1 版本，帮助开发者快速完成环境搭建与模型微调。\n\n## 1. 环境准备\n\n在开始之前，请确保您的开发环境满足以下要求：\n\n*   **操作系统**: Linux 或 macOS (Windows 需使用 WSL 或 Docker)\n*   **Python 版本**: \u003C= 3.7 (官方代码基于 TensorFlow 1.x)\n*   **硬件要求**: 建议配备 NVIDIA GPU (显存 >= 12GB，如 TITAN Xp)，单卡即可运行大部分微调实验。\n*   **前置依赖**:\n    *   Git\n    *   Java (可选，仅在使用 BioASQ 官方评估脚本时需要)\n    *   Perl (用于实体级评估脚本 `conlleval.pl`)\n\n> **注意**：如果您更习惯使用 PyTorch，请参考 [BioBERT-PyTorch](https:\u002F\u002Fgithub.com\u002Fdmis-lab\u002Fbiobert-pytorch) 仓库。若仅需直接识别生物医学实体而无需编码，可使用在线工具 [BERN](http:\u002F\u002Fbern.korea.ac.kr)。\n\n## 2. 安装步骤\n\n### 2.1 克隆代码库\n首先从 GitHub 克隆官方仓库并进入目录：\n\n```bash\ngit clone https:\u002F\u002Fgithub.com\u002Fdmis-lab\u002Fbiobert.git\ncd biobert\n```\n\n### 2.2 安装 Python 依赖\n使用提供的 `requirements.txt` 安装所需库：\n\n```bash\npip install -r requirements.txt\n```\n\n### 2.3 下载预训练权重\n选择适合您任务的预训练模型版本并下载。以下以 **BioBERT-Base v1.1 (+ PubMed 1M)** 为例：\n\n```bash\n# 创建目录并下载\nmkdir biobert_v1.1_pubmed\ncd biobert_v1.1_pubmed\nwget http:\u002F\u002Fnlp.dmis.korea.edu\u002Fprojects\u002Fbiobert-2020-checkpoints\u002Fbiobert_v1.1_pubmed.tar.gz\ntar -xzf biobert_v1.1_pubmed.tar.gz\ncd ..\n```\n\n设置环境变量指向模型目录：\n\n```bash\nexport BIOBERT_DIR=.\u002Fbiobert_v1.1_pubmed\necho $BIOBERT_DIR\n```\n\n### 2.4 下载数据集 (可选)\n如果需要运行官方示例，可以一键下载预处理好的基准数据集：\n\n```bash\n.\u002Fdownload.sh\n```\n*注：部分受版权保护的数据集（如 2010 i2b2\u002FVA, ChemProt）需自行前往官网下载。*\n\n## 3. 基本使用\n\n以下展示最核心的 **命名实体识别 (NER)** 微调流程。其他任务（关系抽取、问答）逻辑类似。\n\n### 3.1 配置路径\n假设您使用 NCBI 疾病数据集，设置数据目录和输出目录：\n\n```bash\nexport NER_DIR=.\u002Fdatasets\u002FNER\u002FNCBI-disease\nexport OUTPUT_DIR=.\u002Fner_outputs\nmkdir -p $OUTPUT_DIR\n```\n\n### 3.2 执行微调训练\n运行微调脚本。以下命令使用默认参数进行训练和评估：\n\n```bash\npython run_ner.py \\\n  --do_train=true \\\n  --do_eval=true \\\n  --vocab_file=$BIOBERT_DIR\u002Fvocab.txt \\\n  --bert_config_file=$BIOBERT_DIR\u002Fbert_config.json \\\n  --init_checkpoint=$BIOBERT_DIR\u002Fmodel.ckpt-1000000 \\\n  --num_train_epochs=10.0 \\\n  --data_dir=$NER_DIR \\\n  --output_dir=$OUTPUT_DIR\n```\n\n*提示：NER 模型通常在 50 个 epoch 以上收敛，建议学习率设为 `1e-5`。*\n\n### 3.3 结果评估\n训练完成后，脚本会输出 Token 级别的评估结果。若要获得标准的 **实体级别 (Entity-level)** 评估结果，需执行去令牌化并计算：\n\n1.  **生成 CoNLL 格式结果文件**：\n    ```bash\n    python biocodes\u002Fner_detokenize.py \\\n      --token_test_path=$OUTPUT_DIR\u002Ftoken_test.txt \\\n      --label_test_path=$OUTPUT_DIR\u002Flabel_test.txt \\\n      --answer_path=$NER_DIR\u002Ftest.tsv \\\n      --output_dir=$OUTPUT_DIR\n    ```\n\n2.  **计算精确匹配指标**：\n    ```bash\n    perl biocodes\u002Fconlleval.pl \u003C $OUTPUT_DIR\u002FNER_result_conll.txt\n    ```\n\n输出示例：\n```text\nprocessed 24497 tokens with 960 phrases; found: 983 phrases; correct: 852.\naccuracy:  98.49%; precision:  86.67%; recall:  88.75%; FB1:  87.70\n```\n\n### 3.4 推理模式\n若只需对测试集进行预测而不重新训练，将参数调整为：\n\n```bash\npython run_ner.py \\\n  --do_train=false \\\n  --do_predict=true \\\n  --vocab_file=$BIOBERT_DIR\u002Fvocab.txt \\\n  --bert_config_file=$BIOBERT_DIR\u002Fbert_config.json \\\n  --init_checkpoint=$BIOBERT_DIR\u002Fmodel.ckpt-1000000 \\\n  --data_dir=$NER_DIR \\\n  --output_dir=$OUTPUT_DIR\n```","某制药公司的药物研发部门正试图从海量医学文献中自动提取“药物 - 副作用”关联关系，以加速新药安全性评估。\n\n### 没有 biobert 时\n- **术语识别率低**：通用 NLP 模型无法准确理解\"myocardial infarction\"（心肌梗死）等专业术语，常将其错误拆解或忽略。\n- **上下文歧义严重**：模型难以区分文中提到的药物是用于治疗疾病还是导致了疾病，导致关系抽取错误频发。\n- **人工标注成本高**：由于自动化效果差，团队需雇佣大量生物医学专家手动清洗数据，耗时数周且成本高昂。\n- **泛化能力弱**：面对新出现的病毒名称或基因突变缩写，旧模型完全无法识别，需重新训练整个底层架构。\n\n### 使用 biobert 后\n- **专业实体精准捕获**：biobert 基于 PubMed 和 PMC 海量语料预训练，能直接高精度识别基因、蛋白质及复杂疾病名称。\n- **语义关系深度理解**：利用生物医学领域的上下文感知能力，biobert 能准确判断药物与副作用之间的因果方向，大幅减少误判。\n- **微调效率显著提升**：研发团队只需少量标注数据对 biobert 进行微调，即可在几天内部署高精度提取管道，节省 90% 以上人力。\n- **前沿知识即时适应**：得益于广泛的领域预训练，biobert 对未见过的专业缩写和新术语具有极强的推断和泛化能力。\n\nbiobert 通过将通用语言模型转化为生物医学专家，将原本需要数周的人工文献挖掘工作缩短至小时级，极大提升了医药研发的决策效率。","https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fdmis-lab_biobert_137d5c55.png","dmis-lab","DMIS Laboratory - Korea University","https:\u002F\u002Foss.gittoolsai.com\u002Favatars\u002Fdmis-lab_62099db4.png","Data Mining & Information Systems Laboratory @ Korea University",null,"https:\u002F\u002Fdmis.korea.ac.kr","https:\u002F\u002Fgithub.com\u002Fdmis-lab",[85,89,93],{"name":86,"color":87,"percentage":88},"Python","#3572A5",95.6,{"name":90,"color":91,"percentage":92},"Perl","#0298c3",4.2,{"name":94,"color":95,"percentage":96},"Shell","#89e051",0.2,2195,477,"2026-04-15T18:41:50","NOASSERTION","未说明","必需，实验基于单张 TITAN Xp GPU (12GB 显存) 进行","12GB+ (基于实验环境描述)",{"notes":105,"python":106,"dependencies":107},"该仓库主要基于 TensorFlow 1 版本；若需使用 PyTorch 版本，请参考官方提供的 biobert-pytorch 仓库。运行部分评估脚本（如 BioASQ）需要安装 Java 环境。预训练权重需单独下载。","\u003C= 3.7",[108,109,110],"TensorFlow 1.x","BERT (Google 原版代码库)","Java (用于 BioASQ 评估脚本)",[15,54],"2026-03-27T02:49:30.150509","2026-04-18T00:45:31.090766",[115,120,125,130,135,140],{"id":116,"question_zh":117,"answer_zh":118,"source_url":119},38270,"如何使用 BioBERT 获取句子或单词的嵌入向量（Embedding Vector）？","虽然原始评论中未提供直接代码，但针对大规模数据下的幻觉问题，建议采用级联或多层级的小模型（cascade\u002Fmulti-level small models）来处理。对于特定领域（如小鼠知识），构建垂直领域的嵌入模型可能比通用模型更有效。用户需检查输入文本的分块大小（chunk size）以确保处理正确。","https:\u002F\u002Fgithub.com\u002Fdmis-lab\u002Fbiobert\u002Fissues\u002F23",{"id":121,"question_zh":122,"answer_zh":123,"source_url":124},38271,"在微调 NER 任务时遇到 'Dimension size must be evenly divisible' 错误或标签长度不匹配错误怎么办？","这通常是因为数据集预处理不当导致的。需要对数据集进行正确的预处理，确保标签长度与 BERT 预测长度一致。可以使用 `standoff2conll` 等工具将 standoff 格式转换为 CoNLL 格式，或者检查是否对 token 进行了正确的预处理。维护者指出预处理 token 是解决此问题的关键。","https:\u002F\u002Fgithub.com\u002Fdmis-lab\u002Fbiobert\u002Fissues\u002F12",{"id":126,"question_zh":127,"answer_zh":128,"source_url":129},38272,"如何仅使用预训练模型进行 NER 预测而不进行训练或评估？","运行预测时，如果未设置 `--do_train=true` 或 `--do_eval=true`，可能会因缺少 `label2id.pkl` 文件而失败。解决方法是：1. 复制一个已预处理数据集（如 s800）中的 `devel.tsv` 到当前数据目录并设置 `--do_eval=true`；2. 确保 `test.tsv` 格式正确（每行包含单词或句子，而非仅句子），否则会导致 'Num examples = 0' 的错误；3. 注意 `token_test.txt` 文件通常在微调过程中生成，若丢失需从备份恢复或重新运行生成该文件的步骤。","https:\u002F\u002Fgithub.com\u002Fdmis-lab\u002Fbiobert\u002Fissues\u002F50",{"id":131,"question_zh":132,"answer_zh":133,"source_url":134},38273,"在 BioASQ 数据集上评估 BioBERT 模型时结果极低（接近 0），可能的原因是什么？","这很可能是因为 BioASQ 数据集的预处理机制发生了变更，导致原有代码无法正常工作。建议检查所使用的 BioASQ 数据集版本，并确认是否使用了适配新预处理机制的代码。维护者曾通过邮件分享过扩展后的代码和原始文件，遇到此类问题可尝试寻找更新后的预处理脚本或联系维护者获取适配文件。","https:\u002F\u002Fgithub.com\u002Fdmis-lab\u002Fbiobert\u002Fissues\u002F58",{"id":136,"question_zh":137,"answer_zh":138,"source_url":139},38274,"在关系抽取任务的数据集（如 train.tsv）中，标签列的数字（例如 0）代表什么含义？","在关系抽取任务的 TSV 文件中，标签列的数字通常代表实体间关系的类别 ID。例如，'0' 可能表示“无关系”或特定的关系类型（具体取决于数据集定义）。数据格式通常为：第一列是索引，第二列是包含实体标记（如 @GENE$, @DISEASE$）的句子，第三列是关系标签。需参考具体数据集的文档来确认每个数字对应的具体关系类型。","https:\u002F\u002Fgithub.com\u002Fdmis-lab\u002Fbiobert\u002Fissues\u002F133",{"id":141,"question_zh":142,"answer_zh":143,"source_url":129},38275,"运行 NER 预测时报错 'FileNotFoundError: No such file or directory: .\u002Ftmp\u002Ftoken_test.txt' 如何解决？","该错误表明程序找不到 `token_test.txt` 文件。此文件通常在微调（fine-tuning）过程中生成。如果在仅进行预测的模式下运行，该文件可能不存在或已被删除。解决方法包括：1. 先运行一次带有 `--do_eval` 或 `--do_train` 的流程以生成该文件；2. 从之前的备份中恢复该文件；3. 检查 `test.tsv` 文件格式是否正确，因为格式错误可能导致程序未能正确生成中间文件。",[]]