形態素解析ツールMeCab, ChaSen, KyTea, JUMANをまとめてインストールしてみた

by ysawa

形態素解析ツールをインストールするときに、毎回調べるのが億劫なので、まとめて備忘録にしてみました。最後には、簡単な形態素解析を時間計測しながら動作確認として行いました。

今回、インストールするOSは Cent OS 7 を対象にしています。

MeCab

MeCab は、誰もが知っている有名な形態素解析ツールです。MeCab をインストールするのはかなり、簡単です。

# rpm -ivh http://packages.groonga.org/centos/groonga-release-1.1.0-1.noarch.rpm
# yum install -y mecab mecab-ipadic mecab-jumandic mecab-devel

これで、インストールは完了です。以下、辞書指定での mecab の起動方法です。

$ mecab -d /usr/lib64/mecab/dic/ipadic
$ mecab -d /usr/lib64/mecab/dic/jumandic

mecab-ipadic-NEologd

mecab-ipadic-NEologd という素晴らしい辞書があるので、それもついでにインストールしていきましょう。

$ git clone https://github.com/neologd/mecab-ipadic-neologd.git
$ cd mecab-ipadic-neologd
# ./bin/install-mecab-ipadic-neologd

そして、起動は、

$ mecab -d /usr/lib64/mecab/dic/mecab-ipadic-neologd

です。

ChaSen

ChaSen は奈良先端科学技術大学院で開発された形態素解析ツールです。 ChaSen のインストールは意外と大変でした。

iconv

ChaSenをインストールするには、 iconv が必要です。コマンドが使えるか確認しておきましょう。最近のシステムには、最初から入っていることが多いかと思います。

$ iconv --version

Dartsのインストール

ライブラリをインストールDartsのページから、

$ tar zxvf darts-0.32.tar.gz
$ cd darts-0.32
$ ./configure
$ make
# make install

して、インストールします。

ChaSenのインストール

続いて、 ChaSen 本体のインストールです。最新をダウンロードして来た後、こちらも、 Darts と同様ですね。

$ tar zxvf chasen-2.4.5.tar.gz
$ cd chasen-2.4.5
$ ./configure
$ make
# make install

ただ、これだけでは動かないのです。辞書を作らないといけません。

辞書のインストール

ここからが、問題です。辞書のインストールですが、全ての記述が UTF-8 ではなくて、 EUC_JP で書かれているので、コンバータを書かないといけません。

ipadicをダウンロードしてきて、

# tar zxf ipadic-2.7.0.tar.gz
# cd ipadic-2.7.0

とします。そして、コンバータを以下のように記述し、

#!/bin/bash

for file in *.dic *.cha
do
  if [ -f $file ]
  then
    echo $file
    iconv -f euc-jp -t utf-8 $file > tmp.txt
    mv tmp.txt $file
  fi
done

convert.sh として、保存します。そして、

# ./configure
# bash ./convert.sh
# `chasen-config --mkchadic`/makemat -i w
# `chasen-config --mkchadic`/makeda -i w chadic *.dic
# make install

とすることで、辞書をインストールしてやっと、 chasen コマンドを使用できるのですが、

$ chasen
chasen: /usr/local/lib/chasen/dic/ipadic/cforms.cha:9-21: no basic form

no basic form というエラーになるので、 -iw というオプションを付けるとうまくいくみたいです。

$ chasen -iw

このようにして、ようやく chasen をすることができるようになりました。

KyTea

京都テキスト解析ツールキットKyTea「キューティ」をインストールします。本体をダウンロードしてきて、

$ tar zxvf kytea-0.4.7.tar.gz
$ cd kytea-0.4.7
$ ./configure
$ make
# make install

とします。インストールは一瞬でしたね。続いて、 KyTea の起動をしてみましょう。

$ kytea

JUMAN

JUMAN公式ページから、最新の、 JUMAN をダウンロードしてきます。

$ tar jxvf juman-7.01.tar.bz2
$ cd juman-7.01/
$ ./configure
$ make
# make install

これも簡単でした。 JUMAN を起動してみましょう。

$ juman

動作確認

例文を以下の短い文として、

$ cat test.txt
わいさわは形態素解析ツールで遊んでみました。

を作成して、形態素解析ツール全てに適応してみました。時間を計測するのに time コマンドを使用しています。では、 MeCab から順番に御覧ください。

[ysawa@fedora02 tmp]$ time mecab -d /usr/lib64/mecab/dic/ipadic/ < test.txt
わい  名詞,代名詞,一般,*,*,*,わい,ワイ,ワイ
さわ  名詞,固有名詞,人名,名,*,*,さわ,サワ,サワ
は   助詞,係助詞,*,*,*,*,は,ハ,ワ
形態素 名詞,一般,*,*,*,*,形態素,ケイタイソ,ケイタイソ
解析  名詞,サ変接続,*,*,*,*,解析,カイセキ,カイセキ
ツール 名詞,一般,*,*,*,*,ツール,ツール,ツール
で   助詞,格助詞,一般,*,*,*,で,デ,デ
遊ん  動詞,自立,*,*,五段・バ行,連用タ接続,遊ぶ,アソン,アソン
で   助詞,接続助詞,*,*,*,*,で,デ,デ
み   動詞,非自立,*,*,一段,連用形,みる,ミ,ミ
まし  助動詞,*,*,*,特殊・マス,連用形,ます,マシ,マシ
た   助動詞,*,*,*,特殊・タ,基本形,た,タ,タ
。   記号,句点,*,*,*,*,。,。,。
EOS

real    0m0.005s
user    0m0.001s
sys 0m0.003s

MeCab 速いですね。基本形もちゃんと出てくるので、単語の表記揺れを吸収(名寄せ)するのにも使えそうです。

$ time mecab -d /usr/lib64/mecab/dic/jumandic/ < test.txt
わ   動詞,*,子音動詞カ行,語幹,わく,わ,代表表記:沸く
い   接尾辞,動詞性接尾辞,母音動詞,基本連用形,いる,い,*
さわ  名詞,普通名詞,*,*,さわ,さわ,漢字読み:訓 代表表記:沢
は   助詞,副助詞,*,*,は,は,*
形態  名詞,普通名詞,*,*,形態,けいたい,代表表記:形態
素   名詞,普通名詞,*,*,素,そ,漢字読み:音 代表表記:素
解析  名詞,サ変名詞,*,*,解析,かいせき,代表表記:解析
ツール 名詞,普通名詞,*,*,ツール,つーる,代表表記:ツール
で   助詞,格助詞,*,*,で,で,*
遊んで 動詞,*,子音動詞バ行,タ系連用テ形,遊ぶ,あそんで,代表表記:遊ぶ
み   接尾辞,動詞性接尾辞,母音動詞,基本連用形,みる,み,*
ました 接尾辞,動詞性接尾辞,動詞性接尾辞ます型,タ形,ます,ました,*
。   特殊,句点,*,*,。,。,*
EOS

real    0m0.005s
user    0m0.003s
sys 0m0.002s

辞書による速度の差もあまりないか。

$ time mecab -d /usr/lib64/mecab/dic/mecab-ipadic-neologd/ < test.txt
わい  名詞,代名詞,一般,*,*,*,わい,ワイ,ワイ
さわ  名詞,固有名詞,人名,名,*,*,さわ,サワ,サワ
は   助詞,係助詞,*,*,*,*,は,ハ,ワ
形態素解析   名詞,固有名詞,一般,*,*,*,形態素解析,ケイタイソカイセキ,ケイタイソカイセキ
ツール 名詞,一般,*,*,*,*,ツール,ツール,ツール
で   助詞,格助詞,一般,*,*,*,で,デ,デ
遊ん  動詞,自立,*,*,五段・バ行,連用タ接続,遊ぶ,アソン,アソン
で   助詞,接続助詞,*,*,*,*,で,デ,デ
み   動詞,非自立,*,*,一段,連用形,みる,ミ,ミ
まし  助動詞,*,*,*,特殊・マス,連用形,ます,マシ,マシ
た   助動詞,*,*,*,特殊・タ,基本形,た,タ,タ
。   記号,句点,*,*,*,*,。,。,。
EOS

real    0m0.005s
user    0m0.002s
sys 0m0.003s

mecab-ipadic-NEologd の分かち書きは、いちばん好きです。(好みの問題)

続いて、 ChaSen の番。

$ time chasen -iw < test.txt
わい  ワイ  わい  名詞-代名詞-一般
さわ  サワ  さわ  名詞-固有名詞-人名-名
は   ハ   は   助詞-係助詞
形態素 ケイタイソ   形態素 名詞-一般
解析  カイセキ    解析  名詞-サ変接続
ツール ツール ツール 名詞-一般
で   デ   で   助詞-格助詞-一般
遊ん  アソン 遊ぶ  動詞-自立   五段・バ行   連用タ接続
で   デ   で   助詞-接続助詞
み   ミ   みる  動詞-非自立  一段  連用形
まし  マシ  ます  助動詞 特殊・マス   連用形
た   タ   た   助動詞 特殊・タ    基本形
。   。   。   記号-句点
EOS

real    0m0.008s
user    0m0.005s
sys 0m0.003s

ChaSen も速いですね。基本形も見やすい場所に出てくるので、シェルスクリプトでも取り出しやすそうですね。

では、 KyTea はどうでしょうか。

$ time kytea < test.txt
わい/名詞/わい さわ/名詞/さわ は/助詞/は 形態/名詞/けいたい 素/接尾辞/そ 解析/名詞/かいせき ツール/名詞/つーる で/助詞/で 遊/動詞/あそ ん/語尾/ん で/助詞/で み/動詞/み ま/助動詞/ま し/語尾/し た/助動詞/た 。/補助記号/。

real    0m1.932s
user    0m1.716s
sys 0m0.213s

え? 2秒弱かかっていますね。 KyTea は、おそらくそのままでは、基本形は取り出せないと思います。学習方法自体は、シンプルで面白いですが。

気を取り直して、最後 JUMAN で華々しく締めくくりたい所。

$ time juman < test.txt
わ わ わ 感動詞 12 * 0 * 0 * 0 "代表表記:わ/わ"
い い いる 動詞 2 * 0 母音動詞 1 基本連用形 8 "代表表記:射る/いる"
@ い い いる 動詞 2 * 0 母音動詞 1 基本連用形 8 "代表表記:居る/いる"
@ い い いる 動詞 2 * 0 母音動詞 1 基本連用形 8 "代表表記:鋳る/いる"
さわ さわ さわ 名詞 6 普通名詞 1 * 0 * 0 "代表表記:沢/さわ 漢字読み:訓 カテゴリ:場所-自然"
@ さわ さわ さわ 名詞 6 普通名詞 1 * 0 * 0 "代表表記:茶話/さわ カテゴリ:抽象物 ドメイン:レクリエーション"
は は は 助詞 9 副助詞 2 * 0 * 0 NIL
形態 けいたい 形態 名詞 6 普通名詞 1 * 0 * 0 "代表表記:形態/けいたい カテゴリ:形・模様"
素 そ 素 名詞 6 普通名詞 1 * 0 * 0 "代表表記:素/そ 漢字読み:音 カテゴリ:抽象物"
解析 かいせき 解析 名詞 6 サ変名詞 2 * 0 * 0 "代表表記:解析/かいせき カテゴリ:抽象物 ドメイン:教育・学習;科学・技術"
ツール つーる ツール 名詞 6 普通名詞 1 * 0 * 0 "代表表記:ツール/つーる カテゴリ:人工物-その他"
で で で 助詞 9 格助詞 1 * 0 * 0 NIL
遊んで あそんで 遊ぶ 動詞 2 * 0 子音動詞バ行 8 タ系連用テ形 14 "代表表記:遊ぶ/あそぶ ドメイン:レクリエーション"
み み みる 接尾辞 14 動詞性接尾辞 7 母音動詞 1 基本連用形 8 "代表表記:みる/みる"
ました ました ます 接尾辞 14 動詞性接尾辞 7 動詞性接尾辞ます型 31 タ形 7 "代表表記:ます/ます"
。 。 。 特殊 1 句点 1 * 0 * 0 NIL
EOS

real    0m0.046s
user    0m0.038s
sys 0m0.008s

速度は、これもまずまずといったところなのですが、Webサービスとかでレスポンス返すので使うとするとキャッシュしないと難しいレベルになりましたね。

形態素解析自体は、名詞や動詞はドメインやカテゴリが出て来ますね。基本形もちゃんと取り出せますね。いろいろと応用できるか。あと、解釈が分かれるところが @ で示されるのも面白いですね。

まとめ

まとめると、こんな感じでしょうか。

  • MeCab 最速でした
  • MeCab は辞書による速度の変化もあまりない?
  • ChaSen インストール難しすぎました
  • KyTea ・・・
  • JUMAN は結果がおもしろい。ちょっと実用するには時間が掛かりすぎるか
  • KyTea 以外、基本形を取り出せるので、単語の表記揺れを吸収(名寄せ)するのに使えそうです

感想以上でも以下でもありませんね。これってどうやって皆さん評価してらっしゃるのでしょうか。

こういう技術を使った、言葉を使った面白いアプリとかでると嬉しいです!

この記事を読んだあとに

ysawa

エヌ次元株式会社代表取締役
東京工業大学工学部計算工学専攻卒業
符号理論の応用に関する研究
在学中よりフリーランスエンジニアとして活動
「持続可能な設計」を得意領域とする
会社設立後も設計からアプリ制作や
Webサイトのコーディングまでを幅広く担当
セキュリティスペシャリスト

 このブログについて

このブログは、プログラマやエンジニアのためになる情報を垂れ流しています。
ちょっと異端的なものも含まれているかもしれません。