たけのこブログ

凡人が頑張って背伸びするブログ

dockerでmecab+neologdの環境構築

概要

今まで使っていたdockerfileがあったんだけど、ppa(deadsnake)の問題なのか分からないけど上手くfetchできなくなってきた汗(でもたまに再起動すると上手くいくのは謎でした。原因がDNS問題やno cache, --fix-missingとかでもないので不明...次回に調べよう)

最近はcolabとかにしていたりFlask/Djangoインタラクティブな検証環境を作っていたけど、jupyterでも欲しいと言われ始めたので新しいmecab+neologdのdocker環境をdocker-composeでシンプルに構築しました。

参考にしたのはこちら。今回はjupyter labで検証できるようにしたかったので、環境変数とか少しだけ弄ってたりします。また、pythonで使用するライブラリでgccが必要だったので、dockerfileも少し追加しています。

qiita.com

実際の構築環境

作業ディレクトリに以下を配置する

ディレクトリ(想定)
├─ Dockerfile
├─ requirements.txt
└─ docker-compose.yml

dockerfileはこちら:requirements.txtに書かれているライブラリをインストールする前に、RUN apt install -y build-essentialgccをインストールしています。

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 apt install -y build-essential
RUN pip install -r requirements.txt

docker-compose.ymlがこちら:

version: "3.7"
services:
  jupyter-notebook:
    image: base-notebook
    container_name: test-notebook
    build:
      context: .
      dockerfile: Dockerfile
    ports:
      - "10000:8888"
    environment:
    - JUPYTER_ENABLE_LAB=yes
    - TZ=Asia/Tokyo
    volumes:
      - ./work:/home/jovyan/work

構築手順

構築手順は以下の4つだけで、とてもシンプルです。

mecab+neologdは以下で起動します。

import MeCab

mecab = MeCab.Tagger("-Owakati -d /usr/lib/aarch64-linux-gnu/mecab/dic/mecab-ipadic-neologd -u /home/jovyan/work/log_words/log_words.dic")

ちなみに、カスタム辞書を作成したりするときはmecab-dict-indexなどが必要ですが、そのパスは find /usr/ -name mecab-dict-index で簡単に見つけられますので、初心者の方は覚えておいてください(neologdも同様に探せます)