PHPでMecab利用
環境情報(2009/01/05追加)
CentOS5.2 / PHP 5.2.11
インストールからサンプルプログラム作成までにお世話になったサイト一覧
Mecabのインストール
CentOSはyumでインストールできなかったので、ソースからコンパイルを行った。インストール先は/usr/localとし、辞書ファイルはutf8のみとした。
本体インストール
# tar xvfz mecab-0.98.tar.gz # cd mecab-0.98 # ./configure --prefix=/usr/local --with-charset=utf8 --enable-utf8-only --enable-mutex # make # make install
./configureでこける(***.hが見つかりません)とでたらgccのアップグレード
$ sudo yum install gcc-c++
辞書ファイルのインストール
# tar xvfz mecab-ipadic-2.7.0-20070801.tar.gz # cd mecab-ipadic-2.7.0-20070801 # ./configure --prefix=/usr/local --with-charset=utf8 # make # make install
php_mecabのインストール
ダウンロード
コンパイル
# tar xvfz php_mecab-0.3.0.tgz # cd php_mecab-0.3.0 # phpize # ./configure --with-php-config=/usr/bin/php-config --with-mecab=/usr/local/bin/mecab-config # make # make install
サンプル
文字列"すもももももももものうち"の名詞だけ抽出して出現頻度を数える。品詞IDについては、品詞IDの定義を参照。
<?php $str = 'すもももももももものうち'; $mecab = new Mecab(); $keywords = array(); $nodes = $mecab->parseToNode($str); foreach($nodes as $node) { if($node->posid >= 37 && $node->posid <= 66) { echo "品詞ID: " . $node->posid .":" . $node->surface."<br>"; if(!isset($keywords[$node->surface])) { $keywords[$node->surface] = 1; } else{ $keywords[$node->surface]++; } } } arsort($keywords); print_r($keywords);
結果は
38:すもも 38:もも 38:もも 66:うち Array ( [もも] => 2 [うち] => 1 [すもも] => 1 )
となり、正しく動いている模様。