Mecab 형태소 분석기 설치하기 - M1 local
Mecab이 linux 서버에는 성공적으로 설치되었지만 M1 local에서는 이상하게 설치가 잘 안됨.
이전 글에서 Mecab을 서버에 설치하는 방법 그대로 M1 local에서도 시도를 했고 에러 없이 성공적으로 설치가 됐다고 나옴.
그러나 여전히 Mecab이 python파일에서 import가 되지 않음.
시도 1
mecab-ko, mecab-dic, mecab-python 수동으로 설치
1. mecab-ko 설치
cd /tmp
sudo wget https://bitbucket.org/eunjeon/mecab-ko/downloads/mecab-0.996-ko-0.9.2.tar.gz
sudo tar xvf mecab-0.996-ko-0.9.2.tar.gz
cd /tmp/mecab-0.996-ko-0.9.2
sudo ./configure
sudo make check
sudo make install
2. mecab-dic 설치
cd /tmp
wget https://bitbucket.org/eunjeon/mecab-ko-dic/downloads/mecab-ko-dic-2.1.1-20180720.tar.gz
tar zxvf mecab-ko-dic-2.1.1-20180720.tar.gz
cd /tmp/mecab-ko-dic-2.1.1-20180720
sudo ./autogen.sh
sudo ./configure
sudo make
sudo make install
3. mecab-python 설치
cd /tmp
git clone https://bitbucket.org/eunjeon/mecab-python-0.996.git
cd mecab-python-0.996
python3 setup.py build
python3 setup.py install
위 커멘드 하나씩 입력했는데 에러 없이 잘 되는 듯하다가 지겹도록 많이 본
python3 setup.py build 에서 Invalid version : '0.996/ko-0.9.2' 에러가 뜸.
https://sosomemo.tistory.com/30
Mecab 오류 (NameError: name 'Tagger' is not defined) 처리 방법
KoNLPy https://konlpy-ko.readthedocs.io/ko/v0.4.3/ Mecab 이 참 괜찮은데, 설치 때문에 사람들을 힘들고 어렵게 한다. 심지어 윈도우에서는 설치도 안된다. (찾아 보면 있을지도?) 몇번 설치해본 경험이 나름
sosomemo.tistory.com
진짜 며칠을 고민하고 조사했지만 해결책을 찾기가 어려웠음. 그래서 그냥 서버에 설치된 것으로 만족하려고 했지만 굳이굳이 M1 로컬에서 Mecab을 돌리는 방법이 최후의 수단이 하나 남아 있음.
시도 2
Docker를 통한 Mecab 설치
엄밀히 말하자면, M1에 직접 Mecab 설치를 하는 방법은 아님.
ubuntu에서는 Mecab이 한 줄 명령어로 쉽게 설치가 됐기에 Docker를 통해서 ubuntu 환경을 M1에서 복제하는 방식임.
파이썬에서 어떻게 하는가 ?
1. 다음과 같은 Docker file 생성
## Dockerfile
FROM ubuntu:bionic
WORKDIR /konlpy.git
COPY mecab.sh /konlpy.git
RUN apt-get update
RUN apt-get install -y g++ openjdk-8-jdk python3-dev python3-pip
RUN python3 -m pip install --upgrade pip
RUN python3 -m pip install konlpy
RUN apt-get install -y curl git
RUN ./mecab.sh | bash
# RUN apt-get install -y git
# RUN git clone https://github.com/konlpy/konlpy konlpy.git
# RUN git checkout master
# RUN python3 -m pip install -r requirements-dev.txt
# CMD python3 -m pytest -v .
2. Mecab.sh 파일 준비
3. 나는 편의를 위해서 Dockerfile과 Mecab.sh를 /Users/hannahchun/Documents/Mecab 경로에 저장함
4. Docker Desktop을 실행한 상태로 터미널을 열고 다음 명령어를 차례로 입력
docker build --tag konply .
konply라는 이름으로 docker image가 잘 생성된 것을 확인 가능
docker run -it -v $PWD/app:/app konply bash
docker image가 사용하는 OS는 ubuntu이기 때문에 아래 공식 문서에 따라 ubuntu에 Mecab을 설치해야 함.
https://konlpy.org/en/latest/install/#ubuntu
Installation — KoNLPy 0.6.0 documentation
Ubuntu Supported: Xenial(16.04.3 LTS), Bionic(18.04.3 LTS), Disco(19.04), Eoan(19.10) Install dependencies # Install Java 1.8 or up $ sudo apt-get install g++ openjdk-8-jdk python3-dev python3-pip curl Install KoNLPy $ python3 -m pip install --upgrade pip
konlpy.org
apt-get install curl git
bash <(curl -s https://raw.githubusercontent.com/konlpy/konlpy/master/scripts/mecab.sh)
위와 같이 명령어 입력해서 설치하면 잘 돼야 하지만 configure: error: cannot guess build type; you must specify one 발생.
구글링 해본 결과, mecab.sh 파일 안에 있는 모든 ./configure 옆에 다음과 같이 option을 추가해야 했음.
./configure --build=aarch64-unknown-linux-gnu.
konlpy.git 안에 mecab.sh가 있는 것을 확인하고 바로 mecab.sh를 실행했더니 드디어 성공!
bash mecab.sh
파이썬 파일에서 에러 없이 Mecab이 잘 실행됨.
Jupyter에서 어떻게 하는가 ?
1. 다음과 같은 Docker file 생성
FROM ubuntu:bionic
WORKDIR /konlpy.git
COPY mecab.sh /konlpy.git
RUN apt-get update
RUN apt-get install -y g++ openjdk-8-jdk python3-dev python3-pip curl git
RUN python3 -m pip install --upgrade pip
RUN python3 -m pip install konlpy
# # Install programs needed to run Jupyter notebook
RUN python3 -m pip install JPype1 jupyter pandas numpy seaborn scipy matplotlib pyNetLogo SALib
# # Expose this port to run jupyter notebook from outside the docker image.
EXPOSE 8888
RUN bash mecab.sh
RUN git clone https://github.com/konlpy/konlpy konlpy.git
# Add a user for jupyter notebook
RUN useradd -ms /bin/bash jupyter
USER jupyter
CMD ["jupyter", "notebook","--allow-root","--ip=0.0.0.0","--port=8888","--no-browser"]
2. Mecab.sh 파일 준비
파이썬에서 썼던 파일과 똑같음
3. 나는 편의를 위해서 Dockerfile과 Mecab.sh를 /Users/hannahchun/Documents/Mecab_Jupyter 경로에 저장함
4. Docker Desktop을 실행한 상태로 터미널을 열고 다음 명령어를 차례로 입력
docker build --tag konply .
docker run -it -v $PWD/app:/app konply bash
이렇게 잘 되면 성공!
exit 하고, base로 돌아와서
docker run -p 8888:8888 --user root -v $PWD/app:/app konply
위 링크 클릭하면, 다음과 같이 jupyter 접속 가능.
내 Docker Desktop을 들어가면 'confident_jang'이라는 container가 ubuntu 환경에서 jupyter를 돌리고 있음.
클릭하면 URL을 언제든지 찾을 수 있음.
위 docker container를 이용하여 VScode에서 Jupyter를 돌리기
1. ubuntu 버전에 맞는 Miniconda3 설치
# ubuntu 정보 확인
lscpu
아래 사이트 참고해서 자기 OS 환경에 맞는 Miniconda 설치
https://docs.conda.io/en/latest/miniconda.html
Miniconda — conda documentation
Miniconda is a free minimal installer for conda. It is a small, bootstrap version of Anaconda that includes only conda, Python, the packages they depend on, and a small number of other useful packages, including pip, zlib and a few others. Use the conda in
docs.conda.io
wget 파일로 Ubuntu 다운로드
wget https://repo.anaconda.com/miniconda/Miniconda3-py38_23.5.2-0-Linux-aarch64.sh
sh 파일 실행
bash ./Miniconda3-py38_23.5.2-0-Linux-aarch64.sh
2. conda 명령어 설정
.bashrc 편집기 실행
vi ~/.bashrc
- vim 설치 안되어 있으면 설치
apt-get install vim
vim 열리면, 맨마지막에 해당 문구 넣기 그리고 저장
export PATH=~/miniconda3/bin:~/miniconda3/condabin:$PATH
.bashrc 수정한 거 적용
source ~/.bashrc
conda 잘 설치 됐는지 확인
conda -V
내 우분투는 conda 23.5.2
3. Conda 가상환경 생성
conda create -n mecab python=3.8
python 3.8 버전의 'mecab'이라는 이름의 가상환경 생성
conda activate mecab
'mecab'이라는 이름의 가상환경 활성화
https://majjangjjang.tistory.com/183
Ubuntu 18.04 Anaconda 설치 및 간단사용법
pip가 섞이거나 필요한 python버전이 내가 필요한 패키지와 다를경우도 많기에 anaconda를 이용하여 가상환경을 구성하여 필요할때마다 구성하여 사용하기 위해 1. Anaconda 홈페이지에서 sh파일 다운
majjangjjang.tistory.com
4. 이렇게 하면, VScode에서도 가상환경을 만들어 jupyter 작업 가능.
이런식으로 생성한 가상환경이 나오지 않으면, python과 jupyter 확장자가 설치되었는지 확인.
나는 Python Development Extensions Pack이랑 Jupyter Extension for Visual Studio Code 두 개 설치하니 잘 작동.
'mecab'이라는 이름의 가상환경에 Mecab을 설치하면 됨.
Ubuntu 18.04 bionic에 맞는 거 찾아서 설치.
아래 사이트에 나온 것 처럼
https://konlpy.org/en/latest/install/#ubuntu
Installation — KoNLPy 0.6.0 documentation
Ubuntu Supported: Xenial(16.04.3 LTS), Bionic(18.04.3 LTS), Disco(19.04), Eoan(19.10) Install dependencies # Install Java 1.8 or up $ sudo apt-get install g++ openjdk-8-jdk python3-dev python3-pip curl Install KoNLPy $ python3 -m pip install --upgrade pip
konlpy.org
다음 명령어들을 실행했는데
apt-get install g++ openjdk-8-jdk python3-dev python3-pip curl
python3 -m pip install --upgrade pip
python3 -m pip install konlpy
apt-get install curl git
bash <(curl -s https://raw.githubusercontent.com/konlpy/konlpy/master/scripts/mecab.sh)
configure: error: cannot guess build type; you must specify one
앞서 소개한 것 처럼./configure --build=aarch64-unknown-linux-gnu이 적용된 mecab.sh를 불러와서 다음과 같이 실행했지만
bash mecab.sh
공포의 에러가 다시 등장...
그래서 얼른 이전 포스팅에서 말한 방법으로 하니
pip install konlpy
pip install mecab-python
bash <(curl -s https://raw.githubusercontent.com/konlpy/konlpy/master/scripts/mecab.sh)
무사히 해결!
Docker를 이용해서 M1 local에서 Mecab이 작동 안되는 문제를 해결할 줄은 상상도 못했음.
데이터베이스 시간에 살짝 배운 Docker를 이런 문제 해결하는데 쓰이다니....!!!