한글 형태소 분석2009.02.06 09:53

 

1. 형태소 분석이란

 형태소 분석이란 자연 언어 분석의 첫 단계로서 단어(한국어의 경우 어절)를 구성하는 각각의 형태소들을 인식하고 불규칙 활용이나 축약, 탈락 현상이 일어난 경우 원형을 복원하는 과정을 말한다(강승식 저).


2. 형태소의 정의

 형태소란 단어(어절)을 구성하고 있는 최소한의 언어 요소라고 할 수 있다. 가장 쉽게 생각할 수 있는 것이 '명사', '대명사', '수사' 등의 체언, '형용사', '동사' 등의 '용언', '부사', '관형사', '감탄사' 등의 독립언, '조사', '어미', '선어말어미', '접사' 등의 기능어가 있다. 형태소는 실질적인 의미를 가지고 있는 실질형태소와 기능적 요소를 담당하고 있는 기능형태소로 크게 양분되며, 색인어 추출을 위한 형태소 분석시 이 둘을 분리하는 과정이 우선시 된다. 한마디로 형태소는 더 이상 별개의 의미나 기능으로 분리할 수 없는 최소한의 언어 요소라고 보면 될 듯 하다.


3. 한국어 형태소 분석

 우리가 검색엔진 제작시 형태소 분석에 봉착할 수 밖에 없는 이유가 있다. 바로 우리가 다루는 언어가 한국어이기 때문이다. 영어를 보면 소년이라는 의미의 'boy'가 복수로 변하기 위해서는 끝에 '-s'를 첨가하면 된다. 'boys'가 바로 그것이다. 특별히 단어의 형태가 크게 변한다거나 다양한 기능어가 붙지 않는다. 그러나 한국어는 다르다. 한국어의 '소년'이라는 명사에는 '소년의', '소년은', '소년들', 소년인가요', '소년아' 등 각종 기능어 및 접사, 용언화 과정 등이 가능하다. 따라서 이러한 언어적 변화 현상을 찾아내어 최종의 형태소를 인식해야 한다. 그 규칙을 찾아내기란 쉽지 않고 이를 기계적으로 구현하는 것 역시 만만치 않다.



4. 형태소 분석의 필요성

 그렇다면 한국어에 왜 형태소 분석이 필요할까. 바로 색인어 추출을 위해서이다. 우리가 사용하는 색인어 및 검색어는 주로 명사 위주이다. 이런 명사를 추출하기 위해서는 불행히도 각종 기능어와 타 품사, 형태 변형 등의 인식이 필요하게 된다. 물론 형태소 분석없이 별도의 색인어 추출 방법을 사용하게 된다면 관심을 가지지 않아도 되는 것은 당연하다.검색엔진에 있어 색인 DB의 구조와 랭킹 알고리즘 역시 중요하나 가장 적합하고 확실한 색인어가 저장되어 있어야만 그 성능이 탁월할 수 있다. 한국어 텍스트를 단순히 공백(어절)으로 나눠 색인하게 되면 초라한 검색 결과를 보게 되는 이치이다.


5. 색인어 추출 방법

 색인어를 추출하는 방법은 여러가지가 있으나, 이 프로젝트에서는 명사, 미등록어, 영어(영어는 품사를 가리지 않고 모두 색인어 처리 한다.) 추출 방법은 모란소프트의 조영환 박사의 Text Retrieval and Mining #4의 벡터 공간 모델의 참고 하였고, 문서 색인어의 가중치 산출에는 lnc기법을 적용하였다.



게시물이 등록 될 때 색인어 추출 후 즉시 DB에 insert를 하는데, 이때 CPU cost가 높아지는것은 사실이나, 스케쥴링 처리 하지 않고, Process의 Priority를 Lowest로 하여 시스템을 생각한 색인 등록이며, 등록시 시간이 걸리기 때문에 게시물이 등록 될때 쓰레드 처리를 하여 비동기로 insert 처리를 한다.


6. 형태소 분석의 필요성

 그렇다면 한국어에 왜 형태소 분석이 필요할까. 바로 색인어 추출을 위해서이다. 우리가 사용하는 색인어 및 검색어는 주로 명사 위주이다. 이런 명사를 추출하기 위해서는 불행히도 각종 기능어와 타 품사, 형태 변형 등의 인식이 필요하게 된다. 물론 형태소 분석없이 별도의 색인어 추출 방법을 사용하게 된다면 관심을 가지지 않아도 되는 것은 당연하다.검색엔진에 있어 색인 DB의 구조와 랭킹 알고리즘 역시 중요하나 가장 적합하고 확실한 색인어가 저장되어 있어야만 그 성능이 탁월할 수 있다. 한국어 텍스트를 단순히 공백(어절)으로 나눠 색인하게 되면 초라한 검색 결과를 보게 되는 이치이다.


Posted by dotnetpower