Med BERT
条评论最近准备使用Med-BERT对结构化EHR数据做Embedding。
在论文《Med-BERT》中的引用为pytorch_ehr。
Med-BERT主要还是修改了BERT。包含两个文件夹Fine-Tunning Tutorials和Pretraining Code。
- Pretraining Code:
preprocess_pretrain_data.py: 处理.csv中的患者数据。主要是提取了患者就诊的时间及间隔,疾病代码,并编码。- input:
data_file,vocab,output_file,data_size - output:
.types: vocab.ptencs: (pts_ls) patients encounter # [住院时间,下一次住院间隔时间,ICD代码,编码后的ICD代码].encs: tokenized encounter data and labels # 代码中没有看到.bencs: (pts_sls)tokeninzed encounter data and labels, with other segments # [患者ID,住院时间,下一次住院时间,编码后的ICD代码,就医次数]
- input:
create_BERTpretrain_EHRfeatures.py:对应于BERT中的create_pretraining_data.py,主要是将.bencs中的代码序列写为TF格式,并构建MASK。- input:
.bencs.train,output_file,.types - function:
write_EHRinstance_to_example_file:- input:
train_data(.bencs), max_seq_length, max_predictions_per_seq, masked_lm_prob, vocab, output_files, rng - output:
features(input_ids, input_mask, segment_ids, masked_lm_positions, masked_lm_ids, maked_lm_weights, next_sentence_labels)
- input:
create_masked_EHR_predictions- input:
input_seq(diag_lm), masked_lm_prob, max_predictions_pre_seq, vocab, rng - output:
input_ids(masked_token), masked_lm_positions, masked_lm_ids
- input:
- input:
run_EHRpretraining.py: 对应于run_pretraining.py,采用BERT预训练。- input:
bert_config_file,input_file,output_dir, etc. - functions:
model_fn_builder:- input:
bert_config, init_checkpoint, learning_rate, num_train_steps, etc) model_fn:model = modeling.BertModel()get_masked_lm_outputget_next_sentence_outputoptimization.create_optimizermetric_fn
- input:
input_fn_builder:- do_train:
is_training=True - do_eval:
is_training=False
- do_train:
- input:
Fine-Tunning Tutorials: 主要由pytorch实现。Predicting_DHF_MED_BERT_LR.ipynbPredicting_PC_RNN_BERT_pytorch_using_FT_Med-BERT.ipynbCreate_pretrainingEHR_dataFTv1.py
但是,pretrain的代码会报错,fine-tunning的没有给预训练模型。
所以还是尝试一下自己用bert模型做embedding。
参考资料:
详细内容记录在下一篇BERT中。
