readme: ---
  language: ko
  license: apache-2.0
  tags:
    - korean
  ---
  
  # KcBERT: Korean comments BERT
  
  ** Updates on 2021.04.07 **
  
  - KcELECTRA가 릴리즈 되었습니다!🤗
  - KcELECTRA는 보다 더 많은 데이터셋, 그리고 더 큰 General vocab을 통해 KcBERT 대비 **모든 태스크에서 더 높은 성능**을 보입니다.
  - 아래 깃헙 링크에서 직접 사용해보세요!
  - https://github.com/Beomi/KcELECTRA
  
  ** Updates on 2021.03.14 **
  
  - KcBERT Paper 인용 표기를 추가하였습니다.(bibtex)
  - KcBERT-finetune Performance score를 본문에 추가하였습니다.
  
  ** Updates on 2020.12.04 **
  
  Huggingface Transformers가 v4.0.0으로 업데이트됨에 따라 Tutorial의 코드가 일부 변경되었습니다.
  
  업데이트된 KcBERT-Large NSMC Finetuning Colab: <a href="https://colab.research.google.com/drive/1dFC0FL-521m7CL_PSd8RLKq67jgTJVhL?usp=sharing">
    <img src="https://colab.research.google.com/assets/colab-badge.svg" alt="Open In Colab"/>
  </a>
  
  ** Updates on 2020.09.11 **
  
  KcBERT를 Google Colab에서 TPU를 통해 학습할 수 있는 튜토리얼을 제공합니다! 아래 버튼을 눌러보세요.
  
  Colab에서 TPU로 KcBERT Pretrain 해보기: <a href="https://colab.research.google.com/drive/1lYBYtaXqt9S733OXdXvrvC09ysKFN30W">
    <img src="https://colab.research.google.com/assets/colab-badge.svg" alt="Open In Colab"/>
  </a>
  
  텍스트 분량만 전체 12G 텍스트 중 일부(144MB)로 줄여 학습을 진행합니다. 
  
  한국어 데이터셋/코퍼스를 좀더 쉽게 사용할 수 있는 [Korpora](https://github.com/ko-nlp/Korpora) 패키지를 사용합니다.
  
  ** Updates on 2020.09.08 **
  
  Github Release를 통해 학습 데이터를 업로드하였습니다.
  
  다만 한 파일당 2GB 이내의 제약으로 인해 분할압축되어있습니다.
  
  아래 링크를 통해 받아주세요. (가입 없이 받을 수 있어요. 분할압축)
  
  만약 한 파일로 받고싶으시거나/Kaggle에서 데이터를 살펴보고 싶으시다면 아래의 캐글 데이터셋을 이용해주세요.
  
  - Github릴리즈: https://github.com/Beomi/KcBERT/releases/tag/TrainData_v1
  
  ** Updates on 2020.08.22 **
  
  Pretrain Dataset 공개
  
  - 캐글: https://www.kaggle.com/junbumlee/kcbert-pretraining-corpus-korean-news-comments (한 파일로 받을 수 있어요. 단일파일)
  
  Kaggle에 학습을 위해 정제한(아래 `clean`처리를 거친) Dataset을 공개하였습니다!
  
  직접 다운받으셔서 다양한 Task에 학습을 진행해보세요 :) 
  
  ---
  
  공개된 한국어 BERT는 대부분 한국어 위키, 뉴스 기사, 책 등 잘 정제된 데이터를 기반으로 학습한 모델입니다. 한편, 실제로 NSMC와 같은 댓글형 데이터셋은 정제되지 않았고 구어체 특징에 신조어가 많으며, 오탈자 등 공식적인 글쓰기에서 나타나지 않는 표현들이 빈번하게 등장합니다.
  
  KcBERT는 위와 같은 특성의 데이터셋에 적용하기 위해, 네이버 뉴스에서 댓글과 대댓글을 수집해, 토크나이저와 BERT모델을 처음부터 학습한 Pretrained BERT 모델입니다.
  
  KcBERT는 Huggingface의 Transformers 라이브러리를 통해 간편히 불러와 사용할 수 있습니다. (별도의 파일 다운로드가 필요하지 않습니다.)
  
  ## KcBERT Performance
  
  - Finetune 코드는 https://github.com/Beomi/KcBERT-finetune 에서 찾아보실 수 있습니다.
  
  |                       | Size<br/>(용량)  | **NSMC**<br/>(acc) | **Naver NER**<br/>(F1) | **PAWS**<br/>(acc) | **KorNLI**<br/>(acc) | **KorSTS**<br/>(spearman) | **Question Pair**<br/>(acc) | **KorQuaD (Dev)**<br/>(EM/F1) |
  | :-------------------- | :---: | :----------------: | :--------------------: | :----------------: | :------------------: | :-----------------------: | :-------------------------: | :---------------------------: |
  | KcBERT-Base                | 417M  |       89.62        |         84.34          |       66.95        |        74.85         |           75.57           |            93.93            |         60.25 / 84.39         |
  | KcBERT-Large                | 1.2G  |       **90.68**        |         85.53          |       70.15        |        76.99         |           77.49           |            94.06            |         62.16 / 86.64          |
  | KoBERT                | 351M  |       89.63        |         86.11          |       80.65        |        79.00         |           79.64           |            93.93            |         52.81 / 80.27         |
  | XLM-Roberta-Base      | 1.03G |       89.49        |         86.26          |       82.95        |        79.92         |           79.09           |            93.53            |         64.70 / 88.94         |
  | HanBERT               | 614M  |       90.16        |       **87.31**        |       82.40        |      **80.89**       |           83.33           |            94.19            |         78.74 / 92.02         |
  | KoELECTRA-Base    | 423M  |     **90.21**      |         86.87          |       81.90        |        80.85         |           83.21           |            94.20            |         61.10 / 89.59         |
  | KoELECTRA-Base-v2 | 423M  |       89.70        |         87.02          |     **83.90**      |        80.61         |         **84.30**         |          **94.72**          |       **84.34 / 92.58**       |
  | DistilKoBERT           | 108M |       88.41        |         84.13          |       62.55        |        70.55         |           73.21           |            92.48            |         54.12 / 77.80         |
  
  
  \*HanBERT의 Size는 Bert Model과 Tokenizer DB를 합친 것입니다.
  
  \***config의 세팅을 그대로 하여 돌린 결과이며, hyperparameter tuning을 추가적으로 할 시 더 좋은 성능이 나올 수 있습니다.**
  
  ## How to use
  
  ### Requirements
  
  - `pytorch <= 1.8.0`
  - `transformers ~= 3.0.1`
    - `transformers ~= 4.0.0` 도 호환됩니다.
  - `emoji ~= 0.6.0`
  - `soynlp ~= 0.0.493`
  
  ```python
  from transformers import AutoTokenizer, AutoModelWithLMHead
  
  # Base Model (108M)
  
  tokenizer = AutoTokenizer.from_pretrained("beomi/kcbert-base")
  
  model = AutoModelWithLMHead.from_pretrained("beomi/kcbert-base")
  
  # Large Model (334M)
  
  tokenizer = AutoTokenizer.from_pretrained("beomi/kcbert-large")
  
  model = AutoModelWithLMHead.from_pret