はじめに
docker-composeを用いて、手軽に形態素解析の実行環境を構築する手順を整理した。(処理フローは下図。)
本手順のメリット
- コンテナによるポータブルな環境構築が可能である。
- 作成済のイメージでは把握しづらい内部処理を理解できる。
準備するもの
作業ディレクトリに、下記の3ファイルを作成する。
作業ディレクトリ
├─ Dockerfile
├─ requirements.txt
└─ docker-compose.yml
FROM jupyter/base-notebook
USER root
RUN apt-get update && apt-get install -y \
make \
curl \
file \
git \
libmecab-dev \
mecab \
mecab-ipadic-utf8
RUN git clone --depth 1 https://github.com/neologd/mecab-ipadic-neologd.git
RUN mecab-ipadic-neologd/bin/install-mecab-ipadic-neologd -y
COPY requirements.txt $PWD
RUN pip install -r requirements.txt
mecab-python3
version: "3.7"
services:
jupyter-notebook:
image: mecab-base-notebook
container_name: mecab-notebook
build:
context: .
dockerfile: Dockerfile
ports:
- "889:8888"
volumes:
- ./work:/home/jovyan/work
今回はbase-notebookを利用した。jupyterの公式で軽量のイメージになる。
また、mecab実行に必要なライブラリとPythonのPackageはDockerfileで管理する構成にしている。
環境構築
下記の1コマンドで『Dockerイメージの作成&Dockerコンテナの作成・起動』を行う。
Creating mecab-notebook ... done
と標準出力されれば、環境構築に成功。
また、ローカルPCには「workフォルダ」が作成され、構築環境と同期されている。
> docker-compose up -d --build
構築環境にアクセス
構築環境(jupyter notebook)のURLは「http://localhost:889/tree/work」となる。
初回アクセス時は「Password or token」を要するため、稼働中のコンテナからtokenを取得する。
> docker exec -it mecab-notebook jupyter notebook list
http://0.0.0.0:8888/?token=xxxxxxxxxxx :: /home/jovyan
形態素解析の動作確認
構築環境にアクセスし、形態素解析が問題なく実行されていることを確認。
mecab-ipadic-NEologdを利用するため、新語(ONE TEAM など)の形態素解析が可能となる。
import MeCab
MECAB_SETTING = "/etc/mecabrc"
MECAB_DICTIONARY = "/usr/lib/x86_64-linux-gnu/mecab/dic/mecab-ipadic-neologd"
MECAB_ARGS = " -r " + MECAB_SETTING + " -d " + MECAB_DICTIONARY
m = MeCab.Tagger(MECAB_ARGS)
text = "ONE TEAMは1日にして成らず"
print(m.parse(text))
※neologdのパスはdocker exec -it mecab-notebook mecab-config --dicdir
で確認可能。
おわりに
自然言語処理などで利用される形態素解析の実行環境を構築した。
Dockerコンテナを作成済のため、以降はコンテナの起動・停止コマンドで、環境の起動・停止が可能となる。