rueki

텍스트 전처리 - 정규화(Nromalization) 본문

DL/NLP

텍스트 전처리 - 정규화(Nromalization)

륵기 2019. 7. 1. 11:27
728x90
반응형

본문은 https://wikidocs.net/22592 를 참고해서 작성한 글입니다.

 

 

이전 시간에서는 토큰을 분류하는 토큰화에 대해 알아보았다.

이번에는 텍스트 데이터를 용도에 맞게 정제 및 정규화하는 것을 알아보자.

 

정제(Cleaning) : 노이즈 데이터 제거

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

 

이제 정규화하는 기법에 대해 알아보자.

 

 


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

정규 표현식의 규칙에 따라, 같은 의미의 단어지만 표기가 다른 언어들을 하나의 언어로 정규화한다.

Ex) USA == US

 

2. 대소문자 통합

영어문장에서는 글 작성이 대문자와 소문자로 구분되어 작성되고, 주로 소문자로 작성이 이루어지기 때문에

대문자에서 소문자로 변환이 주로 진행된다.

"He is handsome." 이라는 문장이 있을 때 'he' 라는 단어를 찾을 때 문장에서 소문자 변환이 이루어지면

원하는 결과를 받을 수가 있다.

그러나 국가와 같은 고유명사에서 무분별하게 소문자 변환이 이루어지면 큰일이 날 것이다.

그래서 하나의 규칙으로, 영어 문장은 처음 단어만 대문자이니 첫 단어만 소문자 변환을 하고

나머지는 대문자 상태로 놔두는 것이다.

 

3. 불필요한 단어 제거

노이즈 데이터 (자연어가 아니면서 아무 의미가 없는 글자들, 분석 목적에 맞지 않는 불필요 단어들)를

제거해야 한다.

 

1) 등장 빈도가 적은 단어

텍스트 데이터에서 빈도 수가 너무 적어 자연어 처리에 도움이 안 되는 단어들이 존재

2) 길이가 짧은 단어

영어권 언어에서는 길이가 짧은 단어를 삭제하는 것만으로 어느정도 정제효과를 볼 수 있다.

 

한국어로 타는 배는 영어로 ship이다. 여기서 무슨 차이점이 있을까?

단어의 길이 차이이다. 이 외에도 한국 단어와 영단어에서의 동일의미의 단어라 가정시, 길이차이가 있다는 것을

빈번하게 볼 수 있다.

그래서 문장에서 단어 길이가 짧은 단어를 제거해도 문장 분석에 큰 무리가 없지만,

예외로 짧은 길이의 명사 단어가 제거될 경우가 있으므로 사용에 지장이 있다. 

import re
text = "I don't want to eat anymore"
shortword =re.compile(r'\W*\b\w{1,2}\b')
print(shortword.sub('',text))
don want eat anymore
728x90
반응형
Comments