일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 작심삼개월
- 코딩테스트대비
- 패스트캠퍼스
- Korean-NLP
- 퀵정렬
- BFS알고리즘
- package-install
- FastCampus
- 자료구조
- 파이썬
- 시나공정보처리기사
- 프림알고리즘
- 인강
- 크루스칼알고리즘
- 트리구조
- 연결리스트
- 시간복잡도
- 환급챌린지
- 백준알고리즘2920번
- AIFFEL
- 1주차완료
- 코딩테스트
- 해쉬테이블
- 코딩테스트인강
- Ai
- nqueen
- 알고리즘
- 최단거리알고리즘
- 내돈내산
- DFS알고리즘
- Today
- Total
DevLog
[Ubuntu 18.04] KoNLPy, mecab 패키지 설치하기 본문
아직 초짜여서 그런가, Ubuntu 터미널의 명령어도 낯설고, 파일이 설치될 때 저장되는 디렉토리, 경로도 많이 낯설다.
하지만 살아온 만큼이나 앞으로 Ubuntu를 사용할 일은 많을 것 같으니
또 오늘과 같은 4시간 삽질은 반복되지 않도록 하는 것이 좋겠다.
눈 뜨나 감으나 무조건 경로 체크! 가상환경 체크! 설치 패키지 확인!
서론
인공지능은 Computer Vision 분야에서 Object Detection만 다루다가
처음으로 NLP를 다루니, 새롭고 낯설기도 했다.
텍스트 분석 및 학습에는 RNN, 1-D CNN, FFN, Transformer 등 다양한 모델을 활용하여 진행할 수 있다.
이러한 모델을 활용하기 위해 사용되는 파이썬 형태소 분석기 패키지를 설치해 보았다.
KoNLPy(뭐라고 불러야 하나 고민 많았는데, "코엔엘파이" 라고 부른다.)는 한국어 정보처리를 위한 파이썬 패키지이다.
KoNLPy는 POS 태거 (tagger)인 Twitter와 mecab을 가지고 있다.
(Twitter는 KoNLPy 버전 0.4.5부터 이름이 Okt로 바뀌었다고 한다.)
현재까지도 완벽하지 않은 패키지를 지속적으로 발전시키고 있고, GitHub를 통해 사용자들과 소통을 하고 있다.
본론
방법은 크게 두 가지인 것 같다.
1. KoNLPy 공식 Document 대로 따라하기
2. 각 패키지를 수동으로 단계별 설치하기
참고로, 프로젝트는 가상 환경을 만들어 사용하고 있었는데,
2번을 진행하다가 Error를 만나 그 Error를 검색하고 해결방안을 찾는 것을 반복하다 3-4시간이 흘렀다.
Error가 Error를 낳고, 그 Error가 또 다른 Error를 낳다가 완벽하게 꼬여버린 상황을 맞이해 버렸다.
결국, 2번을 관두고 base 환경과 가상환경 두 환경에서 모두 설치된 KoNLPy, mecab 패키지를 완벽하게 삭제한 후,
다시 1번을 시도했더니 한 번에 성공했다. (그때의 허탈함은 잊을 수가 없다.)
1. KoNLPy 공식 Document 대로 따라 하기
2021.01 기준
Supported : Xenial(16.04.3 LTS), Bionic(18.04.3 LTS), Disco(19.04), Eoan(19.10)
Ubuntu 2020 버전이 살짝 불안정하고, 에러가 많이 난다고 하던데, 아직 KoNLPy는 지원하지 않는 것 같다.
Ctrl + Alt + T 로 터미널을 열고, 설치하고자 하는 환경으로 이동하여, 설치가 된 적이 있는지 다시 한번 더 확인한다.
환경마다 설치 경로가 꼬일 수도 있으니, Error가 생기면 기존의 것을 지우고 다시 설치하는 것도 방법인 것 같다.
$ conda activate 가상환경이름
$ pip list | grep konlpy
$ pip list | grep mecab
1. Install dependencies
KoNLPy 패키지 자체가 JAVA 기반으로 개발되었는지, JDK 환경이 필수적으로 설치가 되어야 하고,
GitHub konlpy/requirements2.txt 상에서도 JPype1가 필수로 들어가 있다.
$ sudo apt-get install g++ open jdk-8-jdk python3-dev python3-pip curl
2. Install KoNLPy
$ python --version # 파이썬 버전 확인 후,
$ python3 -m pip install --upgrade pip
$ python3 -m pip install konlpy # python 3.x
3. MeCab 설치하기
$ sudo apt-get install curl git
$ bash <(curl -s https://raw.githubusercontent.com/konlpy/konlpy/master/scripts/mecab.sh)
4. 설치 완료 후, 터미널에서 확인 및 Jupyter notebook에서 확인
터미널에서는 안되고, jupyter notebook에서는 가능한 이유를 도저히 모르겠다.
이건 조금 더 시도해 보아야겠다.
(혹시 이유를 아는 분이 나타나신다면, 꼭 댓글로 알려주세요. 알고 싶어요.)
2. 각 패키지를 수동으로 단계별 설치하기
1번이 잘 작동을 하지 않고, Error가 난다면, 다른 방법을 찾게 될 것이다.
하지만 중요한 것은 Error를 최대한 잡아보는 것이지만 수동으로 설치할 경우,
기존에 1번에서 설치한 패키지는 깔끔하게 삭제해 주는 것이 좋을 것 같다.
(경로가 꼬이고, 에러가 에러를 낳는 현장을 목격하고 싶지 않다면..)
# ko 까지만 치고 입력하면, konlpy, mecab 패키지가 둘 다 뜸
$ pip list | grep ko # 패키지 이름 정확히 확인해주고
$ pip uninstall 정확한패키지명 # 위의 리스트에서 나온 패키지명 그대로 복붙
대부분 KoNLPy에서 생기는 오류는 ../jvm.py 에서 나오는 jdk에 관한 오류이고,
mecab에서 생기는 오류는 'Tagger'에 관한 오류인 것 같다.
(이걸로 씨름을 3시간을 했다. 처음부터 2번을 먼저 했기 때문에 2번에서 못 고치고 1번으로 가게 된 역순이지만..)
2번을 직접적으로 해결하지 못하고, 1번 방법으로 설치를 완료했기 때문에,
중간 에러에서 도움이 됐던 링크를 남겨야겠다.
(마치 인터스텔라의 쿠퍼...처럼 되지 않으려면... 링크를 남겨... 남기라고... 남겨서 나중에 보라고...)
# 일단 수동으로 설치하는 방법은 너무 많은 분들이 기록해 둔 것이 있기에 Pass
① KoNLPy 설치 과정에서 FileNotFoundError: [Errno 2] No such file or directory: '/usr/lib/jvm' 에러
여기서 'Installing the Default JRE/JDK 부분을 시도하고 다시 패키지를 import 해서 확인
② KoNLPy 패키지에서 Okt() (Okt 뿐 만 아니라 다른 객체 포함) 객체를 만들 때, 아래와 같이 'convertStrings' 에러
(이게 진짜 사람 발목을 잡아요)
>>> from konlpy.tag import Okt
>>> t = Okt()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/home/ssac22/Downloads/exit/lib/python3.7/site-packages/konlpy/tag/_okt.py", line 91, in __init__
jvm.init_jvm(jvmpath, max_heap_size)
File "/home/ssac22/Downloads/exit/lib/python3.7/site-packages/konlpy/jvm.py", line 67, in init_jvm
convertStrings=True)
TypeError: startJVM() got an unexpected keyword argument 'convertStrings'
Eden 님의 글을 참고했는데, 나는 어떠한 이유인지 해결되지 않았다.
가상 환경 상의 경로가 꼬여버린 것인지, 문제는 저렇게 해서 된 적도 있고, 다시 했을 때 안된 적도 있어서 시도해 본 것에 의의를 둔다.
③ KoNLPy 패키지에서 mecab 사용을 위해 설치 과정에서 Tagger 오류
위의 두 에러와는 달리 직접적으로 경험한 에러는 아니지만, 보통 Tagger 에러를 많이 겪는 것 같아서 도움이 될 것 같아 찾아보았다.
AWS EC2의 Ubuntu 환경에서 실행한 분이셨고, mecab 객체 부분의 에러는 완벽히 잡으신 것 같다.
마치며
KoNLPy, mecab 패키지 설치에서는 권한, python 버전과 관련한 부분만 유의한다면 빠르게 설치 가능한 것 같다.
python/pip/sudo 권한 부분을 유의하여 설치를 하는 것이 좋고,
되도록이면 1번 방법에서 빠르게 설치가 되기를 바란다.
나는 코딩을 하고 모델링을 할 때, Error를 만나는 것보다
이렇게 Terminal에서 패키지를 설치할 때 Error를 만나는 것이 이상하게도 더 무섭다.
아마 기초 지식이 조금 부족해서 고칠 수 있는 방법이나 경로를 확인하는 방법에 익숙지 않아서 인 것 같다.
그래서 더 Computer Science 분야를 공부하고, 운영체제의 기본 지식에 눈이 많이 가고 호기심이 생긴다.
배움이 배움을 낳듯,
나의 성장도 성장을 낳는 그 날까지 기죽지 않고 나아가야겠다.