【4章・環境構築】PythonによるAI・機械学習・深層学習アプリのつくり方
「PythonによるAI・機械学習・深層学習アプリのつくり方」の内容について、実際に私が詰まった点などについてまとめます。初めに断っておくと、私自身はディープラーニング歴半年の初心者なのであしからず。
第4章から始めます。第4章では自然言語処理を扱っており、私自身は第4章以降から詰まりまくりました(主に環境構築で)。逆に第3章までは本の通りに進めればあまり困らなかったです。
私の開発環境について
「PythonによるAI・機械学習・深層学習アプリのつくり方」には巻末に開発環境構築の方法も載っており、その方法に従えばおそらくもっと楽に環境構築できるでしょう。しかし私は以下の環境にしています。
開発環境:CentOS7 (VirtualBox & Vagrant)
なぜこうしたかと言うと、以前Web開発を勉強するためにドットインストールの「ローカル開発環境の構築 [Windows編] 」の動画を見て参考にしたからです。この動画は無料で公開されているのでおすすめです。
・ローカル開発環境の構築 [Windows編]
https://dotinstall.com/lessons/basic_localdev_win_v2
ちなみに動画ではCenoOS6.8を使用していましたが、それが後の第5章でエラーの原因になったのでCentOS7に変更しました。
さて、この環境で第4章の内容を進めるには以下のものをインストールする必要があります。
・Groonga
・Mecab
・mecab-ipadic-NEologd
CentOSにAnacondaをインストール
以下のページを参考にさせていただきました。
pppurple.hatenablog.com
Anaconda3-5.0.0のインストールでPython3.6が入ります。
しかし本では「一部のライブラリがPython3.5にしか対応していないため、Python3.5で環境を作成しておきましょう。」とあります。
本に書かれているコードを使ってPython3.5の環境に切り替えます。
condaとはAnacondaのパッケージマネージャです。
$ conda create -n py35 python=3.5 $ pyenv global anaconda3-5.0.0/envs/py35 #Python3.5の環境を起動 $ source activate py35 (py35) [vagrant@localhost ~]$
作成した環境の確認
$ conda info -e # conda environments: # py35 * /home/vagrant/.pyenv/versions/anaconda3-5.0.0/envs/py35 root /home/vagrant/.pyenv/versions/anaconda3-5.0.0
元の環境から戻る
$ source deactivate [vagrant@localhost ~]$
Mecabのインストール
Mecabとは自然言語処理に用いる形態素解析器です。
下記のページを参考にさせていただきました。
qiita.com
このページの通りに進めると問題なくmecab-python3のインストールができました。
しかし一つ注意点があります。
condaでrootの環境にしているときにpip installでmecab-python3をインストールしても、py35(Python3.5)の環境には反映されていません。
下記のようにpy35の環境に切り替えてからpip installすれば大丈夫です。
$ source activate py35 $ pip install mecab-python3
mecab-ipadic-NEologdインストール
mecab-ipadic-NEologdとはMeCab用のシステム辞書で、より新しい単語に対応した解析が行えます。
本のコードを参考に、下記のようにしてインストールしました。
$ cd /usr/tmp
$ git clone https://github.com/neologd/mecab-ipadic-neologd.git
$ cd mecab-ipadic-neologd
$ ./bin/install-mecab-ipadic-neologd -n
途中で以下のようなエラーコードが出ましたが、適切なパッケージをインストールすれば解決しました。
[install-mecab-ipadic-NEologd] : unxz is not found ↓ $ sudo yum install xz xz-devel which: no patch ↓ $ sudo yum install patch
jupiter notebookの設定
jupiterのインストールはAnacondaをインストールした際に一緒に付いてきます。
今回はVirtualBoxで作ったCentOSの仮想環境でjupyterを起動し、ホストPCのブラウザからアクセスします。
このとき何も考えずにホストPCからアクセスしようとすると、ファイアウォールで接続が遮断されます。
そのため以下の方法でファイアウォールをオフします。
CentOS6.8と7とで少し方法が異なります。
CentOS6.8の場合
$ sudo service iptables stop $ jupyter notebook http://localhost:8888/?token=88ca480ef2a5dd58b3d60a25b425be41bedd183b8da9ec78 #localhostの部分を仮想環境のipアドレスに変更してホストPCのブラウザからアクセス
CentOS7の場合
$ systemctl stop firewalld #passwordは"vagrant" $ jupyter notebook --ip=* --no-browser http://(localhost.localdomain or 127.0.0.1):8888/?token=7683df3e9366201d173aa16d337854ae20fbd614b1618f65 #l(localhost.localdomain or 127.0.0.1)の部分を仮想環境のipアドレスに変更してホストPCのブラウザからアクセス
MeCab動作確認
ではさっそくjupyter notebookを起動させ、以下のサンプルコードを入力してみます。
(サンプルコードは本書P200のMorphologtical_Analysis.py)
import MeCab # MeCabオブジェクトの生成 --- (*1) tagger = MeCab.Tagger() # 形態素解析 --- (*2) result = tagger.parse("メイが恋ダンスを踊っている。") print(result)
インストールに成功していれば以下のように表示されます。
ちなみに私は間違えて"import mecab"と書いてしまい、エラーになってしまいました。
正しくはmecabではなく、MeCabです。