EHRSQL
收藏EHRSQL: A Practical Text-to-SQL Benchmark for Electronic Health Records
概述
EHRSQL是一个大规模、高质量的数据集,旨在针对来自MIMIC-III和eICU的电子健康记录进行文本到SQL的问答。该数据集包括从222名医院工作人员(如医生、护士、保险审查员和健康记录团队)收集的问题。它可以用于测试问答模型的三个方面:生成医院工作场所中广泛使用的SQL查询、理解各种类型的时间表达(绝对、相对或两者)以及在模型预测不自信时拒绝回答(查询数据库)的能力。
数据集详情
问题和SQL
train.json文件包含以下字段:
db_id: 数据库IDquestion: 问题的改写版本template: 原始模板问题query: 对应的SQL查询value: 从数据库中采样的值q_tag: 问题模板t_tag: 采样的时间模板o_tag: 采样的操作值tag: 问题模板与时间模板和操作值的组合department: 问题收集的医院部门importance: 问题在医院中的重要性(高、中、低或n/a)para_type: 改写的来源(机器或人工)is_impossible: 问题是否可回答split: 数据分割(训练、验证或测试)id: 每个数据实例的唯一ID
valid.json中,可回答实例与train.json结构相同,不可回答实例字段较少。
表格
tables.json包含以下信息:
db_id: 数据库IDtable_names_original: 数据库中的原始表名table_names: 清理和规范化的表名column_names_original: 数据库中的原始列名column_names: 清理和规范化的列名column_types: 列的数据类型foreign_keys: 数据库中的外键primary_keys: 数据库中的主键
数据库
访问数据库需要PhysioNet的认证访问权限,下载链接如下:
下载后,运行以下代码进行数据库预处理: bash cd preprocess python3 preprocess_db.py --data_dir <path_to_mimic_iii_csv_files> --db_name mimic_iii --deid --timeshift --current_time "2105-12-31 23:59:00" --start_year 2100 --time_span 5 --cur_patient_ratio 0.1
T5 SQL生成
训练T5-base模型: bash python T5/main.py --config T5/config/ehrsql/training/ehrsql_mimic3_t5_base.yaml --CUDA_VISIBLE_DEVICES <gpu_id>
生成带有拒绝回答的SQL查询: bash python T5/main.py --config T5/config/ehrsql/eval/ehrsql_mimic3_t5_base__mimic3_valid.yaml --output_file prediction_raw.json --CUDA_VISIBLE_DEVICES <gpu_id> python T5/abstain_with_entropy.py --inference_result_path outputs/eval_ehrsql_mimic3_t5_base__mimic3_valid --input_file prediction_raw.json --output_file prediction.json --threshold 0.14923561
评估
评估生成的SQL查询: bash python evaluate.py --db_path ./dataset/ehrsql/mimic_iii/mimic_iii.sqlite --data_file dataset/ehrsql/mimic_iii/valid.json --pred_file ./outputs/eval_ehrsql_mimic3_t5_base__mimic3_valid/prediction.json




