CaboChaで係り受け解析をやってみる
梅雨の季節も近づきつつあり寒い日も多い今日この頃、皆様いかがお過ごしでしょうか。 私は、雨に濡れて家に帰り、体調を崩したりしていました。 不肖の身を恥じるとともに、自己管理が甘かったと反省する次第です。 皆様も時節柄、お体に気をつけてお過ごしください。
挨拶が遅くなりました、自然言語処理をやっているうっちーです。本日も、自然言語処理に携わる身として、新たに自然言語処理をはじめる人達の助けになるべくブログを書かせていただきます。
今回は、以前にも紹介させていただいた係り受け解析について触れていきたいと思います。
係り受け解析
係り受け解析とは、文章を形態素に分けた後、修飾関係の解析を行うことです。 係り受け解析の詳細は、以下の自然言語処理と基礎技術の項をご参考下さい。
CaboChaとは
CaboChaは、 SVM(Support Vector Machines)に基づく、日本語の係り受け解析器です。 CaboChaについては文の構造を解析して、修飾関係を教えてくれるツール程度に思ってくれて大丈夫です。 SVMは、教師ありの機械学習を用いたパターン認識モデルです。SVMについては今後記事にする予定です。
導入
CaboChaを動かすためには以下の3つが必要となります。
- CRF++
- MeCab
- mecab-ipadicなどの辞書ファイル
MeCabとipadicは以前のMeCabで形態素解析をやってみるで導入済みだと思います。 もし入れてない人は、MeCabで形態素解析をやってみるでインストールしてください。 なので、今回新しくインストールするのはCRF++になります。CRFとはConditional Random Fieldsの略で、形態素解析の結果にタグ付けなどを行うために使われています。
それでは、CRF++を入れてみましょう。
$ wget 'https://docs.google.com/uc?export=download&id=0B4y35FiV1wh7QVR6VXJ5dWExSTQ' -O CRF++-0.58.tar.gz $ tar zvxf CRF++-0.58.tar.gz $ cd CRF++-0.58 $ ./configure $ make $ sudo make install
そして、やっとCaboChaのインストールです。
$ wget https://cabocha.googlecode.com/files/cabocha-0.68.tar.bz2 $ tar jxvf cabocha-0.68.tar.bz2 $ cd cabocha-0.68 $ ./configure --with-charset=UTF8 $ make $ sudo make install
使用方法
コマンドライン上でcabocha
と入力すると、CaboChaがコマンドラインモードで起動します。
ここで、文章を入力すると係り受け解析を行い、結果を表示してくれます。
コマンドラインモードを終了するにはCtrl+Cを入力します。
それでは例題として『隣の客はよく柿食う客だ』という文に対して係り受け解析をやってみます。
% cabocha 隣の客はよく柿食う客だ 隣の-D 客は-------D よく---D | 柿-D | 食う-D 客だ EOS
結果を見るとD
の下にある形態素が修飾先であり、自然言語処理の基礎技術で紹介したものと同じ結果になっていることがわかります。
また、-f1
のオプションを付けることによりこのように詳細表示も可能になります。
オプションのf
はOutputFormatのf
です。
% cabocha -f1 隣の客はよく柿食う客だ * 0 1D 0/1 2.206035 隣 名詞,一般,*,*,*,*,隣,トナリ,トナリ の 助詞,連体化,*,*,*,*,の,ノ,ノ * 1 5D 0/1 -0.593304 客 名詞,一般,*,*,*,*,客,キャク,キャク は 助詞,係助詞,*,*,*,*,は,ハ,ワ * 2 4D 0/0 0.538813 よく 副詞,一般,*,*,*,*,よく,ヨク,ヨク * 3 4D 0/0 1.985106 柿 名詞,一般,*,*,*,*,柿,カキ,カキ * 4 5D 0/0 -0.593304 食う 動詞,自立,*,*,五段・ワ行促音便,基本形,食う,クウ,クウ * 5 -1D 0/1 0.000000 客 名詞,一般,*,*,*,*,客,キャク,キャク だ 助動詞,*,*,*,特殊・ダ,基本形,だ,ダ,ダ EOS
詳細表示の結果は以下のような形式になっています。
* ID 係り先のID 主辞/機能語の位置と任意の個数の素性列 主辞/機能語の位置と係り関係のスコア
ちなみに、-f0
が最初のオプションを付けない状態の出力、-f2
が-f0
と-f1
足したものです。さらに、-f3
がXML形式、-f4
がCoNLL形式での出力です。このように、-f
だけでも5つものオプションがあります。
他にも様々なオプションがあるので詳しくは公式かcabocha -h
で確認してみてください。
最後に
mecabの流れと同様に、次回は楽しい楽しいプログラムからCaboChaを使ってみるです!!
係り受けをプログラムで扱うことによりどんなことができるようになるのかなどをプログラムを交えつつ紹介していきたいと思う次第です。