[MeCab] 일본어 형태소 분석기 유저사전 설정(Unidic)
형태소 분석기를 조금이라도 다뤄보신 분들은 한 번쯤 이런 생각을 해 보실겁니다.
'내가 원하는 고유어를 하나의 형태소로 인식하게끔 만들 수는 없을까?'
이번 포스팅에서는 MeCab 일본어 형태소 분석기, 사전으로는 Unidic을 사용하는 경우 유저가 원하는 단어를 인식하게끔 만들어주는
유저사전을 구현하는 방법을 알아보도록 하겠습니다.
제가 재학하고 있는 부경대학교를 예로 테스트해보겠습니다.
결과물을 보시면 부경대학(釜慶大学)의 형태소 분석이 엄청 이상하게 된 것을 볼 수 있습니다.
그럼 위 형태소 분석이 원활하게 되기 위해서 우리는 부경대학(釜慶大学)을 유저사전에 추가한 뒤,
컴파일까지 마치고,
초기화 과정에서 유저사전 지정하는 방법까지 알아보도록 하겠습니다.
1. CSV 파일 생성
먼저 유저사전을 만들기 위해서 원하는 단어를 설정할 csv 파일 하나를 만들어야 합니다.
이렇게 설정했습니다.
일단 A열부터
분석형태소, Left-ID, Right-ID, Cost, 품사(4열 할당), 활용형(2열 할당), 발음, 표기, 표기, 발음, 표기 발음, 고유명사, 공란(3열)
순입니다.
분석 형태소에 자르고자 하는 형태소를 입력하고, Left-ID, RIght-ID는 명사라면 채우지 않아도 되지만 그 외에 품사는 임의의 값을 입력해야 합니다.
Cost 는 0 또는 임의의 숫자로 입력하면 됩니다.
품사체계의 입력이 중요합니다.
아무런 품사체계를 입력하면 되는게 아니라 MeCab에서 지정한 품사체계를 그대로 가져다 써야 합니다.
Mecabなど形態素解析で使うIPA品詞体系(品詞ID|pos-id) - MS Tech
Mecabや茶筅など形態素解析で使う辞書のIPA品詞体系をまとめてみました。 Mecabでは::getPosId()で品詞IDを取得できます。 [amazonjs asin=“4873114705” locale=“JP” title=“入門 自然言語処理”] IPA品詞
miner.hatenablog.com
위 사이트에 품사체계에 대한 정리가 잘 되어 있습니다.
콤마 별로 구분되어 있는 것을 하나씩 열에 채워넣으시면 됩니다.
활용형 같은 경우 미연형, 상1단동사 등을 넣으면 되는데 추후에 서술하겠지만 유저사전에서 동사는 비교적 넣지 않는 편이라 넘어가겠습니다.
이 외에는 위에 적힌 대로 따라하시면 됩니다.
뒤늦게 설명을 덧붙이지만 맨 위 행은 인식하지 않는 부분입니다.
2행부터 원하는 형태소를 입력하면 됩니다.
2. 컴파일
컴파일로 csv 파일을 dic 확장자로 변환해야 합니다.
iterm 을 실행하고 mecab-config --libexecdir를 통해 경로를 얻습니다.
해당 경로로 이동하여
mecab-dict-index 파일이 있는 것을 찾아줍시다.
sudo {mecab-dict-index의 경로} \
-d {파이썬에서 사용하는 사전의 dicdir 폴더의 경로} \
-u {dic 확장자를 가진 파일을 형성할 경로} \
-f utf-8 \
-t utf-8 {유저사전을 만들기 위해 생성한 csv 경로}
를 콘솔에 입력할 겁니다.
mecab-dict-index의 경로는 위에서 확인했으니
dicdir의 경로는 finder를 통해서 탐색해주세요
u 옵션은 유저사전 파일을 생성할 위치입니다.
f는 포맷팅 형식을 나타냅니다. utf-8로 거의 고정입니다.
t는 csv 파일 경로입니다.
단, u, t 옵션의 경로에는 어느 한국어도 들어가선 안되며 가급적이면 바탕화면 혹은 home directory 에서 작업하시는 걸 권장드립니다.
하위 디렉토리에서 실행하면 어느순간 오류가 뜹니다.
위 과정까지 따라오셨다면 문제없이 사전이 만들어집니다.
3. 파이썬 적용
유저사전을 적용하기 위해서는 MeCab.Tagger()로 초기화 할 때 u 옵션으로 그 경로를 제공해줍니다.
mecab = MeCab.Tagger('-u /Users/~~')
정상적으로 결과가 출력되는 것을 볼 수 있습니다.
다양한 곳에서 오류가 뜰 수 있습니다.
가령 위에서 언급한 것처럼 특정 품사에는 Left-id, Right-id 가 들어가야 한다는 에러가 뜨기도 하며,
하위 디렉토리에 배치하였을 때 컴파일이 잘 되지 않는 오류가 뜨기도 합니다.
저도 논문 준비하면서 여기에 거의 일주일을 소비하면서 일본 웹사이트를 전부다 뒤져본지라..
최대한 힘 닿는 선에서 도와드릴 수 있으니 댓글로 막히는 부분을 알려주세요!
그리고 MeCab 공식에서도 언급을 하지만 동사를 추가하기 위해선 동사의 모든 활용형을 일일이 유저사전에 넣어야 합니다.
그렇기에 가급적이면 동사는 잘 건들이지 않는 편이라고 하네요.
포스팅 읽어주셔서 감사합니다.