본문 바로가기
study

Mecab 사용자 사전 추가하기

by duck9667 2021. 2. 10.

mecab에서는 사용자가 사전을 구축할 수 있도록 지원한다. 따라서 자연어 처리시 분석 품질을 높일 수 있다. 한국어 임베딩에서 제공하는 코드를 통해 진행해보았다. 추가로 konlpy를 윈도우 환경에서 실행시키다보면 환경 세팅이 까다롭다. 따라서 도커(docker)를 활용하여 리눅스 환경에서 설치해보았다.

1. Docker 컨테이너 빌드

우선 Docker 설치 후 한국어 임베딩 깃허브 사이트에서 제공하는 Dockerfile로부터 도커이미지 생성 및 컨테이너를 띄운다. 노트북이라 CPU 파일로 빌드했으며 아래 코드는 터미널에서 작성했다.

git clone https://github.com/ratsgo/embedding.git
cd embedding
docker build -t ratsgo/embedding-cpu -f docker/Dockerfile-CPU .
docker run -it --rm ratsgo/embedding-cpu bash

# 루트 권한으로 주피터 노트북을 띄운다
jupyter notebook –allow-root

 

2. 사용자 사전 추가

한국어 임베딩 책에 따르면 mecab-user-dic.csv을 실행시켜 직접 제시된 형식에 맞게 추가하는 방법을 제시한다. 하지만 엑셀을 키지 않고 터미널에서 명령어를 통해 해보았다.

# 해당 파일이 존재하는 디렉토리로 이동
cd /notebooks/embedding/preprocess 

# vim 편집기를 통해 파일에 접근
vim mecab-user-dic.csv

# 입력 - i / 저장 후 닫기 - esc + wq
# 만약 vim 명령어가 실행되지 않는다면 설치부터 - sudo apt-get install vim

오리전자를 추가해보았다.

이 후 저자가 제공한 쉘스크립트 파일을 통해 쉽게 단어를 추가할 수 있다.  아래 명령어를 실행하면 입력한 "오리전자"라는 단어가 사용자 사전에 추가된다. 

bash preprocess.sh mecab-user-dic

책의 설명과 별개로 본인이 직접해도 된다. mecab 설치 후 mecab-ko-dic 디렉토리 내에 mecab-user-dic.csv와 같은 형식으로 사용자 사전을 추가하고 아래 명령어를 실행하면 된다.

tools/add-user-dic.sh

 

3. 결과 확인

from konlpy.tag import Mecab
tokenizer = Mecab()
tokenizer.morphs('오리전자 텔레비전 정말 좋네요')

사용자 사전 추가 후 "오리전자"를 하나의 단어로 인식한다.

몇몇 단어의 경우, 사용자 사전에 추가해도 여전히 인식이 안되는 경우가 발생했다. 이는 우선순위를 조정해주면 된다. 

 

* Reference - ratsgo.github.io/embedding/environment.html

댓글0