2019년 Hate Speech Detection 글 보기!
https://beaver-sohyun.tistory.com/6?category=830784
2020년 Hate Speech Detection(주제 소개, 관련 연구, 데이터 셋, HAN 모델 설명)
https://beaver-sohyun.tistory.com/40
실험에 사용된 데이터 셋
Datasets |
Source |
Class |
Count |
Hatebase [1] |
|
Hate Offensive Neither |
1,430(5%) 19,190(76%) 4,163(17%) |
WaseemA [2] |
|
Sexism Racism Neither |
3,383(20%) 1,972(12%) 11,559(68%) |
Stormfront [3] |
Online Forum |
Hate Not Hate Relation Skip |
1,196(11%) 9,507(86%) 168(2%) 73(1%) |
Wikipedia Detox [4] |
Wikipedia discussions |
Non-attacking Attacking |
102,274(87%) 13,590(13%) |
Kaggle [5] |
|
Not Insulting Insulting |
1,742(26%) 4,852(74%) |
[1] https://github.com/t-davidson/hate-speech-and-offensive-language
[2] https://github.com/ZeerakW/hatespeech
[3] https://github.com/Zeerak/hatespeech
[4] https://github.com/ewulczyn/wiki-detox
[5] https://www.kaggle.com/c/detecting-insults-in-social-commentary
연구 방법
딥러닝 알고리즘
- 알고리즘 : Hierarchical Attention Network
- 데 이 터 : Hate Speech Datasets
- 파라미터
- learning rate : 0.001
- loss function : Categorical Cross-Entropy
- optimizer : Adam
- batch size : 128
- epoch : early - stopping
데이터 셋 비율
- Training : 80%
- Validation : 10%
- Test : 10%
실험 결과(1)
연구는 HAN 알고리즘을 사용하여 실험을 했고, 데이터는 위에 작성된 Hate Speech Dataset, 파라미터는 위에 작성된 것으로 진행했습니다.
데이터셋 별로 SOTA 모델의 train, validation, test 비율이 달랐는데 저희 실험에서는 80, 10, 10로 나누어 진행했습니다.
워드 임베딩은 사전 훈련된 Word2vec을 사용합니다.
•B : undersampling 기법을 이용 더 많은 데이터를 가진 클래스의 데이터를 제거하여 균형을 맞춘 Balanced Data
•ImB : 주어진 데이터셋 그대로 클래스들이 불균형한 Imbalanced Data
•Accuracy : 전체 데이터 중에서, 제대로 분류된 데이터의 비율
•F1 : Precision과 Recall의 조화 평균,, 데이터 label이 불균형 구조일 때, 모델의 성능을 정확하게 평가 가능
5개의 Hate Speech Dataset을 사용하여 총 두 번의 실험을 진행했습니다.
첫 번째 실험은 주어진 데이터셋 그대로 클래스들이 불균형한 Imbalanced Data를 사용합니다.
두 번째 실험은 sampling 기법 중 under-sampling 기법을 이용해서 더 많은 데이터를 가진 클래스의 데이터를 제거하여 균형을 맞춘 Balanced Data를 사용하여 실험합니다.
imbalance data로 모델을 학습할 경우 accuracy를 통해 모델 성능을 확인할 수 없습니다.
모델이 잘못된 분류하는 경우에도 높은 정확도가 계산되기 때문에 성능 평가 지표로 F1을 사용해야 합니다.
그래프는 각각의 데이터셋을 Balanced 또는 Imbalacend 하게 실험한 뒤 accuracy와 F1을 통해 성능을 확인한 그래프입니다.
그래프를 보면 Wikipedia data가 Balanced의 Accuracy와 Imbalanced의 F1에서 가장 높은 성능을 보인 것을 볼 수 있습니다.
실험 결과(2)
Dataset |
Models(others) - SOTA |
HAN(ours) |
Balanced /Imbalanced |
|||
|
Accuracy |
F1 |
Accuracy |
F1 |
||
Hatebase¹ |
Neural Ensemble |
0.92 |
0.91 |
0.9 |
0.70 |
Imbalanced |
WaseemA² |
LSTM+Random Embedding+GBDT |
- |
0.93 |
0.84 |
0.79 |
Imbalanced |
Stormfront³ |
BERT |
0.82 |
0.82 |
0.79 |
0.79 |
Balanced |
Wikipedia Detox⁴ |
Context hidden-state + char n-grams |
- |
0.87 |
0.95 |
0.88 |
Imbalanced |
Kaggle5 |
Stemming + Uni + Bigrams |
0.82 |
0.67 |
0.81 |
0.81 |
Balanced |
이 표는 각각의 데이터셋에서 최고의 성능을 보인 모델들을 정리하고 그 모델의 실험 조건에 따라서 HAN의 성능을 정리한 표입니다.
그 결과 HAN모델이 Wikipedia와 Kaggle Data에서 이전의 SOTA 모델보다 높은 성능을 보였습니다.
실험 결과(3)
데이터 셋 |
Source |
클래스 |
데이터 수 |
평균 문장 수 |
평균 문장 단어 개수 |
Hatebase¹ |
|
3 |
24,783 |
1.39 |
10.13 |
WaseemA² |
|
3 |
16,135 |
1.80 |
8.50 |
Stormfront³ |
Online Forum |
2 |
10,703 |
1.11 |
16.32 |
Wikipedia Detox⁴ |
Wikipedia discussions |
2 |
115,864 |
4.55 |
16.00 |
Kaggle5 |
|
2 |
6,594 |
2.21 |
15.02 |
[1] https://github.com/t-davidson/hate-speech-and-offensive-language
[2] https://github.com/ZeerakW/hatespeech
[3] https://github.com/Zeerak/hatespeech
[4] https://github.com/ewulczyn/wiki-detox
[5] https://www.kaggle.com/c/detecting-insults-in-social-commentary
데이터들에 대해 데이터 수, 평균 문장 수, 평균 문장 단어 개수 등을 정리해 본 표입니다.
그 결과, Wikipedia와 Kaggle Data가 다른 데이터들에 비해 평균 문장 수, 평균 문장 단어의 개수가 많았고, Class가 2개인 데이터로 구성되어있었습니다.
이 말은 평균 문장의 수가 많고, Class가 적을수록 HAN에서 높은 성능을 보인다고 추측할 수 있습니다.
동일한 Hatebase와 Waseem에서는 왜 성능이 높게 안 나왔는지 궁금해하실 수도 있습니다.
제 추측으로는 Kaggle data가 다른 Twitter으로 구성된 데이터보다 더 긴 tweet으로 구성되어 있어 HAN모델에서 높은 성능을 보인 것으로 생각됩니다.
이렇게 HAN은 짧은 문장보다는 문서 단위 알고리즘에 적합한 모델이라는 것을 알게 되었습니다.
Waseem Word attention visualization
<Sexism tweet example>
트윗을 분류하는데 어떤 단어들이 얼마큼의 영향을 주는지에 대해 색의 진함으로 표현
(색이 진할수록 문서를 분류하는데 큰 영향을 준 단어)
다음은 저희가 실험했던 데이터 셋 중 Waseem data 일부에 대한 시각화 결과입니다.
HAN 모델이 Waseem data를 학습하여 트윗을 Sexism, Racism으로 분류할 때, 어떤 단어가 얼마큼 크게 영향을 미쳤는지 시각화해서 볼 수 있습니다.
HAN 모델이 Sexism tweet으로 분류한 tweet 중 실제 Class가 Sexism tweet인 Example입니다.
"Sexist" 와 같은 단어들이 문장을 Sexism 이라고 판단하는데 큰 영향을 주웠음을 확인할 수 있습니다.
<Racism tweet example>
다음은 Racism tweet으로 분류된 tweet 중 실제 class가 Racism tweet인 예시입니다.
"Muslim, Islam, religion(종교), jewish (유대인), prophet(선지자)" 같은 단어들이 tweet이 Racism이라고 판단하는데 영향을 주웠음을 확인할 수 있습니다.
현재까지의 인공지능이 결과만 알 수 있고 도출한 결과의 근거를 알 수 없었다면 HAN 모델의 attention mechanism은 이러한 시각화를 통해 특정 문서가 특정 라벨로 분류되었을 때, 그 근거가 되는 단어나 문장들을 알 수 있습니다.
이는 explainable AI, 즉 설명 가능한 인공지능 형태입니다.
이번 연구를 통해 저희는 HAN모델이 문서 분류뿐만 아니라 혐오 표현 탐지에도 효과가 있다는 것을 확인했습니다.
'작은비버의 성장과정 > 과제 및 성장기' 카테고리의 다른 글
[빅데이터] kickstarter에서 Project에 큰 영향을 미치는 Feature 확인하기(2. 전체 feature 수집 및 특정 feature 추출) (0) | 2020.08.31 |
---|---|
[빅데이터] kickstarter에서 Project에 큰 영향을 미치는 Feature 확인하기(1. 상세사이트 링크 수집) (0) | 2020.08.30 |
[프로젝트]코로나19에 대한 사회적 반응[지하철 승객 수의 변화] (0) | 2020.05.10 |
공공데이터 API를 사용한 데이터 추출 (1) | 2020.05.01 |
[프로젝트]주제 Public reaction during pandemic (0) | 2020.04.30 |