본문 바로가기
Linguistic Intelligence/NLP

[NLP] 토큰화 (Tokenization)

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

텍스트 전처리(Text preprocessing)

 

용도에 맞게 텍스트를 사전에 처리하는 작업

 

토큰화 (Tokenization)

 

 

NLP에서 크롤링 등으로 얻어낸 코퍼스 데이터가 필요에 맞게 전처리되지 않은 상태라면, 해당 데이터를 사용하고자하는 용도에 맞게 토큰화 (tokenization) & 정제 (cleaning) & 정규화 (normalization)하는 일을 하게 된다. 주어진 코퍼스(corpus)에서 토큰(token)이라 불리는 단위로 나누는 작업을 토큰화(tokenization)라고 부른다. 토큰의 단위가 상황에 따라 다르지만, 보통 의미있는 단위로 토큰을 정의한다.

 

단어 토큰화 (Word Tokenization)

 

token의 기준을 단어 (word)로 하는 경우, 단어 토큰화 (word tokenization)라고 한다. 여기서 word는 word 단위 외에도 단어구, 의미를 갖는 문자열로도 간주되기도 한다. 

 

보통 tokenization 작업은 단순히 구두점이나 특수문자를 전부 제거하는 cleaning 작업을 수행하는 것만으로 해결되지 않는다. 구두점이나 특수문자를 전부 제거하면 token이 의미를 잃어버리는 경우가 발생하기도 한다. 심지어 띄어쓰기 단위로 자르면 사실상 word token이 구분되는 영어와 달리, 한국어는 띄어쓰기만으로는 word token을 구분하기 어렵다.

 

Word Tokenization에서 고려해야할 사항

 

tokenization 작업을 단순하게 corpus에서 구두점을 제외하고 공백 기준으로 잘라내는 작업이라고 간주할 수는 없다. 이러한 일은 보다 섬세한 알고리즘이 필요하다.

 

1) 구두점이나 특수 문자를 단순 제외해서는 안 됨

2) 줄임말과 단어 내에 띄어쓰기가 있는 경우

 

문장 토큰화 (Sentence Tokenization)

 

이 작업은 갖고있는 corpus 내에서 문장 단위로 구분하는 작업으로 때로는 문장 분류 (sentence segmentation)라고도 부른다. 보통 갖고있는 corpus가 정제되지 않은 상태라면, corpus는 sentence 단위로 구분되어있지 않을 가능성이 높다. 이를 사용하고자 하는 용도에 맞게 하기 위해서는 sentence segmentation가 필요할 수 있다.

 

이진 분류기 (Binary Classifier)

 

sentence segmentation에서의 예외 사항을 발생시키는 마침표의 처리를 위해서 입력에 따라 두 개의 클래스로 분류하는 이진 분류기(binary classifier)를 사용하기도 한다.

 

한국어에서의 tokenization의 어려움

 

영어는 띄어쓰기 (whitespace)를 기준으로 하는 whitespace tokenization를 수행해도 word tokenization가 잘 작동한다. 거의 대부분의 경우에서 word 단위로 whitespace가 이루어지기 때문에 whitespace tokenization와 word tokenization가 거의 같다.

 

하지만 한국어는 영어와는 달리 whitespace만으로는 tokenization를 하기에 부족하다. 한국어의 경우에는 whitespace 단위가 되는 단위를 '어절'이라고 하는데 즉, 어절 okenization는 한국어 NLP에서 지양되고 있다. 어절 okenization와 word tokenization가 같지 않기 때문이다. 그 근본적인 이유는 한국어가 영어와는 다른 형태를 가지는 언어인 교착어라는 점에서 기인한다. 교착어란 조사, 어미 등을 붙여서 말을 만드는 언어를 말한다.

728x90
반응형
LIST