MedCalc-Bench 是第一个医学计算数据集,用于衡量法学硕士作为临床计算器的能力。数据集中的每个实例都包含患者注释、要求计算特定临床值的问题、最终答案值以及解释如何获得最终答案的分步解决方案。我们的数据集涵盖 55 种不同的计算任务,这些任务要么是基于规则的计算,要么是基于方程的计算。该数据集包含 10,053 个实例的训练数据集和 1,047 个实例的测试数据集。
总而言之,我们希望我们的数据集和基准能够提高医疗环境中法学硕士的计算推理技能。
我们的预印本可在以下网址获取:https://arxiv.org/abs/2406.12036。
要下载 MedCalc-Bench 评估数据集的 CSV,请下载此存储库的dataset
文件夹内的文件test_data.csv
。您还可以从 HuggingFace 下载测试集拆分:https://huggingface.co/datasets/ncbi/MedCalc-Bench。
除了 1,047 个评估实例之外,我们还提供了包含 10,053 个实例的训练数据集,可用于微调开源 LLM(请参阅附录 C 部分)。训练数据可以在dataset/train_data.csv.zip
文件中找到,可以解压得到train_data.csv
。该训练数据集也可以在 HuggingFace 链接的训练分割中找到。
数据集中的每个实例包含以下信息:
要安装该项目所需的所有软件包,请运行以下命令: conda env create -f environment.yml
。此命令将创建medcalc-bench
conda 环境。为了运行 OpenAI 模型,您需要在此 conda 环境中提供 OpenAI 密钥。您可以通过在medcalc-bench
环境中执行以下命令来完成此操作: export OPENAI_API_KEY = YOUR_API_KEY
,其中 YOUR_API_KEY 是您的 OpenAI API 密钥。您还需要通过运行以下命令在此环境中提供 HuggingFace 令牌: export HUGGINGFACE_TOKEN=your_hugging_face_token
,其中your_hugging_face_token
是您的 HuggingFace 令牌。
为了从论文中复制表 2,首先将cd
放入evaluation
文件夹中。然后,请运行以下命令: python run.py --model <model_name> and --prompt <prompt_style>
。
--model
的选项如下:
--prompt
的选项如下:
由此,您将获得一个输出每个问题状态的 jsonl 文件:执行run.py
时,结果将保存在名为<model>_<prompt>.jsonl
的文件中。该文件可以在outputs
文件夹中找到。
jsonl 中的每个实例都将具有以下与其关联的元数据:
{
"Row Number": Row index of the item,
"Calculator Name": Name of calculation task,
"Calculator ID": ID of the calculator,
"Category": type of calculation (risk, severity, diagnosis for rule-based calculators and lab, risk, physical, date, dosage for equation-based calculators),
"Note ID": ID of the note taken directly from MedCalc-Bench,
"Patient Note": Paragraph which is the patient note taken directly from MedCalc-Bench,
"Question": Question asking for a specific medical value to be computed,
"LLM Answer": Final Answer Value from LLM,
"LLM Explanation": Step-by-Step explanation by LLM,
"Ground Truth Answer": Ground truth answer value,
"Ground Truth Explanation": Step-by-step ground truth explanation,
"Result": "Correct" or "Incorrect"
}
此外,我们在标题为results_<model>_<prompt_style>.json
json 中提供每个子类别的平均准确度和标准偏差百分比。所有 1,047 个实例的累积精度和标准差可以在 JSON 的“overall”键下找到。该文件可以在results
文件夹中找到。
除了主论文中表 2 的结果之外,我们还提示法学硕士编写代码来执行算术运算,而不是让法学硕士自己执行此操作。结果可以在附录 D 中找到。由于计算有限,我们只运行了 GPT-3.5 和 GPT-4 的结果。要检查提示并在此设置下运行,请检查evaluation
文件夹中的generate_code_prompt.py
文件。
要运行此代码,只需cd
进入evaluations
文件夹并运行以下命令: python generate_code_prompt.py --gpt <gpt_model>
。 <gpt_model>
的选项是4
(运行 GPT-4)或35
(运行 GPT-3.5-turbo-16k)。结果将保存在outputs
文件夹中名为code_exec_{model_name}.jsonl
的 jsonl 文件中。请注意,在这种情况下,如果您选择使用 GPT-4 运行,则model_name
将为gpt_4
。否则,如果您选择使用 GPT-3.5-turbo 运行,则model_name
将为gpt_35_16k
。
代码解释器结果的 jsonl 文件中每个实例的元数据与上一节中提供的实例信息相同。唯一的区别是我们存储了用户和助理之间的LLM聊天历史记录,并且有一个“LLM聊天历史记录”键而不是“LLM解释”键。此外,子类别和总体准确性存储在名为results_<model_name>_code_augmented.json
的 JSON 文件中。此 JSON 位于results
文件夹中。
这项研究得到了 NIH 校内研究计划、国家医学图书馆的支持。此外,Soren Dunn 的贡献是使用 Delta 先进计算和数据资源完成的,该资源得到国家科学基金会(奖励 OAC 电话:2005572)和伊利诺伊州的支持。 Delta 是伊利诺伊大学厄巴纳-香槟分校 (UIUC) 及其国家超级计算应用中心 (NCSA) 的共同努力。
为了在 MedCalc-Bench 中整理患者笔记,我们仅使用 PubMed Central 中已发表的病例报告文章中公开的患者笔记以及临床医生生成的匿名患者插图。因此,本研究中没有透露可识别的个人健康信息。虽然 MedCalc-Bench 旨在评估法学硕士的医学计算能力,但应该注意的是,该数据集不适用于未经临床专业人员审查和监督的直接诊断用途或医疗决策。个人不应仅仅根据我们的研究来改变他们的健康行为。
如第 1 节所述,医疗计算器在临床环境中常用。随着人们对将 LLM 用于特定领域应用程序的兴趣迅速增长,医疗保健从业者可能会直接提示 ChatGPT 等聊天机器人执行医疗计算任务。然而,法学硕士在这些任务中的能力目前尚不清楚。由于医疗保健是一个高风险领域,错误的医学计算可能会导致严重后果,包括误诊、不适当的治疗计划以及对患者的潜在伤害,因此彻底评估法学硕士在医学计算方面的表现至关重要。令人惊讶的是,我们的 MedCalc-Bench 数据集的评估结果表明,所有研究的法学硕士都在医学计算任务中陷入困境。最强大的模型 GPT-4 通过一次性学习和思维链提示仅达到 50% 的准确率。因此,我们的研究表明,目前的法学硕士尚未准备好用于医学计算。应该指出的是,虽然 MedCalc-Bench 上的高分并不能保证在医学计算任务中表现出色,但在此数据集中的失败表明根本不能考虑将模型用于此类目的。换句话说,我们认为通过 MedCalc-Bench 应该是模型用于医学计算的必要(但不是充分)条件
对于此数据集的任何更改(即添加新注释或计算器),我们将更新 README 说明、test_set.csv 和 train_set.csv。我们仍将这些数据集的旧版本保留在archive/
文件夹中。我们还将更新 HuggingFace 的训练集和测试集。
该工具显示了 NCBI/NLM 计算生物学分部进行的研究结果。本网站产生的信息不用于未经临床专业人员审查和监督的直接诊断用途或医疗决策。个人不应仅根据本网站提供的信息来改变其健康行为。 NIH 不会独立验证该工具生成的信息的有效性或实用性。如果您对本网站上提供的信息有疑问,请咨询医疗保健专业人员。我们提供了有关 NCBI 免责声明政策的更多信息。
根据计算器的不同,我们的数据集包含的注释要么是根据 Python 中实现的基于模板的函数设计的,由临床医生手写,要么取自我们的数据集 Open-Patients。
Open-Patients 是来自三个不同来源的 18 万患者笔记的聚合数据集。我们有权使用所有三个来源的数据集。第一个来源是来自 MedQA 的 USMLE 问题,该问题是根据 MIT 许可证发布的。我们数据集的第二个来源是 Trec Clinical Decision Support 和 Trec Clinical Trial,它们可以重新分发,因为它们都是向公众发布的政府拥有的数据集。最后,PMC-Patients 是在 CC-BY-SA 4.0 许可证下发布的,因此我们有权将 PMC-Patients 合并到 Open-Patients 和 MedCalc-Bench 中,但数据集必须在相同的许可证下发布。因此,我们的笔记来源 Open-Patients 以及从中整理的数据集 MedCalc-Bench 均在 CC-BY-SA 4.0 许可下发布。
基于许可规则的合理性,Open-Patents 和 MedCalc-Bench 均遵守 CC-BY-SA 4.0 许可,但本文作者将承担侵权的所有责任。
@misc { khandekar2024medcalcbench ,
title = { MedCalc-Bench: Evaluating Large Language Models for Medical Calculations } ,
author = { Nikhil Khandekar and Qiao Jin and Guangzhi Xiong and Soren Dunn and Serina S Applebaum and Zain Anwar and Maame Sarfo-Gyamfi and Conrad W Safranek and Abid A Anwar and Andrew Zhang and Aidan Gilson and Maxwell B Singer and Amisha Dave and Andrew Taylor and Aidong Zhang and Qingyu Chen and Zhiyong Lu } ,
year = { 2024 } ,
eprint = { 2406.12036 } ,
archivePrefix = { arXiv } ,
primaryClass = { id='cs.CL' full_name='Computation and Language' is_active=True alt_name='cmp-lg' in_archive='cs' is_general=False description='Covers natural language processing. Roughly includes material in ACM Subject Class I.2.7. Note that work on artificial languages (programming languages, logics, formal systems) that does not explicitly address natural-language issues broadly construed (natural-language processing, computational linguistics, speech, text retrieval, etc.) is not appropriate for this area.' }
}