ナード戦隊データマン

データサイエンスを用いて悪と戦うぞ

NLPエンジニアがDockerfileに書くことベスト3

個人的に、Dockerfileに書くことが多い3つの記述をメモします。ただし、ここでメモするのは一般的な「aptでのインストール」とか「pipでのインストール」のようなものではなく、パッケージマネージャでは対応できないことについて書きます。

キーワード:

dockerfile MeCabのインストール
dockerfile anacondaのインストール
dockerfile emacsの設定

dockerfileの例

以下のリンクで私のdockerfileの例をアップロードしています。 https://github.com/sugiyamath/credibility_analysis/blob/master/Dockerfile

前提

このリストは、ベスト3の内容ではなく、dockerfileの前提です。

  • ユーザはrootとする。

  • nvidia/cuda:9.0-develのようなubuntuベースのものを使う。

FROM nvidia/cuda:9.0-devel
RUN mkdir -p /root/_INSTALL
WORKDIR /root/_INSTALL
  • LC_ALL, LANGを設定する。
ENV LANG=C.UTF-8 LC_ALL=C.UTF-8
RUN sed -i.bak -e "s%http://archive.ubuntu.com/ubuntu/%http://ftp.jaist.ac.jp/pub/Linux/ubuntu/%g" /etc/apt/sources.list
ENV TZ Asia/Tokyo
RUN apt-get update \
  && apt-get install -y tzdata \
  && rm -rf /var/lib/apt/lists/* \
  && echo "${TZ}" > /etc/timezone \
  && rm /etc/localtime \
  && ln -s /usr/share/zoneinfo/Asia/Tokyo /etc/localtime \
  && dpkg-reconfigure -f noninteractive tzdata
  • 基本的なパッケージを入れる。
RUN apt-get update && \
    apt-get install -y --no-install-recommends \
        software-properties-common \
        build-essential \
        curl \
        wget \
        less \
        nano \
        tree \ 
        vim \
        emacs-nox \
        git \
        net-tools \
        iputils-ping \
        netcat \
        tcpdump \
        libfreetype6-dev \
        libpng12-dev \
        libzmq3-dev \
        pkg-config \
        rsync \
        zip \
        unzip \
        g++ \
        gfortran \
        language-pack-ja-base \
        language-pack-ja \
        libopenblas-dev \
        swig && \
   apt-get clean
  • 完了後には_INSTALLを削除し、/rootをWORKDIRに設定し直す。
WORKDIR /root
RUN rm -rf _INSTALL

1位: anaconda環境の構築

RUN wget --quiet https://repo.anaconda.com/archive/Anaconda3-5.2.0-Linux-x86_64.sh -O ~/anaconda.sh && \
    /bin/bash ~/anaconda.sh -b -p /opt/conda && \
    rm ~/anaconda.sh && \
    ln -s /opt/conda/etc/profile.d/conda.sh /etc/profile.d/conda.sh && \
    echo ". /opt/conda/etc/profile.d/conda.sh" >> ~/.bashrc && \
    echo "conda activate base" >> ~/.bashrc

ENV PATH /opt/conda/bin:$PATH

注意: pipやcondaはanacondaのインストール記述よりも後ろに書きます。

2位: MeCabのインストール

RUN git clone https://github.com/taku910/mecab && \
    cd mecab/mecab && \
    ./configure --enable-utf8-only && \
    make && \
    make check && \
    make install && \
    pip install --no-cache-dir mecab-python3 && \
    ldconfig && \
    cd ../mecab-ipadic && \
    ./configure --with-charset=utf8 && \
    make && \
    make install

3位: emacs環境

※ コピーしたいEmacs環境である.emacs.emacs.dをgithubにアップロードしておきます

RUN git clone https://github.com/sugiyamath/my_emacs && \
    cd my_emacs && \
    mv .emacs.d /root && \
    mv .emacs /root

おわりに

ここでメモしたのは、「NLPエンジニアが」というより、「私が」書くことが多いことです。

anacondaについては、常にversion3を使います。これは、python3を使いたいからです。データサイエンス的なことをしたい場合は、anacondaを使えば設定が楽です。

また、日本語の自然言語処理に関連することを行う場合は、日本語の形態素解析トークナイザが要る場合が多いため、パフォーマンスが優れているMeCabを使うと便利です。MeCabのインストールは面倒な感じがしますが、2018/07/06現在では前述の方法でインストールすることが可能です。

emacs環境については、githubに設定を移しておけば移植性の高い記述が可能です。vimについても同様でしょう。

追記

2018/07/06 20:50

aptでmecabってインストールできるんですね...前述の方法なら、おそらくFedoraCentOSやArch Linuxにも対応できるはずですが、UbuntuDebianを使うなら以下の方法が一番カンタンかもしれません。

RUN apt-get install -y mecab libmecab-dev mecab-ipadic-utf8 && \
    pip install mecab-python3

2018/07/06 8:58

台風で電車止まって、運行再開を待つのが面倒なので有給!