個人用途のために、pythonで自然言語処理を行うために必要なライブラリを揃えたimageを作るためのDockerfileを作成しました。
せっかく作成したので、誰かの役に立つかと思い、こちらに公開することにしました。
ソースコード
以下に置いています。
https://github.com/fukumame/dockerfile-machine-learning
含まれているライブラリ
- このdocker imageには形態素解析エンジンであるmecab及び、以下のpythonライブラリが含まれています。
- jupyter
- numpy
- scipy
- scikit-learn
- matplotlib
- pandas
- mecab-python3
- neologdn
- Jupyter notebookがport 8888でexposeされており、ホスト側のポートとバインドすることによって、Jupyter notebookを利用可能です。
- 新しい固有名詞の解釈を精度高く行うため、mecabの新語辞書であるmecab-ipadic-NEologdも含んでいます。
- neologdnは、日本語の正規化処理を行ってくれるライブラリで、以下の変換を行ってくれます。
使い方
-
上記レポジトリから
git clone
します。
git clone https://github.com/fukumame/dockerfile-machine-learning.git
-
cloneしたディレクトリに移動し、以下のコマンドからdocker imageを作成します。
cd /docker/file/path
# イメージファイルの作成 (IMAGE_NAMEとTAGは任意の値)
docker build -t IMAGE_NAME:TAG .
- 上記作成したイメージをもとに、containerを起動します。
- その際、Jupyter notebookをホスト側で使うためのポートをpオプションで指定し、vオプションにて、ホスト側ディレクトリのパスを指定します。
# 任意のCONTAINER_NAMEをつけて、HOST_PORTで任意のポート、を指定し、HOST_VOLUME_PATHでホスト側のパスを指定し、container作成
docker run -it --name CONTAINER_NAME -p HOST_PORT:8888 -v HOST_VOLUME_PATH:/notebook IMAGE_NAME bash
- 起動すると、以下のメッセージが表示されるので、表示に従いブラウザからURLを叩くと、jupyter notebookが起動します
- 表示されている8888のポート番号は、コンテナ側のポート番号なので、ホスト側でバインドしたポートが異なる場合、置き換えてください。
- vオプションとして指定したホスト側のパスが、jupyter notebookのホームディレクトリとなります。
Copy/paste this URL into your browser when you connect for the first time,
to login with a token:
http://0.0.0.0:8888/?token=xxxxxxxxxx