11
15

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

dockerで形態素解析の環境構築(jupyter + mecab)

Posted at

はじめに

docker-composeを用いて、手軽に形態素解析の実行環境を構築する手順を整理した。(処理フローは下図。)
docker_arch.png

本手順のメリット

  1. コンテナによるポータブルな環境構築が可能である。
  2. 作成済のイメージでは把握しづらい内部処理を理解できる。

準備するもの

作業ディレクトリに、下記の3ファイルを作成する。

ローカルPC
作業ディレクトリ
├─ Dockerfile
├─ requirements.txt
└─ docker-compose.yml
Dockerfile
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
requirements.txt
mecab-python3
docker-compose.yml
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フォルダ」が作成され、構築環境と同期されている。

bash
> docker-compose up -d --build

構築環境にアクセス

構築環境(jupyter notebook)のURLは「http://localhost:889/tree/work」となる。
初回アクセス時は「Password or token」を要するため、稼働中のコンテナからtokenを取得する。

bash
> docker exec -it mecab-notebook jupyter notebook list
http://0.0.0.0:8888/?token=xxxxxxxxxxx :: /home/jovyan

形態素解析の動作確認

構築環境にアクセスし、形態素解析が問題なく実行されていることを確認。
mecab-ipadic-NEologdを利用するため、新語(ONE TEAM など)の形態素解析が可能となる。
mecab_python.png

コピー用
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コンテナを作成済のため、以降はコンテナの起動・停止コマンドで、環境の起動・停止が可能となる。

11
15
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
15

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?