본문 바로가기
AI

자연어처리 : 텍스트 전처리 : 정제 및 정규화 (Cleaning & Normalization)

by 월곡동로봇팔 2020. 3. 4.

정의

앞에서 corpus를 용도에 맞게 token으로 분류하는 것을 tokenization이라고 했다.

 

tokenization이 이루어지기 전에, text data를 용도에 맞게 정제 및 정규화 (Cleaning & Normalization)하는 일이 항상 함께한다.

  • 정제(cleaning) : 갖고 있는 코퍼스로부터 노이즈 데이터를 제거한다. token화 작업 전, 후로 계속 이루어진다. 보통 완벽하게 정제는 하지 못하며 일종의 합의점을 찾기도 한다.
  • 정규화(normalization) : 표현 방법이 다른 단어들을 통합시켜서 같은 단어로 만들어준다.

1. 규칙에 기반한 표기가 다른 단어들의 통합

가령, USA = US 하나의 단어로 정규화해볼 수 있다. uh-huh = uhhuh는 형태는 다르지만 여전히 같은 의미를 갖고 있다.

이러한 정규화를 거치게 되면, US를 찾아도 USA도 함께 찾을 수 있을 것이다.

다음 챕터에서 표기가 다른 단어들을 통합하는 방법인 어간 추출(stemming)과 표제어 추출(lemmatizaiton)에 대해서 더 자세히 알아보도록 할 예정이다.


2. 대, 소문자 통합

Automobile == automobile , 검색결과가 더 많아진다.

하지만, 대문자와 소문자를 무조건 통합하면 안된다. ex) 미국의 US, 우리의 us, 다른의미다.

회사 이름(General Motors)나, 사람 이름(Bush) 등은 대문자로 유지되는 것이 좋다.

 

하지만!!!! 모든 corpus를 소문자로 바꾸는 것이 종종 더 실용적인 해결책이 된다.

즉, 100% noise를 제거할 수 없으니, 하나의 규칙을 정해서 성능을 높이자!


3. 불필요한 단어의 제거 (Removing Unnecessary Words)

noise data

noise data는 자연어가 아니면서 아무 의미도 갖지 않는 글자들 (특수문자) or 분석하고자 하는 목적에 맞지 않는 불필요한 단어들 (a, the, 등등)

 

(1) 등장 빈도가 적은 단어 (Removing Rare Words)

text data에 너무 적게 등장하여 자연어 처리에 도움이 되지 않는 단어들이 존재한다.

 

ex) 100,000 개의 메일 중 스펨메일을 분류하는 모델을 설계할 때, 정상 및 스팸메일에 어떤 단어들이 주로 있었는지를 분석하게 된다. 100,000개의 메일 데이터에서 총합 5번 등장한 단어는 분류에 도움이 되지 않는다는 것을 의미한다.

 

(2) 길이가 짧은 단어 (Removing Words with very short length)

한글에서는 용, 머리, 물, 등등 단어 길이가 짧아도 그 단어 자체로써의 의미가 존재한다.

 

하지만 영어는 다르다. 영어는 평균 단어의 길이가 6-7이다.

영어에서 a, it, the, in, by 등등 길이가 짧으면 보통 의미를 갖지 못하는 단어가 종종 존재한다.

 

따라서 1-2 길이의 단어는 정제 및 정규화할 때 없애는 편이 제일 좋다.

 

하지만 3 의 길이부터는 얘기가 다르다. car, fox, dog, cat 같은 경우는 단어의 의미가 존재한다.

물론 3,4 정제할 수 있지만, 어느정도의 손해는 감수를 해야한다.


위의 방법을 한 번에! : 정규표현식 (Regular Expression)

# 길이가 1~2인 단어들을 정규 표현식을 이용하여 삭제
import re
text = "I was wondering if anyone out there could enlighten me on this car."
shortword = re.compile(r'\W*\b\w{1,2}\b')
print(shortword.sub('', text))

"""
was wondering anyone out there could enlighten this car.
"""

2020/02/25 - [natural language] - 자연어처리 : python re 정규표현식 정리

 

자연어처리 : python re 정규표현식 정리

정규표현식, re 정리¶ 1. compile¶ 문자 안에 특정 문자나 패턴이 존재하는지 여부를 알려줌. 정규식객체 (re.RegexObject)를 return 하게 된다. In [52]: # 정규표현식 공부 import re """ # re.compil..

mambo-coding-note.tistory.com

정규표현식은 정제 및 정규화 과정에서 주로 사용하는 방법이다.

정규표현식은 규칙에 기반하여 한 번에 작업이 가능하여, 주로 쓰는 방법이다.

 

규칙에 기반하여 (re.compile을 통해 규칙을 compile)

대, 소문자 통합 (re.sub 를 통해 가능)

불필요한 단어의 제거 (re.sub 를 통해 가능)

댓글