[nlp] konlpy mecab 사용법

최승언·2023년 1월 8일
0

nlp

목록 보기
2/11
post-thumbnail

지금까지 konlpy 형태소 분석기 중 mecab만 사용할 수 없었는데 방법을 알아냈다.

1. mecab 설치

pip install mecab 명령어로 mecab을 설치하면 C://에 mecab이라는 폴더가 생성될 것이다.

2. Mecab 호출

python에서 Mecab을 호출할 때 경로를 다음과 같이 설정해주자.

from konlpy.tag import Mecab

mecab = Mecab(dicpath="C:\\mecab\\mecab-ko-dic")

그러면 정상적으로 사용할 수 있을것이다.

3. 단어사전 추가법(Window)

3-1. MeCab 태그(v2.0)

실질의미유무대분류(5언 + 기타)세종 품사 태그mecab-ko-dic 품사 태그
태그설명태그설명
실질형태소체언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주격 조사
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어근
부호SF마침표, 물음표, 느낌표
SE줄임표SE
SS따옴표,괄호표,줄표SSO
SSC닫는 괄호 ), ]
SP쉼표,가운뎃점,콜론,빗금SC
SO붙임표(물결,숨김,빠짐)SY
SW기타기호 (논리수학기호,화폐기호)
한글 이외SL외국어
SH한자SH
SN숫자SN

https://docs.google.com/spreadsheets/d/1-9blXKjtjeKZqsf4NzHeYJCrr49-nXeRF6D80udfcwY/edit#gid=589544265

3-2. 사전 형식

  • 종성 유무: 읽기 마지막 글자에 종성이 있는지 없는지- T or F
  • 타입:

Inflect - 활용
Compound - 복합명사
Preanalysis - 기분석

  • 표현: 활용, 복합명사, 기분석이 어떻게 구성되는지 알려주는 필드
표층형000품사 태그의미 부류종성 유무읽기타입첫번째 품사마지막 품사표현
예)
태양000NNG*T태양****
서울000NNP지명T서울****
불태워졌000VV+EM+VX+EPT불태워졌InflectedVVEP불태우/VV/+어/EC/+지/VX/+었/EP/
해수욕장000NNGT해수욕장Compound**해수/NNG/+욕/NNG/+장/NNG/*
토큰 구조
표층형/품사태그/의미부류

3-3. 단어사전 추가방법

1) C:\mecab\user-dic 경로안에 .csv 확장자로 쉼표로 구분하여 아래 예시와 같이 넣고 싶은 단어를 추가

예시)

# dothis.csv
애완동물,330,330,330,NNG,*,T,애완동물,Compound,*,*,애완/NNG/*+동물/NNG/*
더빙,1786,3545,432,NNG,*,T,더빙,*,*,*,*,*
카카로트,1786,3545,330,NNP,*,F,카카로트,*,*,*,*,*
배지터,1786,3545,330,NNP,*,F,배지터,*,*,*,*,*
침착맨,1786,3545,330,NNP,*,T,침착맨,*,*,*,*,*
이상형,1786,3545,330,NNG,*,T,이상형,*,*,*,*,*
카타쿠리,1786,3545,330,NNP,*,F,카타쿠리,*,*,*,*,*

2) Window PowerShell을 관리자 권한으로 열고 아래 명령어를 실행.(permission denied이 뜬다면 실행하고 있는 MeCab을 끄고 할 것)

.\\tools\\add-userdic-win.ps1

3) 실행이 완료되면 C:\mecab\mecab-ko-dic 경로안에 user-<파일명>.csv 이 생성되어 있으면 완료.

4) 3번까지만 해도 완료지만 내가 만든 단어의 우선 순위를 높게 하고 싶다면 C:\mecab\mecab-ko-dic 경로안에 있는 user-<파일명>.csv에서 아래와 같이 4번째 구분 쉼표를 0으로 수정.

# user-dothis.csv
애완동물,1780,3534,0,NNG,*,T,애완동물,Compound,*,*,애완/NNG/*+동물/NNG/*
더빙,1780,3534,0,NNG,*,T,더빙,*,*,*,*,*
카카로트,1786,3545,0,NNP,*,F,카카로트,*,*,*,*,*
배지터,1786,3545,0,NNP,*,F,배지터,*,*,*,*,*
침착맨,1786,3546,0,NNP,*,T,침착맨,*,*,*,*,*
이상형,1780,3534,0,NNG,*,T,이상형,*,*,*,*,*
카타쿠리,1786,3545,0,NNP,*,F,카타쿠리,*,*,*,*,*

5) C:\mecab\tools에 아래 내용의 compile-win.ps1 파일 작성.

$PROC_PATH = "C:\mecab\"
$DIC_PATH = "$($PROC_PATH)mecab-ko-dic\"
$USERDIC_PATH = "$($PROC_PATH)user-dic\"
$MECAB_EXEC_PATH = "$($PROC_PATH)mecab.exe"
$DICT_INDEX = "$($PROC_PATH)mecab-dict-index.exe"

function Compile {
    Remove-Item .\mecab-ko-dic\*.bin
    Remove-Item .\mecab-ko-dic\*.txt
    & .\mecab-dict-index.exe -d mecab-ko-dic -o mecab-ko-dic -f UTF-8 -t UTF-8

}

Compile

6) Window PowerShell로 compile-win.ps1 파일 실행.

.\\tools\\compile-win.ps1
profile
작업하다가 막힌부분을 기록하는 곳.

0개의 댓글