ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • PyCharm 에서 Mecab 설치 및 사용 방법
    개발 이야기/DB, 데이터분석, AI 2021. 2. 22. 17:08
    반응형

    개발 환경 

    windows 10(64bit), python 3.8, PyCharm

     

    개요

    - 형태소 분석기 종류

    - mecab-ko 설치

    - 유저 사전 추가

    - 샘플 코드

     

    형태소 분석기 종류

    텍스트 형태의 자료 분석을 위해 전처리 작업은 필수입니다. 이를 위해 개발된 한글 형태소 분석기도 여럿 있습니다. 꼬꼬마, khaiii, KOMORAN, MeCab 등이 있습니다. 

     

    MeCab은 원래 일본어 형태소 분석을 위해 만들어진 오픈소스이며, 한글 형태소 분석을 위해 진행된 은전한닢 프로젝트을 위해 MeCab을 fork해 mecab-ko가 만들어집니다.

     

    형태소 분석기 별로 장단점이 있지만 여기서는 eunjeon을 중심으로알아보겠습니다. (각 형태소의 특징에 대해서는 이 블로그에 잘 정리되어 있으니 참고하시기 바랍니다.)

     

    mecab-ko 설치

    윈도우 OS 에서의 사용을 위한 프로젝트는 mecab-ko-msvc에서 확인할 수 있습니다. 여기서의 목표는 프로젝트를 빌드부터 하는 것은 아니므로 release 페이지에서 빌드된 결과물을 다운받아 사용하도록 하겠습니다.

     

    mecab-ko-msvc-x64.zip : mecab을 윈도우 용으로 빌드한 파일입니다. 다운 받은 후 압축을 풀어 c:\mecab에 넣어두세요.

    mecab-ko-dic-msvc.zip : mecab-ko-msvc에서 사용할 수 있는 mecab-ko-dic, 사전입니다. c:\mecab폴더안에 mecab-ko-dic 폴더에 압축을 풀어 넣어두세요. 만약 사용자가 원하는 고유명사 등을 추가, 빌드 할 때 사용됩니다.

     

    유저 사전 추가

    mecab-ko-dic-msvc.zip에는 mecab-ko-dic 폴더와 user-dic 폴더가 존재합니다. 각 폴더 내의 csv 파일들은 mecab-ko에 사용되는 사전 데이터가 txt 형태로 기록되어 있으며 이를 빌드하면 bin, def 파일이 생성됩니다. 이 파일들을 원하는 프로젝트에서 사용하게 됩니다.

     

    c:\mecab\user-dic 에 example.csv 파일을 생성하거나 포함된 nnp.csv를 복사하여 이름을 수정해도 됩니다. 

    각 컬럼별로 데이터 포멧에 맞게 입력해야 합니다. 관련 내용은 이 곳을 참고하세요.

    새로운 단어를 입력하지 않아도, 띄어쓰기가 틀려도 보통은 형태소 분석기가 잘 분류합니다. 하지만 위 이미지의 '기기기'라는 극단적인 예와 유사한 단어가 존재할 때는 '기기' 와 '기'를 분리합니다. 하지만, 이 예제처럼 사용자 사전 데이터를 이용해 등록해 둔다면 '기기기'를 우리가 원하는 형태로 분석하게 됩니다.

     

    이제 추가한 csv를 빌드하여 mecab-ko-dic를 빌드해야 합니다. 윈도우에서 빌드할 때는 powershell을 사용합니다.

    만약 처음 powershell을 실행하거나 ExecutionPolicy가 restricted 인 상태인 경우 registry 수정을 위해 powershell을 관리자 권한으로 실행해야 합니다. 

    > ExecutionPolicy
    Restricted
    
    >Set-ExecutionPolicy Unrestricted
    실행 규칙 변경
    실행 정책은 신뢰하지 않는 스크립트로부터 사용자를 보호합니다. 실행 정책을 변경하면 about_Execution_Policies 도움말
    항목(https://go.microsoft.com/fwlink/?LinkID=135170)에 설명된 보안 위험에 노출될 수 있습니다. 실행 정책을
    변경하시겠습니까?
    [Y] 예(Y)  [A] 모두 예(A)  [N] 아니요(N)  [L] 모두 아니요(L)  [S] 일시 중단(S)  [?] 도움말 (기본값은 "N"): Y
    
    > ExecutionPolicy
    Unrestricted

    이제 사전 빌드 스크립트를 실행할 준비가 되었습니다. toos/add-userdic-win.ps1 을 실행해 user-dic 폴더의 내용을 빌드합니다.

     

    샘플 코드

    .
    .
    from eunjeon import Mecab
    
    '''
    '
    ' mecab 데이터를 어디에도 둘 수 있지만
    ' 스크립트 혹은 실행 파일이 있는 폴더에 둘 수 있습니다.
    ' mecab-ko-dic에 포함된 mecabrc 파일에는 사전 파일이 어디에 있는지를 설정할 수 있습니다.
    ' mecab-ko-dic에 포함된 mecabrc 파일과 mecab-ko-dic 폴더를 원하는 위치에 복사하고
    ' mecabrc 파일의 dicdir 값을 알맞게 수정하세요.
    ' 
    ' 이후 아래와 같이 mecabrc 파일 위치를 설정하면 됩니다.
    ' 아래 예제는 project_path/data/mecabrc
    '                              /mecab-ko-dic 로 구성되었다고 가정합니다.
    '''
    
    engine = Mecab(dicpath=os.path.join(os.getcwd(), 'data/mecabrc'))
    .
    .
    nouns = engine.nouns(txt)  # txt 에 있는 문장에서 명사를 뽑아옵니다.
    print(nouns)
    .
    .
    

    사용은 위와 같이 사용 할 수 있습니다. 

     

    python에서 바로 사용하는 방법은 많이 있는데 사용자 사전을 윈도우에서 어떻게 빌드해야 하는지 내용이 없어 정리해 보았습니다. 

     

    도움이 되셨기를... :)

    반응형

    댓글 0

Designed by Tistory.