Korean MRC (KorQuAD) with KoBERT
tokenization_kobert.py
에서 KoBertTokenizer
를 임포트해야 합니다.from transformers import BertModel
from tokenization_kobert import KoBertTokenizer
model = BertModel.from_pretrained('monologg/kobert')
tokenizer = KoBertTokenizer.from_pretrained('monologg/kobert')
코드의 경우 Huggingface Transformers의 example 코드를 가져와 사용하였습니다.
$ python3 run_squad.py --model_type kobert \
--model_name_or_path monologg/kobert \
--output_dir models \
--data_dir data \
--train_file KorQuAD_v1.0_train.json \
--predict_file KorQuAD_v1.0_dev.json \
--evaluate_during_training \
--per_gpu_train_batch_size 8 \
--per_gpu_eval_batch_size 8 \
--max_seq_length 512 \
--logging_steps 4000 \
--save_steps 4000 \
--do_train
train 중간에 진행되는 dev set evaluation에서 official EM/F1 score도 보여주게 하였습니다.
DistilKoBert의 경우 argument를 아래와 같이 바꿔주면 됩니다
$ python3 evaluate_v1_0.py {$data_dir}/KorQuAD_v1.0_dev.json {$output_dir}/predictions_.json
Exact Match (%) | F1 Score (%) | |
---|---|---|
KoBERT | 52.81 | 80.27 |
DistilKoBERT | 54.12 | 77.80 |
Bert-multilingual | 70.42 | 90.25 |
DistilBert-multilingual | 64.32 | 84.78 |