Legacy/Library

KOMORAN ver 2.0.4 beta (자바 한국어 형태소 분석기)

shine_ing 2014. 8. 5. 02:46
1. KOMORAN 2.0

 KOMORAN 2.0은 SHINEWARE에서 제작한 한국어 형태소 분석기로서 자바 라이브러리 형태(.jar)로 제공됩니다. 기존 KOMORAN 1.0 대비 속도, 정확률(accuracy)이 개선되었으며, 사용자 사전에 의해 추가된 내용은 여러 어절이 하나의 품사로 분석이 가능하도록 설계되었습니다.


2. KOMORAN 2.0 특징

 

 KOMORAN 2.0은 1.0과 마찬가지로 자소 단위, 확률 기반의 형태소 분석기 입니다. 속도, 성능, 사전 관리 측면에서 기존 형태소 분석기와 차별되는 특징은 아래와 같습니다. 또한 기존 형태소 분석기와 달리 여러 어절을 하나의 품사로 분석 가능함으로써 형태소 분석기의 적용 도메인에 따라 공백이 포함된 고유명사(영화 제목, 음식점명, 노래 제목 등)를 더 정확하게 분석 할 수 있습니다.


- 속도

● 자소 단위 TRIE 사전 구성으로 사전 재탐색 횟수를 최소화하여 사전 탐색 속도 향상

● 내부 연산시 자료형을 정수로 치환하여 처리함으로써 연산 속도 향상

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


- 성능

● 한국어에서 나타나는 불규칙을 학습 코퍼스 내에서 자동으로 추출하여 불규칙 어절에 대한 분석 정확률 향상

● TRIE 및 압축된 사전 정보를 사용하여 메모리 사용률 최소화 (50MB 이하에서도 동작)


- 사전 관리

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

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


- 고유명사 분석(사용자 사전 적용)

● 기존 어절 단위 형태소 분석기와는 달리 복수 어절 단위 형태소 분석이 가능함으로써 사용자 도메인에 맞는 유연한 결과 제공

◆ 사용자 사전 등록 내용

바람과 함께 사라지다/NNP

운명처럼 널 사랑해/NNP

◆ 입력 문장

바람과 함께 사라지다랑 운명처렁 널 사랑해 중에 뭐가 더 재밌어?

◆ 분석 결과

바람과 함께 사라지다/NNP+랑/JKB

운명처럼 널 사랑해/NNP

중/NNB+에/JKB

뭐/NP+가/JKS

더/MAG

재밌/VA+어/EF+?/SF



3. KOMORAN 2.0 성능 평가

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

- 속도 평가
● 평가에 사용된 컴퓨터 Spec.
◆ 프로세서 : 2.3GHz Intel Core i5
◆ 메모리 : 8GB 1600MHz DDR3
● 초당 3만 어절 분석(word/sec)
● 초당 6천 문장 분석(line/sec)
● 초당 0.3MB 분석(MB/sec)

- 정확률 평가
● 기호 및 숫자 등을 제외한 순수 한글 어절 ( 약 17만 어절, 33만 형태소 )
◆ 어절 정확률 : 93.37%
◆ 형태소 별 품사 정확률 : 95.60%
● 기호 및 숫자 등을 포함한 전체 어절 ( 약 20만 어절, 46만 형태소 )
◆ 어절 정확률 : 91.40%
◆ 형태소 별 품사 정확률 : 94.60%


4. 사용 방법

 KOMORAN 2.0을 사용하기 위해서는 먼저 필요한 라이브러리 및 데이터를 다운 받아야 합니다. 라이브러리 및 데이터는 아래 경로에서 다운로드 받으실 수 있습니다. 

- library 
- data file
(1) 기본 사용 방법

//압축해제된 data file(models.zip)의 경로를 지정하여 객체 생성

Komoran komoran = new Komoran("D:\\4_Shineware\\05_KOMORAN_2.0\\models");

List<List<Pair<String,String>>> result = komoran.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=EF]

Pair [first=?, second=SF]

 

Pair [first=, second=VA]

Pair [first=, second=ETM]

 

Pair [first=아침, second=NNG]

Pair [first=, second=VCP]

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

Pair [first=., second=SF]


(2) 기분석 사전 적용

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

Komoran komoran = new Komoran("D:\\4_Shineware\\05_KOMORAN_2.0\\models");

//기분석 사전 적용

komoran.setFWDic("fwd.user");

기분석 사전의 구조는 아래와 같습니다.
- 구조
 [분석할 어절]\t[분석 결과(형태소 사이 구분은 공백 사용)]
● 시작 기호 '#'로 주석 처리 가능
- 예제
#2014.07월 기분석 사전 적용
수입불가    수입/NNG 불가/NNG
사람이라고    사람/NNG 이/VCP 라고/EC

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

Komoran komoran = new Komoran("D:\\4_Shineware\\05_KOMORAN_2.0\\models");

//기분석 사전 적용

komoran.setUserDic("dic.user");

사용자 사전의 구조는 아래와 같습니다.
- 구조
 [단어]\t[품사]
 시작 기호 '#'로 주석 처리 가능
- 예제
#주석은 라인의 가장 앞에 #을 표시하여 사용
#단어는 공백 포함 가능
너희들은 포위됐다.    NNP
캐리비안의 해적    NNP
한국어 정보처리학회    NNP


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

6. 라이센스
[아파치 2.0]

7. 기타
웹 상에서 데모를 사용할 수 있도록 준비 중에 있습니다. 조만간 준비해서 공지하도록 하겠습니다.
KOMORAN과 관련해서 다양한 피드백 부탁드립니다! 

현재 베타버전이므로 안정성에 문제가 있을 수 있습니다. 사용하시다가 문제점이 생기면 연락부탁드립니다.

 

=========================[2014-07-26 추가]=========================

분석 중 에러가 발생하는 치명적인 오류를 발견하여, 소스 수정 후 komoran-2.0.1-beta.jar 버전으로 변경하였습니다. 기존의 komoran-2.0-beta.jar를 사용하시는 분은 신규 버전으로 업데이트 하셔서 사용하시기 바랍니다.

(소중한 피드백 주신 강재용님께 진심으로 감사드립니다!)


=========================[2014-07-27 추가]=========================

공백이 여러개 포함된 경우에 에러를 발생시키는 오류를 발견하여, 소스 수정 후 komoran-2.0.2-beta.jar 버전으로 변경하였습니다. 

(소중한 피드백 주신 origoni 님께 감사드립니다!)


=========================[2014-07-29 추가]=========================

사용자 사전 포맷이 잘못되어 있던 오류를 발견하여, 소스 수정 후 komoran-2.0.3-beta.jar 버전으로 변경하였습니다. (나옹님 감사드립니다)


=========================[2014-08-05 추가]=========================

기타 버그 및 안정화 작업을 진행하여, 소스 수정 후 komoran-2.0.4-beta-e.jar 버전으로 변경하였습니다.