to be continued...

Rや心理統計学の備忘録的な

There are three kinds of lies: lies, damned lies, and statistics.

- 嘘には三種類ある。嘘、大嘘、そして統計だ -
Benjamn Disraeli(19世紀のイギリス首相)

Windows RMeCabで NEologdを諦めるにはまだ早い(Dockerを使えばいいじゃない)

どうも。最近は「彼方のアストラ」を見ています。一話目でうるうるきてました。

Windowsを使っていると、RMeCabを使うときに辞書として mecab-ipadic-NEologd(neolog)を使うのは難しいですよね。出来なくはない(はず)ですし、いろいろと紹介してくれる記事はありますが、難しいんですよね。(私は挫折しました)

今日は、RMeCabにmecab-ipadic-NEologdを搭載する方法としてDockerを使った方法を紹介します。

※本記事はRMeCabを知っていることを前提としておりますので、ご了承ください。

結論

Windowsユーザーでmecab-ipadic-NEologdを辞書に指定してRMeCabを使いたい人は

$docker pull ando6oid/neo-mecab
$docker run -e PASSWORD=umr -p 8787:8787  -d  ando6oid/neo-mecab
//このときパスワードは「umr」となる

を打ち込んで、「http://localhost:8787/」を開くと使えます。

docker hubのページはこちら↓↓↓

hub.docker.com


mecab-ipadic-NEologdとは

MeCabの辞書です。形態素解析では、文章を分かち書き(を区切る)を行います。そのとき、どこからどこまでをとするのかの基準として辞書を使います。

こんな感じです↓

f:id:ando_Roid:20190821160958p:plain

雨宮天」が"雨宮"と"天"、闇営業が"闇"と"営業"になっています。

雨宮天さんと闇営業は一切関係ありません

(雨宮天が分からない人は義務教育からやり直してほしい)

本来は、「雨宮天」「闇営業」というように名詞として処理してほしいのに...ということが初期のRMeCabだと起こります。ここでneologを辞書にすると...↓↓

f:id:ando_Roid:20190821161009p:plain

望むべき処理をしてくれるようになります。

neologは週二で新しい単語を追加してくれるので、neologを辞書とすると流行語やドラマの名前、人の名前に対応できるようになります。

他にもNeologのすごさについてLINEさんも書いています↓↓

engineering.linecorp.com

形態素解析に必須レベルなのですが、Windowsだと入れるのが難しい。PATHがどうちゃらとかなんちゃらで...Linuxなら簡単なんだよなぁ

Linux?じゃあ、Dockerを使おう。


Dockerとは

Dockerは、コンテナと呼ばれるOSレベルの仮想化環境を提供するオープンソースソフトウェアである(Wikipedia)。私もDockerについては勉強中ですが、簡単に言うとDocker(具体的にはコンテナ)を使うことでWindowsでもLinux環境で作業することが可能になります。もっとほかのことも出来ます。

さらに、Dokcerhubを使うことで、先人たちが作ってくれたDocker imageを使ってコンテナを簡単に作ることができます(まさに、巨人の肩に乗る)。

(他のことはググってください)


Dockerのインストール方法

あたいのWindowsがproかhomeかわからない方

それ以外の方はググってください(私もよくわかりません、すみません)


Dockerがインストールできたら

  • power shellを起動(わからない人はcortanaにきいてね)

  • docker pull ando6oid/neo-mecabと打ち込む

    dockerhubからneologを持ったRstudioサーバーイメージを持ってくる

  • dockcer imagesでando6oid/neo-mecabイメージがあるか確認

  • docker run -e PASSWORD=すきなやつ -p 8787:8787 -d ando6oid/neo-mecabと打ち込む(passwordはお好きにどうぞ)

    イメージからコンテナを作成

  • chromeを立ち上げてアドレスバーにhttp://localhost:8787/とうつ

  • そこにRstudioがあれば完了

neologが初期辞書になっているので、いつも通りにRMeCabを使ってくれればok


ando6oid/neo-mecabについて

私が作ったDocker imageです。

ymattu/mecab-dをベースとしています(ymattuさん神)。ymattu/mecab-dもrocker/tidyverseというイメージをベースとしています。したがって、tidyverse系パッケージが基本的に入っている上、ymattuさんによって日本語に対応されつつRMeCabtidytextもあるというイメージです。私はそこにmecab-ipadic-NEologdを追加しただけ。

y-mattu.hatenablog.com

要するに、tidyverse,tidytext.RMeCabといったおおよそ必要になるだろうパッケージが入っていて、日本語にも対応しており辞書も最新なRstudio。RMeCabによるテキストマイニングの決定版イメージになりうる(自画自賛、ほとんど私は何もしていない)。

dockerfileはこんな感じ。

FROM ymattu/mecab-d:latest

LABEL mainaier = "ando_Roid"

RUN echo "now building..."

CMD echo "now running..."

RUN apt-get -qq update\
 && apt-get -qq -y install curl \
 && apt install -y xz-utils file \
 && apt install patch

WORKDIR /home/rstudio

RUN git clone --depth 1 https://github.com/neologd/mecab-ipadic-neologd.git


WORKDIR mecab-ipadic-neologd

RUN ./bin/install-mecab-ipadic-neologd --create_user_dic -n -y\
 && cat /usr/local/etc/mecabrc | sed "s/ipadic/mecab-ipadic-neologd/" > /usr/local/etc/mecabrc

EXPOSE 8787

CMD ["/init"]

注意

mecab-ipadic-NEologdはdocker imageをプルした時の最新のものを使用しており、辞書の自動更新機能はございません。
気が向いたら、追加するかも。

従って、最新の辞書を使いたい場合は、docker imageをプルしなおす必要があります。

なにか不備等ありましたらコメントください

to be continued...