Preprocessing for Korean analysis

[Case 1]

일반적으로 KoNLPy 같은 오픈소스 형태소 분석기를 사용하지만, 형태소 분석 과정에서 잘못된 태깅으로 말뭉치 정보가 왜곡되거나 손실될 경우가 존재한다. 이러한 문제점을 보안하기 위해 다음 방법을 쓰기도 한다.
단어를 띄어쓰기 기준으로 나누고 3글자까지만 잘라서, 노말라이즈를 한다. 이렇게 하면 아래 예시의 토큰들을 한 단어로 취급할 수 있다.

감정가
감정가
감정가격에
감정가격은
감정가격이

텍스트 노말라이즈를 하는 근본적인 이유는 단어수를 줄여 분석의 효율성을 높이기 위해서이다. 위 다섯개 단어를 각각 다른 단어로 보고 분석하면 물론 정확성은 높아지겠지만 계산복잡성 또한 증가한다. 어느 순간엔 정확성 상승 대비 분석 비용이 지나치게 높아지게 될 수 있다.

텍스를 숫자로 변경하기 위해서는 단어와 숫자가 매칭된 사전(dictionary)이 있어야 한다. 예측 과정에선 숫자를 단어로 바꿔야 하기 때문에 숫자와 단어가 매핑된 사전도 별도로 만들어야 한다.

word_to_index
{‘학생비자를’: 60946, ‘답답함이’: 13623, (중략) ‘감정가’: 979, ‘감정가의’: 979, ‘감정가격에’: 979, (하략) }

index_to_word
{0: ‘가’, 1: ‘가가갤’, 2: ‘가감’, 3: ‘가거나’, (중략) 979: ‘감정가’ (하략) }

텍스트 전처리

import re
pattern_duration = re.compile('([a-zA-Z]+)\(([^)]+\)\s+_(\d+)_ms')
s='fuzzySearch(고2 수학,chosung) _14_ms db [고2수학]'
pattern_duration.findall(s)
[('fuzzySearch', '고2 수학,chosung', '14')]

[References]

url비고
https://ratsgo.github.io/natural%20language%20processing/2017/03/12/s2s/Sequence-to-Sequence 모델로 뉴스 제목 추출하기 - Case 1

좋은 웹페이지 즐겨찾기