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 installmake package_pythoncd package_pythonpip 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 installmake package_pythoncd package_pythonpip 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
정상적으로 반영되었다. 아직 띄어쓰기등 몇가지 문제가 있긴 하지만 충분시 사용할 만 하다.
댓글 없음:
댓글 쓰기