形態素解析ツールをインストールするときに、毎回調べるのが億劫なので、まとめて備忘録にしてみました。最後には、簡単な形態素解析を時間計測しながら動作確認として行いました。
今回、インストールする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 以外、基本形を取り出せるので、単語の表記揺れを吸収(名寄せ)するのに使えそうです
感想以上でも以下でもありませんね。これってどうやって皆さん評価してらっしゃるのでしょうか。
こういう技術を使った、言葉を使った面白いアプリとかでると嬉しいです!
この記事を読んだあとに
- 書いた人のツイッター – Follow me!
- 『売上を3年連続20%成長させた18の秘訣』
- 運営しているアクションゲーム