자연어처리(NLP)-05 (정제 및 정규화)

윤용상·2022년 9월 2일
0

자연어처리 NLP

목록 보기
1/1

정제(Cleaning)과 정규화(Normalization)

코퍼스에서 용도에 맞게 토큰을 분류하는 작업을 토큰화(Tokenization)이라고 하며, 토큰화를 위해 정제와 정규화 과정이 선행된다. 이들의 목적은 다음과 같다.

  • 정제(Cleaning): 현재 코퍼스로부터 노이즈 데이터를 제거
  • 정규화(Normalization): 같은 의미를 가지지만 표현이 다른 단어들을 하나로 통합 (e.g., US : USA, uh-huh : uhhuh )

정제작업은 보통 토큰화 작업에 방해가 되는 부분들을 먼저 배제시키기 위해 토큰화보다 선행되기도하지만 그후에도 남아있는 노이즈를 제거하기 위해 지속적으로 이루어진다. 완벽한 노이즈제거는 어려우므로 적당한 trade-off를 고려하여 마무리 짓는다.

1. 규칙에 기반한 통합

상기 예시처럼 (e.g., US : USA, uh-huh : uhhuh) 형태는 다르지만 같은 의미를 지닌 단어들을 코딩을 통한 규칙으로 정규화 할 수 있다.

이 단계를 거치면 us <-> USA 상호검색이 가능해진다. 이는 어간 추출(stemming)과 표제어 추출(lemmatizaiton) 방법을 통해 가능하며 추후 어간 추출(stemming)과 표제어 추출(lemmatizaiton)에서 후술한다.

2. 대소문자 통합

대개 영어권에서는 문장의 맨 첫글자나 특정한 고유명사를 제외하고는 소문자로 쓰이는 편이기에 소문자 변환작업이 주로 이루어진다. 이 과정을 통해 Automobile <-> automobile 상호검색이 가능해지므로 매우 유용하다. 예를 들어 ferrari만 검색하여도 A fearrari car를 결과로 얻을 수 있다.

물론 반대의 경우도 존재한다. us우리를 뜻하는 단어고 US미국 국가를 표현하기 때문에 무작정 소문자 변환을 해서는 안된다. 때문에 문장의 첫 글자만 소문자 변환을 하는 방법으로 문제를 줄 일 수 있다.

그외에는 머신러닝의 sequence model을 통해 언제 소문자 변환작업을 해야할지 보다 능동적으로 정할 수 있다. 상황에 따라 1) corpus의 모든 단어를 소문자로 변환, 2) 문장의 첫글자만 변환, 3) 모델을 통해 변화 등의 방법을 활용해 볼 수 있다.

3. 불필요한 단어의 제거

불필요한 단어인 노이즈 데이터는 자연어가 아니면서 아무 의미도 갖지 않는 일부 글자들 (e.g., 특수문자 등)이거나 혹은 목적에 맞지 않는 불필요단어들이다.

노이즈 데이터의 제거 방법으로는 다음 방법들이 있다.

  1. 등장빈도가 적은 단어
  2. 길이가 짧은 단어 제거
  3. 불용어 제거
  4. 특수문자 제거

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

전체 텍스트에서 등장하는 빈도수가 극히 낮아 언어 모델 정립에 도움이 되지 않는 단어들은 제거한다. 예를 들어 100,000개의 메일을 분석하여 스팸 필터링을 한다고 했을때 총 5회 미만으로 등장한 단어들은 모델링에 방해만 된다. (Exporarly Data Analysis (EDA)에서 IQR 방식이랑 outlier 제거랑 비슷한 것 같다.)

(2) 길이가 짧은 단어

영어권에서는 대체로 단어의 길이가 5~8글자로 매우 긴편이기 때문에 길이가 짧은 단어를 제거하는 것만으로도 큰도움이 된다. 예를 들어

  • 길이가 1인 단어: 주어 I , 관사 a , 구두점 .
  • 길이가 2인 단어: 조사 등 it, at, to, on, in, by

길이가 3인경우는 dog, cat, car등이 있으므로 주의해서 제거해야 한다. 다만 한국어의 경우 한자를 주로 활용하므로 1~2 글자로 이루어진 단어들이 주를 이루기 때문에 상기 방법을 적용하기 어렵다.

4. 정규표현식 (Regular Expression)

노이즈가 일정한 패턴을 가지고있다면 정규표현식으로 간단하게 제거할 수 있다. 가령 HTML태그가 달려있다던가, 일정한 특수문자가 붙어있는 경우 규칙을 통해 손쉽게 처리가 가능하다.

참고자료
출처: Wikidocs 2- 2

profile
사회초년생

0개의 댓글