Dec 08

どうも、相変わらず暴君なyoshida-kです。

今日はMeCabというオープンソースな形態素解析エンジンをphpから利用して見ましょうというお話です。
MeCabを使うと文章を単語に分割したり、分割された単語がどういったものなのかという情報を取得したりできます。

まずは、MeCabをインストールしてみましょう。
リンク先を見ればインストール方法は明らかですが、とりあえず順を追って説明します。
1.sourceforge.netよりMeCabのソースをDownload
2.任意のディレクトリにDownloadしてきたアーカイブを展開
tar -zxvf ./mecab-x.y.tar.gz 的なw
3.mecabのコンパイルを行う。
普通のアプリと同じでconfigureしてmake , make installな感じです。
ディレクトリ内にあるINSTALLファイルを見るととりあえずやり方が書いてあったりします。

ここまでやるととりあえずmecabがインストールされるわけですが、コレだけではmecabはちゃんと動きません。
mecabを動かすには辞書が必要です。
辞書も先ほどのsourceforgeのところからdownloadできるので同様に展開⇒make installしてください。

さて、この状態でmecabを起動することが可能となりました。
mecabを起動すると形態素解析をしてくれます。

よく使われている例ですが
「すもももももももものうち」と入力すると

すもも  名詞,一般,*,*,*,*,すもも,スモモ,スモモ
も      助詞,係助詞,*,*,*,*,も,モ,モ
もも    名詞,一般,*,*,*,*,もも,モモ,モモ
も      助詞,係助詞,*,*,*,*,も,モ,モ
もも    名詞,一般,*,*,*,*,もも,モモ,モモ
の      助詞,連体化,*,*,*,*,の,ノ,ノ
うち    名詞,非自立,副詞可能,*,*,*,うち,ウチ,ウチ

このような形に出力してくれます。

さて、いよいよPHPでこのMeCabを利用するためにPHPのExtensionをインストールしましょう。
MeCabのPHP ExtensionはこちらのPage2さんが公開してくださってます。

インストール方法は
phpize ⇒ configure ⇒ make ⇒ make installです。
インストールが完了したらphp.iniのモジュール読み込みの設定にmecab.soを追加しましょう。

さて、以下の内容がテストコードです。
うまくいくと、mecabを起動して実行したものと同じ結果が出力されます。

<?php
   dl("mecab.so");

   $mecab = mecab_new();
   $string = "すもももももももものうち";

   print mecab_sparse_tostr( $mecab , $str );

   mecab_destroy();
 ?>

いかがでしょう?
コレだけではまだ実用性にかけるので次回はもうちょっと実用的な内容を紹介させていただきます。