데이터 출처 : www.kaggle.com/vkrahul/twitter-hate-speech
Twitter hate speech
www.kaggle.com
ipynb file : github.com/sangHa0411/DataScience/blob/main/Twitter_Sentiment%20HateSpeech.ipynb
sangHa0411/DataScience
Contribute to sangHa0411/DataScience development by creating an account on GitHub.
github.com
Part1 포스팅 주소 : electronicprogrammers.com/32
Deep Learning - Twitter Hate Speech 판별하기 Part1
데이터 출처 : www.kaggle.com/vkrahul/twitter-hate-speech Twitter hate speech www.kaggle.com ipynb file : github.com/sangHa0411/DataScience/blob/main/Twitter_Sentiment%20HateSpeech.ipynb sangHa0411/D..
electronicprogrammers.com
Part1 에서는 트위터에 있는 hate speech에 대해서 데이터 전처리 및 분석을 하였습니다.
이번 포스팅에서는 이를 기반으로 해서 Hate Speech를 판별할 수 있는 RNN Model을 만들어 보겠습니다.
먼저 전처리된 유효 단어 벡터의 길이를 보니 대부분 20이하 인 것을 확인하였습니다.
따라서 저는 RNN의 입력으로 들어갈 벡터의 길이를 20으로 통일 할 계획입니다.
이제 데이터 인코딩 및 변환을 할 전처리 도구를 불러옵니다.
그리고 Hate Speech 그리고 그 외 데이터로 분할된 데이터를 합칩니다.
이 리스트를 이용해서 Tokenizer를 학습시킵니다.
이제 이를 이용해서 유효 단어 벡터를 정수 벡터로 변환하고 길이를 20으로 통일 시키겠습니다.
근데 이 데이터는 Hate Data n개 , 그 외 데이터 m개 이렇게 순차적으로 넣었으니 잘 섞이지 않은 데이터 이므로 데이터를 셔플하는 과정이 필요합니다.
이제 데이터를 80% 대 20%로 훈련 데이터, 테스트 데이터를 분할합니다.
이제 RNN에 입력 및 출력과 비교할 정답 데이터 준비를 모두 마쳤습니다.
이제 RNN과 관련된 Keras 도구들을 불러옵니다.
RNN의 입력을 정의합니다.
여기서 입력은 길이가 20인 정수 벡터인데 벡터의 원소가 되는 각 정수를 벡터로 또 변환해줄 Word Embedding Layer를 추가합니다.
이제 LSTM(RNN) Layer를 추가합니다.
저는 양방향 LSTM으로 설계를 하였습니다.
이제 이를 Dense Layer와 연결합니다.
이제 최종적으로 Model을 만듭니다.
아래는 모델의 학습 과정입니다.
다음은 모델을 이용한 Test 데이터의 성능 측정 결과입니다.
여기서 조금 더 정확히 알고 싶기 위해서 모델의 출력값과 실제 값을 하나하나 비교해보았습니다.
전체 정확도는 95%이고 True Positive Rate는 39%정도 입니다.
이는 실제 Hate Speech 인데 Hate Speech라고 판별이 옳은 경우가 39%된다는 의미입니다.
False Positive Rate는 4.8%정도입니다. 이는 실제 Hate Speech가 아닌데 Hate Speech라고 모델이 오해하는 경우를 의미합니다.
이로써 Hate Speech를 판별하는 RNN 모델을 양방향 LSTM을 이용해서 구현을 해보았습니다.
'Deep Learning' 카테고리의 다른 글
Deep Learning - GloVe Embedding Layer을 이용한 Fake News 구별하기 Part2 (0) | 2020.10.10 |
---|---|
Deep Learning - GloVe Embedding Layer을 이용한 Fake News 구별하기 Part1 (0) | 2020.10.10 |
Deep Learning - Twitter Hate Speech 판별하기 Part1 (0) | 2020.10.10 |
Deep Learning - 훈련된 CNN의 중간층 활성화 시각화하기 (0) | 2020.10.10 |
Deep Learning - Multi Image Classification 위한 CNN 설계하기 (0) | 2020.10.08 |