티스토리 뷰

이번에는 mecab 형태소분석기에 사용자 사전을 추가하는 방법에 대해서 설명한다.

윈도우 환경에서 파이참을 사용할 때 mecab을 설정하는 방법은 이전 포스팅에서 설명하였다.

https://joyhong.tistory.com/127

 

윈도우 환경에서 mecab 설치 후 파이참(PyCharm) 에서 사용하기

윈도우에서 파이참을 사용하여 개발할 때 형태소 분석기 중 하나인 mecab을 사용하려면 몇가지 설치와 실행을 통해서 가능하다. 먼저 다운 받아야 할 것은 1. mecab-ko-msvc 2. mecab-ko-dic-msvc.zip 이렇게

joyhong.tistory.com

사전을 추가하기 위해서는 두 단계를 거치면 된다.

1. 사전 추가

2. 사전 컴파일

 

사전 파일을 수정, 생성하였으면 반드시 컴파일을 해야 한다.

 

사전 추가에 대한 내용은 "C:\mecab\user-dic" 폴더에 있는 md 파일을 읽어도 잘 나와 있다.

 

 

자 그럼 사전을 추가해보록 하겠다.

사전을 user-dic 폴더에 보면 

csv 파일이 3개가 존재한다. 

명사는 nnp에, 인명은 person에, 지명은 place 파일에 각각 입력하면 된다.

이 때 입력하는 형식은 여기에서 제공하는 형식에 따라 입력하면 된다.

 

사전의 형식은

 

표층형/0/0/0/품사태그/의미분류/종성유무/읽기/타입/첫번째품사/마지막품사/표현
 

으로 구성된다.

 

 

실제 user-dic 폴더에 존재하는 place.csv 파일을 열어보면 아래와 같다.

 


사전을 추가하기에 앞서 사전 추가 전과 후를 비교하기 위해 하나의 예문을 실행시켜 보기로 한다.

import MeCab
m = MeCab.Tagger()
a = m.parse("싹쓰리가 이번에 싹 쓸어버리네.")
print(a)

위와 같이 실행하면 결과는 아래와 같다.

싹	NNG,*,T,싹,*,*,*,*
쓰리	NNG,*,F,쓰리,*,*,*,*
가	JKS,*,F,가,*,*,*,*
이번	NNG,*,T,이번,Compound,*,*,이/NNG/*+번/NNG/*
에	JKB,*,F,에,*,*,*,*
싹	MAG,성분부사|양태부사,T,싹,*,*,*,*
쓸	VV,*,T,쓸,Inflect,VV,VV,쓰/VV/*
어	EC,*,F,어,*,*,*,*
버리	VX,*,F,버리,*,*,*,*
네	EF,*,F,네,*,*,*,*
.	SF,*,*,*,*,*,*,*
EOS

이 결과 중에서 싹쓰리가 하나의 단어로 나오길 희망했는데 결과는 싹 과 쓰리가 분리되어 있다.

따라서 사전에 싹쓰리 라는 명사를 추가해보록 한다.


명사를 추가하기 위해서 nnp.csv 파일을 열어 사전 형식에 맞춰 아래와 같이 싹쓰리를 추가하였다.

대우,,,,NNP,*,F,대우,*,*,*,*,*
구글,,,,NNP,*,T,구글,*,*,*,*,*
싹쓰리,,,,NNP,*,F,싹쓰리,*,*,*,*,*

"싹쓰리" 라는 단어에 종성이 업기 때문에 F로 명시하고 고유명사로 NNP를 명시하였다.

파일을 저장하면 사전 추가하기는 완료가 되었고 다음으로 컴파일을 수행해야 한다.

 

컴파일은 윈도우 환경이기 때문에 Powershell을 활용하여 컴파일을 진행한다.

 

윈도우에서 powershell을 찾아 관리자로 실행시킨다.

 

관리자로 실행시키는 이유는 이후의 명령어 실행시 에러가 발생할 수 있기 때문이다.

 

파워쉘이 구동되면 C:\mecab 폴더로 이동 후

tool 폴더에 있는 add-userdic-win.ps1 를 실행시킨다.

PS C:\Windows\system32> cd C:\mecab

PS C:\mecab> .\tools\add-userdic-win.ps1

에러가 발생하는 경우가 있을 수 있다.

이런 UnauthorizedAccess 에러가 발생할 경우에는 스크립트 실행 제한을 풀어주어야 한다.

내 환경에서 제한이 걸려 있는지 확인하기 위해서 ExecutionPolicy 라고 입력해 보면

위 그림과 같이 Restricted 라고 나온다.

Set-ExecutionPolicy Unrestricted

따라서 위 명령어를 실행하게 되면 스크립트를 실행할 수 있게 된다.

다시 ExecutionPolicy를 실행해보면 Unrestricted 라고 나오는 것을 볼 수 있다.

그럼 이제 다시 위에서 실패했던 tool 폴더에 있는 add-userdic-win.ps1 를 실행시킨다.

정상적으로 실행이 되면 아래와 같이 실행이 시작된다.

그리고 마침내 done! 이라는 것이 나타나게 되면 사전 컴파일이 완료가 된 것이다.

 

이제 사전이 반영되었는지 확인할 차례만 남았다.

 

위에서 실행한 코드를 다시 실행한 결과

싹쓰리	NNP,*,F,싹쓰리,*,*,*,*,*
가	JKS,*,F,가,*,*,*,*
이번	NNG,*,T,이번,Compound,*,*,이/NNG/*+번/NNG/*
에	JKB,*,F,에,*,*,*,*
싹	MAG,성분부사|양태부사,T,싹,*,*,*,*
쓸	VV,*,T,쓸,Inflect,VV,VV,쓰/VV/*
어	EC,*,F,어,*,*,*,*
버리	VX,*,F,버리,*,*,*,*
네	EF,*,F,네,*,*,*,*
.	SF,*,*,*,*,*,*,*
EOS

싹쓰리가 하나의 단어로 잘 나오게 된다.

 

최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함