728x90
한국어는 영어와 다르게 존댓말(높힘말)과 반말(낮춤말)이 존재한다.
그래서 존댓말을 반말로 바꿔주고 반말을 존댓말로 바꿔주는 모델이 있으면 좋겠지만
(실제로 연구가 많이 진행되었지만 정확도가 높은 편은 아님)
존댓말과 반말을 구분하는 방법을 공유하고자 한다.
방법은 간단하다.
형태소 분석기를 통해 나온 토큰들 중 존댓말에 사용되는 토큰들의 갯 수를 구해서 판단하면 된다.
형태소 분석기는 한나눔 , 코모란 , okt 등이 있지만 코모란 형태소 분석기를 사용했다.
이유는 코모란은 존댓말 토큰을 normalize 하게 잡아주기 떄문이다.
okt 의 경우는 습니다, 됩니다 , 합니다 로 토크나이즈 하는 반면
코모란은 ㅂ니다. 로 통일해주기 때문에 적은 토큰들을 가지고 많은 존댓말을 판단할 수 있게된다.
*존댓말 토큰은 첨부하였습니다.
import re
from konlpy.tag import Komoran
komoran = Komoran()
#txt파일을 list로 불러오기
hon_tokens = [word.rstrip('\n') for word in open(data_path + 'komoran_honorific_token.txt', 'r',encoding='utf-8')]
def honorific_token_counter(text):
cnt = 0
for i in komoran.pos(text):
if str(i) in hon_tokens:
cnt += 1
return cnt
이렇게 해주면 문장에 존댓말 토큰이 얼마나 들어있는 지 확인할 수 있습니다.
데이터를 확인하고 문장의 길이에 따른 존댓말 토큰 수를 비율로 지정하여 존댓말과 반말을 분류 할 수 있습니다.
* 이유는 문장이 짧을 경우 존댓말 토큰은 1개 밖에 존재하지 않고
문장이 긴 경우 존댓말 토큰이 1개라면 이것은 반말일 가능성이 높기 때문입니다.
+2023.02.03 업데이트
딥러닝으로 반말/존댓말 구분하기
2023.02.03 - [Data Science/NLP] - [NLP]. 한국어 존댓말/반말 분류모델 (formal classifier)
반응형
'Machine learning > NLP' 카테고리의 다른 글
[NLP]. 한국어 맞춤법 검사기 사용하기 (feat. hanspell ) (0) | 2021.10.27 |
---|---|
[전처리]. 핸드폰 번호 , 계좌번호 , 주소 필터링(Python 정규표현식) (0) | 2021.10.14 |
[NLP] . 자연어처리 프로젝트 파일 구조 ( 인공지능 디자인 패턴 ) (0) | 2021.09.05 |
[NLP] BERT - (1).구조와 개념 (0) | 2021.09.04 |
[NLP] . OOV 를 해결하는 방법 - 1. BPE(Byte Pair Encoding) (1) | 2021.08.22 |