HIROBIRO

HIROBIRO

精神的自由を目指すブログ。最近はプログラミングの記事多め。

【4章・環境構築】PythonによるAI・機械学習・深層学習アプリのつくり方

「PythonによるAI・機械学習・深層学習アプリのつくり方」の内容について、実際に私が詰まった点などについてまとめます。初めに断っておくと、私自身はディープラーニング歴半年の初心者なのであしからず。



 第4章から始めます。第4章では自然言語処理を扱っており、私自身は第4章以降から詰まりまくりました(主に環境構築で)。逆に第3章までは本の通りに進めればあまり困らなかったです。

 

私の開発環境について

 

「PythonによるAI・機械学習・深層学習アプリのつくり方」には巻末に開発環境構築の方法も載っており、その方法に従えばおそらくもっと楽に環境構築できるでしょう。しかし私は以下の環境にしています。

 

ホストPC:Windows10 Home 64bit 
開発環境:CentOS7 (VirtualBox & Vagrant)
 

なぜこうしたかと言うと、以前Web開発を勉強するためにドットインストールの「ローカル開発環境の構築 [Windows編] 」の動画を見て参考にしたからです。この動画は無料で公開されているのでおすすめです。


・ローカル開発環境の構築 [Windows編]
https://dotinstall.com/lessons/basic_localdev_win_v2

 


ちなみに動画ではCenoOS6.8を使用していましたが、それが後の第5章でエラーの原因になったのでCentOS7に変更しました。

 

さて、この環境で第4章の内容を進めるには以下のものをインストールする必要があります。


・anaconda3-5.0.0
・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)


インストールに成功していれば以下のように表示されます。


f:id:hirokun1735:20181119231135j:plain


ちなみに私は間違えて"import mecab"と書いてしまい、エラーになってしまいました。
正しくはmecabではなく、MeCabです。

まとめ

環境構築に関する話は以上です。
第4章に取り組んだ内容や実際のコードのエラーの解決などは次の記事にまとめました。
www.hirobiro-life.com


すぐに使える! 業務で実践できる! Pythonによる AI・機械学習・深層学習アプリのつくり方