readme: ---
  language: 
    - ko
    - en
  tags:
  - electra
  - korean
  license: "mit"
  ---
  
  
  # KcELECTRA: Korean comments ELECTRA
  
  ** Updates on 2022.10.08 **
  
  - KcELECTRA-base-v2022 (구 v2022-dev) 모델 이름이 변경되었습니다.
  - 위 모델의 세부 스코어를 추가하였습니다.
  - 기존 KcELECTRA-base(v2021) 대비 대부분의 downstream task에서 ~1%p 수준의 성능 향상이 있습니다.
  
  ---
  
  공개된 한국어 Transformer 계열 모델들은 대부분 한국어 위키, 뉴스 기사, 책 등 잘 정제된 데이터를 기반으로 학습한 모델입니다. 한편, 실제로 NSMC와 같은 User-Generated Noisy text domain 데이터셋은 정제되지 않았고 구어체 특징에 신조어가 많으며, 오탈자 등 공식적인 글쓰기에서 나타나지 않는 표현들이 빈번하게 등장합니다.
  
  KcELECTRA는 위와 같은 특성의 데이터셋에 적용하기 위해, 네이버 뉴스에서 댓글과 대댓글을 수집해, 토크나이저와 ELECTRA모델을 처음부터 학습한 Pretrained ELECTRA 모델입니다.
  
  기존 KcBERT 대비 데이터셋 증가 및 vocab 확장을 통해 상당한 수준으로 성능이 향상되었습니다.
  
  KcELECTRA는 Huggingface의 Transformers 라이브러리를 통해 간편히 불러와 사용할 수 있습니다. (별도의 파일 다운로드가 필요하지 않습니다.)
  
  ```
  💡 NOTE 💡 
  General Corpus로 학습한 KoELECTRA가 보편적인 task에서는 성능이 더 잘 나올 가능성이 높습니다.
  KcBERT/KcELECTRA는 User genrated, Noisy text에 대해서 보다 잘 동작하는 PLM입니다.
  ```
  
  ## KcELECTRA Performance
  
  - Finetune 코드는 https://github.com/Beomi/KcBERT-finetune 에서 찾아보실 수 있습니다.
  - 해당 Repo의 각 Checkpoint 폴더에서 Step별 세부 스코어를 확인하실 수 있습니다.
  
  |                    | 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) |
  | :----------------- | :-------------: | :----------------: | :--------------------: | :----------------: | :------------------: | :-----------------------: | :-------------------------: | :---------------------------: |
  | **KcELECTRA-base-v2022** |      475M       |     **91.97**      |         87.35          |       76.50        |        82.12         |           83.67           |          95.12          |         69.00 / 90.40         |
  | **KcELECTRA-base** |      475M       |     91.71      |         86.90          |       74.80        |        81.65         |           82.65           |          **95.78**          |         70.60 / 90.11         |
  | 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         |
  | KoELECTRA-Base-v3  |      423M       |       90.63        |       **88.11**        |     **84.45**      |      **82.24**       |         **85.53**         |            95.25            |       **84.83 / 93.45**       |
  | 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 ~= 4.11.3`
  - `emoji ~= 0.6.0`
  - `soynlp ~= 0.0.493`
  
  ### Default usage
  
  ```python
  from transformers import AutoTokenizer, AutoModel
    
  tokenizer = AutoTokenizer.from_pretrained("beomi/KcELECTRA-base")
  model = AutoModel.from_pretrained("beomi/KcELECTRA-base")
  ```
  
  > 💡 이전 KcBERT 관련 코드들에서 `AutoTokenizer`, `AutoModel` 을 사용한 경우 `.from_pretrained("beomi/kcbert-base")` 부분을 `.from_pretrained("beomi/KcELECTRA-base")` 로만 변경해주시면 즉시 사용이 가능합니다.
  
  ### Pretrain & Finetune Colab 링크 모음 
  
  #### Pretrain Data
  
  - KcBERT학습에 사용한 데이터 + 이후 2021.03월 초까지 수집한 댓글
    - 약 17GB
    - 댓글-대댓글을 묶은 기반으로 Document 구성
  
  #### Pretrain Code
  
  - https://github.com/KLUE-benchmark/KLUE-ELECTRA Repo를 통한 Pretrain
  
  #### Finetune Code
  
  - https://github.com/Beomi/KcBERT-finetune Repo를 통한 Finetune 및 스코어 비교
  
  #### Finetune Samples
  
  - NSMC with PyTorch-Lightning 1.3.0, GPU, Colab <a hre