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