Amazon SageMaker의 Jupyter에서 MeCab-NEologd 사용
개요
Amazon SageMaker의 Jupyter Notebook (Python3)에서 MeCab/NEologd을 사용하는 설정 단계입니다.
기본은 공식 순서대로입니다만, 아래와 같이 에러 회피와 편리 설정을 더하고 있습니다
절차
Install mecab
노트북 인스턴스의 Jupyter를 열고 Terminal에서 다음을 실행합니다.
(설치 작업을 수행할 위치는 선택 사항이며, 여기서는 별도로 마운트된 EFS를 지정합니다.)
$ WORK_BASE="/efs"
$ MECAB_ROOT="${WORK_BASE}/mecab"
$ cd ${WORK_BASE}
$ git clone https://github.com/taku910/mecab.git
$ cd ${MECAB_ROOT}/mecab
$ ./configure --enable-utf8-only
$ make
$ make check
$ sudo make install
Install mecab-ipadic
$ cd ${MECAB_ROOT}/mecab-ipadic
$ ./configure --with-charset=utf8
$ make
$ sudo make install
동작 확인
지금까지 인스턴스에 Mecab이 설치되어 Terminal에서 작동을 확인할 수 있습니다.
$ mecab
徳川宗家の文化的貢献
徳川 名詞,固有名詞,人名,姓,*,*,徳川,トクガワ,トクガワ
宗家 名詞,一般,*,*,*,*,宗家,ソウケ,ソーケ
の 助詞,連体化,*,*,*,*,の,ノ,ノ
文化 名詞,一般,*,*,*,*,文化,ブンカ,ブンカ
的 名詞,接尾,形容動詞語幹,*,*,*,的,テキ,テキ
貢献 名詞,サ変接続,*,*,*,*,貢献,コウケン,コーケン
EOS
Install mecab-ipadic-NEologd
Mecab 표준 사전만으로는 새로운 단어를 충분히 지원할 수 없으므로 사용자 정의 사전을 설정합니다.
여기서는 제목대로 mecab-ipadic-NEologd을 사용합니다.
$ cd ${MECAB_ROOT}
$ git clone --depth 1 https://github.com/neologd/mecab-ipadic-neologd.git
$ cd ${MECAB_ROOT}/mecab-ipadic-neologd
$ ./bin/install-mecab-ipadic-neologd -n -y
동작 확인
표준 사전에 없는 단어(도쿠가와 종가 등)가 고유 명사로 인식되는 것을 확인할 수 있습니다
$ mecab -d /usr/local/lib/mecab/dic/mecab-ipadic-neologd
徳川宗家の文化的貢献
徳川宗家 名詞,固有名詞,一般,*,*,*,徳川宗家,トクガワソウケ,トクガワソーケ
の 助詞,連体化,*,*,*,*,の,ノ,ノ
文化的 名詞,固有名詞,一般,*,*,*,文化的,ブンカテキ,ブンカテキ
貢献 名詞,サ変接続,*,*,*,*,貢献,コウケン,コーケン
EOS
path setting
Jupyter Notebook의 Python3에서 사용하기 위해 다음 경로 설정을 미리 수행하십시오.
$ sudo ln -s /usr/libexec/gcc/x86_64-amazon-linux/4.8.5/cc1plus /usr/local/bin/
Jupyter Notebook에서 작동 확인
Jupyter Notebook (python3)에서 아래를 셀에 입력하여 실행하면 Python 코드에서 Mecab이 호출되어 NEologd 사전을 사용하여 형태소 분석을 수행 할 수 있음을 확인할 수 있습니다.
!pip install --upgrade pip
!pip install mecab-python3
import MeCab
tagger = MeCab.Tagger('-d /usr/local/lib/mecab/dic/mecab-ipadic-neologd')
input = 'MeCabは 京都大学情報学研究科−日本電信電話株式会社コミュニケーション科学基礎研究所 共同研究ユニットプロジェクトを通じて開発されたオープンソース 形態素解析エンジンです。'
result = tagger.parse(input)
print(result)
수명 주기 설정
노트북 인스턴스를 다시 시작하면(저축으로 인한 중지/재개 및 인스턴스 유형 변경과 같은 이유로) 인스턴스에 추가한 사용자 지정 정보가 재설정됩니다.
따라서 이전에 작성한 설정 절차를 쉘 스크립트로 "라이프 사이클 설정"에 정의하면 동일한 설정을 유지하거나 다른 노트북에서 재사용 할 수 있습니다 (자세한 설정 방법은 노트북 인스턴스 사용자 정의 또는 수명 주기 구성 및 인터넷 액세스를 비활성화하는 옵션을 사용하여 Amazon SageMaker 노트북 인스턴스 사용자 지정 참조)
여기에서는 라이프사이클 설정(쉘 스크립트)의 내용만 기재합니다
# set Mecab / NEologd
DEFAULT_USER="ec2-user"
WORK_BASE="/efs"
MECAB_ROOT="${WORK_BASE}/mecab"
## download
if [ ! -d ${MECAB_ROOT} ]; then
sudo -u ${DEFAULT_USER} sh -c "cd ${WORK_BASE} && git clone https://github.com/taku910/mecab.git"
else
sh -c "cd ${WORK_BASE} && git pull"
fi
if [ ! -d ${MECAB_ROOT}/mecab-ipadic-neologd ]; then
sudo -u ${DEFAULT_USER} sh -c "cd ${MECAB_ROOT} && git clone --depth 1 https://github.com/neologd/mecab-ipadic-neologd.git"
else
sh -c "cd ${MECAB_ROOT} && git pull"
fi
## install
sudo -u ${DEFAULT_USER} sh <<-EOS
PATH=${PATH}:/usr/local/bin
cd ${MECAB_ROOT}/mecab && ./configure --enable-utf8-only && make
sudo make install
cd ${MECAB_ROOT}/mecab-ipadic && ./configure --with-charset=utf8 && make
sudo make install
cd ${MECAB_ROOT}/mecab-ipadic-neologd && ./bin/install-mecab-ipadic-neologd -n -y
EOS
# set mecab-python3
sudo ln -s /usr/libexec/gcc/x86_64-amazon-linux/4.8.5/cc1plus /usr/local/bin/
$ WORK_BASE="/efs"
$ MECAB_ROOT="${WORK_BASE}/mecab"
$ cd ${WORK_BASE}
$ git clone https://github.com/taku910/mecab.git
$ cd ${MECAB_ROOT}/mecab
$ ./configure --enable-utf8-only
$ make
$ make check
$ sudo make install
$ cd ${MECAB_ROOT}/mecab-ipadic
$ ./configure --with-charset=utf8
$ make
$ sudo make install
$ mecab
徳川宗家の文化的貢献
徳川 名詞,固有名詞,人名,姓,*,*,徳川,トクガワ,トクガワ
宗家 名詞,一般,*,*,*,*,宗家,ソウケ,ソーケ
の 助詞,連体化,*,*,*,*,の,ノ,ノ
文化 名詞,一般,*,*,*,*,文化,ブンカ,ブンカ
的 名詞,接尾,形容動詞語幹,*,*,*,的,テキ,テキ
貢献 名詞,サ変接続,*,*,*,*,貢献,コウケン,コーケン
EOS
$ cd ${MECAB_ROOT}
$ git clone --depth 1 https://github.com/neologd/mecab-ipadic-neologd.git
$ cd ${MECAB_ROOT}/mecab-ipadic-neologd
$ ./bin/install-mecab-ipadic-neologd -n -y
$ mecab -d /usr/local/lib/mecab/dic/mecab-ipadic-neologd
徳川宗家の文化的貢献
徳川宗家 名詞,固有名詞,一般,*,*,*,徳川宗家,トクガワソウケ,トクガワソーケ
の 助詞,連体化,*,*,*,*,の,ノ,ノ
文化的 名詞,固有名詞,一般,*,*,*,文化的,ブンカテキ,ブンカテキ
貢献 名詞,サ変接続,*,*,*,*,貢献,コウケン,コーケン
EOS
$ sudo ln -s /usr/libexec/gcc/x86_64-amazon-linux/4.8.5/cc1plus /usr/local/bin/
!pip install --upgrade pip
!pip install mecab-python3
import MeCab
tagger = MeCab.Tagger('-d /usr/local/lib/mecab/dic/mecab-ipadic-neologd')
input = 'MeCabは 京都大学情報学研究科−日本電信電話株式会社コミュニケーション科学基礎研究所 共同研究ユニットプロジェクトを通じて開発されたオープンソース 形態素解析エンジンです。'
result = tagger.parse(input)
print(result)
노트북 인스턴스를 다시 시작하면(저축으로 인한 중지/재개 및 인스턴스 유형 변경과 같은 이유로) 인스턴스에 추가한 사용자 지정 정보가 재설정됩니다.
따라서 이전에 작성한 설정 절차를 쉘 스크립트로 "라이프 사이클 설정"에 정의하면 동일한 설정을 유지하거나 다른 노트북에서 재사용 할 수 있습니다 (자세한 설정 방법은 노트북 인스턴스 사용자 정의 또는 수명 주기 구성 및 인터넷 액세스를 비활성화하는 옵션을 사용하여 Amazon SageMaker 노트북 인스턴스 사용자 지정 참조)
여기에서는 라이프사이클 설정(쉘 스크립트)의 내용만 기재합니다
# set Mecab / NEologd
DEFAULT_USER="ec2-user"
WORK_BASE="/efs"
MECAB_ROOT="${WORK_BASE}/mecab"
## download
if [ ! -d ${MECAB_ROOT} ]; then
sudo -u ${DEFAULT_USER} sh -c "cd ${WORK_BASE} && git clone https://github.com/taku910/mecab.git"
else
sh -c "cd ${WORK_BASE} && git pull"
fi
if [ ! -d ${MECAB_ROOT}/mecab-ipadic-neologd ]; then
sudo -u ${DEFAULT_USER} sh -c "cd ${MECAB_ROOT} && git clone --depth 1 https://github.com/neologd/mecab-ipadic-neologd.git"
else
sh -c "cd ${MECAB_ROOT} && git pull"
fi
## install
sudo -u ${DEFAULT_USER} sh <<-EOS
PATH=${PATH}:/usr/local/bin
cd ${MECAB_ROOT}/mecab && ./configure --enable-utf8-only && make
sudo make install
cd ${MECAB_ROOT}/mecab-ipadic && ./configure --with-charset=utf8 && make
sudo make install
cd ${MECAB_ROOT}/mecab-ipadic-neologd && ./bin/install-mecab-ipadic-neologd -n -y
EOS
# set mecab-python3
sudo ln -s /usr/libexec/gcc/x86_64-amazon-linux/4.8.5/cc1plus /usr/local/bin/
git pull
하려고 합니다 보충
Jupyter Notebook을 사용하는 환경은 여러 가지로 생각됩니다만, Amazon SageMaker는 유력한 선택이라고 생각합니다. 약간의 개발이나 검증을 반복하는 경우는 고성능 머신을 보유하는 것보다 Amazon SageMaker에서 동적으로 리소스 확보하는 것이 경제적입니다.
여러 번 시작하는 것을 생각하면 Mecab 등의 설정은 라이프 사이클 설정으로 자동화하는 것이 좋을 것 같습니다.
참고 자료
Reference
이 문제에 관하여(Amazon SageMaker의 Jupyter에서 MeCab-NEologd 사용), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/yaiwase/items/8e1063d86b4a5861a743텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)