ENGINEER BLOG

ENGINEER BLOG

Word2Vecを試す (2)

こんにちは。コンサルティングサービス本部 芳賀です。

弊社は出版流通業界のITに長く関わっており、従来より自然言語処理を扱うシステム開発に携わって参りました。

昨今流行の機械学習の自然言語処理の応用のひとつである、Word2Vecを数回にわたり紹介いたします。今回は、Word2Vecをインストールします。

 

環境


今回の試行では、ec2の環境を使っています。お使いの環境にあわせて適宜読み替えてください。 AMI-IDは、ami-383c1956 。インスタンスタイプは、m3.xlargeを使っています。 CPUの数が多いほどモデルを作る時間が短くなります。

また、Pythonは3ベースで進めてまいります。 shellは、bashを前提に記載していますが、他のshellでももちろんかまいません。


環境構築


どんどんインストールしていきましょう。


# ec2初期起動時に実行
sudo yum upgrade

開発ツール関連のインストール


sudo yum groupinstall "Development Tools"
sudo yum install bzip2-devel
sudo yum install readline-devel
sudo yum install openssl-devel
sudo yum install sqlite-devel
sudo yum install lapack-devel

pyenvとpyenv-virtualenvのインストール


git clone https://github.com/yyuu/pyenv.git ~/.pyenv
git clone https://github.com/yyuu/pyenv-virtualenv.git ~/.pyenv/plugins/pyenv-virtualenv

設定ファイルを更新します


vi ~/.bashrc


# ~/.bashrcの内容
export PYENV_ROOT=$HOME/.pyenv
export PATH=$PYENV_ROOT/bin:$PATH
eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"

設定を反映します


source .bashrc

引き続きインストールしていきます。

python のインストールと作業ディレクトリの作成


# python 3.5.1のインストール
pyenv install 3.5.1
pyenv rehash
# virtualenv 環境の作成
pyenv shell 3.5.1
pyenv exec pip install --upgrade pip
pyenv virtualenv 3.5.1 word2vec-test
# 確認
pyenv virtualenvs
# 作業用ディレクトリの作成とpythonのバージョン指定
mkdir word2vec_test
cd word2vec_test
pyenv local word2vec-test

gensim のインストール

numpy も scipy も同時にインストールされます


pip install gensim

cython もインストールします。 処理速度が70倍ほど速くなります!


pip install cython

Jupyter notebook のインストール

EC2へのリモートアクセス設定をします。


pip install jupyter

リモートから notebook サーバに接続する設定の雛型を生成


jupyter notebook --generate-config

ipython を起動し、接続用のパスワードのsha1を得ます


In [1]: from notebook.auth import passwd
In [2]: passwd()
Enter password:
Verify password:
Out[2]: 'sha1:0436686f3261:da6277bbd...<your hashed password>...866f0f20'

openssl で証明書を作成します


# 適当なディレクトリで実行
openssl req -x509 -days 365 -newkey rsa:1024 -keyout mykey.key -out mycert.pem

~/.jupyter/jupyter_notebook_config.pyを編集します。


# certfileとkeyfileの場所を指定します
c.NotebookApp.certfile = u'/absolute/path/to/your/certificate/mycert.pem'
c.NotebookApp.keyfile = u'/absolute/path/to/your/certificate/mykey.key'
# ip = '*'により、localhost以外のサーバから接続を許可します
c.NotebookApp.ip = '*'
# 先ほど作成したパスワードを指定します
c.NotebookApp.password = u'sha1:bcd259ccf...<your hashed password here>'
# ローカルのブラウザの自動起動をとめておきます
c.NotebookApp.open_browser = False

設定できたら、(EC2の場合) Security Group の設定を変更し、リモート環境のブラウザから 8888 ポートへのアクセスを許可します

jupyter notebook を起動します


cd ~/word2vec/
jupyter notebook

ブラウザから https://YOURHOST:8888/ にアクセスします

参考URL


https://www.qoosky.net/techs/263

https://radimrehurek.com/gensim/install.html

http://jupyter-notebook.readthedocs.org/en/latest/public_server.html