既に流行りは過ぎた感のある形態素解析ですが、皆さんは使っているのでしょうか。何を使えばいいか迷ったらMeCabだと思います。
MeCab: Yet Another Part-of-Speech and Morphological Analyzer.
歴史があるし、PHPバインディングもあるからね。
で、MeCabとかphp-mecabとか、CentOS 6のyumでは落ちてこないので、ソースからインストールする必要があります。またApacheに組み込むにはroot権限が必要です。だけど今回はroot権限なしでインストールして、コマンドラインから動かしてみます。
というわけで、とりあえずはMeCabのインストール。ソースを取ってきて解凍して、こんな感じ。
$ ./configure --prefix=$HOME --with-charset=utf8 $ make && make check && make install
PREFIXを$HOMEに指定することでコマンドは $HOME/bin/ の下にインストールされるようになります。あとデフォルトのキャラセットをUTF8に指定しました。
辞書も必要です。こちらもMeCabのサイトで配布されているのでダウンロード、解凍して、同じように。
$ ./configure --prefix=$HOME --with-charset=utf8 $ make && make install
これでMeCabのインストールは完了。
動作確認にコマンドラインから mecab と打ってみる。$HOME/bin/ にパスが通っていない人は通しておきましょう。絶対パスで $HOME/bin/mecab で実行してもいいです。すると入力待ちになるので、そこに解析したい文章を入れてみましょう。文字化けする人は辞書の文字コードがターミナルの文字コードと合ってないかも。
MeCabの動作確認ができたら、ついにphp-mecabです。
rsky/php-mecab
これもソースコードを取ってきてインストールします。いや、正確にはコンパイルまでで終わらせます。
$ phpize && ./configure && make && make test
make test は必須じゃないかも。ここだけ ./configure から make へ && でつなげた意味はありません。&& は成功したら次、の意味です。
make が完了したら modules/mecab.so というファイルが出来上がります。これがphp-mecabのエクステンションです。
出来上がったエクステンションを読み込んで動かしてみましょう。
$ php -d extension=modules/mecab.so -r '$mecab = new MeCab_Tagger(); $nodes = $mecab->parseToNode("すもももももももものうち"); foreach ($nodes as $n) var_dump($n->getSurface().": ".$n->getFeature());' string(25) ": BOS/EOS,*,*,*,*,*,*,*,*" string(62) "すもも: 名詞,一般,*,*,*,*,すもも,スモモ,スモモ" string(41) "も: 助詞,係助詞,*,*,*,*,も,モ,モ" string(50) "もも: 名詞,一般,*,*,*,*,もも,モモ,モモ" string(41) "も: 助詞,係助詞,*,*,*,*,も,モ,モ" string(50) "もも: 名詞,一般,*,*,*,*,もも,モモ,モモ" string(41) "の: 助詞,連体化,*,*,*,*,の,ノ,ノ" string(64) "うち: 名詞,非自立,副詞可能,*,*,*,うち,ウチ,ウチ" string(25) ": BOS/EOS,*,*,*,*,*,*,*,*"
引数 -d で php.ini に書く内容を一時的に指定できます。-r を指定するとPHPの開始タグを書く必要がありません。php-mecab は公式マニュアルが公開されていないようで、どんな関数があるか分かりにくいですが、とりあえず、こんな感じで解析できるようです。
ってな感じで、コマンドラインで使うだけならroot権限はなくてもMeCabやphp-mecabを使うことが出来ます。サービスサイトで使うならサーバ管理者と相談したほうがいいと思うけど、検証用で個人的に試すだけなら十分だと思います。