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_output
- get_next_sentence_output
- optimization.create_optimizer
- metric_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.ipynb
- Predicting_PC_RNN_BERT_pytorch_using_FT_Med-BERT.ipynb
- Create_pretrainingEHR_dataFTv1.py
 
但是,pretrain的代码会报错,fine-tunning的没有给预训练模型。
所以还是尝试一下自己用bert模型做embedding。
参考资料:
详细内容记录在下一篇BERT中。
