Mecab 한글 형태소 분석기

은전한닢 오픈소스 프로젝트: http://eunjeon.blogspot.kr/2013/02/blog-post.html

Mecab-ko-dic Bitbucket: https://bitbucket.org/eunjeon/mecab-ko-dic


Ubuntu에서 Mecab 설치

Mac:

brew install mecab

Linux(Ubuntu):

sudo apt-get install libmecab-dev
sudo apt-get install mecab mecab-ipadic-utf8

Linux(Fedora):

yum install mecab mecab-devel


Mecab-ko-dic 설치

다운로드

https://bitbucket.org/eunjeon/mecab-ko-dic/downloads

최신 버전을 다운받는다.

$ wget https://bitbucket.org/eunjeon/mecab-ko-dic/downloads/mecab-ko-dic-1.6.1-20140515.tar.gz

다운로드 위치에서 압축을 푼다.

$ tar xzvf mecab-ko-dic-1.6.1-20140515.tar.gz

컴파일

아래와 같이 컴파일을 수행한다.

$ cd mecab-ko-dic-1.6.1-20140515/
$ ./configure
$ make

제대로 설치되었는지 아래와 같이 확인한다:

$ mecab -d .(Enter)
안녕하세요. 저는 홍길동입니다. 무엇을 도와 드릴까요?(Enter)
안녕	NNG,*,T,안녕,*,*,*,*,*
하	XSV,*,F,하,*,*,*,*,*
세요	EP+EF,*,F,세요,Inflect,EP,EF,시/EP+어요/EF,*
.	SF,*,*,*,*,*,*,*,*
저	NP,*,F,저,Inflect,NP,NP,제/NP,*
는	JX,*,T,는,*,*,*,*,*
홍길동	NNG,*,T,홍길동,Compound,*,*,홍+길동,홍/NNG/*/1/1+홍길동/Compound/*/0/2+길동/NNG/*/1/1
입니다	VCP+EF,*,F,입니다,Inflect,VCP,EF,이/VCP+ᄇ니다/EF,*
.	SF,*,*,*,*,*,*,*,*
무엇	NP,*,T,무엇,*,*,*,*,*
을	JKO,*,T,을,*,*,*,*,*
도와	VV+EC,*,F,도와,Inflect,VV,EC,돕/VV+아/EC,*
드릴까요	VX+EF,*,F,드릴까요,Inflect,VX,EF,드리/VX+ᆯ까요/EF,*
?	SF,*,*,*,*,*,*,*,*
EOS
그럼 이건 무슨 뜻인줄 아세요?(Enter)
그럼	MAJ,*,T,그럼,*,*,*,*,*
이건	NP+JX,*,T,이건,Inflect,NP,JX,이거/NP+ㄴ/JX,*
무슨	MM,~비인성명사,T,무슨,*,*,*,*,*
뜻	NNG,*,T,뜻,*,*,*,*,*
인	VCP+ETM,*,T,인,Inflect,VCP,ETM,이/VCP+ᆫ/ETM,*
줄	NNB,*,T,줄,*,*,*,*,*
아세요	VV+EP+EF,*,F,아세요,Inflect,VV,EF,알/VV+시/EP+어요/EF,*
?	SF,*,*,*,*,*,*,*,*
EOS
(Ctrl + D)
#

설치하기

제대로 작동하는 것을 확인하면 다음과 같이 설치를 마무리한다. 만약 우분투에 root 계정과 암호를 만들지 않았다면 sudo passwd root 명령어로 만들면 된다.

$ su -
# make install
(설치 과정 진행)
reading ./matrix.def ... 3819x2694
emitting matrix      : 100% |###########################################| 

done!
echo To enable dictionary, rewrite /usr/local/etc/mecabrc as \"dicdir = /usr/local/lib/mecab/dic/mecab-ko-dic\"
To enable dictionary, rewrite /usr/local/etc/mecabrc as "dicdir = /usr/local/lib/mecab/dic/mecab-ko-dic"
# 

Mecab 설치 경로: /usr/local/lib/mecab/dic/mecab-ko-dic


Mecab 파이썬 바인딩 설치

관련 웹사이트: https://pypi.python.org/pypi/mecab-python3

$ sudo pip install mecab-python3

만약 파이썬3에서 import MeCab가 되지 않는다면, 다음과 같이 pip3를 통해 설치하면 된다:

$ sudo apt-get install python3-pip
$ sudo pip3 install mecab-python3


Mecab-python을 이용한 형태소 분석

mecab-ko-dic 설치 경로로 이동해서 아래와 같은 파이썬 코드를 실행한다.

$ cd /usr/local/lib/mecab/dic/mecab-ko-dic
>>> import MeCab
>>> m = MeCab.Tagger('-d .')
>>> print m.parse(u'파이썬에서 형태소 분석하기.'.encode('utf-8'))
파이썬 NN,T,파이썬,*,*,*,*,*
에서 JKB,F,에서,*,*,*,*,*
형태소 NN,F,형태소,Compound,*,*,형태+소,형태/NN/1/1+형태소/Compound/0/2+소/NN/1/1
분석 NN,T,분석,*,*,*,*,*
하 XSV,F,하,*,*,*,*,*
기 ETN,F,기,*,*,*,*,*
. SF,*,*,*,*,*,*,*
EOS

mecab-ko-dic 설치 경로로 이동하는게 불편하다면 다음의 파이썬 코드를 이용하면 된다:

m = MeCab.Tagger('-d /usr/local/lib/mecab/dic/mecab-ko-dic')


mecab-ko-dic 품사 태그 설명

https://docs.google.com/spreadsheet/ccc?key=0ApcJghR6UMXxdEdURGY2YzIwb3dSZ290RFpSaUkzZ0E&usp=sharing


대분류 세종 품사 태그 mecab-ko-dic 품사 태그
태그 설명 태그 설명
체언 NNG 일반 명사 NNG 일반 명사
NNP 고유 명사 NNP 고유 명사
NNB 의존 명사 NNB 의존 명사
NNBC 단위를 나타내는 명사
NR 수사 NR 수사
NP 대명사 NP 대명사
용언 VV 동사 VV 동사
VA 형용사 VA 형용사
VX 보조 용언 VX 보조 용언
VCP 긍정 지정사 VCP 긍정 지정사
VCN 부정 지정사 VCN 부정 지정사
관형사 MM 관형사 MM 관형사
부사 MAG 일반 부사 MAG 일반 부사
MAJ 접속 부사 MAJ 접속 부사
감탄사 IC 감탄사 IC 감탄사
조사 JKS 주격 조사 JKS 주격 조사
JKC 보격 조사 JKC 보격 조사
JKG 관형격 조사 JKG 관형격 조사
JKO 목적격 조사 JKO 목적격 조사
JKB 부사격 조사 JKB 부사격 조사
JKV 호격 조사 JKV 호격 조사
JKQ 인용격 조사 JKQ 인용격 조사
JX 보조사 JX 보조사
JC 접속 조사 JC 접속 조사
선어말 어미 EP 선어말 어미 EP 선어말 어미
어말 어미 EF 종결 어미 EF 종결 어미
EC 연결 어미 EC 연결 어미
ETN 명사형 전성 어미 ETN 명사형 전성 어미
ETM 관형형 전성 어미 ETM 관형형 전성 어미
접두사 XPN 체언 접두사 XPN 체언 접두사
접미사 XSN 명사 파생 접미사 XSN 명사 파생 접미사
XSV 동사 파생 접미사 XSV 동사 파생 접미사
XSA 형용사 파생 접미사 XSA 형용사 파생 접미사
어근 XR 어근 XR 어근
부호 SF 마침표, 물음표, 느낌표 SF 마침표, 물음표, 느낌표
SE 줄임표 SE 줄임표 …
SS 따옴표,괄호표,줄표 SSO 여는 괄호 (, [
SSC 닫는 괄호 ), ]
SP 쉼표,가운뎃점,콜론,빗금 SC 구분자 , · / :
SO 붙임표(물결,숨김,빠짐) SY  
SW 기타기호 (논리수학기호,화폐기호)
한글 이외 SL 외국어 SL 외국어
SH 한자 SH 한자
SN 숫자 SN 숫자


References