Machine learning/NLP

[NLP]. 한국어 존댓말/반말 분류모델 (formal classifier)

Acdong 2023. 2. 3. 18:43
728x90

2021.10.14 - [Data Science/NLP] - [전처리]. 한국어 존댓말과 반말을 구별하는 방법(feat. komoran)

 

[전처리]. 한국어 존댓말과 반말을 구별하는 방법(feat. komoran)

한국어는 영어와 다르게 존댓말(높힘말)과 반말(낮춤말)이 존재한다. 그래서 존댓말을 반말로 바꿔주고 반말을 존댓말로 바꿔주는 모델이 있으면 좋겠지만 (실제로 연구가 많이 진행되었지만

acdongpgm.tistory.com

 

1. 개발 배경

오래전에 존댓말 , 반말을 한국어 형태소 분석기로 분류하는 간단한 방법을 소개했다.

하지만 이 방법을 실제로 적용하려 했더니, 많은 부분에서 오류가 발생하였다.

 

예를 들면)

'저번에 교수님께서 자료 가져오라했는데 기억나?'

 

라는 문구를 "께서"라는 존칭때문에 전체문장을 존댓말로 판단하는 오류가 많이 발생했다.

 

그래서 이번에 딥러닝 모델을 만들고 그 과정을 공유해보고자한다.

 

 

2. 데이터 세트

먼저 데이터세트은 두 가지를 사용했다.

스마일게이트 말투 데이터 세트(korean SmileStyle Dataset)

: https://github.com/smilegate-ai/korean_smile_style_dataset

AI 허브 (감성 대화 말뭉치)

: https://www.aihub.or.kr/

 

스마일게이트 데이터셋은 존댓말 분류모델에 가장 적합한 데이터가 많이 있었다 하지만,

딥러닝 모델을 학습하기엔 양이 부족하다 판단하여 AI 허브 데이터를 학습데이터로 추가하였다.

 

 


3. 전처리

스마일게이트 데이터 중에서

formal_cols = ['formal', 'gentle']
informal_cols = ['informal', 'chat', 'enfp', 'sosim', 'choding', 'joongding']

존댓말(formal), 신사(gentle) 칼럼을 존댓말로 치환했다,

반말(informal), 채팅(chat), 엔프피(enfp), 소심한 성격(sosim), 초딩(choding), 중딩(joongding)을 반말로 치환했다. 

 

감성 대화 말뭉치는 사람과 챗봇의 대화 데이터가 존재하는데.

사람은 전부 반말이고 챗봇은 전부 존댓말이라 모델을 학습시키기에는 적합했다.

['시스템응답1', '시스템응답2', '시스템응답3', '시스템응답4']
['사람문장1', '사람문장2', '사람문장3', '사람문장4']

 

데이터 예시

sentence label
공부를 열심히 해도 열심히 한 만큼 성적이 잘 나오지 않아 0
아들에게 보내는 문자를 통해 관계가 회복되길 바랄게요 1
참 열심히 사신 보람이 있으시네요 1
나도 스시 좋아함 이번 달부터 영국 갈 듯 0
본부장님이 내가 할 수 없는 업무를 계속 주셔서 힘들어 0

 

총 데이터 분포

label train test
0 133,430 34,908
1 112,828 29,839

 

전처리 코드 : https://github.com/alswhddh/formal_classifier/blob/main/data_engineering/get_train_data.py


4. 학습

학습은 허깅페이스와 파이토치 라이트닝코드를 상속받아 사용했고 사전 학습 모델(Pretrained model)은 

beomi/kcbert-base를 사용하였다.

처음에는 klue/roberta 모델을 사용했고 99%의 정확도를 기록했다, 하지만 실제로 예측했을때 결과가 이상하여

beomi/kcbert-base로 변경했고 변경 후에는 실제 테스트에서도 높은 성능을 보였다.

 

 

5. 결과

val_loss 0.0051
Accuarcy 0.997

 

테스트 결과

저번에 교수님께서 자료 가져오라하셨는데 기억나세요? : 존댓말입니다. ( 확률 99.19% )
저번에 교수님께서 자료 가져오라했는데 기억나? : 반말입니다. ( 확률 92.86% )

 

전체 소스 코드 : https://github.com/alswhddh/formal_classifier

감사합니다.

반응형