챗봇 프로젝트를 진행하던 중, 형태소 라이브러리를 사용하기 위해 Konlpy.tag 패키지의 Mecab을 사용한 적이 있었습니다. ( 링크 )
한국어에 맞게 형태소를 분석하려면 은전한닢 프로젝트( 링크 )인 mecab-ko 라이브러리를 사용해야 하는데,
리눅스 환경에서는 어찌어찌 구글링을 열심히 해서 해결 했지만, Windows 상에서는 Tagger를 찾을 수 없다는 오류가 발생해서 실행이 되질 않았습니다.
File "/usr/local/lib/python3.6/site-packages/konlpy/tag/_mecab.py", line 102, in __init__
self.tagger = Tagger('-d %s' % dicpath)
NameError: name 'Tagger' is not defined
위와 같은 오류를 해결하는 방법은 konlpy.tag 라이브러리가 아닌 eunjeon 라이브러리를 설치하면 됩니다.
즉, from konlpy.tag import Mecab 이 아니라
from eunjeon import Mecab 모듈을 호출하면 되고,
Mecab 인스턴스를 생성할 때 인자로 아무 것도 넘겨주지 않으면 됩니다.
from eunjeon import Mecab
mecab = Mecab()
# from konlpy.tag import Mecab
# mecab = Mecab('/usr/local/lib/mecab/dic/mecab-ko-dic')
참고로 CentOS 7 환경에서 오류를 해결한 방법도 소개하겠습니다.
리눅스에서는 eunjeon 패키지가 아닌, konlpy.tag 패키지 사용을 기준으로 작성했습니다.
1. 기본 라이브러리 설치
# yum install -y wget
# yum install -y gcc-c++
# yum install -y curl
# yum install -y libtool
# yum install -y cmake
2. JDK, Jpype1, konlpy 설치
# yum install -y java-1.7.0-openjdk-devel
# pip3.6 install Jpype1
# pip3.6 install konlpy
3. mecab-ko 설치
# cd
# wget https://bitbucket.org/eunjeon/mecab-ko/downloads/mecab-0.996-ko-0.9.2.tar.gz
# tar xvfz mecab-0.996-ko-0.9.2.tar.gz
# cd mecab-0.996-ko-0.9.2
# autoreconf -i => AM_ICONV 에러 무시
# ./configure
# automake --add-missing
# ./test-driver
# make
# make install
4. mecab-ko-dic 설치
# cd
# wget https://bitbucket.org/eunjeon/mecab-ko-dic/downloads/mecab-ko-dic-2.0.3-20170922.tar.gz
# tar xvfz mecab-ko-dic-2.0.3-20170922.tar.gz
# cd mecab-ko-dic-2.0.3-20170922
# ./configure
# aclocal
# make
# make install
5. Tagger is not defined 에러 해결
# cd
# git clone https://bitbucket.org/eunjeon/mecab-python-0.996.git
# cd mecab-python-0.996/
# python3.6 setup.py build
# python3.6 setup.py install
# vi /etc/ld.so.conf
/usr/local/lib
# ldconfig
Tagger 에러를 해결하기 위해 구글링을 해보셨다면 이 페이지를 보셨을 것입니다. ( 링크 )
그럼에도 해결이 되질 않았는데, 따로 기록을 해두진 않았지만 어떤 so 파일을 찾을 수 없다는 내용이었습니다.
이 문제를 해결하기 위해 구글링을 하던 중, so 파일과 관련하여 좋은 글이 있었고 덕분에 해결할 수 있었습니다. ( 링크 )
이상으로 형태소 분석기 라이브러리인 Mecab-ko를 설치할 때 발생한 Tagger is not defined 에러를 해결하는 방법에 대해 알아보았습니다.
'웹 프로그래밍 > ------ Python' 카테고리의 다른 글
[Python3.6] mysqlclient 설치 에러 해결 (0) | 2018.08.04 |
---|---|
[Python3.6] Redis에 dictionary 타입 데이터 저장 및 encoding, decoding 문제 해결 (0) | 2018.08.04 |
[Python 크롤링] BeautifulSoup을 이용한 HTML 파싱 및 크롤링 ( feat. 셀레니움 ) (8) | 2018.06.09 |
[Python 크롤링] 페이스북 페이지 크롤링 ( Graph API , JSON ) (15) | 2018.06.09 |
[Python 기본] 파일 입출력 (1) | 2018.06.06 |
[Python 기본] 모듈 ( Module ) (0) | 2018.06.06 |
[Python 기본] 심볼 테이블( Symbol Table )과 객체 (2) | 2018.06.06 |