KoNLP 0.7 업데이트

최근에 KoNLP가 업데이트 되었으며, 업데이트 내용은 아래와 같다.

Version 0.7
------------------------------------------------------------------------------
  * new dictionary added which from Sejong projects
  * added example 
  * Set "dontrun" on example code because Windows encoding problems.
  * Warning message may appear if system doesn't have Hangul encoding ability(no warning on UTF-8).


Version 0.0-9.3
------------------------------------------------------------------------------
  * added user dictionary manage functions.
  * to -Xmx1024m for big dictionary size
  * supports JRE 1.5

버전명을 이렇게 한꺼번에 크게 올린 이유는 0.1도 안되는 버전이라 사용자들이 생각해 오류가 있을거라고 예상할 염려가 있어서이다. 사실 버전은 1.0이 되어도 무리가 없을 정도로 완성도는 있다고 생각한다.

금 버전의 가장 큰 변화는 외부 사전 파일을 가져와 형태소 분석기에 올릴 수 있는 인터페이스를 제공한다는 것이다. 이에 대한 대부분의 내용은 아래 예제 코드 몇줄로 설명이 된다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
## This codes can not be run if you don't have encoding system which can en/decode Hangul(ex) CP949, EUC-KR, UTF-8).
dicpath <- paste(system.file(package="KoNLP"), "/dics/data/kE/dic_user2.txt", sep="")
newdic <- read.table(dicpath, sep="\t", header=FALSE, fileEncoding="UTF-8", stringsAsFactors=FALSE)
 
 
 
## backup merged new dictionary
backupUsrDic(ask=FALSE)
 
mergeUserDic(newdic)
 
## restore from backup directory
restoreUsrDic(ask=FALSE)
 
## reloading new dictionary
reloadAllDic()

현재 배포 버전에서는 세종계획에서 배포한 전자사전 파일에서 현재 사용자 사전과 시스템 사전이 없는 일반명사 단어들만 추가한 파일을 포함하고 있다. 따라서 위의 예제는 이 파일에 접근해 현재 사용자 사전을 백업하고 이후 파일을 머지하여 새로운 사전 파일을 만들고 백업파일로부터 예전 파일을 복원하는 일련의 과정을 보여준다. 그리고 마지막에 사전 파일이 바뀌었을 경우에 따른 재로딩 명령을 해주는 명렁어를 불러줬다.  

 

따라서 현재 KoNLP0.7에 들어있는 세종계획 명사 사전을 사용하고 싶다면 아래와 같은 명령어 시퀀스를 사용하면 된다.

 

1
2
3
4
5
6
7
8
dicpath <- paste(system.file(package="KoNLP"), "/dics/data/kE/dic_user2.txt", sep="") 
 
newdic <- read.table(dicpath, sep="\t", header=FALSE, fileEncoding="UTF-8", stringsAsFactors=FALSE)
 
backupUsrDic(ask=FALSE)
 
mergeUserDic(newdic) 
reloadAllDic()

이렇게 실행하면 기존 사용자 사전에 새로운 사전이 추가되어 분석을 할 수 있게 된다.

만일 사용자분들이 직접 수정한 단어 사전이 있다고 하면 “단어<TAB>tag” 형식의 파일을 준비해 위 명령어를 참고로 사전을 추가해 주면 된다. 자동으로 인코딩을 맞춰 주기 때문에 위 인터페이스를 사용하는게 인코딩에 대한 지식이 없는 사용자들이 무리없이 KoNLP를 활용하는 길이라 생각한다. 물론 인코딩 지식이 있으신 분은 직접 편집해도 된다.

 

위 코드를 올리기 위해서 많은 시행착오가 있었다. 일단 윈도우 시스템에 한글 코덱이 없는 경우 그러니까 일반적인 영문 윈도우의 경우 예제 코드를 돌리면서 에러가 났었는데, 이 때문에 윈도우 빌드파일 생성이 늦어졌었다.

라이브러리 로딩시 한글 인코딩 기능이 없다면 패키지 시작 메시지로 관련 메시지를 보여주고, 예제 코드를 검증하는 절차를 건너 뛰는 걸로 해결했다. 이렇게 해결을 하게 된 이유는 R 시스템 그리고 윈도우만의 특징 때문이였다. 자바처럼 인코딩에 맞게 한글 파일을 읽어 들이면 내부적으로 유니코드 형태로 유지하면 되는데, R의 경우 인코딩에 맞게 파일을 읽어 들어더라도 내부적으로 로케일 캐릭터 셋으로 데이터셋 유지를 해 윈도우 기본 로케일에 따른 인코딩에 한글이 빠져 있다면 에러가 나버리는 것이다. 이는 R로 텍스트 마이닝을 하는 초심자들에게는 편한 장점이 있는 반면에 라이브러리의 유연성은 떨어져 개발자가 골치하퍼지는 경우가 되겠다.

하여튼 일단 KoNLP 라이브러리로 분석을 하기 위해서는 리눅스, 맥의 경우 UTF-8 환경을 추천하고, 한글 윈도우가 아닌 윈도우는 피하길 추천한다.

CC BY-NC 4.0 KoNLP 0.7 업데이트 by from __future__ import dream is licensed under a Creative Commons Attribution-NonCommercial 4.0 International License.