이번 포스팅에서는 Python의 대표적인 NLP툴인 Konlpy를 연동해보자.
포스팅의 환경은 linux(Ubuntu 16.04)이며, 공식 문서를 참조하였다.
$ sudo apt-get install g++ openjdk-8-jdk python-dev python3-dev
$ pip install JPype1 # in Python 2.x
$ pip3 install JPype1-py3 # in Python 3.x
Konlpy를 설치/운용하기 위해서는 자바 설치환경과 python이 필요하다.
python2.x인지 python3.x인지는 선택에 따라 다르지만,
공식 문서대로 openjdk7버전으로 설치했을 때는 제대로 동작하지 않았다.
이후 Jpype를 설치하는데, 여기서 JAVA_HOME에 대해 자바 환경변수가 설정되어있지 않다면
...(생략)
NameError: name 'jpype' is not defined
이와 같은 에러를 보게 될 것이므로 꼭 설정해주길 바란다.
설정하는 명령어는 다음과 같다.
export JAVA_HOME=/usr/java/jdk버전/bin/java
이후 KoNLPy를 설치한다.
$ pip install konlpy # Python 2.x
$ pip3 install konlpy # Python 3.x
추가적으로 MeCab를 설치한다.
(원하지 않는다면 설치하지 않아도 무방하다. 하지만 공식문서 중 비교테이블
중에서 일반적으로 가장 성능이 낫다고 평가되는 것이 Mecab과 Twitter이다 )
$ sudo apt-get install curl
$ bash <(curl -s https://raw.githubusercontent.com/konlpy/konlpy/master/scripts/mecab.sh)
이후 다음 샘플 소스를 실행시켜서 Konlpy가 제대로 연동이 되었는지 확인가능하다.
# -*- coding: utf-8 -*-
import konlpy
import nltk
# POS tag a sentence
sentence = u'만 6세 이하의 초등학교 취학 전 자녀를 양육하기 위해서는'
words = konlpy.tag.Twitter().pos(sentence)
# Define a chunk grammar, or chunking rules, then chunk
grammar = """
NP: {<N.*>*<Suffix>?} # Noun phrase
VP: {<V.*>*} # Verb phrase
AP: {<A.*>*} # Adjective phrase
"""
parser = nltk.RegexpParser(grammar)
chunks = parser.parse(words)
print("# Print whole tree")
print(chunks.pprint())
print("\n# Print noun phrases only")
for subtree in chunks.subtrees():
if subtree.label()=='NP':
print(' '.join((e[0] for e in list(subtree))))
print(subtree.pprint())
# Display the chunk tree
chunks.draw()
다음 포스팅에서는 Custom Dictionary의 중요도와 실제 연동하는 작업을 진행해보겠다.
Comments