연구/형태소 분석2014. 8. 15. 06:45

꼬꼬마 저작권이 학교에 있기에 마음대로 코드를 공유하거나 하면 안될 것 같다.

아직까지는 별 문제가 없었지만, 향후에는 문제가 될 여지가 있기에 private으로 전환했다.

이를 위해서 매달 7,000원을 지불하기로 큰 결심을 했다.


이전에 아래와 같은 큰 개선 항목들을 도출했었다.

일정은 없고 러프하게 항목만 도출하였는데, 

3번에 대해서만 JFlex를 이용해서 automata를 직접 작성해서 만드는 것으로 개선을 1차적으로 완료했다.


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

2) 사전 Compile & Loading 통합

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

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

5) Lucene Wrapper 개발

6) Socialization


기존 성능의 문제가 확률 모델에서 오는 것들이 있는데,

HMM의 변형을 사용하는 현재 상태에서는 더이상 개선의 여지가 크지는 않을 것 같다.

따라서, Conditional Random Field를 적용해 볼까 생각중이다.

하지만, 이를 위해서는 전체 구조를 새로 만들어야 하며, 기존의 구조적 성능상 장점들을 살릴 수 있는 방안들을 마련해야할 것 같아서 고민 중이다.

어쨌든, 관련 논문도 있고 하니 한단계씩 차근차근 수행하면서 개선해 볼까 생각중이다.


관련 작업들은 아래의 것들이 필요하지 않을까 생각중이다.

1) CRF + 기존 꼬꼬마 특성 결합 방안

2) CRF를 위한 sejong 말뭉치 기반 학습 데이터 구축

3) 변환 사전 생성

4) 성능 검증 및 최적화


CRF와 관련하여 maximum entropy 등 관련 잘들과 함께 과정을 쭉 정리하면 좋을 것 같다.

Posted by 락끄

댓글을 달아 주세요

  1. 비밀댓글입니다

    2015.01.19 16:01 [ ADDR : EDIT/ DEL : REPLY ]

연구/형태소 분석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



Posted by 락끄

댓글을 달아 주세요

  1. DK

    최근에 학생들에게 시켜서 잘 쓰고 있습니다.
    앞으로도 좋은 소프트웨어로 잘 유지해 나가주세요.
    격려드립니다.

    2014.05.22 21:46 [ ADDR : EDIT/ DEL : REPLY ]

연구/형태소 분석2008. 3. 21. 15:22

처음으로 형태소 분석기를 만들어보고 개선한지 대략 2년 정도 된 것 같다. 단순 사전을 바탕으로 개발을 해오던 것이 이제는 나름 다양한 기술들을 적용시켰다. 여전히 즉흥적이고, 수작업을 요하는 작업들이 많이 있지만, 다양한 업그레이드 거친 것 같다.

  • 사전 기반 형태소 태깅
  • 동적 프로그래밍 적용
  • 비트 기반 오퍼레이션으로 성능 개선
  • 사전 정리 및 사전의확장성 개선

다른 방법들은 논문을 보고 구현해보면 되는 것들이었는데, 사전을 정비하는 것은 개인이 하기에 너무 힘든 일이고 쏟은 노력이 정말 눈물날 정도였던 것 같다. 일일이 수만 단어들을 보면서 눈 침침해지면서 단일 명사인지 복합명사인지 구분하고 태그 정보도 수정하고, 어휘가 단일 태그를 갖지 않도록 하고 참 많은 노력을 했다. 그러면서 국어에 대한 이해도 더 풍부해지고, 규칙, 불규칙 어휘들을 처리하면서 고생도 했고 말이다.

개인적으로 가지고 있던 생각이 어휘의 의미를 명확히 하려면 통계적 기법을 적용하는데에는 한계가 있다고 보고 있었다. 문장내에서의 단어나 형태소의 역할은 문장에 의해서 결정되는 것이고, 각 "단어" 수준에서 그러한 것들이 상호 고려되어야 한다고 생각한다. 이를 위해 당연히 풍부한 사전이 필요하였는데, 작년 말에 21세기 세종 계획에서 전자사전을 발표했는데, 정말 훌륭한 수준이다. 미등록어에 대한 처리를 좀더 고려하면 되겠지만, 사전만으로 본다면 정말 풍부한 의미와 어휘 용례를 잘 표현하고 있어 이를 통해 형태소 분석기를 개선한다면, 형태소 분석과 띄어쓰기와 구문 분석을 단번에 처리할 수 있지 않을까 생각한다.

NLP연구실도 아니고 DB연구실에서 연구실 연구 주제와 달리 혼자만 이걸 하고 있어서 정체성에 대한 고민을 하고 있었는데, 교수님께서도 우리 연구실의 Semantic Core Module의 하나로 가지고 있으면 좋을 것이라는 말씀을 해주셔서 나름 힘도 난다. 일단 해야할 일들이 많겠지만, 일단 사전을 형태소 분석할 수 있는 형태로 구성하고, 이를 가단히 시각화 하는 것으로부터 시작하려고 한다. 이를 위해 어휘간의 관계를 모델링하고, 저장구조를 확립하는 과정이 있어야 할 듯 하다. 기존에는 파일에 간단한 형태소 사전을 구성하였는데, 앞으로는 좀더 다른 구조로 가야할 듯 하다. 다양한 관계를 표현할 수 있는 사전과 형태소간의 상관관계를 표현할 수 있도록 모델링 할 것이다.

21세기 세종 계획의 결과물이 너무 잘 되 있어서 상당히 놀랐고, 이를 활용할 수 있다는 기대에 조금 들뜨기도 한다. 빨리 추진해서 좋은 결과물을 만들 수 있도록 해야겠다.

아마 다음과 같은 작업들이 추가적으로 이루어지지 않을까 생각한다.

  • 어휘 관계 모델링
  • 세종 계획 전자 사전 포팅
  • 사전 시각화
  • 형태소 분석기 적용 방안 수립
  • 형태소 분석기에 적용
  • 통계적 기법 적용으로 성능 개선 방안 마련
  • 통계 기법 적용을 위한 데이터 수집 및 학습
  • 통계 기법 적용

21세기 세종 계획 http://www.sejong.or.kr

Posted by 락끄

댓글을 달아 주세요

  1. 또 한번 더 걸음을 내 딛으셨군요, 축하드립니다. 짝짝짝!!!
    좋은 결과 있으시길 바랍니다~~~ 그리고 댓글 감사합니다.

    2008.03.23 00:48 [ ADDR : EDIT/ DEL : REPLY ]
  2. 나그네

    안녕하세요.
    형태소 분석기 정말 잘 만드셨군요. 게다가 이렇게 공개까지 하시다니, 한번도 얼굴을 뵌적은 없지만 감사하게 생각하고 있습니다.
    근데, 형태소 분석기가 로딩 속도기 너무 느리고 메모리를 차지하는 비용이 너무 큰것 같습니다. 사전에 있는 모든 단어에 대해서 MCandidate객체를 생성해서 해쉬 테이블로 관리하는 것 같은데. 이런 구조를 사용하는것은 시간과 메모리 측면에서 매우 비효율적인것 같습니다. 먼저 해쉬 테이블은 B-TREE 형태로 바꾸는 것이 좋을 것 같습니다.그리고 사전에서 사용하는 기분석결과를 MCandidate객체로 생성해 관리하는 방식보다는, 이미 처리된 기분석결과를 파일이나 메모리에 저장하고 그것을 처리하는 메소드를 추가하는 방식이 더 나을 것 같습니다.

    2008.03.27 21:52 [ ADDR : EDIT/ DEL : REPLY ]
  3. 나그네

    좀 더 효율적인 데이터 처리를 위하여 루씬의 색인 파일 구조와 그것을 처리하는 메소드를 분석해 보면 많은 도움이 되실 것입니다.

    2008.03.27 21:53 [ ADDR : EDIT/ DEL : REPLY ]
    • 좋은 말씀 감사합니다. 속도가 Hash가 가장 빠를 것이라 생각해서 Hash를 사용한것인데, B+Tree랑 비교해서 머가 더 빠를지는 모르겠네요.
      나름대로 로딩 속도 때문에 몇가지 분석을 해봤는데, MCandidate에 대해서 메모리 할당하는 부분이 로딩속도 대부분을 차지하는 것 같은데 이를 메모리에 할당하지 않고도 빠르게 처리할 수 있는 방법이 있다면 그도 좋은 대안이 되겠네요.

      루씬을 한번도 보지 않아서 어떤 방법들이 사용되었는지 모르겠는데, 한번 분석해보도록 하겠습니다.

      2008.03.29 22:28 신고 [ ADDR : EDIT/ DEL ]
  4. 혹시 진행된 상황을 요약해서 한글처리에 있어 어디까지 된것인지, ngram 하고 차이점을 알려주실수있는지요?

    2009.10.06 10:27 [ ADDR : EDIT/ DEL : REPLY ]
    • 안녕하세요.
      관심 가져 주셔서 감사합니다.
      공개 소프트웨어 공모전에 개선 버젼을 출품했고, 이를 홈페이지에 정리했습니다. http://kkma.snu.ac.kr로 가셔서 확인하실 수 있습니다.
      더 자세한 내용은 메일로 보내주세요.

      2009.10.30 15:51 신고 [ ADDR : EDIT/ DEL ]

연구/형태소 분석2008. 3. 18. 18:13

형태소 분석기에 대한 다양한 문의가 오고, 몇몇 분들이 라이센스에 대한 문의를 해주셔서 이를 정리하고자 한다. 정리하면서 몇 가지 이상한 분석 결과를 만들어내는 것들을 수정해서 재배포 한다.

1. Korean Morpheme Analyzer V0.9.1 by therocks.
이전 버젼들은 모두 삭제해서 지금 올라가는 것을 사용하는 것을 권장한다.


* 수정된 점

1) 부정확한 띄어쓰기 추가 개선
'검색서비스를' 과 같은 문장을 처리할 때, 속도를 향상시키기 위해서 앞부분에서 적당히 검색결과가 나오면 띄어쓰기 처리를 해주고 다음 문자열들을 처리하도록 하였는데, 검색(명사)+서(조사)+[ ]+비(명사) 가 되는 순간 잘라버려서 서비스가 정상적으로 추출되지 않는 문제가 있었는데, 이를 5글자 이후에 처리하도록 하여 5글자 내에서의 부정확한 띄어쓰기를 없앴다. 5글자가 넘는 경우에 대해서는 추후 고려해야할 것같고, 아마도 속도가 좀 느려질 것 같다.

2) 미등록어 처리 기능 개선
미등록 어휘가 이상한 사전 어휘들로 완결되지 않은 상태(어미나 나타날 것이라 고려하였지만, 나타나지 않고 끝나는 경우)에서 조합되는 경우가 발생하는데, 이를 위해 미등록어를 prune하는 것을 방지하도록 수정하였다.

2. Licensing
생각외로 많은 분들이 관심을 주시고, 프로그램을 사용하시는 것 같아서 이전에 고민하지 않던 라이센스를 고려해야할 것 같다. 사전에 대한 문제가 아직 남아 있지만, 일단은 GPL로 진행할 것이다. 아직 정확한 체계를 잡지 않았지만, Dual License 를 취해서 개인이나 비영리에 대해서는 무료로 하고, 영리에 대해서는 다른 라이센스를 적용하고자 한다. 처음부터 많은 사람들이 활용할 수 있는 형태소 분석기를 배포하는 것이 목적이었기 때문에, 돈에는 별 욕심이 없다.

기본적으로 다음의 네 가지의 원칙을 가지고 라이센싱에 대해서 고민하고자 한다.

  • 소스와 내부 데이터의 수정과 활용은 자유롭게 할 수 있다.
  • 소프트웨어에 대한 지원을 하지 않는다.
  • 다른 프로그램이나, 서비스에 활용시 출처를 밝혀야 한다.
  • 영리적인 목적으로 프로그램을 배포하여서는 안된다.

조만간 다른 자료들을 검토하여 자세한 라이센스 정책에 대해서 업데이트 하고자 한다.

Posted by 락끄

댓글을 달아 주세요

  1. 비밀댓글입니다

    2008.05.03 22:12 [ ADDR : EDIT/ DEL : REPLY ]
  2. 안녕하세요^^ 젊으신것 같은데 실력이 엄청나시네요~ 형태소 분석기 관련되서 공부해야 될부분이 뭐가 있을까요? 자연어처리나 전산언어만으로는 감만 오지 도데체 어떻게 구현해야 될지 모르겠는데 어떤부분을 참고하셨는지 제가 알수있을까요?

    2008.05.26 17:13 신고 [ ADDR : EDIT/ DEL : REPLY ]
    • 저는 처음에 강승식 교수님의 "한국어 형태소 분석과 정보 검색"이라는 책을 전체적으로 봤구요. 그 이후에 심광석 교수님의 논문을 봤구요. 그 외에도 몇가지 형태소 분석이나, 띄어쓰기 처리 등에 관한 논문들을 봤습니다.

      그 외에는 그냥 제 프로그래밍 스타일로 쭉 짠거구요. ^^
      사실 프로그램보다는 언어학적 지식이 좀 있어야 하는 것 같더라구요. 문법적인 규칙들을 어느정도는 넣어야 하는데, 예를 들어 음운 규칙이나, 상관 규칙등은 정리해서 반영하는게 쉽지는 않은 것 같습니다.

      2008.05.27 16:06 신고 [ ADDR : EDIT/ DEL ]
  3. 딕셔너리 부분을 Revered 색인파일만들어서 찾아오는식으로 처리해야될것같습니다. 어쨋든 큰도움 되네요 감사합니다.

    2008.05.26 17:43 신고 [ ADDR : EDIT/ DEL : REPLY ]
    • 저도 그렇게 생각하고 있는데, 어떻게 하는지 모르겠네요. 파일 처리 쪽이 완전 취약해서, 혹시 참고할만한 자료가 있으면 알려주시면 감사하겠습니다. ^^

      2008.05.27 16:07 신고 [ ADDR : EDIT/ DEL ]
  4. 음 대용량 자료처리 Managed Gigabytes 라는 책이 있는데요.

    예전 방식이긴한데 큰 도움이 되긴합니다.

    아니면 최소한 2진 트리형식

    단어를 2진파일형태로(유니코드는 크기가 크니까)저장후에

    3N혹은 4N정도 아스키코드 탐색하면 지금보단 속도는 느리겠지만

    앞으로 동의어 등의 처리까지 생각한다면 낫지 않을까요?

    대용량 자료처리에 관한 부분은 데이터베이스 구현이 나와있는 책이나

    루신의 2진데이터 체계를 참고하면 될것같은데

    저도 더락님의 소스를 가지고 개발해도 될까요? 사실

    루신을 1년여넘게 수정해서 만든 검색엔진이 있는데 형태소 분석기를

    만들어보고싶었거든요..

    2008.05.27 18:49 [ ADDR : EDIT/ DEL : REPLY ]
  5. 비밀댓글입니다

    2008.05.31 21:57 [ ADDR : EDIT/ DEL : REPLY ]
  6. 검개그에서 공개하신다는 글 봤는데
    구글 검색에서 또 보게 되었네요.^^

    좋은 자료 고맙습니다.^^

    2008.07.09 15:45 신고 [ ADDR : EDIT/ DEL : REPLY ]
  7. 비밀댓글입니다

    2009.07.08 03:05 [ ADDR : EDIT/ DEL : REPLY ]

연구/형태소 분석2008. 2. 15. 09:40

형태소 분석기 코드를 정리해서 간단히 데모가 동작하도록 설치했다. 그와 동시에 코드를 다시 한번 훑어봤는데, 역시나 정리해야할 것들이 너무나 많다.

  • 몇몇 경험적 지식(heuristic)을 적용했는데, 정규화된 형태로 코드에 적용되어 있지 않다. 한번 구조를 바꾸면 해야할 일이 너무 많기 때문에 쉽게 손대고 있진 못하지만, 어쨌든 단순 선후 조건이 아닌 어휘의 위치 정보를 반영할 수 있는 형태로 적용해야겠다. Shallow Parsing을 적용하면 결과가 더 좋아질 것 같은데, 수집해야할 정보와 변경해야할 코드가 너무 많아 쉽사리 손대지 못하겠다. ㅠ.ㅜ
  • 사전 정보를 많이 모아놨으나, 정리해서 올리지 못하니 모으나 마나이다. 꼭 잘 정리해서 올려야겠지만, 당장 코가 석자라 여유가 없긴하다. 그래도 일단 사전 정리해야한다는 것을 기억하자.
  • 코드를 공개하긴 했지만, 코드에 대한 설명이나 개발 환경설정등에 대한 설명이 너무 없어서 너무 불친절하다는 생각이 든다. 시간 나는대로 틈틈히 정리해서 다른 사람들에게 많은 도움이 될 수 있도록 해야겠다.

사실 공개하고자 했던건 데모이다. 여기로 가면 간단한 형태소 분석 결과를 확인할 수 있다. 항상 켜져있다는 보장은 못하겠지만, 한동안은 켜놓을 생각이고, 학교 서버가 정리되면 좀더 안정되게 데모가 진행되게 할 생각이다. 많이 미흡하지만, 그래도 도움이 되었으면 좋겠다.

몇몇 논문들과 글들을 참조해서 품사 정보를 정의해서 분석하도록 하는데, 좀 복잡하다. -_-;. 형태소 분석을 하고자 하면 정말 너무 할게 많다. -_-;

너무너무너무, 갈길이 멀지만, 차근히 해보자!

누군가 이 글을 볼지 모르겠지만, 아래 글의 파일을 수정해서 올렸다.
불필요한 파일들을 삭제하고, 불필요한 라이브러리들도 없앴다. 연구실에서 작업할 때 다른 것들과 같이 사용하느라 썼던 것인데, 형태소 분석기만 있을 때에는 별로 필요 없다.

그리고, 원래 1.1 버젼이었는데, 사실 1.1이라고 한 건 연구실에서 사용할 때 1.0이라고 해서 연구실 내에서 release한게 있고, 그걸 내가 수정해서1.1이라고 했는데, 다시 보니 영 1.0이 될 수 없을 듯 하다. 일단 0.9로 하고 좀더 맘에 들면 그 때 1.0으로 재업해야겠다.

Posted by 락끄

댓글을 달아 주세요

  1. 방금 서비스 잠시 보고 왔습니다. ^^ 멋지네요 ~~ 혼자 다 구현하신 건가요? 쉽지 않은 작업일텐데, 고생하셨네요...

    2008.02.15 10:00 [ ADDR : EDIT/ DEL : REPLY ]
    • 사실 기존에 좀 있는 자료와 소스를 활용하긴 했지만, 새로 태어났죠. ^^

      2008.02.17 22:51 신고 [ ADDR : EDIT/ DEL ]
  2. 사전 구축부터 쉽지 않은 작업이었을텐데 수고많으셨네요..

    2008.02.17 20:48 [ ADDR : EDIT/ DEL : REPLY ]
    • 사전 모으고 관리하는건 지금도 힘든 것 같아요.^^ 사전이 한번 업그레이드 되면 소스도 한바탕 뒤집어져서... ^^ 담번에 예정된 작업이 있긴 한데, 언제 끝날지는 모르겠네요~

      2008.02.17 22:51 신고 [ ADDR : EDIT/ DEL ]
  3. 지나가다

    사전 자료 양이 꽤 많더군요.
    어디서, 혹은 어떻게 구하셨는지요?
    국럽국어원 자료실에 쓸만한 자료들이 좀 있습니다.
    6개 사전 수록어 목록과 단어 사용 빈도 조사한 자료가 그것입니다.
    (6개 사전 수록어 목록은 품사 정보가 없다는 것이 많이 아쉬운 부분입니다.)

    2008.03.04 16:44 [ ADDR : EDIT/ DEL : REPLY ]
    • 기본적인 자료들은 국립 국어원 자료실에서 가지고 온 것입니다. 알고리즘이 빈도나 그런 것들을 이용하지 않기 때문에 빈도 자료를 활용하진 않습니다. 품사는 이곳저곳에서 발췌해서 채운 것입니다. 아직 부족한 것이 많죠.^^

      2008.03.06 12:30 신고 [ ADDR : EDIT/ DEL ]
  4. 안녕하세요. irgroup에서 보고 들어와본지 서너번이 넘어가네요 ㅎ
    건방진 이야기 일지 모르겠습니다만... 라이선스 조항이 없는거 같아서요. 저도 검색서비스를 혼자지만 준비하고 있는 중이라 형태소 분석기에 많은 관심이 있습니다. 라이선스에 관해 알려주시면 많은 도움이 되겠습니다. 너무 겸손하셔서 묻기가 겁나네요. ㅠㅜ 즐거운 하루 되세요!

    2008.03.05 09:55 [ ADDR : EDIT/ DEL : REPLY ]
    • 라이센스는 아직 생각해보지 않았습니다. 아무래도 오픈 소스이다보니 연구용으로는 자유롭게 써도 될텐데, 상업적인 목적이라면 어떻게 해야할지 모르겠네요.

      2008.03.06 13:17 신고 [ ADDR : EDIT/ DEL ]
  5. 박그니

    안녕하세요. 형태소 분석기 대단하네요 ㅎㅎ
    루씬에서 한글 색인어 추출 하려고 분석기들을 찾던중에 이곳을 발견하게 되었습니다. 소스를 실행 해 봤는데요 좋은것 같네요 ^-^
    여기서 명사 부분만 색인어 추출 하려면 어떻게 해야 될까요?
    어느 클래스 부분을 손봐야 될지요?? ㅎㅎ

    2008.03.17 01:07 [ ADDR : EDIT/ DEL : REPLY ]
    • 안녕하세요. 관심 가져주셔서 감사합니다.
      테스트 코드를 확인하시면 쉽게 아실 수 있을겁니다.
      분석 결과에는 품사도 포함하고 있으므로 명사에 해당하는 것들을 추출하시면 될 것 같습니다. 빈도나 이런 것들을 고려하기 위해서는 다른 처리가 필요한데, 이는 직접 추가하셔야 할 것 같습니다.

      2008.03.17 14:16 신고 [ ADDR : EDIT/ DEL ]

연구/형태소 분석2008. 2. 11. 17:08

구현한 형태소 분석기를 공개하고자 맘 먹은지 한참이 됐지만, 여러가지 이유로 공개를 미뤄왔었다.

  1. 과연 이걸 사용할 사람이 있을것인가?
  2. 테스트가 미진한데, 결과는 제대로 나올 것인가?
  3. 성능이 나올 것인가?

위의 세 가지가 나에게 공개에 대해서 확답을 주지 못했다. 사실 1번은 별 문제되진 않았지만, 2,3 번 때문에 계속 고민하고 있었다. 사실 사전 정비와 같이 추가로 계획하고 있던 일들을 마치고 공개하고자 했지만, 계속해서 미루고 있어서 이를 해결하고, 고민도 마무리가 되고 공개하는건 불가능해보인다.

그래서 문제가 있고, 아직 고민하고 있지만, 일단은 소스를 간단히 정리해서 공개한다.
사전자료가 이곳 저곳에서 긁어모은 것이라 출처도 일정치 않고, 주요 정보들이 아니라 말뭉치만 있으니 그리 문제되진 않을 것 같다.

eclipse로 작업하고 있어서 프로젝트 폴더를 통째로 압축해서 첨부한다.

이전 버젼은 삭제합니다.

관련 글은 연구실 홈페이지에 업데이트 하고 있지만, 언제 끝날지는 장담 못하겠다. ^^;;
Implementing Typo and Spacing Tolerant Korean Morpheme Analyzer

간단히 테스트 해보기 위해서는 eclipse로 프로젝트를 불러 들여서 MorphemeAnalyzer 에 있는 main()함수를 실행하면 된다.

아래의 예는 띄어쓰기 없이 간단히 다음 문장을 넣어서 테스트한 결과이다.
"나는무엇을먹고사는사람이더냐"
띄어쓰기가 안되어 있기에 가능한 결과들을 쭈욱 만들어가다가 적합한 결과를 반환하는데, 최종 결과는 원하는 형태로 딱 나오진 않는다. 그치만 수정하기도 어렵고, 방법이 있다고 해도 많은 자료들을 이용해야 해서 아직은 적용하지 못하고 있다.

PS. 자세한 내용을 알고 싶은 분은 메일로 문의 주세요.
추가해서 블로그 업데이트 하겠습니다. (왠지 없을 듯... ^^)

Posted by 락끄

댓글을 달아 주세요

  1. 멋지네요 ~~ 검개그에서 보고 들어왔습니다.
    형태소분석기가 없어 답답해 하던 분들에게는 샘물같은 존재일 것 같습니다. 이제 정말 힘든 발을 디디신 듯 하네요 .. 힘내시고요 파이팅입니다.

    2008.02.12 09:33 [ ADDR : EDIT/ DEL : REPLY ]
    • 추가로 해보고 싶은 것들은 많은데, 쉽게 엄두가 나질 않네요. 그래도 누군가에게 도움이 된다면 좋을 것 같아요. 격려 말씀 감사합니다. ^^

      2008.02.12 12:30 신고 [ ADDR : EDIT/ DEL ]
  2. 공개 감사합니다. 건승하십시오.

    2008.02.14 10:03 [ ADDR : EDIT/ DEL : REPLY ]
    • 공개한만큼 앞으로 잘 관리가 될 수 있음 좋겠네요. 건승하세요~ ㅎㅎ

      2008.02.17 22:53 신고 [ ADDR : EDIT/ DEL ]
  3. 블로그 하고 계셨네요. 이렇게 타고타고 들어와서 아는 사람을 만난다는게... 묘하네요. 여전히 수고하고 계시는군요. ㅎㅎ

    2008.02.14 10:06 신고 [ ADDR : EDIT/ DEL : REPLY ]
  4. 송우상

    제게 참 소중한 자료가 될듯 합니다 항상 한글 형태소분석기에 목말라 있었는데....대단하시네요

    2008.02.15 13:05 [ ADDR : EDIT/ DEL : REPLY ]
  5. 아.. 정말 감사합니다 ^^

    2008.02.15 19:39 [ ADDR : EDIT/ DEL : REPLY ]
  6. 안녕하세요 아 정말 감사합니다.
    소스를 한번 실행 시켜 보고자 하였는데
    heap 메모리가 모지라네요 흐흐... 어느정도의 메모리를 올려야 하는지 알려주시면 감사하겠습니다.

    2008.02.21 16:59 [ ADDR : EDIT/ DEL : REPLY ]
    • 네. 죄송한 말씀이지만, 사실 전 최소 256 이상줍니다.^^;;; 사전이 올라가게되면 대략 200M로 화장됩니다. 개선해야할 부분인데, 아직 방법을 잘 모르겠네요.

      2008.02.22 01:34 신고 [ ADDR : EDIT/ DEL ]
  7. 멋진데요? 제가 파이썬을 좋아하는데, 파이썬으로 포팅되면 재밌을 듯.

    2008.02.21 22:37 [ ADDR : EDIT/ DEL : REPLY ]
    • 멋지다니 감사합니다. Dynamic Programming이 적용되어서 잘 옮겨갈지 잘 모르겠지만, 머 여러 언어로 포팅되는건 좋은 일이죠~ ㅎㅎ

      2008.02.22 01:35 신고 [ ADDR : EDIT/ DEL ]
  8. 마루아라

    인터넷 뒤지다가 여기까지 왔네요..
    형태소 분석기 함 써 볼려고 했는데요 이클립스 옵션을
    -XX:MaxPermSize=512m -Xmx256m -Xms128m 줘도 heap 가 모자라다고 나옵니다 램이 1024m가 좀 안되는데
    -XX:MaxPermSize=512m -Xmx512m -Xms128m 이렇게 옵션을 주면 이클립스가 에러나나네요
    -XX:MaxPermSize=364m -Xmx364m -Xms128m
    이렇게 줘도 heap 가 모자라다고 나와요 ㅠㅠ
    MorphemeFixed.dic
    MorphemeVerb.dic
    두 파일이 30초 넘게 걸려서 내용을 줄이면 실행은 되긴 하네요..
    테스트 함 해보고 싶은데 어케 해결 방안이 없나요??

    2008.05.15 17:18 [ ADDR : EDIT/ DEL : REPLY ]
    • 음... 아마도 메모리에 올리는거라서, 컴퓨터 사양을 좀 타는 것 같습니다. 지금은 좀더 빨라지긴 했는데.. 올리려면 eclipse 자체가 아니라, 프로그램 실행할 때의 옵션을 수정해주어야 합니다. run하는 부분에서 Open Run Dialog가 나오는데 거기서 다양한 옵션을 줄 수 있습니다. 거기에 직접 최대 메모리 크기를 지정해주십시오. 보통 사전이 차지하는 메모리가 200M가 좀 넘습니다.

      2008.05.27 16:02 신고 [ ADDR : EDIT/ DEL ]

연구/형태소 분석2007. 11. 26. 18:02

상당히 오래 전부터 형태소 분석기를 구현하고 있었다. 초기에는 단지 문서에 대한 색인어를 추출하기 위해서 색인어 추출기를 만들었었는데, 그러다 보니 형태소 분석기가 필요하다는 생각이 들어 많은 시행착오 끝에 이를 구현했다. 사실 프로토 타입으로 구문 분석에도 적용하여 Opinion Mining에도 사용해 봤다. 아직은 국내에서 적용되는 Opinion Mining이나 구문 분석보다는 형태소 분석기가 더 어렵고 필요한 기술이라 생각이 든다. 물론 많은 자연어 처리 연구실에서 훌륭한 프로그램을 만들었지만, "공개"되어 사용할 수 있는 것은 없다. 물론 소스 수준에서 공개되어 필요에 따라 소스도 수정할 수 있는 것을 말한다.

실재로 Opinion Mining이나 구문 분석을 해보니 논문에 있는 내용을 적용하는 것이 그리 어렵지 않았다. 통계적 방법을 활용하는 것도 그렇고, 기본 개념만 잘 파악하면 좀 노력이 필요하겠지만, 그리 어려움을 겪지는 않는 일이었던 것 같다. 그러나 그런 것들을 하기 위한 기초를 마련하는 것은 정말 어려웠다. 그 기초데이터라는 것이 결국 구문 분석을 위해서는 각 단어를 분석하고 품사가 무엇인지 확인하고, 단어를 파악하는 것이며, Opinion Mining같은 경우 통계적 방법을 적용한다면 단어의 원형을 복원하고 적절히 인덱싱을 해 놓는 것이다.

관련된 많은 논문에는 단지 '전처리 한다(Preprocessing)', '특질 추출한다'라고 간단히 나와 있지만, 막상 구현해 본 사람들은 이것들이 얼마나 어려운지 알 것이다. RDB를 기반으로 한다고 해도 인덱스 잘 걸어놔야 되고 정말로 어려운 일이다. IR을 위한 몇몇 알고리즘들을 봤지만, 결국 개념도 개념이지만, 그 모델이 잘 적용되도록 좋은 feature들을 잘 뽑아낼 수 있어야 한다고 생각한다.

많은 사람들이 검색 엔진을 구현하기 위해서 형태소 분석기가 필요하다고 하지만, 이를 구해서 사용하지는 못하고 있다. 단지 n-gram방식으로 인덱스를 만들어 둔다거나, 아주 간단한 몇가지 형태소 분석 방법을 적용하여 일부 문제에만 대응하는 식이다. 검색 뿐만 아니라, 형태소 분석이 된다면 한글을 분석해서 할 수 있는 유익한 일은 정말로 많은 것 같다. Auto Tagging이나 Opinion Mining등에도 적용될 수 있을 것이다.

다양한 분야에 좋은 아이디어를 가지고 있음에도, 기본적인 자료 처리가 제대로 되지 않아 쓴맛을 보는 사람들이 많기에 누군가는 자신이 가진 노하우를 공개하고, 서로 교류를 하여 공개된 상태로 형태소 분석기가 발전할 수 있어야 한다고 생각한다.

다음 글에서는 형태소 분석기 구현과 관련된 계획을 세우고 이를 공유해보자

Posted by 락끄

댓글을 달아 주세요

  1. 으하하 오타 발견!
    4번째 줄 Opinion Minining -> Opinion Mining 호호
    그나저나 카테고리가 연구라니, 형답습니다. 난 아직 연구 관련 글 거의 없는데 ;;;

    2007.11.26 23:48 신고 [ ADDR : EDIT/ DEL : REPLY ]
    • 수정 완료...

      난 블로그에 여러 가지 얘기들이 올라오는 것도 좋지만, 나름 주제가 있어야 할 듯 해서...
      내가 공개하고 싶은 연구 관련 일들?에 대해서도 좀 올리려고...ㅎㅎ

      2007.11.27 12:28 신고 [ ADDR : EDIT/ DEL ]
  2. '' 폴형 하이.

    쥔장님의 글이 왠지 도움이 많이 될것 같습니다. 유용한 자료들 보고 갑니다.

    2008.04.16 22:54 [ ADDR : EDIT/ DEL : REPLY ]
  3. 삐따기

    루썬에서 사용이 가능한가요?

    2008.05.20 16:31 [ ADDR : EDIT/ DEL : REPLY ]
    • 죄송하게도 아직 적용해보지 않아서 잘 모르겠습니다. 자바로 된것이니깐 충분히 사용할 수 있을 것 같습니다. 제가 루씬을 잘 몰라서 아직 해보지 않았는데, 나중에 기회가 되면 해보고 말씀드리겠습니다.

      2008.05.27 16:03 신고 [ ADDR : EDIT/ DEL ]
  4. 좋은 생각과 좋은자료 잘 보고갑니다. 님같은 분들에 의해 이나라의 IT개발인프라가 강해질텐데말이죠..... 기쁨반 슬픔반 쳐절히 느끼며~

    2008.10.08 20:19 [ ADDR : EDIT/ DEL : REPLY ]