파이썬에서 텍스트 전처리하기 - 토큰화, 정제, 정규화

2021. 11. 4. 13:30

데이터 전처리는 재미없고 지루하다. 하지만, 데이터를 어떻게 가공하느냐에 따라 모델의 성능에 영향을 끼치기 때문에 중요한 일이다. 그래서 가급적 빠르고 쉬운 방법으로 하는 것이 필요하다. 동일한 결과를 내는 코드도 여러가지 방법으로 작성할 수 있다. 굳이 어렵고 오래 걸리는 방법으로 할 필요는 없다.

 

오늘은 파이썬에서 텍스트 전처리하기 - 토큰화, 정제, 정규화에 대해서 알아보도록 하겠다.

 

 

파이썬 텍스트 전처리



텍스트 전처리 방법을 설명할 때 위의 3가지를 주로 말하는 듯 하다. 그래서, 위 3가지를 가지고 파이썬에서 어떻게 구현하는지 알아보았다.

 

1. 토큰화

영어는 주로 띄어쓰기 기준으로 나누고, 한국어는 형태소를 기준으로 나눈다. 형태소는 의미를 가지는 가장 최소한의 단위라고 한다. 영어는 띄어쓰기를 기준으로 나누면 단어 단위로 분리가 되지만, 한국어는 조사나 어미 등이 있어 품사를 기준으로 나눈다. 하지만 한국어도 띄어쓰기를 기준으로 분리했을 때 성능이 잘 나오는 경우도 있다.

영어는 keras의 precessing 모듈에서 띄어쓰기 기준으로 나누는 것을 지원한다. 한국어를 형태소 분리하기 위해서는 konlpy, 띄어쓰기를 조정하기 위해서는 pykospacing이라는 패키지를 이용한다.

 

 

2. 정제

텍스트를 입력하다보면 오타가 발생한다. 사람은 이런 오타를 유추해서 올바른 단어로 변경할 수 있지만, 기계는 불가능하다. 그래서, 이런 오타를 잡아주는 방법이 필요하다. 오타를 수정하는 데는 정규표현식을 사용하기도 하고, 자음과 모음을 단위로 유사도를 비교하는 알고리즘도 있다.

의미가 없는 기호를 제거하는 것도 정제에 포함된다.

 

기호

 

 

3. 정규화

동일한 의미의 단어도 여러가지로 파생될 수 있다. 영어에는 과거형 동사가 있을 수 있고, 한국에서는 어미를 변화할 수 있기 때문에 동일한 의미의 단어도 철자가 다를 수 있다. 이런 단어들을 동일한 의미로 처리하기 위해 정규화를 한다.

konlpy에서는 단어의 어간을 추출해 주는 기능이 있다.


오늘은 이렇게 파이썬에서 텍스트 전처리하기 - 토큰화, 정제, 정규화에 대해서 알아보았다. 텍스트 전처리에 어떠한 방법들이 있는지 알아두면 나중에 할 때 더 효율적으로 할 수 있을 것이다.

댓글()