형태소 분석기 mecab-ko 설치 + 사전 적용(+우선순위 높이기)
목차
- Mecab 설치
- 사전등록 및 우선순위 적용
# Mecab 설치
Jupyter에서 pip install konlpy을 한 뒤에 mecab를 사용 해보면 다음과 같은 에러가 발생한다.
1 NameError: name 'Tagger' is not defined
그래서 다음과 같이 세가지 mecab 관련 파일을 받고 설치 해야한다.
mecab-ko 설치
mecab-dic 설치
mecab-python 설치
참고 링크 : https://lovablebaby1015.wordpress.com/2018/09/24/mecab-macos-설치-삽질-후기-작성중/
1. mecab-ko
- 메캅 홈페이지에서 최신 버전 확인 후 다운로드
bitbucket.org/eunjeon/mecab-ko/downloads
- 다운로드
wget https://bitbucket.org/eunjeon/mecab-ko/downloads/mecab-0.996-ko-0.9.2.tar.gz
- 압축 해제 및 설치
>> tar xvfz mecab-0.996-ko-0.9.2.tar.gz
>> cd mecab-0.996-ko-0.9.2
>> ./configure
>> make
>> make check
>> sudo make install
2. mecab-ko-dic
- 사전 관리 프로젝트 다운로드
wget https://bitbucket.org/eunjeon/mecab-ko-dic/downloads/mecab-ko-dic-2.1.1-20180720.tar.gz
- 압축 해제 및 설치
>> tar xvfz mecab-ko-dic-2.1.1-20180720.tar.gz
>> cd mecab-ko-dic-2.1.1-20180720
>> ./configure
>> make
>> sudo make install
3. mecab python
- 메캅 프로젝트 clone
>> git clone https://bitbucket.org/eunjeon/mecab-python-0.996.git
>> cd mecab-python-0.996
>> python setup.py build
>> su
이제 Jupyter 에서 정상적으로 Mecab 사용 가능
from konlpy.tag import Mecab
mecab = Mecab()
# 사용자 사전 등록 및 우선순위 높이기
참고 : https://kugancity.tistory.com/entry/mecab에-사용자사전기분석-추가하기
- 표층형 : 단어명
- 1785,3543,4267 : 좌문맥ID, 우문맥ID, 단어비용 (자동 생성 처리로 입력)
- 품사태그 : 품사 입력 (mecab-ko-dic 품사 태그를 참조하여 입력)
- 의미분류 : 인명 또는 지명 또는 *
- F : 받침유무 (원 단어의 끝 글자 받침 유무로 T, F 입력)
- 읽기 : 발음 (원 단어의 발음을 입력)
- 타입 : inflected, compound, Preanalysis, *
- 첫번째 품사, 마지막 품사 : 기분석으로 나눠지는 토큰에 대한 각 품사 입력 (mecab-ko-dic 품사 태그를 참조하여 입력)
- 원형 : 토큰 들로 나눠지는 부분 +로 입력 ( 각 토큰 : 표층형/품사태그/의미분류 )
- 인덱스표현 : 토큰 들로 나눠지는 부분 +로 입력 ( 각 토큰: 표층형/품사태그/의미부류/PositionIncrementAttribute/PositionLengthAttribute)
1. 사전 등록
- mecab-ko-dic 설치 위치로 가서 nnp.csv에 사용자 사전 입력
>> cd ~/mecab-ko-dic-2.1.1-20180720/user-dic
>> vi nnp.csv
다음 형태로 입력
구르미그린달빛,0,0,0,NNP,*,T,구르미그린달빛,*,*,*,*
고프로,0,0,0,NNP,*,F,고프로,*,*,*,*
썸즈업,0,0,0,NNP,*,T,썸즈업,*,*,*,*
썬팍,0,0,0,NNP,*,T,썬팍,*,*,*,*
- 적용 전 테스트
- 사전 적용
tools>> ./add-userdic.sh
mecab-ko-dic-2.1.1-20180720 >> make install
(base) ➜ mecab-ko-dic-2.1.1-20180720 cd tools
(base) ➜ tools ./add-userdic.sh
(base) ➜ mecab-ko-dic-2.1.1-20180720 make install
generating userdic...
nnp.csv
.
.
.
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"
(base) ➜ tools
- 사전 적용 후 테스트
사전은 적용 되었지만 등록한 단어의 우선순위(단어비용)가 낮아서, 원하지 않는 모양으로 분해 되는 것을 확인함. (단어비용을 낮추면 검색 우선순위가 높아짐)
현재 적용된 단어 비용
구르미그린달빛의 단어비용 : 2953
구르/미/그린/달빛 단어비용 : 2679/3464/1247/2215
2. 우선 순위 적용 (단어비용 낮추기)
- mecab-ko-dic-2.1.1-20180720 >> vi user-nnp.csv
- 2953 → 0 변경 후 저장
- 변경 사항 반영
mecab-ko-dic-2.1.1-20180720 >> sudo make clean
mecab-ko-dic-2.1.1-20180720 >> sudo make install
- 결과 확인