한국어 형태소 분석기 Kiwipiepy 사용방법
한국어 형태소 분석기인 Kiwi(Korean Intelligent Word Identifier)의 Python 모듈인 Kiwipiepy 사용방법을 간단히 다룹니다.
2024. 8. 1 최초작성
2024. 8. 11 사용자 단어 추가
kiwipiepy를 사용하려면 필요한 패키지를 설치합니다. Python 3.6 이상에서 사용가능합니다.
$ pip install kiwipiepy
다음처럼 대화형 인터페이스로 형태소 분석기를 테스트해 볼 수 있습니다.
한국어 형태소 분석기는 한국어를 형태소로 분리하고 품사를 분석해줍니다. 분리된 형태소는 form 항목에 포함되며 각 형태소의 품사는 tag 항목에 포함됩니다.
$ python3 -m kiwipiepy kiwipiepy v0.18.0 >>> 아버지가방에들어가시다 ([Token(form='아버지', tag='NNG', start=0, len=3), Token(form='가', tag='JKS', start=3, len=1), Token(form='방', tag='NNG', start=4, len=1), Token(form='에', tag='JKB', start=5, len=1), Token(form='들어가', tag='VV', start=6, len=3), Token(form='시', tag='EP', start=9, len=1), Token(form='다', tag='EF', start=10, len=1)], -34.723323822021484) >>> 아버지가 방에 들어가시다 ([Token(form='아버지', tag='NNG', start=0, len=3), Token(form='가', tag='JKS', start=3, len=1), Token(form='방', tag='NNG', start=5, len=1), Token(form='에', tag='JKB', start=6, len=1), Token(form='들어가', tag='VV', start=8, len=3), Token(form='시', tag='EP', start=11, len=1), Token(form='다', tag='EF', start=12, len=1)], -34.723323822021484) >>> 안녕하세요 ([Token(form='안녕', tag='NNG', start=0, len=2), Token(form='하', tag='XSA', start=2, len=1), Token(form='세요', tag='EF', start=3, len=2)], -28.500656127929688) |
파이썬 코드를 사용하는 방법도 간단합니다.
from kiwipiepy import Kiwi kiwi = Kiwi() result = kiwi.tokenize("아버지가 방에 들어가신다.") print(result) |
실행결과입니다.
[Token(form='아버지', tag='NNG', start=0, len=3), Token(form='가', tag='JKS', start=3, len=1), Token(form='방', tag='NNG', start=5, len=1), Token(form='에', tag='JKB', start=6, len=1), Token(form='들어가', tag='VV', start=8, len=3), Token(form='시', tag='EP', start=11, len=1), Token(form='ᆫ다', tag='EF', start=11, len=2), Token(form='.', tag='SF', start=13, len=1)]
“아버지가 방에 들어가신다”를 다음처럼 형태소로 분리후, 품사를 분석하고 있습니다.
아버지 NNG(일반 명사)
가 JKS(주격 조사)
방 NNG(일반 명사)
에 JKB(부사격 조사)
들어가 VV(동사)
시 EP(선어말 어미)
ㄴ다 EF(종결 어미)
. SF(종결 부호)
형태소 분석 결과를 보면 분리된 형태소마다 tag 항목이 있습니다. tag 항목에 올 수 있는 품사의 종류는 다음과 같습니다.
사용자 단어를 추가하는 방법입니다. 아래 예제코드를 실행해보면 “국어 숙제”를 “국어”와 “숙제”로 따로 분리합니다.
from kiwipiepy import Kiwi kiwi = Kiwi() result = kiwi.tokenize("집에 가면 국어 숙제부터 해라") print(result) |
[Token(form='집', tag='NNG', start=0, len=1), Token(form='에', tag='JKB', start=1, len=1), Token(form='가', tag='VV', start=3, len=1), Token(form='면', tag='EC', start=4, len=1), Token(form='국어', tag='NNG', start=6, len=2), Token(form='숙제', tag='NNG', start=9, len=2), Token(form='부터', tag='JX', start=11, len=2), Token(form='하', tag='VV', start=14, len=1), Token(form='어라', tag='EF', start=14, len=2)]
“국어 숙제”를 사용자 단어로 추가하고 나면 “국어 숙제”로 분리하는 것을 볼 수 있습니다.
from kiwipiepy import Kiwi kiwi = Kiwi() kiwi.add_user_word('국어 숙제', 'NNP') # 단어를 등록합니다. result = kiwi.tokenize("집에 가면 국어 숙제부터 해라") print(result) |
[Token(form='집', tag='NNG', start=0, len=1), Token(form='에', tag='JKB', start=1, len=1), Token(form='가', tag='VV', start=3, len=1), Token(form='면', tag='EC', start=4, len=1), Token(form='국어 숙제', tag='NNP', start=6, len=5), Token(form='부터', tag='JX', start=11, len=2), Token(form='하', tag='VV', start=14, len=1), Token(form='어라', tag='EF', start=14, len=2)]
좀 더 자세한 내용은 아래 링크를 확인하세요.
https://bab2min.github.io/kiwipiepy/v0.18.0/kr/#kiwipiepy