티스토리 뷰

1.    KOMORAN?

KOMORAN SHINEWARE SOFT에서 제작한 한국어 형태소 분석기로서 자바 라이브러리 형태(.jar)로 제공됩니다. KOMORAN은 기존 형태소 분석기의 연구 결과들을 바탕으로 하여 속도’, ‘성능’, ‘사전 관리 비용에서 가장 우수한 성능을 낼 수 있도록 설계되었습니다.

 

2.    KOMORAM 특징

KOMORAN은 자소 단위, 확률 기반의 형태소 분석기 입니다. 속도, 성능, 사전 관리 측면에서 기존 형태소 분석기와 차별되는 특징은 아래와 같습니다.

-       속도

n  Hash 기반의 파싱 방법을 적용하여 한글 분석 속도 향상

n  TRIE 기반의 사전 구성으로 사전 재탐색 횟수를 최소화하여 사전 탐색 속도 향상

n  KOMORAN 내부의 자료형(Data Type)을 대부분 정수(Integer)로 처리하여 연산 속도 향상

n  Hash 기반의 Viterbi 알고리즘을 이용하여 분석 후보 탐색 속도 향상

-       성능

n  한글 불규칙 처리 규칙을 자동화하여 불규칙 어절 대한 분석 정확률 향상

n  TRIE 및 압축된 사전 정보를 사용하여 메모리 사용률 최소화

-       사전 관리

n  사용자 사전을 추가하여 신조어, 고유명사 등의 분석 가능

n  기분석 사전을 적용하여 정확률 및 분석 속도 향상 가능

 

3.    KOMORAN 성능 평가

KOMORAN의 성능을 평가하기 위해 아래와 같이 속도 및 정확률에 대한 실험을 진행하였습니다.

-       속도 평가

n  평가에 사용된 컴퓨터 Spec.

u  프로세서 : 2.3GHz Intel Core i5

u  메모리 : 8GB 1600MHz DDR3

n  초당 2만 어절 분석(word/sec)

n  초당 4천 문장 분석(line/sec)

n  초당 0.2MB 분석(MB/sec)

-       정확률 평가

n  기호 및 숫자 등을 제외한 순수 한글 어절 ( 17만 어절, 33만 형태소 )

u  어절 정확률 : 92.55%

u  형태소 별 품사 정확률 : 94.97%

n  기호 및 숫자 등을 포함한 전체 어절 ( 20만 어절, 46만 형태소 )

u  어절 정확률 : 84.36%

u  형태소 별 품사 정확률 90.81%

 

4.    사용 방법

KOMORAN을 사용하기 위해서는 먼저 komoran 라이브러리와 common 라이브러리를 다운로드 받아야 합니다. KOMORAN 라이브러리는 아래 경로에서 다운로드 받으실 수 있습니다.

-       Core library  

komoran-1.0.jar


-       Require library  

shineware-common-1.0.jar


-       Require data files 

datas.zip


 

(1)   기본적인 사용 방법

 

//Require files 가 저장된 루트 폴더를 지정하여 객체 생성

MorphologyAnalyzer analyzer = new MorphologyAnalyzer("datas/");

                    

List<List<Pair<String,String>>> result = analyzer.analyze("안녕하세요? 좋은 아침입니다.");

                    

for (List<Pair<String, String>> eojeolResult : result) {

                     for (Pair<String, String> wordMorph : eojeolResult) {

                                System.out.println(wordMorph);

                     }

                     System.out.println();

}

위 소스를 실행한 결과는 아래와 같습니다.

 

Pair [first=안녕, second=NNG]

Pair [first=, second=XSV]

Pair [first=, second=EP]

Pair [first=어요, second=EC]

Pair [first=?, second=SF]

          

Pair [first=, second=VA]

Pair [first=, second=ETM]

 

Pair [first=아침, second=NNG]

Pair [first=, second=VCP]

Pair [first=ㅂ니다, second=EC]

Pair [first=., second=SF]

 

(2)   기분석 사전 적용

기분석 사전은 아래와 같이 setFWD(“기분석 사전 파일명”)을 이용하여 적용 가능합니다.

MorphologyAnalyzer analyzer = new MorphologyAnalyzer("datas/");

//기분석 사전 적용

analyzer.setFWD("fwd.txt");

 

기분석 사전의 파일 구조는 아래와 같습니다.

n  구조

u  [분석할 어절]\t[분석 결과]

n  Example

수입불가      수입/NNG+불가/NNG

사람이라고   사람/NNG+/VCP+라고/EC

 

(3)   사용자 사전 적용

사용자 사전은 아래와 같이 setUserDic(“사용자 사전 파일명”)을 이용하여 적용가능합니다.

//Require files 가 저장된 루트 폴더를 지정하여 객체 생성

MorphologyAnalyzer analyzer = new MorphologyAnalyzer("datas/");

//사용자 사전 적용

analyzer.setUserDic("userDic.txt");

 

사용자 사전의 구조는 아래와 같습니다.

n  구조

u  [단어]\t[품사]

u  시작 기호 ‘#’로 주석처리 가능

n  Example

#주석은 라인의 가장 앞에 #을 표시하여 사용

싸이콘서트   NNP

네이버        NNG

 

5.    문의 사항

KOMORAN과 관련된 문의 사항은 ceo@shineware.co.kr로 연락주시기 바랍니다.

댓글
  • 프로필사진 유총재 또 업데이트가 되었군요!

    감사히 잘 사용하고 있습니다!^^
    2013.05.19 23:49 신고
  • 프로필사진 shine_ing 사용해주셔서 감사합니다^^
    좋은 연구 많이 하시길 바라겠습니다^^
    2013.05.20 00:32 신고
  • 프로필사진 hare 오!!! 추가된 기능이 후덜덜하군요. 깔끔하게 잘 됩니다.
    버전 1.0 으로 올라온것 축하드립니다.
    2013.05.20 11:35 신고
  • 프로필사진 shine_ing 감사합니다^^ 많이 사용해주시고 버그 및 개선 사항 제안도 많이 해주세요^^ 2013.05.20 11:39 신고
  • 프로필사진 이상형 안녕하세요. 한글파싱을 찾다가 여기까지왔습니다.
    너무너무 반가운 프로그램이내요
    졸업프로젝트때문에 코드분석해서 빅데이터코드에 적용하고싶은데 소스코드알려주실수있나요?
    부탁드립니다.
    4513zxc@daum.net
    2013.05.28 18:50 신고
  • 프로필사진 shine_ing 안녕하세요~소스코드 공개는 현재로써는 조금 힘들것 같습니다^^;;빅데이터 처리를 위해 내부에 넣는다고 하셨는데 내부에 넣기에는 너무 크지 않나 싶네요^^;; 2013.05.28 19:39 신고
  • 프로필사진 오산돌구 회사에서 사용하는거랑 비교 해 봐야겠어요 : )
    이 멋진걸 혼자 만드셨다니....대단하십니다.
    잘 만드셔서 원래 목적에 도달하셨으면 좋겠네요~
    2013.05.29 13:37 신고
  • 프로필사진 shine_ing 과찬이십니다..ㅠ
    현재 기분석 사전이랑 기타 고유 명칭들이 전혀 포함되어 있지 않아서 상용화된 형태소 분석기보다는 아마 성능이 떨어질 것 같네요. 나중에 회사에서 비교해보신 후 그 결과를 저도 알 수 있을까요? ^^;; 염치 없지만 부탁드립니다 ㅠㅠ
    2013.05.29 14:26 신고
  • 프로필사진 오산돌구 뉴스랑 블로그글이랑 긁어서 속도랑 원하는 결과가 나오는지 확인하면 될까요?
    형태소분석에 대해서 원리는 하나도 모릅니다.;;;
    이번에 저도 형태소 분석기에 대해 공부해보려고 하는데 shine_ing님의 라이브러리를 잘 활용해야겠네요
    형태소 분석기관련해서 공부하다 궁금한게 있으면 여쭤봐도 될까요?
    2013.05.31 07:42 신고
  • 프로필사진 shine_ing 말씀 해주신대로 확인해주시면 정말 감사하죠^^;;
    사실 KOMORAN이 상용화 서비스에 이용이 가능할지에 대해서 판단을 하려면 실제 상용화된 형태소 분석기와의 비교가 필요한데 개인적으로는 조금 어렵네요^^;;
    형태소 분석 관련되서 저도 잘은 모르지만..도움을 드릴 수 있다면 최대한 도와드리겠습니다^^;
    2013.05.30 23:05 신고
  • 프로필사진 songyi 이런걸 개발하시다니 정말 대단하십니다. ㅠㅠ
    이 형태소분석기를 학교프로젝트에서 진행중인 안드로이드 개발에 포함을 하려고하는데
    MorphologyAnalyzer analyzer = new MorphologyAnalyzer("datas/");
    여기 부분에서 계속 디버깅에러가 나네요. ㅠㅠ
    안드로이드에서는 폴더설정을 다르게 해야하는건가요
    2013.06.14 14:45 신고
  • 프로필사진 shine_ing 감사합니다^^;;
    글쎄요 안드로이드에서 진행해본적은 없지만 자바로만 짜여진 소스로 돌아갈 것 같네요..저 경로를 상대경로가 아닌 절대경로로 한번 줘보시겠어요? 해보시고 알려주세요^^;;
    2013.06.14 15:20 신고
  • 프로필사진 t-man 안녕하세요? 만들어 주신 프로그램, 잘 쓰고 있습니다.

    두 가지 질문인데요.

    1. 형용사들이 XR로 태깅됩니다. 깔끔, 간결, 강렬, 상큼 등등이요. VA가 맞지 않을까요?
    한두개가 아니고 거의 대부분이 XR로 되는 것 같은 느낌입니다.

    2. 사용자 사전은 정확히 어떻게 적용이 되는지요?
    위의 문제 해결을 위해, 제가 직접 형용사들을 VA로 태깅해서 파일을 만들어 써 봤는데, 적용이 안되고 여전히 XR로 나오더라고요. 즉, 기존 사전에 있는 단어는 기존 사전 기준으로 태깅이 되는 것인가요?

    감사합니다.
    2013.07.02 20:35 신고
  • 프로필사진 shine_ing 안녕하세요. 이용해주셔서 감사합니다. 먼저 가장 최근 버전을 사용하시길 권장해드립니다 ^^:;

    질문에 대한 답변을 드리겠습니다.

    1. 깔끔, 간결, 강렬, 상큼은 어근(XR) 개념으로 보시는게 맞을 것 같습니다.
    달리다, 아릅답다 등과 같이 뒤에 활용형이 떨어질 수 없는 부분에 대해서만 VA가 맞는 것 같습니다.

    2. 사용자 사전이 입력에 입력이 되면 사용자 사전먼저 우선순위를 갖게 됩니다. 그러나 문법적 확률로 인해 문법에 어긋나는 경우에는 사용자 사전이 적용되지 않습니다. VA로 태깅을 하신 후 해당 단어만 입력을 해보시면 적용이 되었는지 확인하실 수 있으십니다. "깔끔 \t VA"를 입력하신 후 깔끔을 넣어보셨을 때 VA로 태깅되는지 확인해보시면 될 것 같습니다^^
    2013.07.03 11:36 신고
  • 프로필사진 t-man
    답변 감사합니다!!!

    그런데 깔끔하다, 간결하다 등은 품사가 형용사이고, 깔끔이나 간결은 형용사의 어근 아닌가요.
    형태소 분석기 소프트웨어의 용도를 고려해 보면, 이들을 그냥 '어근'이라고 태깅해 주면 좀 곤란할 것 같아요. 어근은 또 품사가 아니기도 하고요. 아무튼, 어근이라는 태그는 그 자체로는 정보량이 적어서 큰 의미가 없으니까요.

    그 다음에, 사용자 사전의 경우는 정확히는 모르겠지만 대충 말씀하신 작동을 이해하겠습니다. 그런데 사용자 사전을 사용해야 하는 경우를 세심히 고려해 보면, 문법과 무관하게 사용자의 의도대로 품사가 태깅되는 옵션이 있었으면 좋겠습니다. 특히 형태소 분석기 소프트웨어가 아무리 뛰어나도 역시 사람만큼 정확히 문장 분석을 하기 힘들다는 점을 고려해 보면 특정한 단어들에 대해서 문법 오류를 override하면서 사용자가 제시한 품사로 태깅되게 해 주면 좋을 것 같아요. 이를테면 '단어 /t VA F' 처럼 표기하면 override할 수 있게 하는 거죠.

    아무튼, 소프트웨어 너무 감사드리고요, 제 제안 좀 고려해 주시길 부탁드립니다. :) 감사 감사.
    2013.07.03 15:43 신고
  • 프로필사진 shine_ing 안녕하세요. 좋은 의견감사합니다. 현재 버전에서는 당장 힘들 것 같고, 추후 버전에서 사용될 수 있도록 업데이트를 고려해보겠습니다. 소중한 의견 진심으로 감사드립니다^^ 2013.07.03 16:55 신고
  • 프로필사진 hijh19 안드로이드 스튜디오에서 형태소를 돌려보고 싶어서 asset 도 만들고,libs에 파일도 추가했는데 어떻게 해야하는지 잘 모르겠어요 ㅠ 혹시 안드로이드 스튜디오에서 형태소 돌리는 방법도 포스팅 하실 계획이 있으신가요 ? 2018.02.20 17:26 신고
댓글쓰기 폼