3年ぐらい前に欲しいなーと思っていたMeCabのPHPモジュールが最近リリースされたようです。DBから取り出したレコードごとに形態素解析したいときなどはPHPから呼び出せると便利。
手元のマシンはmecabが0.90だったのですがconfigure時にmecab_new2のところでエラー。
configure: error: wrong MeCab library version or lib not found.
[mecab-users 86] Re: C ライブラリで “Undefined symbol” となる関数がある
既知の問題だったので最新の0.91をコンパイルし直したらインストールできました。
サンプルのコードはソースの中にもありますがよりシンプルな例を以下に。
<?php
dl('mecab.so');
$mecab = mecab_new();
$str = '私の名前は船木です。';
echo mecab_sparse_tostr($mecab, $str);
mecab_destroy($mecab);
原形を取り出す。MeCabの出力時のフォーマットをちゃんと与えればこんなパースは不要かもしれませんが手っ取り早くやりたいときに。
<?php
dl('mecab.so');
$mecab = mecab_new();
$str = $argv[1];
$buf = mecab_sparse_tostr($mecab, $str);
$res = array();
$tmp = explode("\n", $buf);
if (is_array($tmp)) {
foreach ($tmp as $val) {
$data = explode(',', $val);
if (isset($data[6])) {
$res[] = $data[6];
}
}
}
mecab_destroy($mecab);
print_r($res);
なお、配布元のサイトは今回初めてアクセスしたのですがPHPのExtensionがたくさんあって充実した趣き。HyperEstraierのも試してみたいところです。