한글 형태소 분석2009.08.06 09:23
일전에 '한글 형태소 분석기' 라는 아이템에 대해 닷넷 프레임웍 + 오픈소스로 진행 하겠다고 했습니다.
그러면 왜 여러가지 프레임웍을 덕지덕지 붙이려고 하는지 다시 한번 정리 해 볼려고 합니다.

한글 형태소 분석을 하는 이유는 수십~수백억 개의 문서가 존재하는 웹에서 검색엔진이 사용자가 원하는 데이터를 색인화 하기 위해서 형태소를 분석하여, 꼭 필요한 색인어 추출이 주 목적입니다.

색인어 추출을 할때 크게 두가지 방법으로 나눌수 있습니다.

1. 수작업 색인
   - 훈련된 사서나 주제 전문가들이 통제된 어휘를 기반으로 색인어를 추출.
   - 많은 색인 시간과 비용을 요구
   - Naver, Yahoo
2. 자동색인
   - 컴퓨터에 입력된 문서를 분석하여 이 문서의 내용을 대표할 수 있는 단어 또는 단어구 들을 추출.
   - 적은 색인 시간과 비용, 정확도가 비교적 떨어짐.
   - Bing, Google

제가 개발하게 될 방법은 자동색인 입니다.

자동 색인을 하기위해서는 다음과 같은 절차가 필요합니다.

1. 어휘분석(Lexical Analysis)
2. 불용어(Stopword) 제거
3. 스테밍(Stemming)
4. 가중치 계산 및 통계정보 추출

영어의 경우에는 Stemming 에서, 띄어쓰기 기반으로 나눈뒤 단어의 원형을 추출하고 사전 검색으로 처리하는 방법이 있지만
한글의 경우에는 그 단어의 원형을 찾기가 정말 모호(ambiguous)합니다. 예를 들자면 'ㄹ'불규칙 현상 이라든지, 문장이 용언화가 되면서 '철수가방에 들어간다' 또는 띄어쓰기를 잘못한 경우 교정 작업등의 굉장히 복잡한 알고리즘이 요구됩니다.

이 때문에 대부분의 한글 형태소 분석에 관한 논문들에서 결론을 불가 라고 내고 있습니다.

여기서 '불가' 라는 말은 아예 하지 못한다는것이 아니라, 수학에서 처럼 정답이 하나로 떨어지지 않는다는 것 입니다.
KAIST, 부산대학교, 국민대학교 등에서 관련 연구를 지속적으로 하고 있고, 하나의 문장이 여러가지로 나누어 질수 있다는 것 까지 연구가 되고 있습니다. 문장의 의미적 오류를 찾는 알고리즘이 개발되기 전까지는 어찌할 도리가 없는것도 사실이죠.

하지만!!! 저는 완벽한 형태소 분석을 하려는것이 아니라, 제가 생각하는 플랫폼, 프레임웍이 효과적으로 동작할 수 있는 최적의 아이템이라는것이죠. 이유는...

첫째. 불안정한 한글의 Stemming 에 SPRING.NET 의 AOP를 이용하여 유연하게 로직을 추가 할수 있습니다.
둘째. 사전검색을 할때 해쉬테이블(HashTable)을 사용할 예정인데, 이에 대한 고사양 CPU 자원 할당을 위한 Windows Azure
셋째. 형태소 분석은 실제로 View 는 아주 간단하게 한 페이지로 나올수 있지만, Model쪽에 대한 비즈니스 로직이 아주 많이
        첨가가 되므로 ASP.NET MVC 에서 그 역할을 분명하게 나누기 위함입니다.

실제로 Windows Auzre 서비스의 성능은 아직 경험하지 못했지만, 이 프로젝트를 진행 하면서 경험해 보려 합니다.
Cloud Computing 의 성능을!!!!!
저작자 표시 비영리 동일 조건 변경 허락
신고
Posted by dotnetpower
기타2009.07.27 19:17
안녕하세요 최문혁 입니다.

개인적인 사정으로 인해 한달넘게 강좌가 멈추었네요. 죄송하게 생각합니다.

ASP.NET MVC + SPRING.NET + iBATIS.NET 으로 간단한 게시판 강좌를 끝내고

다른 섹쉬한 아이템이 없을까 많이 고민하던중..

처음에는 jQuery를 이용하거나 Silverlight 를 이용해서 View 단을 만들려고 했었는데요

기교부리는것도 아니고, 그리 유용한 강좌가 안될것 같아... 다른 아이템을 찾고 있었습니다.

인프라는 기존과 같습니다. 아이템만 다를뿐!!!

Visual Studio 2010 을 사용해서 ASP.NET MVC + SPRING.NET + iBATIS.NET 프레임웍을 올려서

유연한 한글 형태소 분석기를 만들어 볼려고 합니다.

한글 형태소 분석에 대해 관심이 있는 사람이 많은데요, 시작하기가 어렵습니다.

완전하지는 않지만, 처음부터 코딩을 한다기 보다는 스토리가 있는 강좌가 되도록 하겠습니다.

추천할 만한 책이나, 자료, 그리고 새로운 개발 방법, 또한 확장성이 우수한 어플리케이션이 되도록이요 ^^

재미있을것 같습니다.

혹시나 관심 있는 분들은 "어떤 부분을 더 깊게 파헤쳐봤으면 좋겠다" 라는 의견을 주시기 바랍니다.

감사합니다.

ps : 블로그에 글이 자주 안올라 올경우 http://www.mhvb.net 에 dotnetpower 의 brain dump 강좌 게시판을 참고 하시기 바랍니다.
저작자 표시 비영리 동일 조건 변경 허락
신고
Posted by dotnetpower

티스토리 툴바