Skip to content

Latest commit

 

History

History
99 lines (71 loc) · 2.87 KB

README.md

File metadata and controls

99 lines (71 loc) · 2.87 KB

Korean Hate Speech Classification

KoELECTRAKorean Hate Speech Dataset을 이용한 Bias & Hate Classification

Dataset

# of data
train 7,896
validate 471
test 974
  • Bias (gender, other, none), Hate (hate, offensive, none)

Requirements

  • torch==1.5.0
  • transformers==2.11.0
  • soynlp==0.0.493

Details

Model

[CLS] token에서 biashate를 동시에 예측하는 Joint Architecture

  • loss = bias_coef * bias_loss + hate_coef * hate_loss (bias_loss_coef, hate_loss_coef 변경 가능)
  • model.pyElectraForBiasClassification 참고

Input

  • [CLS] comment [SEP] title [SEP]으로 comment와 title을 이어 붙여 Input으로 넣음
  • 전처리의 경우 [] 등의 brace로 묶인 단어 제거, 따옴표 통일, 불필요한 따옴표 제거, normalization 등 간단한 것만 적용

Hyperparameters

Parameters
Batch Size 16
Learning Rate 5e-5
Epochs 10
Warmup Proportion 0.1
Max Seq Length 100
Bias Loss Coefficient 0.5
Hate Loss Coefficient 1.0

Metric

각 카테고리(Bias, Hate)의 Weighted F1 산출 후 산술 평균

  • mean_weighted_f1 = (bias_weighted_f1 + hate_weighted_f1) / 2
  • Dev dataset 기준으로 mean_weighted_f1의 값이 가장 높은 모델을 최종적으로 저장

Train

$ python3 main.py --model_type koelectra-base-v2 \
                  --model_name_or_path monologg/koelectra-base-v2-discriminator \
                  --model_dir {$MODEL_DIR} \
                  --prediction_file prediction.csv \
                  --do_train

Prediction

Test file에 대한 예측값을 csv 형태로 저장

$ python3 main.py --model_type koelectra-base-v2 \
                  --model_name_or_path {$MODEL_DIR} \
                  --pred_dir preds \
                  --prediction_file prediction.csv \
                  --do_pred
bias,hate
none,offensive
gender,hate
none,none
others,none
...

Result

(가볍게 제작한 Baseline이여서 점수 개선의 여지가 존재합니다)

(Weighted F1) Bias F1 Hate F1 Mean F1
Dev Dataset 82.28 67.25 74.77

Reference