지금까지 konlpy 형태소 분석기 중 mecab만 사용할 수 없었는데 방법을 알아냈다.
pip install mecab
명령어로 mecab을 설치하면 C://에 mecab이라는 폴더가 생성될 것이다.
python에서 Mecab을 호출할 때 경로를 다음과 같이 설정해주자.
from konlpy.tag import Mecab
mecab = Mecab(dicpath="C:\\mecab\\mecab-ko-dic")
그러면 정상적으로 사용할 수 있을것이다.
실질의미유무 | 대분류(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 |
Inflect - 활용
Compound - 복합명사
Preanalysis - 기분석
표층형 | 0 | 0 | 0 | 품사 태그 | 의미 부류 | 종성 유무 | 읽기 | 타입 | 첫번째 품사 | 마지막 품사 | 표현 |
---|---|---|---|---|---|---|---|---|---|---|---|
예) | |||||||||||
태양 | 0 | 0 | 0 | NNG | * | T | 태양 | * | * | * | * |
서울 | 0 | 0 | 0 | NNP | 지명 | T | 서울 | * | * | * | * |
불태워졌 | 0 | 0 | 0 | VV+EM+VX+EP | T | 불태워졌 | Inflected | VV | EP | 불태우/VV/+어/EC/+지/VX/+었/EP/ | |
해수욕장 | 0 | 0 | 0 | NNG | T | 해수욕장 | Compound | * | * | 해수/NNG/+욕/NNG/+장/NNG/* | |
토큰 구조 | |||||||||||
표층형/품사태그/의미부류 |
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