2019년 2월 22일 금요일

카카오 형태소 분석기(khaiii) 설치, 실행, 사전추가

Kakao Hangul Analyzer III 설치

카카오에서 형태소 분석기를 공개 한지 3개월이 지난 시점이다. 딥러닝 기반의 형태소 분석기로 지금까지 공개되었던 분석기들과 어떤점이 다른지 확인차 설치, 실행 그리고 사전추가까지 진행해 보았다. khaiii v0.3이고 macos 에서 설치를 진행하였다.

https://github.com/kakao/khaiii/wiki

빌드 환경

python 3.6 이상
CMake 3.10 이상

빌드하기

공개되어 있는 git 저장소에 있는 소스를 clone 해야한다.

git clone https://github.com/kakao/khaiii.git

복사된 저장소로 이동하여 build 폴더를 생성하고 cmake를 실행한다.

cd khaiii
mkdir build
cd build
cmake ..

Cmake의 과정이 끝나면 다음과 같이 빌드한다.

make all

리소스

bin 폴더 아래에 생성된 khaiii base 모델을 생성하기 위해 리소스 빌드를 시작한다.

make resource

설치가 완료되고 테스트 프로그램을 실행하면 정상 동작 여부를 알 수 있다.

ctest

아래와 같은 결과가 나온다면 정상설치가 된것이다.


100% tests passed, 0 tests failed out of 1

실행하기

설치된 형태소분석기를 실행하기 위해 khaiii/build 폴더에서 다음과 같은 명렁어를 입력한다.

./bin/khaiii --rsc-dir=./share/khaiii

테스트 하기 

입력 문장: "삼성전자가 오는 5월 세계최초로 5G 폴더블폰 '갤럭시폴드'를 한국에 출시합니다."

[2019-02-22 23:16:46.139] [Resource] [info] NN model loaded
[2019-02-22 23:16:46.145] [Preanal] [info] preanal dictionary opened
[2019-02-22 23:16:46.146] [ErrPatch] [info] errpatch dictionary opened
[2019-02-22 23:16:46.147] [Restore] [info] restore dictionary opened
[2019-02-22 23:16:46.147] [Resource] [info] PoS tagger opened
삼성전자가 오는 5월 세계최초로 5G 폴더블폰 '갤럭시폴드'를 한국에 출시합니다.
삼성전자가 삼성전자/NNP + 가/JKS
오는 오/VV + 는/ETM
5월 5/SN + 월/NNB
세계최초로 세계/NNG + 최초/NNG + 로/JKB
5G 5/SN + G/SL
폴더블폰 폴/NNP + 더/NNG + 블/NNG + 폰/NNP
'갤럭시폴드'를 '/SS + 갤럭시폴드/NNP + '/SS + 를/JKO
한국에 한국/NNP + 에/JKB
출시합니다. 출시/NNG + 하/XSV + ㅂ니다/EF + ./SF

분류, 품사, 설명에 대한 내용은 github.wiki 에서 확인할 수 있다.

Python 바인딩

Python에 package 형태로 사용하기 위해서는 프로그램과 리소스를 빌드하고 python에 바인딩이 필요하다. 아래 명령어를 입력해 보자.

make install
make package_python
cd package_python
pip install .

이과정이 가장 오래 걸린다.

Python에서 테스트

예제코드 :
from khaiii import KhaiiiApi

api = KhaiiiApi()

sentence = "삼성전자가 오는 5월 세계최초로 5G 폴더블폰 '갤럭시폴드'를 한국에 출시합니다."

for word in api.analyze(sentence):

    print(word)

출력:
삼성전자가 삼성전자/NNP + 가/JKS
오는 오/VV + 는/ETM
5월 5/SN + 월/NNB
세계최초로 세계/NNG + 최초/NNG + 로/JKB
5G 5/SN + G/SL
폴더블폰 폴/NNP + 더/NNG + 블/NNG + 폰/NNP
'갤럭시폴드'를 '/SS + 갤럭시폴드/NNP + '/SS + 를/JKO
한국에 한국/NNP + 에/JKB
출시합니다. 출시/NNG + 하/XSV + ㅂ니다/EF + ./SF

사전 추가하기

khaiii는 사전에 원하는 엔트리를 추가할 수 있다. rsc/src 폴더 하단에 preanal.manual 파일에 추가할 수도 있고, preanal.my와 같은 새로운 파일을 추가해도 된다.

preanal.manual에 폴더블폰을 추가

# 아래 두 엔트리는 단위테스트에 사용되는 것으로 삭제하지 마시기 바랍니다.
이더리움 이더리움/NNG
가즈아* 가/VV + 즈아/EC
폴더블폰 폴더블폰/NNP

khaiii/build 폴더에서 사전을 다시 빌드해야 한다.

make resource


make install
make package_python
cd package_python
pip install .

출력:
출력
삼성전자가 삼성전자/NNP + 가/JKS
오는 오/VV + 는/ETM
5월 5/SN + 월/NNB
세계최초로 세계/NNG + 최초/NNG + 로/JKB
5G 5/SN + G/SL
폴더블폰 폴더블폰/NNP
'갤럭시폴드'를 '/SS + 갤럭시폴드/NNP + '/SS + 를/JKO
한국에 한국/NNP + 에/JKB
출시합니다. 출시/NNG + 하/XSV + ㅂ니다/EF + ./SF

정상적으로 반영되었다. 아직 띄어쓰기등 몇가지 문제가 있긴 하지만 충분시 사용할 만 하다.

댓글 없음:

댓글 쓰기

추천 게시물

python: SVD(Singular Value Decomposition)로 간단한 추천시스템 만들기( feat. surprise )

svd_example In [15]: # !pip install surprise In [21]: from...