docker+Jupyter+R로 텍스트 마이닝할 수 있는 환경 만들기

하고 싶은 일



docker의 Jupyter에서 R로 텍스트 마이닝하고 싶습니다. MeCabRMeCab 을 사용하면 할 수 있을 것 같다! 라고 생각해 jupyter/datascience-notebook 의 docker 컨테이너에 인스톨 하려고 하면 빠졌기 때문에 메모.

발생한 문제



우선 jupyter/datascience-notebook을 기동해 R의 노트북을 작성할 때까지는 여기 우선 Jupyter상에서 환경을 구축해 보려고 MeCab를 인스톨까지는 순서대로로 좋았지만, 막상 RMeCab를 인스톨 하려고 하면, 에러 메세지가・・・
# RMeCabをインストールしようとしたら・・・
install.packages("RMeCab", repos = "http://rmecab.jp/R", type = "source")
# うまくいかなかった
Warning message in install.packages("RMeCab", repos = "http://rmecab.jp/R", type = "source"):
installation of package RMeCab had non-zero exit statusUpdating HTML index of packages in '.Library'
Making 'packages.html' ... done

좀 더 자세한 오류 내용을 보려면 Jupyter terminal에서 R을 시작하고 같은 방식으로 설치를 시도합니다.
R
install.packages("RMeCab", repos = "http://rmecab.jp/R", type = "source")
RMeCab.cpp:59:70: error: narrowing conversion of 144 from int to char inside { } [-Wnarrowing]

분명히 c++ 코드에서 int->char을 캐스트하지 못합니까? 오류 메시지 등으로 검색하는 경우 RMeCab은 gcc-5 환경에서 설치해야하는 것 같습니다. . 자신의 환경의 gcc는 버전 7이었다. 이것이 RMeCab 설치 실패의 원인 인 것 같습니다.
※int->char의 캐스트에 실패하는 것은 과 같은 현상일지도 모른다.

설치 절차



궁극적으로 성공한 것은 다음 단계입니다. gcc-5를 사용하여 RMeCab을 설치합니다.

0. 전제



이 기사 등을 참고로 sudo 사용할 수 있는 jupyter/datascience-notebook의 컨테이너가 일어

1. MeCab 설치



install - rmecab 리눅스의 설명에 따라 설치.
sudo apt update
sudo apt install mecab libmecab-dev mecab-ipadic-utf8

설치되어 있는지 확인.
mecab
インストールに成功したよ!

아래와 같은 결과가 표시되면 OK.
インストール    名詞,一般,*,*,*,*,インストール,インストール,インストール
に      助詞,格助詞,一般,*,*,*,に,ニ,ニ
成功    名詞,サ変接続,*,*,*,*,成功,セイコウ,セイコー
し      動詞,自立,*,*,サ変・スル,連用形,する,シ,シ
た      助動詞,*,*,*,特殊・タ,基本形,た,タ,タ
よ      助詞,終助詞,*,*,*,*,よ,ヨ,ヨ
!      記号,一般,*,*,*,*,!,!,!
EOS

2. gcc-5 설치



gcc-5를 설치.
sudo apt install gcc-5
sudo apt install g++-5
sudo apt install gfortran-5

3. update-alternatives로 버전 전환



여러 gcc 버전이있는 환경에서는 update-alternatives에서 버전을 전환하고 사용 이번에는 gcc-7 <-> gcc-5의 전환이 필요.
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-5 10
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-5 10
sudo update-alternatives --install /usr/bin/gfortran gfortran /usr/bin/gfortran-5 10

덧붙여서 등록 후
update-alternatives --config gcc

그렇다면 등록 된 버전 중에서 선택하여 전환 할 수 있습니다.

참고

Ubuntu 14.04에 GCC 4.9 설치
update-alternatives 사용법

4. RMeCab 설치



gcc가 도입되면 드디어 RMeCab을 설치한다. terminal에서 R을 시작하거나 Jupyter에서 R의 노트북을 만듭니다.
install.packages("RMeCab", repos = "http://rmecab.jp/R", type = "source")

에서 설치. 성공했는지 확인합니다.
library(RMeCab)
RMeCabC("インストールに成功したよ!")

할 수 있었다!



Dockerfile 및 docker-compose.yml



지금까지의 작업을 정리한 Dockerfile과 docker-compose.yml 파일을 작성했다. 같은 디렉토리에이 두 파일을 넣어 docker-compose up .

docker-compose.yml
version: "2"
services:
  jupyter_rmecab: # サービス名
    container_name: Jupyter-RMeCab
    build: . # 現在のディレクトリのdockerfileから構築
    image: mochimo/jupyter-rmecab # buildで作るイメージ名
    ports:
      - "8888:8888" # ポート <host port>:<container port>
    user: root # sudoのため
    volumes:
      - "/home/[User]/[work]:/home/jovyan/work/" # workディレクトリのマウント。[User],[work]は適宜自分のユーザー名と作業フォルダ名に変更
    environment:
      TZ: Asia/Tokyo
      GRANT_SUDO: "yes" # sudoコマンドを使えるようにする
    restart: always # 常に自動で再起動。主にOS起動時に自動起動させるため
    command: start-notebook.sh --NotebookApp.token='' # コンテナ起動時の引数

Dockerfile
FROM jupyter/datascience-notebook
LABEL maintainer="mochimo"

USER root

# font/gcc5 インストール 
RUN apt-get update && apt-get install -y \
fonts-ipaexfont \
gcc-5 \
g++-5 \
gfortran-5 

# mecab インストール
RUN apt-get update && apt-get install -y mecab libmecab-dev mecab-ipadic-utf8

# gcc-5に切り替え
RUN update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-5 10 && \
update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-5 10 && \
update-alternatives --install /usr/bin/gfortran gfortran /usr/bin/gfortran-5 10

USER $NB_UID

# RMeCabのインストール
RUN R -e "install.packages(c('RMeCab'), repos='http://rmecab.jp/R', type='source')"

좋은 웹페이지 즐겨찾기