インストール手順 (Docker)

ここでは Docker 環境 に pygeonlp をインストールする手順を示します。

事前準備

OS に合わせて Docker Desktop または Docker Server をインストールしてください。

Docker Desktop for Windows, Docker Desktop for Mac (macOS), Docker Server for Ubuntu で動作確認済みです。

Dockerfile を作成

空のフォルダを作成し、その中にテキストエディタで 以下の内容を含む Dockerfile を作成します。

FROM osgeo/gdal:ubuntu-full-3.6.3
# このイメージは "Ubuntu 22.04.2 LTS" を拡張しています。

# アクセスできなくなっているリポジトリを削除します。
RUN rm /etc/apt/sources.list.d/apache-arrow.sources

# 必要なライブラリ・パッケージをインストールします。
RUN apt-get update && apt-get install -y \
    libmecab-dev \
    mecab-ipadic-utf8 \
    libboost-all-dev \
    libsqlite3-dev \
    curl \
    python3 \
    python3-dev \
    python3-pip

# pygeonlp と基本辞書セットをインストールします。
RUN python3 -m pip install pygeonlp && pygeonlp setup

Docker イメージを作成

作成した Dockerfile があるフォルダで docker build を実行し、イメージを作成します。 -t は作成したイメージに 名前タグを付けるオプションです。

% docker build -t pygeonlp_image .

コンテナを生成して実行

docker run を実行し、作成したイメージからコンテナを作成して bash を実行します。 --name は作成したコンテナに名前を付けるオプションです。 -it はコンテナに仮想端末を割り当てます。

% docker run --name pygeonlp -it pygeonlp_image bash
root@75243c7b8ddd:/#

動作確認のため pygeonlp geoparse を実行し、 地名を含む日本語テキストを入力してみてください。

root@75243c7b8ddd:/# pygeonlp geoparse
渋谷じゃなくて新宿に行こう。
渋谷    名詞,固有名詞,地名語,RCU4nF:渋谷駅,*,,渋谷,,    鉄道施設/鉄道駅,RCU4nF,渋谷駅,139.70258433333333,35.659098666666665
じゃ    助詞,副助詞,*,*,*,*,じゃ,ジャ,ジャ
なく    助動詞,*,*,*,連用テ接続,特殊・ナイ,ない,ナク,ナク
て      助詞,接続助詞,*,*,*,*,て,テ,テ
新宿    名詞,固有名詞,地名語,8A8y00:新宿駅,*,,新宿,,    鉄道施設/鉄道駅,8A8y00,新宿駅,139.70059,35.69244
に      助詞,格助詞,一般,*,*,*,に,ニ,ニ
行こ    動詞,自立,*,*,未然ウ接続,五段・カ行促音便,行く,イコ,イコ
う      助動詞,*,*,*,基本形,不変化型,う,ウ,ウ
。      記号,句点,*,*,*,*,。,。,。
EOS

Ctrl+D を押して EOF を送信するとシェルプロンプトに戻ります。 exit でコンテナを終了します。

root@75243c7b8ddd:/# exit

もう一度このコンテナを実行したい場合は docker start で起動します。

% docker start -a -i pygeonlp
root@75243c7b8ddd:/#

以上でインストール完了です。

コンテナとイメージの削除

コンテナが不要になった場合は docker rm コマンドで削除します。

% docker rm pygeonlp

イメージが不要になった場合は docker rmi コマンドで削除します。

% docker rmi pygeonlp_image

パイプ処理

pygeonlp コンテナをパイプとして利用したい場合は、次のように docker run--rm オプションを付けて実行し、 処理が終わったコンテナを自動的に削除するようにします。

% echo "目黒駅は品川区にあります。" | docker run --rm -i pygeonlp_image pygeonlp geoparse > result.txt
% cat result.txt
目黒駅  名詞,固有名詞,地名語,Xy26iV:目黒駅,*,*,目黒駅,, 鉄道施設/鉄道駅,Xy26iV,目黒駅,139.71566,35.632485
は      助詞,係助詞,*,*,*,*,は,ハ,ワ
品川区  名詞,固有名詞,地名語,kEAYBl:品川区,*,*,品川区,, 市区町村,kEAYBl,品川区,139.73025000,35.60906600
に      助詞,格助詞,一般,*,*,*,に,ニ,ニ
あり    動詞,自立,*,*,連用形,五段・ラ行,ある,アリ,アリ
ます    助動詞,*,*,*,基本形,特殊・マス,ます,マス,マス
。      記号,句点,*,*,*,*,。,。,。
EOS

注釈

Windows 環境で Docker を利用している場合、文字コードとして UTF-8 を指定しないと文字化けすることがあります。

拡張機能対応

上記の Dockerfile は最小限の機能を持つイメージを作成します。 実際に利用する際は追加の 拡張辞書をインストール したり、 住所ジオコーダー連携NEologd 連携 が必要になる場合があります。

これらの機能を含めたイメージを作成するための Dockerfile のサンプルを示しますので、必要に応じてカスタマイズして ご利用ください。

FROM osgeo/gdal:ubuntu-full-3.6.3
# このイメージは "Ubuntu 22.04.2 LTS" を拡張しています。

# アクセスできなくなっているリポジトリを削除します。
RUN rm /etc/apt/sources.list.d/apache-arrow.sources

# 必要なライブラリ・パッケージをインストールします。
RUN apt-get update && apt-get install -y \
    libmecab-dev \
    mecab-ipadic-utf8 \
    libboost-all-dev \
    libsqlite3-dev \
    curl \
    python3 \
    python3-dev \
    python3-pip

# pygeonlp と基本辞書セットをインストールします。
RUN python3 -m pip install pygeonlp && pygeonlp setup

# その他の辞書をインストールしたイメージを作りたい場合は
# この後にコマンドを追加してください。
# 例: 国土数値情報:郵便局データを登録したい場合
# RUN pygeonlp add-dictionary https://geonlp.ex.nii.ac.jp/dictionary/ksj-post-office/

# 住所ジオコーダをインストールしたイメージを作りたい場合は以下のコメントを外してください。
# ENV JAGEOCODER_DB2_DIR /opt/db2
# RUN curl https://www.info-proto.com/static/jageocoder/latest/gaiku_all_v21.zip \
#     -o /opt/gaiku_all_v21.zip && \
#     jageocoder install-dictionary /opt/gaiku_all_v21.zip && \
#     rm /opt/gaiku_all_v21.zip

# 住所ジオコーダサーバを利用したい場合は以下のコメントを外してください。
# ENV JAGEOCODER_SERVER_URL https://jageocoder.info-proto.com/jsonrpc

# NEologd を辞書として利用したい場合は以下のコメントを外してください。
# ENV GEONLP_MECAB_DIC_DIR=/neologd
# RUN apt-get install -y git mecab
# RUN cd /tmp \
#     && git clone --depth 1 https://github.com/neologd/mecab-ipadic-neologd.git \
#     && cd mecab-ipadic-neologd \
#     && ./bin/install-mecab-ipadic-neologd --prefix /neologd -n -a -u -y \
#     && cd / \
#     && rm -r /tmp/mecab-ipadic-neologd