본문 바로가기

[NLP]

[NLP] 정제 및 정규화

텍스트 데이터를 용도에 맞게 정제 및 정규화하는 일이 항상 함께합니다.

정제(cleaning): 갖고 있는 코퍼스로 부터 노이즈 데이터를 제거한다.

정규화(normalization): 표현 방법이 다른 단어들을 통합시켜서 같은 단어로 만들어준다.

 

정제 작업은

토큰화 작업에 방해가 되는 부분들을 배제시키고,

토큰화 작업을 수행하기 위해서 먼저 이루어 지기도 하지만,

여전히 남아있는 노이즈들을 제거하기 위해 지속적으로 이루어지기도 합니다.

완벽한 정제작업은 사실 어려운편이라, 일종의 합의점을 찾아야합니다.

 

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

 

USA와 US는 같은 의미를 가지므로 하나의 단어로 정규화해볼 수 있습니다. 

뒤에서 표기가 다른 단어들을 통합하는 방법인

어간추출과 표제어추출에 대해 알아보겠습니다.

 

2. 대, 소문자 통합

 

영어권 언어에서 대, 소문자를 통합하는 것은 

단어의 개수를 줄일 수 있는 또 다른 정규화 방법 입니다.

 

검색엔진에서는 사용자가 관심있어 하는 검색 결과는 대소문자 변환을 적용했을 것이기 때문에

구분하지 않아도 원하는 결과가 나올 것입니다.

 

물론 무작정 대소문자를 통합해서는 안됩니다. 

모든 토큰을 소문자로 만드는 것이 문제라면, 또 다른 대안인 일부만 변환시키는 방법도 있습니다.

더 많은 변수를 사용해 소문자 변환을 언제 사용할지 결정하는

머신러닝 시퀀스 모델로 좀 더 정확하게 진행시킬 수 있습니다.

 

3.  불필요한 단어의 제거

 

정제 작업에서 제거해야하는 노이즈 데이터는 자연어가 아니면서 아무 의미도 갖지 않는 글자들을 의미하기도 하지만,

분석하고자 하는 목적에 맞는 않는 불필요한 단어들을 노이즈 데이터라고 합니다.

 

불용도 제거, 등장빈도가 적은단어, 길이가 짧은 단어들을 제거하는 방법이 있습니다.

 

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

 

(2) 길이가 짧은 단어

영어권에서는 길이가 짧은 단어를 삭제하는 것만으로도 어느 정도 자연어를 처리하는 효과를 볼 수 있다고 알려져 있지만

한국어는 이런 방법이 크게 유효하지 않을 수 있습니다.

 

영어 단어의 평균 길이는 6~7정도이며,

한국어 단어의 평균 길이는 2~3 정도로 추정되고 있습니다.

 

또한, 한국어는 한자어가 많고, 한 글자만으로도 이미 의미를 가진 경우가 많습니다.

 

import re

# 길이가 1~2 단어들을 정규 표현식을 이용하여 삭제

shortword = re.compile(r'\W*\b\w{1,2}\b')

 

4. 정규 표현식(Regular Expression)

 

얻어낸 코퍼스에서 노이즈 데이터의 특징을 잡아낼 수 있다면,

정규 포현식을 통해서 이를 제거할 수 있는 경우가 많습니다.

 

계속해서 등장하는 글자들을 규칙에 기반하여 한번에 제거하는 방식으로 매우 유용합니다.

'[NLP]' 카테고리의 다른 글

[NLP] 정수 인코딩  (0) 2023.03.27
[NLP] 정규 표현식(Regular Expression)  (0) 2023.03.27
[NLP] 표제어 추출 and 어간 추출  (0) 2023.03.27
[NLP] 불용어(Stopword)  (0) 2023.03.27
[NLP] Tokenization 토큰화  (0) 2023.03.27