konlpy 사용 방법

KoNLPy는 한국어 정보처리를 위한 파이썬 패키지입니다.

설치

우분투

1. Install dependencies
# Install Java 1.7 or up
$ sudo apt-get install g++ openjdk-7-jdk python-dev python3-dev

2. Install KoNLPy
$ pip install konlpy # Python 2.x
$ pip3 install konlpy # Python 3.x

3. MeCab 설치하기 (선택사항)
$ sudo apt-get install curl
$ bash <(curl -s https://raw.githubusercontent.com/konlpy/konlpy/master/scripts/mecab.sh)

※ Mecab 실행시, ” NameError: name ‘Tagger’ is not defined ” 오류가 난다면 아래와 같이 직접 설치한다.

  • (venv)git clone https://bitbucket.org/eunjeon/mecab-python-0.996.git
  • (venv)cd mecab-python-0.996/
  • (venv)python3 setup.py build
  • (venv)python3 setup.py install

CentOS

1. Install dependencies
$ sudo yum install gcc-c++ java-1.7.0-openjdk-devel python-devel

$ wget http://peak.telecommunity.com/dist/ez_setup.py # Python 2.x
$ sudo python ez_setup.py
$ sudo easy_install pip

$ wget https://www.python.org/ftp/python/3.4.3/Python-3.4.3.tar.xz # Python 3.x
$ tar xf Python-3.*
$ cd Python-3.*
$ ./configure
$ make # Build
$ sudo make altinstall

2. Install KoNLPy
$ pip install konlpy # Python 2.x
$ pip3.4 install konlpy # Python 3.x

3. MeCab 설치하기 (선택사항)
$ sudo yum install curl
$ bash <(curl -s https://raw.githubusercontent.com/konlpy/konlpy/master/scripts/mecab.sh)

맥 OS

1. Install KoNLPy
$ pip install konlpy # Python 2.x
$ pip3 install konlpy # Python 3.x

2. MeCab 설치하기 (선택사항)
$ bash <(curl -s https://raw.githubusercontent.com/konlpy/konlpy/master/scripts/mecab.sh)

간단한 사용 방법

kkma 분석기

import time
from konlpy.tag import Kkma
text = '한국어 정보처리를 위한 파이썬 패키지입니다.'

kkma = Kkma()

start_time = time.time()
print(kkma.morphs(text))
# ['한국어', '정보', '처리', '를', '위하', 'ㄴ', '파이', '썰', 'ㄴ', '패키지', '이', 'ㅂ니다', '.']

print(kkma.nouns(text))
# ['한국어', '정보', '정보처리', '처리', '파이', '패키지']

print(kkma.pos(text))
# [('한국어', 'NNG'), ('정보', 'NNG'), ('처리', 'NNG'), ('를', 'JKO'), ('위하', 'VV'), ('ㄴ', 'ETD'), ('파이', 'NNG'), ('썰', 'VV'), ('ㄴ', 'ETD'), ('패키지', 'NNG'), ('이', 'VCP'), ('ㅂ니다', 'EFN'), ('.', 'SF')]

print("[%s seconds]" %(time.time() - start_time))
# [5.366621971130371 seconds]

Mecab 분석기

import time
from konlpy.tag import Kkma, Komoran, Mecab, Twitter
text = '한국어 정보처리를 위한 파이썬 패키지입니다.'

mecab = Mecab()

start_time = time.time()
print(mecab.morphs(text))
# ['한국어', '정보', '처리', '를', '위한', '파이썬', '패키지', '입니다', '.']

print(mecab.nouns(text))
# ['한국어', '정보', '처리', '파이썬', '패키지']

print(mecab.pos(text))
# [('한국어', 'NNG'), ('정보', 'NNG'), ('처리', 'NNG'), ('를', 'JKO'), ('위한', 'VV+ETM'), ('파이썬', 'NNP'), ('패키지', 'NNG'), ('입니다', 'VCP+EF'), ('.', 'SF')]

print("[%s seconds]"%(time.time() - start_time))
# [0.0006389617919921875 seconds]

Komoran 분석기

import time
from konlpy.tag import Komoran
text = <strong>'한국어 정보처리를 위한 파이썬 패키지입니다.'

komoran = Komoran()

start_time = time.time()
print(komoran.morphs(text))
# ['한국어', '정보', '처리', '를', '위하', 'ㄴ', '파이썬', '패키지', '이', 'ㅂ니다', '.']

print(komoran.nouns(text))
# ['한국어', '정보', '처리', '파이썬', '패키지']

print(komoran.pos(text))
# [('한국어', 'NNP'), ('정보', 'NNG'), ('처리', 'NNG'), ('를', 'JKO'), ('위하', 'VV'), ('ㄴ', 'ETM'), ('파이썬', 'NNP'), ('패키지', 'NNP'), ('이', 'VCP'), ('ㅂ니다', 'EF'), ('.', 'SF')]

print("[%s seconds]" %(time.time() - start_time))
# [0.035352230072021484 seconds]

Twitter 분석기

import time
from konlpy.tag import Twitter
text = '한국어 정보처리를 위한 파이썬 패키지입니다.'

twitter = Twitter()

start_time = time.time()
print(twitter.morphs(text))
# ['한국어', '정보처리', '를', '위', '한', '파이썬', '패키지', '입니다', '.']

print(twitter.nouns(text))
# ['한국어', '정보처리', '위', '파이썬', '패키지']

print(twitter.pos(text))
# [('한국어', 'Noun'), ('정보처리', 'Noun'), ('를', 'Josa'), ('위', 'Noun'), ('한', 'Josa'), ('파이썬', 'Noun'), ('패키지', 'Noun'), ('입니다', 'Adjective'), ('.', 'Punctuation')]


print("[%s seconds]" %(time.time() - start_time))
# [4.22565221786499 seconds]

사용자 사전 추가 방법

kkma 분석기

1. 사전 포함 jar 파일 압축 해제한다.

$ cd .conda/envs/keyword/lib/python3.6/site-packages/konlpy/java
$ mkdir kkma 
$ cd kkma
$ jar xvf ../kkma-2.0.jar

 dic/ecat/ChemFormula.dic
 dic/ecat/CompNoun.dic
 dic/ecat/JunkWord.dic
 dic/ecat/UOM.dic
 dic/ecat/VerbJunkWord.dic
 dic/ecat/VerbNoun.dic
 dic/kcc.dic
 dic/noun.dic
 dic/person.dic
 dic/prob/lnpr_morp.dic
 dic/prob/lnpr_pos.dic
 dic/prob/lnpr_pos_g_exp.dic
 dic/prob/lnpr_pos_g_morp_inter.dic
 dic/prob/lnpr_pos_g_morp_intra.dic
 dic/prob/lnpr_syllable_bi.dic
 dic/prob/lnpr_syllable_uni_noun.dic
 dic/raw.dic
 dic/simple.dic
 dic/verb.dic
2. dic 디렉토리로 이동하여 여러 사전 파일 중에서 noun.dic 파일을 수정한다.

$ cd dic 
$ vi noun.dic
// ==============================================================
// 명사
// ==============================================================
// 일반 명사
각/NNG
간/NNG
감/NNG
값/NNG
강/NNG
3. 상위 디렉토리로 올라가서, jar 파일을 다시 압축하고 기존의 것을 대체한다.

$ cd ..
$ jar cvf kkma-2.0.jar *
$ mv kkma-2.0.jar ../

Komoran 분석기

1. 사전의 포맷
cat './user_dic.txt' 

정보처리 NNG
2. 클래스 생성 시 사용자 사전 파일 할당
komoran = Komoran(userdic='./user_dic.txt')
komoran.pos(sentence)

Mecab 분석기

# Mecab 사전 경로
$ ls /usr/local/lib/mecab/dic/mecab-ko-dic

char.bin
dicrc
left-id.def
matrix.bin
model.bin
pos-id.def
rewrite.def
right-id.def
sys.dic
unk.dic

1. mecab-ko와 mecab-ko-dic 을 다운받아 설치합니다.
mecab-ko-dic 을 꼭 컴파일까지 하셔야 이후에 사전 추가가 가능합니다.

2. 1번에서 받은 파일을 mecab-ko-dic/userdic 디렉토리 안에 csv 확장자로 사전 파일을 추가한다.

userdic/
├── nnp.csv
├── person.csv
└── place.csv
  • nnp.csv (일반적인 고유명사 추가)
    • 대우,,,,NNP,*,F,대우,*,*,*,*,*
    • 구글,,,,NNP,*,T,구글,*,*,*,*,*
  • person.csv (인명 추가)
    • 까비,,,,NNP,인명,F,까비,*,*,*,*,*
  • place.csv (지명 추가)
    • 세종,,,,NNP,지명,T,세종,*,*,*,*,*
    • 세종시,,,,NNP,지명,F,세종시,Compound,*,*,세종+시,세종/NNP/지명/1/1+세종시/Compound/지명/0/2+시/NNG/*/1/1

3. 추가한 사전을 컴파일 한다.
$ mecab-ko-dic/tools/add-userdic.sh

아래와 같이 user-xxx.csv 사전이 추가된 모습을 볼 수 있다. 사실 아래 파일은 컴파일 되기 직전의 파일이며, 실제로 sys.dic 파일에 바이너리로 컴파일 되어 들어가게 된다.

mecab-ko-dic
├── ....
├── user-nnp.csv
├── user-person.csv
├── user-place.csv
└── ...

4. 실행을 하여 설치를 한다.
$ make install

이 글은 카테고리: 미분류에 포함되어 있습니다. 고유주소를 북마크하세요.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다