연구/형태소 분석

다시 살아나는 꼬꼬마

락끄 2014. 2. 27. 15:33

마지막 블로그가 무려 6년 전이다. 

학교 졸업 후 꼬꼬마에 대한 개발을 거의 하지 않고 있긴 했지만, 졸업 직전까지 수행한 작업으로 인해서 나름 꼬꼬마의 성능은 많이 향상 되었다.

현재 버젼은 최근 마지막 배포 버젼(2011)에 비해서는 확률 모델 개선, 속도 개선 (무려 300배 가량 향상)이 되었다. 

하지만 아직도 해야할 일들이 많다.





1) 사전 관리를 위한 새로운 프로젝트 생성

아무래도 사전 기반이다보니 사전에 대한 의존성이 큰데, 신조어를 추가해주지 못하다 보니 성능이 떨어지는 부분들이 계속 발견된다. 이를 개선할 수 있도록 사전 관련 프로젝트를 하나 추가해서 독립적으로 개선해 나갈 생각이다.


2) 사전 Compile & Loading 통합

꼬꼬마는 사전을 기반으로 후보 탐색을 하기에 사전의 성능에 따라서 속도가 많이 좌지우지 된다. 이를 위해 지인의 도움을 통해 속도와 메모리 사용을 현격히 개선하였는다. 하지만, 이로 인해 사전에 대한 compile과정이 필요하게 되어서, 항상 사전이 변경될 때마다 사전에 대한 compile과정이 추가되어야 했다. 이를 수정하여 compile과 loading을 runtime시에 수행할 수 있도록 할 예이다.


3) Tokenizer 성능 개선 (품질 및 속도)

사전 탐색 등 후보 생성은 잘하고 있지만, Tokenizer를 이용해서 단순 분석할 수 있는 것들이 잘 처리가 안된다. 성능 문제로 인해서 추가하지 않기도 했는데, automata를 잘 적용해서 Tokenization 품질 및 성능을 향상 시킬 계획이다. 특히 JFlex와 같은 library를 활용하는 방법과 직접 코딩을 하는 방법에 대한 성능 비교를 통해 최적 방법을 찾아볼 생각이다.


4) 확률 모델 처리 모듈 오류 수정

Viterbi algorithm을 이용하여 후보 생성 및 후보 우선 순위를 계산하게 구현이 되어 있다. 확률 모델 자체에오류가 있는 것 같은데, 이를 수정해야 기대하는 분석 품질을 얻을 수 있을 것 같다. 현재는 종종 이상한 분석 결과가 만들어 진다.


5) Lucene Wrapper 개발

현재 이수명님이 제작하신 Lucene Korean Analyzer가 Lucene 기반의 검색 엔진을 위한 한글 인덱스 생성에 활용될 수 있다. 최근에는 정식으로 arirang으로 등록되는 것 같은데, 꼬꼬마도 Lucene에 활용될 수 있도록 wrapper를 만들 생각이다. Lucene의 인덱싱 메카니즘을 정확히 이해할 필요가 있을 것 같고, 해당 모듈에 대한 이해가 부족한 상황이라 공부하면서 진행할 계획이다.


6) Socialization

처음에는 알아서 사용하고, 몇몇 개발자 분들은 개발에 활용했다고 메일도 보내고 그랬었는데, 지금은 관리가 안되고 있기도 하고 활용도가 많이 떨어진 것 같다. 나름 경쟁력 있는 성을을 갖추었다고 생각하는데, 더 많은 사람들이 활용할 수 있도록 해야할 것 같다. 이를 위해서는 좀더 체계적인 프로세스를 따를 수 있는 개발 환경을 만드는 것을 선행해야하지 않을까 생각한다.


나름 가장 오랜 시간 많은 에너지를 쏟아 부은 것인데 활용이 되지 못하고 있어서 안타깝다.

많이 사용해서 세상에 도움이 됐으면 좋겠다.


See.

- http://kkma.snu.ac.kr/

https://github.com/therocks/kkma