'2008/03'에 해당되는 글 2건

  1. 2008.03.21 한글 형태소 분석기 개선 계획 (6)
  2. 2008.03.18 형태소 분석기 0.9.1 배포 및 라이센싱 (9)
연구/형태소 분석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 ]