본문 바로가기
Linguistic Intelligence/NLP

[NLP] 정제 (Cleaning) / 정규화 (Normalization)

by goatlab 2021. 12. 14.
728x90
반응형
SMALL

corpus에서 용도에 맞게 token을 분류하는 작업을 tokenization라고 하며, tokenization 작업 전, 후에는 텍스트 데이터를 용도에 맞게 정제 (cleaning) 및 정규화(normalization)하는 일이 항상 함께 한다.

 

정제 (Cleaning)

 

갖고 있는 corpus로부터 noise 데이터를 제거한다.

 

정규화 (normalization)

 

표현 방법이 다른 단어들을 통합시켜서 같은 단어로 만들어준다.

 

cleaning 작업은 tokenization 작업에 방해가 되는 부분들을 배제시키고 tokenization 작업을 수행하기 위해서 tokenization 작업보다 앞서 이루어지기도 하지만, tokenization 작업 이후에도 여전히 남아있는 noise들을 제거하기 위해 지속적으로 이루어진다. 사실 완벽한 cleaning 작업은 어려운 편이여서, 대부분의 경우 어느정도하면 일종의 합의점을 찾기도 한다.

 

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

 

필요에 따라 직접 코딩을 통해 정의할 수 있는 normalization 규칙의 예로서 같은 의미를 갖고있음에도, 표기가 다른 단어들을 하나의 단어로 normalization하는 방법을 사용할 수 있다.

 

대, 소문자 통합

 

영어권 언어에서 대, 소문자를 통합하는 것은 단어의 개수를 줄일 수 있는 또 다른 normalization 방법이다. 영어권 언어에서 대문자는 문장의 맨 앞 등과 같은 특정 상황에서만 쓰이고, 대부분의 글은 소문자로 작성되기 때문에 대, 소문자 통합 작업은 대부분 대문자를 소문자로 변환하는 소문자 변환작업으로 이루어지게 된다.

 

이러한 작업은 더 많은 변수를 사용해서 소문자 변환을 언제 사용할지 결정하는 ML 시퀀스 모델로 더 정확하게 진행시킬 수 있다. 하지만 만약 올바른 대문자 단어를 얻고 싶은 상황에서, 훈련에 사용하는 corpus가 사용자들이 단어의 대문자, 소문자의 올바른 사용 방법과 상관없이 소문자를 사용하는 사람들로부터 나온 데이터라면 이러한 방법 또한 그다지 도움이 되지 않을 수 있다. 결국에는 예외 사항을 크게 고려하지 않고, 모든 corpus를 소문자로 바꾸는 것이 해결책이 되기도 한다.

 

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

 

cleaning 작업에서 제거해야하는 noise data는 자연어가 아니면서 아무 의미도 갖지 않는 글자들(특수 문자 등)을 의미하기도 하지만, 분석하고자 하는 목적에 맞지 않는 불필요 단어들을 noise data라고 하기도 한다. 불필요 단어들을 제거하는 방법으로는 불용어 제거와 등장 빈도가 적은 단어, 길이가 짧은 단어들을 제거하는 방법이 있다.

 

정규 표현식 (Regular Expression)

 

얻어낸 corpus에서 noise data의 특징을 잡아낼 수 있다면, 정규 표현식 (Regular Expression)을 통해서 이를 제거할 수 있는 경우가 많다. HTML 문서로부터 가져온 corpus라면 문서 여기저기에 HTML 태그가 있다. 뉴스 기사를 크롤링 했다면, 기사마다 게재 시간이 적혀져 있을 수 있다. Regular Expression은 이러한 corpus 내에 계속해서 등장하는 글자들을 규칙에 기반하여 한 번에 제거하는 방식으로서 매우 유용하다.

728x90
반응형
LIST