파이썬 형태소 분석하는 방법 알아보기!

2021. 9. 6. 10:39

AI가 각광을 받으며 자연어 처리에 많은 관심이 쏠리고 있다. 자연어 처리는 이전에 많은 시도와 알고리즘이 있었지만, 만족스러운 결과를 얻기 힘든 영역이었다. 하지만, 딥러닝을 활용하며 기존에 어려웠던 부분들이 해결되고 있다. 구글 번역의 결과는 초벌 번역으로 손색이 없을 정도로 높은 수준의 결과를 제공한다. 그 동안의 많은 시도들이 있었던 만큼, 자연어 처리에도 알아야 할 것들이 많다.
오늘은 파이썬에서 텍스트를 형태소 단위로 분석하는 방법에 대해서 알아보고자 한다.

 

 

파이썬 형태소 분석

 

 

기계가 자연어를 이해하기 위해서는

사람은 문장을 보면 문맥을 이해할 수 있지만, 기계는 0과 1밖에 알지 못한다. 그래서 문장을 기계가 이해할 수 있도록 정의해 주어야 한다. 그래서 문장을 쪼개게 되는데, 가장 많이 하는 방법은 형태소 단위로 분리하는 것이다. 형태소란 국어사전의 정의에 따르면 '뜻을 가진 가장 작은 말의 단위'라고 한다. 형태소보다 더 작은 단위인 자음, 모음 단위로 쪼개는 방법도 있다.

 

 

형태소 단위로 분리하는 방법은?

텍스트를 형태소 단위로 분리하는 방법은 크게 2가지가 있는 것 같다. 첫번째 방법은 어떤 단어는 어떤 품사라고 정의하고, 이를 이용해서 해당 품사로 분리하는 방법이다. 딕셔너리가 동일해도 방법에 따라 형태소가 분리되는 결과는 다르다. 두번째 방법은 딕셔너리를 이용하지 않고 모델을 이용해서 학습시키는 방법이다. 사전을 이용하지 않기 때문에, 어떤 품사인지까지는 알기 어렵고 문장에서 단어들을 구별해 내는 방법이다. 특정 문자열이 텍스트에 자주 등장한다면 해당 문자열은 하나의 단어로 볼 수 있다. 그런 방식으로 문장을 분리하고, 각각의 단어들이 어떤 품사인지 보는 것이다. 위와 같이 크게 2가지 방법으로 분류할 수 있을 듯 하다.

 

파이썬에서 형태소를 분리하기 위해 가장 많이 사용하는 패키지는 konlpy이다. konlpy에는 총 5가지의 형태소 분석방법을 제공하고 있다. Hannanum, Kkma, Komoran, Mecab, Twitter 각각의 방법의 차이는 konlpy 홈페이지에 있으나 정확히 알기는 어렵다. konlpy는 상기 방법 중 첫번째 방법을 이용해서 형태소를 분리하다. 자세한 내용은 Konlpy 홈페이지를 참조하도록 하자.

 

 

KoNLPy 한국어를 처리할 수 있는 패키지이다

 


soynlp는 두 번째 방법으로 형태소를 분리한다. 관련 문서를 보니 문장을 단어 단위로 분리하는 것은 비지도 학습을 사용하고, 그 단어가 어떤 품사인지에 대해서는 사전을 이용하거나 룰을 이용하는 듯 하다. 요즘에는 사전에도 없는 신조어들을 많이 쓴다. 그러한 단어들을 분리하기 위해서는 두 번째 방법이 좋을 듯 하다. 자세한 내용은 SoyNLP 홈페이지를 참조하도록 하자.

 

 

오늘은 이렇게 텍스트의 형태소를 분리하는 방법에 대해서 알아보았다. 텍스트를 기계가 이해할 수 있는 의미 단위로 분리하는 작업도 다양한 방법과 시도들이 있었다. 텍스트의 성격에 따라 분리가 잘 되는 방법과 그렇지 않은 방법들이 있을 듯 하다. 다음 포스팅에서는 konlpy와 soynlp를 이용해서 형태소를 분리하는 작업들을 해 보려고 한다. 실제 분리를 해보면 차이를 더 잘 알 수 있지 않을까 한다.

댓글()