한국어 형태소 분석기(POS) 분석 - 3편. 형태소 분석기 비교

코모란

장점

여러 어절을 하나의 품사로 분석 가능함으로써 형태소 분석기의 적용 분야에 따라 공백이 포함된 고유명사(영화 제목, 음식점명, 노래 제목, 전문 용어 등)를 더 정확하게 분석할 수 있다. 개발자가 지속적으로 업데이트 KOMORAN만 유일하게 자소가 분리된 문장이나 오탈자에 대해서도 괜찮은 분석 품질을 보여준다. 한계점 다른 형태소 분석기에 비해 로딩시간이 길다. 하지만 분석속도는 빠름, 띄어쓰기 없는 문장 분석에 취약한편

업데이트 (2016)

속도 개선

한나눔

태그

집합 총 69개의 확장된 카이스트 태그셋을 기본으로 사용, 현재는 6개 상위 태그에 대해서 20개의 새로운 태그를 세분화하여 사용

한계점

띄어쓰기가 없는 문장은 분석 품질이 좋지 않다. 정제된 언어가 사용되지 않는 문서에 대한 형태소 분석 정확도가 높지 않은 문제점

특징

전체 시스템은 각 모듈들의 조합으로 구성되며, 현재까지 개발된 모듈은 입력 필터, 문장 분리기, 형태소 분석기, 미등록어 처리기, 형태소 분석 후처리기, 그리고 태거가 있다.

Kkma(꼬고마)

장점

띄어쓰기 오류에 덜 민감한 한글 형태소 분석기

알고리즘

기본적으로 동적 프로그래밍을 이용해서 모든 가능한 형태소 분석 후보를 생성하고 적합하다고 판단되는 순서대로 분석 후보들을 정렬 상용 형태소 분석기에 뒤지지 않는 성능을 보이기 위해서 다양한 최적화 방법을 이용함

  1. 기분석 사전을 이용한 인접 조건 검사 방식을 이용(속도를 위해)
  2. 몇 가지 휴리스틱, 히든 마르코프 모델(HMM: Hidden Markov Model)에 기반한 확률 모델을 이용(품질을 위해)

    특징

    구분분석기 일부 탑재되었다. 세종품사태그에 가장 가깝고 분석 범주 또한 가장 많다.

한계점

분석시간이 Knlpy 중에서 가장 오래 걸린다. 정제된 언어가 사용되지 않는 문서에 대한 형태소 분석 정확도가 높지 않은 문제이 있다.

Mecab

한나눔이나 꼬꼬마(kkma) 분석기 프로젝트 등이 진행되고 있긴 하지만, 형태소 분석기임에도 띄어기 구분의 오류나 공개 소스를 구하기 어렵다는 문제등의 문제들이 있어 이런 문제에 어떤 기여를 할 수 있을 것인지 고민하는 차원에서 은전한닢(mecab) 프로젝트가 시작 되었다.

장점

새로운 사전 추가 기능: 지능형 형태소 분석기(분석 결과를 수작업으로 수정가능), MACH, HAM, KKMA, UTagger는 분석 사전이 분석기에 포함 되어 있어 새로운 단어 추가 불가능 → Mecab이 이를 해결

CRF 채용하여 HMM 보다 성능 향상 CRF 값 추정 가능, 추가적으로 Twitter가 공개 되기 전, 띄어쓰기에서 가장 좋은 성능과 속도 정확도 모두 좋은 성능을 보여 주었다.

한계점

미등록어 처리 문제점, 동음이의어 처리문제

Twitter

한계점

미등록어 처리 문제점, 동음이의어 처리문제, 분석 범주(사용가능한 태그)가 다른 형태소 분석기들에 적음,

특징

정규화, 토큰화, 어근화(Stemming),

Twitter 형태소 분석기만이 유일하게 어간화(stemming)기능을 제공한다.

아직 KoNLPy 단에서 dictionary를 업데이트 하는 방법을 제공하고 있지는 않지만 전처리 또는 후처리를 통해 처리하면 될 것이다. 처리하는 양이 GB인 경우 속도가 빠른 Mecab을 사용하는 것이 좋다.

Khaiii

입력된 각 음절에 대해 하나의 출력 태그를 결정하는 분류 문제로 접근한 딥러닝 모델이다.

장점

음절 기반 모델

한국어 형태소 분석 결과는 원형 복원, 불규칙 활용 등의 이유로 입력 문자와는 형태와 길이가 달라짐. ex) ‘져줄래’와 같은 입력 어절의 분석 결과는 ’지/VV + 어/EC + 주/VX + ㄹ래/EF’와 같이 출력의 길이와 형태 모두 쉽게 예측이 가능하지 않음 이러한 길이의 불일치 문제가 있기에 기계학습 분류기에 기반한 모델의 출력을 설계하는 부분이 중요

알고리즘

신경망 알고리즘들 중 CNN(Convolutional Neural Network)을 사용한다.

자연어 처리에 많이 사용하는 LSTM(Long-Short Term Memory, 장단기 메모리)와 같은 RNN(Recurrent Neural Network, 순환 신경망) 알고리즘은 속도 면에서 활용도가 떨어질 수 있다.

최신의 딥러닝 방법

기존에 고전적인 HMM(Hidden Markov Model, 은닉 마르코프 모델), CRF(Conditional Random Fields, 조건부 랜덤 필드) 등의 방법들은 트라이(TRIE) 사전을 이용하여 들쑥날쑥한 형태의 격자(lattice)를 비터비(Viterbi) 알고리즘을 통해 최적의 경로를 탐색하는 형식으로 많이 접근하였다.

Khaii의 경우seq2seq(sequence to sequence) 방식을 사용하여 ‘져’, ‘줄’, ‘래’ 라는 입력 원문에 대해 인코더를 통해 latent 벡터를 생성하고 디코더를 통해 차례대로 ‘지/VV’, ‘어/EC’, ‘주/VX’, ‘ㄹ래/EF’ 라는 출력을 생성한다. (seq2seq 방식에서 주로 사용하는 RNN은 속도가 느리고, 입력 음절과 출력 형태소 간의 연결 정보가 끊어져 형태소 분석 결과가 입력의 어느 부분으로부터 나왔는지에 대한 정보가 소실되는 단점이 존재한다.)

업데이트

특징

Kakao Hangul Analyzer III”의 첫 글자들만 모아 만든 이름으로 카카오에서 개발한 세 번째 형태소 분석기

Conclusion

형태소 분석기의 각 장점과 단점에 따라 프로젝트에서 사용할 형태소 분석기를 사용해야 한다. Konlpy(코모란, 한나눔, kkma, mecab, twitter)에서 선택하여 사용 하는 것을 추천한다. Konlpy 안에서 각 형태소의 장단점을 표로 정리 하면 다음과 같다.

  코모란 한나눔 Kkma Mecab Twitter
장점 자소 분리 가능, 오탈자 분석 가능, 고유명사 분석 가능 로딩시간이 빠른편 띄어쓰기 오류에 덜 민감 새로운 사전 추가 가능, (twitter 공개전) 띄어쓰기에서 가장 좋은 성능, 속도, 정확도 띄어쓰기 성능이 가장 좋다, stemming 가능, 이모티콘, 해쉬태그 같은 인터넷 텍스트에 강함 , 비속어, 비표준어도 분석 가능
한계점 로딩 속도가 길다, 띄어쓰기 없는 문장분석에 취약하다 띄어쓰기 없는 문장 분석에 매우 취약, 정제된 언어가 사용되지 않는 문서에 대한 형태소 분석 정확도가 높지 않은 문제점 분석 시간 오래 걸림, 정제된 언어가 사용되지 않는 문서에 대한 형태소 분석 정확도가 높지 않은 문제점 미등록어 처리 문제, 동음의어 처리 문제 미등록어 처리 문제, 동음의어 처리문제, 분석 범주 적은편

Twitter를 제외한 나머지는 어간화(stemming)을 제공하고 있지 않다.

예를 들어, 리뷰 데이터의 경우 띄어쓰기 오류, 줄임말, 이모티콘, 비속어 등이 많고, ‘‘좋은데’’, ‘‘좋아요”, “좋아”, “좋지만” 등 같은 의미를 가지는 단어의 어근화(stemming)이 필요하다. 그러므의 Twitter를 사용하는 것이 좋다. 하지만, 어근화 기능이 필요하지 않다면 Mecab 사용을 권장한다. 일반적인 상황에서 띄어쓰기가 되지 않은 문장에서 가장 좋은 형태소 분석 성능과 높은 정확도를 보여 주기 때문이다.

Reference