취향저격 - 형태소 분석기(1)

hsoh0423·2021년 2월 24일
3

취향저격 프로젝트

목록 보기
2/10
post-thumbnail

오류가 있는 내용이나 정확하지 않은 내용에 대해서는 댓글로 피드백 달아 주세요!

형태소 분석기를 설명하기에 앞서 자연어처리를 하기위해 필요한 전처리에 대해 간단하게 설명하고자 한다.

전처리의 필요성

자연어처리를 하기 위해서는 전처리 과정이 필수다. 전처리가 필요한 이유는 형태소를 분석했을 때 의미 없는 단어인 불용어가 같이 학습 되어 보다 정확한 결과가 나오지 않을 수 있기 때문이다. 혹은 자신이 만들고자 하는 것에 따라 필요한 데이터의 형태를 파악해 원하는 데이터만을 다루기 위해서도 필요하다. 전처리과정을 요리에 비유하자면 재료를 손질하는 과정이라고 비유하기도 한다.

이번 취향저격 프로젝트를 진행하면서 전처리 과정에서 사용한 형태소 분석기들에 대해서 설명하고자 한다.

형태소 분석이란

형태소 분석이란 프로젝트를 위해 모은 텍스트 데이터를 형태소를 비롯하여, 어근, 접두사/접미사, 품사 등 다양한 언어적 속성의 구조를 파악하는 것이다.

KoNLPy

KoNLPy("코엔엘파이")는 한국어 정보처리를 위한 파이썬 패키지다.
KoNLPy를 설치하면 Hannanum, Kkma, Komoran, Mecab, Twitter라는 형태소 분석기를 사용할 수 있다. (Twitter는 현재 Okt로 이름이 바뀌었다.) 윈도우 환경에서는 Mecab을 아마 사용할 수 없고 사용하더라도 복잡한 과정이 필요한 것으로 알고있다. 그래서 은전한닢 프로젝트의 eunjeon이라는 형태소 분석기가 있는데 이는 뒤에 따로 분류 하기로 했다.

형태소 분석기 성능 비교

형태소 분석기마다 품사 태그나 띄어쓰기를 나누는, 혹은 형태소를 분석하는 기준이 다르기 때문에 자신의 프로젝트에 맞는 형태소 분석기를 찾아 사용하는 것이 좋다. 이를 위해 형태소 분석기의 성능을 비교하기로 했다.

처리 시간

문장의 개수가 늘어날 수록 차이가 명확해 지는것을 볼 수 있다. Mecab은 속도가 거의 변동이 없는 것을 보아 처리하는 속도가 가장 빠른것을 볼 수 있고, 10,000 개의 문장 이후 Kkma의 처리 속도가 점점 오래걸리는 것을 확인 할 수 있다. 이를 보고 프로젝트의 문장 개수에 따라 빠르게 처리해야 되는지 아닌지에 따라 형태소 분석기를 선택 할 수도 있다.

형태소 분석

형태소 분석기 마다 다른 방식으로 형태소 분석을 하는 것을 확인하기 위해 몇 개의 예시를 형태소로 분석한 결과가 있다.

  1. 아버지가방에들어가신다

이 예시를 통해 띄어쓰기를 어떻게 구분하는지를 알 수 있다.
우리는 아버지가 방에 들어가신다 라는 것을 알 수 있다. 형태소 분석기를 통해 분석한 결과는 어떻게 나오는지 확인해 보자.

위의 결과로 보아 Mecab이 정확하게 분석 한 것을 볼 수 있다. 단어 옆에 적혀있는 영어는 형태소를 분석할 결과로 품사 태그표를 이용하여 단어의 형태가 무엇인지 알 수 있다.

  1. 나는 밥을 먹는다 vs 하늘을 나는 자동차

이 예시를 하는 이유는 나는 밥을 먹는다'나'를 명사로, 하늘을 나는 자동차'나'를 동사로 표시하는게 맞는데 이를 각 형태소 분석기에서는 어떻게 처리하는지를 확인하기 위해서이다.

결과를 보면 Kkma가 정확하게 분석한 것을 볼 수 있다.

위의 분석한 결과와 품사 태그표를 이용하여 자신에게 적합한 형태소 분석기를 찾아 텍스트 전처리를 하면 된다.

eunjeon

eunjeon은 은전한닢 프로젝트와 mecab 기반의 한국어 형태소 분석기이다. 윈도우 환경에서 Mecab을 쓰기에는 어려운 부분이 있기 때문에 eunjeon을 사용하는 것을 추천한다. eunjeon을 사용하기 위해서는 KoNLPy와 별개로 설치를 따로 해줘야 한다.

마치며

이번 글에서는 각 형태소 분석기의 특징들과 성능에 대해서 비교해 보았다. 다음 글에서는 실제로 취향저격 프로젝트에서 사용한 형태소 분석기와 사용 법에 대해서 설명해 보겠다.

Reference

https://konlpy-ko.readthedocs.io/ko/v0.4.3/
https://github.com/koshort/pyeunjeon
https://konlpy-ko.readthedocs.io/ko/v0.4.3/morph/

profile
커피를 좋아하는 평범한 대학생

0개의 댓글