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中。