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も少し追加しています。
実際の構築環境
作業ディレクトリに以下を配置する
ディレクトリ(想定) ├─ Dockerfile ├─ requirements.txt └─ docker-compose.yml
dockerfileはこちら:requirements.txtに書かれているライブラリをインストールする前に、RUN apt install -y build-essential
でgccをインストールしています。
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つだけで、とてもシンプルです。
docker-compose up -d --buildを実行する
docker exec -it <container-ID> /bin/bashで入った後に、jupyter server listでtokenを確認
http://localhost:10000/にアクセスして、tokenを入力して、workディレクトリ以下にあるver1.ipynbを操作する
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も同様に探せます)