ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 형태소 분석기 mecab-ko 설치 + 사전 적용(+우선순위 높이기)
    python 2021. 2. 3. 12:01
    반응형

    목차

    • 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

     - 결과 확인

    반응형

    'python' 카테고리의 다른 글

    python 패키지 생성 설치  (0) 2021.07.19
    anaconda 프로젝트 별 환경 생성  (0) 2021.07.19
Designed by Tistory.