한글 형태소 분석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.29 10:47

플랫폼을 Windows Azure 로 정한다고 지난 포스트에 밝혔습니다.
Azure로 서비스를 해 보기 위해서는 등록절차가 필요한데요, http://azure.com 에 접속하여 하단에 Try It now 버튼을 클릭하시면 Register for Azure Services 라는 링크를 클릭하면 invitation code 를 발급받는 절차가 진행이 됩니다.

이에 대한 자세한 방법은 한국MS 장현춘 에바님의 글을 참고 하도록 합니다. http://kingcrap.com/entry/Azure-Services-이용하기-NET-Services

그리고, Azure Services Platform 을 살펴보면, 크게 .Net Services, SQL Services, Live Service 로 나뉘는데, 기본적으로 베이스로 Windows Azure 가 있습니다.

저도 아직 Azure 에 대한 자세한 속사정을 몰라서 자료를 찾고 있는중입니다.
셋팅 하다 보니깐, Deploy 까지는 어떻게 하겠는데... SQL Azure는 어떻게 연결 해야 할지.. 자료를 더 찾아봐야겠군요...

같이 찾아 보실래요? :)
저작자 표시 비영리 동일 조건 변경 허락
신고
Posted by dotnetpower

티스토리 툴바