Python
自然言語処理
機械学習
docker

pythonで自然言語処理を行うために必要なライブラリを揃えたDockerfile

個人用途のために、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

image.png