KoELECTRA와 Korean Hate Speech Dataset을 이용한 Bias & Hate Classification
# of data | |
---|---|
train | 7,896 |
validate | 471 |
test | 974 |
- Bias (gender, other, none), Hate (hate, offensive, none)
- torch==1.5.0
- transformers==2.11.0
- soynlp==0.0.493
[CLS]
token에서 bias
와 hate
를 동시에 예측하는 Joint Architecture
- loss = bias_coef * bias_loss + hate_coef * hate_loss (
bias_loss_coef
,hate_loss_coef
변경 가능) - model.py의
ElectraForBiasClassification
참고
[CLS] comment [SEP] title [SEP]
으로 comment와 title을 이어 붙여 Input으로 넣음- 전처리의 경우
[]
등의 brace로 묶인 단어 제거, 따옴표 통일, 불필요한 따옴표 제거, normalization 등 간단한 것만 적용- data_loader.py의
preprocess
함수 참고
- data_loader.py의
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 |
각 카테고리(Bias, Hate)의 Weighted F1 산출 후 산술 평균
- mean_weighted_f1 = (bias_weighted_f1 + hate_weighted_f1) / 2
Dev dataset
기준으로mean_weighted_f1
의 값이 가장 높은 모델을 최종적으로 저장
$ 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
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
...
(가볍게 제작한 Baseline이여서 점수 개선의 여지가 존재합니다)
(Weighted F1) | Bias F1 | Hate F1 | Mean F1 |
---|---|---|---|
Dev Dataset | 82.28 | 67.25 | 74.77 |