최근에 일본어 자연어처리 논문을 준비하고 있는데
어떤 형태소 분석기가 좋을지 janome, Kotori, GiNZA 등 여러 개를 파악하고
마지막으로 MeCab을 설치하려고 했는데
구글 대한민국 검색 엔진으로 검색해보니 죄다 MeCab 기반 온전한닢 형태소 분석기만 나오길래
국내 검색 엔진에도 MeCab 일본어 형태소 분석기 설치 방법에 대한 문서가 있으면 좋겠다 싶어서 작성하게 되었습니다.
<OS 및 가상환경>
Homebrew : 4.0.17
Terminal : oh-my-zsh
Python : 3.10.10
Pip : 23.1
mecab-python3 : 1.0.6
1. Homebrew를 이용한 mecab 사전(preparation) 준비
brew install mecab
brew install mecab-ipadic
터미널에 위의 명령어를 입력하여 mecab에 필요한 Formulae를 설치합니다.
하나는 터미널에서도 사용할 수 있도록 mecab을 설치하는 것이고
하나는 mecab 사용에 필요한 기본사전이라 할 수 있는 ipadic을 다운받는 겁니다.
이때 xcode-select가 설치되어 있지 않은 환경이라면
xcode-select --install
명령어를 입력하여 설치하도록 합시다.
꽤 용량이 큽니다. 대략 400mb 정도 됩니다.
2. Conda를 통한 가상환경 설치 및 라이브러리 설치
conda create -n <Env name> python=<Version>
해당 명령어에서 가상환경 이름(Env name) 과 파이썬 버전을 기입하여 새로운 가상환경을 만들어 줍니다.
파이썬 파라미터에 값을 주지 않으면 최신 버전의 파이썬을 설치합니다.
conda activate <Env name>
만든 가상환경을 위의 명령어로 실행하도록 합시다.
그리고 터미널에서 경로 앞에 아래 사진과 같이 Env name이 잘 나오는지 확인합니다.
가상환경에서 벗어나고 싶으면 conda deactivate 명령어를 전달하면 됩니다.
pip install mecab-python3
pip install unidic-lite
가상환경에 위 두 패키지를 설치해줍니다.
첫 번째 라이브러리는 mecab을 파이썬 환경에서 사용할 수 있는 패키지며,
두 번째 unidic-lite는 mecab에 필요한 사전입니다.
사전의 크기가 비교적 작습니다.
대략 250MB로 더 큰 용량인 unidic은 1GB 입니다.
3. 실습
MeCab 형태소 분석은 Tagger를 통한 인스턴스 생성과 인스턴스 함수 parse에 문자열을 인수로 넣기만 하면 됩니다.
다음과 같은 출력 결과가 나오게 됩니다.
각각 어떤 의미를 지니는가 임의로 분류를 해본 결과
[표면(형태소구별기준) - 발음 - 원형발음 - 원형표기 - 품사 - 동사종류 - 동사세분화 - 악센트]
로 표현되는 것으로 보였습니다.
ipadic 사전을 사용하는 경우와 unidic-lite 사전을 사용하는 경우 출력되는 형식이 다릅니다.
4. 오류 및 커스터마이징
MeCab.Tagger에는 파라미터로 '-Ochasen' 이나 여러 형태소분석기의 출력형식을 가져와 사용할 수 있는데 RuntimeError가 뜨는 경우가 있을 겁니다.
MeCab: Yet Another Japanese Dependency Structure Analyzer
出力フォーマット 概要 MeCab は, ChaSen と同様, 出力のフォーマットを比較的自由に再定義することができます. また, 設定ファイルにフォーマットを複数記述しておき, 実行時にそれらを 切り
taku910.github.io
태거들이 제대로 할당되지 않아서 생기는 문제입니다.
해당 문서 아래에 보면 태거와 관련된 예가 있습니다.
/Users/{Username}/miniforge3/envs/{Env name}/lib/python3.10/site-packages/unidic_lite/dicdir
위의 폴더로 이동해줍시다. 저는 miniforge3로 콘다를 구성하였는데 아나콘다 가상환경 경로에 관해서는 다른 문서를 참고해주시면 됩니다.
lib - 가상환경 생성할 당시 설정한 파이썬 버전으로 이동한 뒤 dicdir 폴더까지 갑니다.
해당 폴더 안에 'dicrc' 라는 파일이 있습니다. 해당 파일 맨 아래에 위의 예를 복사, 붙여넣기 해주면 됩니다.
위의 예에는 yomi의 node-format-yomi 가 %pS%f[7]이라고 되어있는데 [7]이 아니라 [6] 입니다.
이 외에도 깃허브 문서를 참고하여 원하는 형식의 결과를 출력하는 Tagger를 만들 수 있습니다.
Tagger 인자로는 f'-O{name}' 를 해주셔야 합니다. name은 ; 뒤에 있는 게 아니라
node-format-{name} 이 부분을 사용해주셔야 합니다.
'Python > Library' 카테고리의 다른 글
[MeCab] 일본어 형태소 분석기 유저사전 설정(Unidic) (1) | 2023.08.27 |
---|---|
[MeCab] 파이썬 MeCab 출력 형식 설정 (0) | 2023.08.24 |
일본어 형태소 분석기 MeCab 설치 및 파이썬 환경 구현 (Mac M1) (0) | 2023.08.11 |
[파이썬 라이브러리] Logging을 통해 기록하기 (0) | 2023.02.08 |