概要
AWS SageMaker - AWSが提供するフルマネージドな機械学習サービス
https://aws.amazon.com/jp/blogs/news/amazon-sagemaker/
mecab - 日本語の形態素解析エンジン
http://taku910.github.io/mecab/
mecab-python3
https://pypi.org/project/mecab-python3/
https://github.com/SamuraiT/mecab-python3/blob/master/bindings.html
先月6月に東京リージョンが発表されたSageMakerですが、6月末にSageMakerを利用した機能をサービスにリリースしました。おそらく日本でもいち早く本番運用を開始したと思われます。
これから使う方々が多いかと思いますので、そのときのナレッジを共有していきます。
今回は、ノートブックインスタンスにmecabをインストールする方法です。
mecab自体は、簡単にインストールすることができるのですが、mecab-python3をインストールする際に、gccのエラーが発生しますので対応をする必要があります。
前提
・AWSアカウントを取得していて、SageMakerのノートブックインスタンスが起動している
・ノートブックインスタンスのjupyterにアクセスでき、Terminalを起動できる
結論
以下手順でインストールすることができます。
mecabのインストール
tar zxfv mecab-0.996.tar
cd mecab-0.996
./configure --enable-utf8-only
make & make check
make install
辞書のインストール
tar zxfv mecab-ipadic-2.7.0-20070801.tar.gz
cd mecab-ipadic-2.7.0-20070801
./configure --enable-utf8-only
make & make check
make install
mecab-python3
# gccのリンク設定(※)
sudo ln -s /usr/libexec/gcc/x86_64-amazon-linux/4.8.5/cc1plus /usr/local/bin/
sudo pip install mecab-python3
mecab-python3インストール時のエラー内容
$ sudo pip install mecab-python3
Collecting mecab-python==0.996
Using cached https://files.pythonhosted.org/packages/86/e7/bfeba61fb1c5d1ddcd92bc9b9502f99f80bf71a03429a2b31218fc2d4da2/mecab-python-0.996.tar.gz
Building wheels for collected packages: mecab-python
Running setup.py bdist_wheel for mecab-python ... error
Complete output from command /usr/bin/python2.7 -u -c "import setuptools, tokenize;__file__='/tmp/pip-build-ialYOM/mecab-python/setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" bdist_wheel -d /tmp/tmpIbdn_Spip-wheel- --python-tag cp27:
running bdist_wheel
running build
running build_py
creating build
creating build/lib.linux-x86_64-2.7
copying MeCab.py -> build/lib.linux-x86_64-2.7
running build_ext
building '_MeCab' extension
creating build/temp.linux-x86_64-2.7
gcc -pthread -fno-strict-aliasing -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -D_GNU_SOURCE -fPIC -fwrapv -DNDEBUG -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2-fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -D_GNU_SOURCE -fPIC -fwrapv -fPIC -I/usr/local/include -I/usr/include/python2.7 -c MeCab_wrap.cxx -o build/temp.linux-x86_64-2.7/MeCab_wrap.o
gcc: error trying to exec 'cc1plus': execvp: No such file or directory
error: command 'gcc' failed with exit status 1
----------------------------------------
Failed building wheel for mecab-python
Running setup.py clean for mecab-python
Failed to build mecab-python
Installing collected packages: mecab-python
Running setup.py install for mecab-python ... error
Complete output from command /usr/bin/python2.7 -u -c "import setuptools, tokenize;__file__='/tmp/pip-build-ialYOM/mecab-python/setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" install --record /tmp/pip-Kqjbjt-record/install-record.txt --single-version-externally-managed --compile:
running install
running build
running build_py
creating build
creating build/lib.linux-x86_64-2.7
copying MeCab.py -> build/lib.linux-x86_64-2.7
running build_ext
building '_MeCab' extension
creating build/temp.linux-x86_64-2.7
gcc -pthread -fno-strict-aliasing -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -D_GNU_SOURCE -fPIC -fwrapv -DNDEBUG -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -D_GNU_SOURCE -fPIC -fwrapv -fPIC -I/usr/local/include -I/usr/include/python2.7 -c MeCab_wrap.cxx -o build/temp.linux-x86_64-2.7/MeCab_wrap.o
gcc: error trying to exec 'cc1plus': execvp: No such file or directory
error: command 'gcc' failed with exit status 1
----------------------------------------
Command "/usr/bin/python2.7 -u -c "import setuptools, tokenize;__file__='/tmp/pip-build-ialYOM/mecab-python/setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" install --record /tmp/pip-Kqjbjt-record/install-record.txt --single-version-externally-managed --compile" failed with error code 1 in /tmp/pip-build-ialYOM/mecab-python/
You are using pip version 9.0.1, however version 10.0.1 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.
error: command 'gcc' failed with exit status 1 と表示され、 gcc部分で cc1plus がないと怒られてしまいます。
解消方法
cc1plusはインストールされていましたが、pathが独自のものでした。このモジュールが原因でしたので、/usr/local/bin/
にシンボリックリンクを張って回避することができます。
sudo ln -s /usr/libexec/gcc/x86_64-amazon-linux/4.8.5/cc1plus /usr/local/bin/
sudo pip install mecab-python3