/KoBERT-NER

NER Task with KoBERT (with Naver NLP Challenge dataset)

Primary LanguagePythonApache License 2.0Apache-2.0

KoBERT-NER

  • KoBERT를 이용한 한국어 Named Entity Recognition Task
  • 🤗Huggingface Tranformers🤗 라이브러리를 이용하여 구현

Dependencies

  • torch==1.4.0
  • transformers==2.10.0
  • seqeval>=0.0.12

Dataset

  • Naver NLP Challenge 2018의 NER Dataset 사용 (Github link)
  • 해당 데이터셋에 Train dataset만 존재하기에, Test dataset은 Train dataset에서 split하였습니다. (Data link)
    • Train (81,000) / Test (9,000)

How to use KoBERT on Huggingface Transformers Library

  • 기존의 KoBERT를 transformers 라이브러리에서 곧바로 사용할 수 있도록 맞췄습니다.
    • transformers v2.2.2부터 개인이 만든 모델을 transformers를 통해 직접 업로드/다운로드하여 사용할 수 있습니다
  • Tokenizer를 사용하려면 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')

Usage

$ python3 main.py --model_type kobert --do_train --do_eval
  • --write_pred 옵션을 주면 evaluation의 prediction 결과preds 폴더에 저장됩니다.

Prediction

$ python3 predict.py --input_file {INPUT_FILE_PATH} --output_file {OUTPUT_FILE_PATH} --model_dir {SAVED_CKPT_PATH}

Results

Slot F1 (%)
KoBERT 86.11
DistilKoBERT 84.13
Bert-Multilingual 84.20
CNN-BiLSTM-CRF 74.57

References