🤖

[Docker]Ubuntu20.04でのmecab及びmecab-ipadic-neologdの利用

2021/09/11に公開約2,100字
  • shellで、あるリストを単語ごとに分割しようとした矢先、mecabというライブラリを発見。
  • そのライブラリ及び専用の辞書ツールを試しにGoogle Colabで利用して便利であったため、Linux環境にも導入したい。
  • そこで今回はDockerのUbuntu20.04内に導入する方法を記録する。

環境

  • Mac OS 11.2.3
  • Docker version 20.10.8

手順

  • 任意のディレクトリに以下でDockerfileを作成する。
# workディレクトリ内にmecab-conディレクトリを作成
mkdir ~/work/mecab-con; cd $_

# mecab-con内にDockerfileを作成
touch Dockerfile
  • 作成後、mecab-con/Dockerfileの中身を以下にする。
~/work/mecab-con/Dockerfile
FROM ubuntu:20.04

# 日本設定
ENV TZ Asia/Tokyo
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
ENV LANG ja_JP.UTF-8

# パッケージインストール
RUN apt update -yqq && \
    apt install -y --no-install-recommends \
    build-essential curl ca-certificates \
    file git locales sudo \
    mecab libmecab-dev mecab-ipadic-utf8 && \
    locale-gen ja_JP.UTF-8 && \
    apt clean && \
    rm -rf /var/lib/apt/lists/*

# mecab-ipadic-neologdインストール
WORKDIR /tmp
RUN git clone --depth 1 https://github.com/neologd/mecab-ipadic-neologd.git && \
    ./mecab-ipadic-neologd/bin/install-mecab-ipadic-neologd -n -y && \
    sudo mv /usr/lib/x86_64-linux-gnu/mecab/dic/mecab-ipadic-neologd /var/lib/mecab/dic/ && \
    sed -i 's/debian/mecab-ipadic-neologd/' /etc/mecabrc && \
    rm -rf ./mecab-ipadic-neologd && \
    echo "完了"
  • 内容を記述後、以下のコマンドでコンテナの立ち上げ及び起動を行う。
# ビルド
docker build -t mecab-con .

# 起動及び接続
docker run -it mecab-con
  • コンテナの中へ接続後、以下でmecabが利用できることを確認できたら完了。
# バージョン確認
mecab -v

# 解析
echo "せっかちなかたつむり" | mecab

せっかち	名詞,形容動詞語幹,*,*,*,*,せっかち,セッカチ,セッカチ
な	助動詞,*,*,*,特殊・ダ,体言接続,だ,ナ,ナ
かたつむり	名詞,一般,*,*,*,*,かたつむり,カタツムリ,カタツムリ

# 辞書指定
echo "白石麻衣" | mecab -d /var/lib/mecab/dic/ipadic-utf8

白石	名詞,固有名詞,人名,姓,*,*,白石,シライシ,シライシ
麻衣	名詞,固有名詞,人名,名,*,*,麻衣,マイ,マイ

# 読み
echo "薔薇" | mecab -O yomi

バラ

# 分かち書き
echo "せっかちなかたつむり" | mecab -O wakati

せっかち な かたつむり

# 指定のtsvから解析して名詞のみを抜き出す。
cut -f1 **.tsv | mecab | grep '名詞' | cut -f1

まとめ

  • Linux環境への導入したことで標準出力や任意のデータの解析や分解が容易になった。
  • 様々な利用の仕方があると思われるため、用途によって積極的に活用していく。

参考

Discussion

ログインするとコメントできます