자연어 처리에서 전처리는 매우 중요하다. 기본적으로 컴퓨터는 사람이 사용하는 자연어를 이해할 수 없기 때문에 컴퓨터가 이해할 수 있는 형식으로 변환하는 것이 필요하다. 뿐만 아니라 be라는 동사가 is, am, are 등 다양한 형태로 쓰일 수 있듯이 자연어는 동일한 단어가 다른 모습으로 나타나기도 한다. 그리고 인간은 그것들이 모두 원래 어떤 형태였는지 인지하고 사용할 것이다.
컴퓨터 역시 이런 자연어의 특징을 알아야 할 텐데, 그것을 위해 stemming, lemmatization 등이 필요하다. stem은 한국어로는 어근, lemma는 표제어로 사전에서 찾을때 사용하는 형태, 기본 사전형 단어 정도로 생각하면 될 것 같다.
stemming은 상대적으로 간단하다. 어근과 어미를 단순히 분리시키고 어근을 찾는 것이다.
studying --> study
studied -- > stud
이와 같이 간단하게 어근과 어미를 분리하는 것이다. 따라서 어근을 추출 했을때, 실제로 존재하지 않는 단어일 가능성도 있다. 일반적으로 명사의 경우 어미를 제거하면 본 형태가 나올 가능성이 높고, 활용형이 많은 용언의 경우 어미를 분리하면 없는 단어 형태가 나올 가능성이 크다.
lemmatization은 stemming에 비해 정교한 작업이 필요하다. 위에서 예로 들었듯 is, am, are는 모두 be라는 동사에서 나온 형태이다. lemmatization은 용언에서 많이 쓰일 것으로 예상한다.
우선 형태소 분석을 통해 어간과 접사를 분리한다. 어간은 활용어가 활용될 때 변하지 않는 부분, 즉 단어의 본래 뜻을 담고있는 부분이라고 할 수 있다.
studying = study + -ing
에서 study
는 단어의 중심인 어간이고 -ing
는 활용형을 나타내는 어미가 된다.
이러한 lemmatization의 경우 stemming과 달리 lemma를 추출 했을 때 단어의 형태가 보존되는 특징이있다. 그리고 본래 단어의 품사를 알고 있다면 lemmatization을 하는데 유용한 정보가 된다.