Official implementation from Stanford University
- Title: Clinical Text Summarization: Adapting Large Language Models Can Outperform Human Experts
- Authors: Dave Van Veen, Cara Van Uden, Louis Blankemeier, Jean-Benoit Delbrouck, Asad Aali, Christian Bluethgen, Anuj Pareek, Malgorzata Polacin, Eduardo Pontes Reis, Anna Seehofnerova Nidhi Rohatgi, Poonam Hosamani, William Collins, Neera Ahuja, Curtis P. Langlotz, Jason Hom, Sergios Gatidis, John Pauly, Akshay S. Chaudhari
- Contact: {vanveen} [at] stanford [dot] edu
We use six pre-existing open-source datasets which are publicly accessible at the sources cited in our manuscript. Additionally, for datasets which do not require PhysioNet access, we provide our versions in data/
:
opi
: Open-i (radiology reports)chq
: MeQSum (patient/consumer health questions)d2n
: ACI-Bench (dialogue)
In addition to proprietary models GPT-3.5 and GPT-4, we adapt the following open-source models available from HuggingFace:
- Use these commands to set up a conda environment:
conda env create -f env.yml
conda activate clin-summ
- In
src/constants.py
, create your own project directoryDIR_PROJECT
outside this repository which will contain input data, trained models, and generated output. - Move input data from this repo to
DIR_PROJECT
, i.e.mv data/ DIR_PROJECT
- (optional) To add your own dataset, follow the format of example datasets
opi
,chq
, andd2n
inDIR_PROJECT/data/
Below is a description of relevant scripts:
./main.sh
: Fine-tune open-source models, query, and compute metricspython api/main.py
: Query OpenAI models and compute metrics- first enter information for your Azure deployment in
src/constants.py
viaRESOURCE
andAPI_KEY
- first enter information for your Azure deployment in
python src/gen_faiss_idx.py
: (new datasets only) Determine set of nearest neighbors training examples for each sample. Alternatively you can sample training examples at random.src/UMLSScorer.py
: Class definition for the MEDCON metric. To implement, follow these steps:- Acquire approval for a UMLS license
- Follow the UMLS download instructions
- Adapt the provided script,
src/UMLSScorer.py
- Call using the following two lines:
scorer = UMLSScorer()
medcon_score = scorer(string1, string2)
@misc{vanveen2023clinical,
title={Clinical Text Summarization: Adapting Large Language Models Can Outperform Human Experts},
author={Dave Van Veen and Cara Van Uden and Louis Blankemeier and Jean-Benoit Delbrouck and Asad Aali and Christian Bluethgen and Anuj Pareek and Malgorzata Polacin and William Collins and Neera Ahuja and Curtis P. Langlotz and Jason Hom and Sergios Gatidis and John Pauly and Akshay S. Chaudhari},
year={2023},
eprint={2309.07430},
archivePrefix={arXiv},
primaryClass={cs.CL}
}