「PukiWiki Advance インストール方法(Ubuntu12.04編) | hiro345」に関係して、CentOS6でのMecabのインストールが面倒そうだったのですが、なくてもPukiWiki Advanceは動くようなのでCentOS6編はなくてもいいような気がしてたのですが、こちらも簡単にインストールできるようなのでインストールをしてみました。Mecabがインストールできれば、PukiWiki AdvanceをインストールするのはUbuntu版と同様にできるので、そちらは省略します。
Mecabインストール
Groongaという全文検索エンジン用のリポジトリがあるので、これを使います。
Mecabのインストールはこれだけで出来ます。
$ sudo rpm -ivh http://packages.groonga.org/centos/groonga-release-1.1.0-1.noarch.rpm $ sudo yum install -y mecab mecab-ipadic mecab-devel
コマンドラインからmecab -vと入力してバージョンが表示されればOKです。
php_mecabインストール
次にphp_mecabをインストールします。こちらも、下記ですぐにできます。
phpおよびpearはあらかじめインストールしてあるという前提です。
$ sudo pear channel-discover pecl.opendogs.org $ sudo pear install opendogs/mecab-0.5.0
実際にはコンパイルが動いて、下記が用意されます。
/usr/lib64/php/modules/mecab.so
/etc/php.d/mecab.ini を作成します。
CentOS6ではここにPHP拡張用の初期設定をいれておけば反映されます。
; Enable mecab extension module extension=mecab.so
設定ができたら、httpdのgracefulリスタートで反映します。
$ sudo service httpd graceful
反映されない場合はrestartしましょう。
確認
phpinfo()を使ってMecabがPHPでつけるようになっているか確認します。/var/www/html/info.phpがhttp://localhost/info.phpで参照できるとして、下記のようなファイルを用意します。
<?php phpinfo();
なお、確認ができたら削除しておきましょう。
Mecabを使ってみる
Mecabを使うプログラムは下記のようになります。splitで分割、parseToNodeでノードへ分割してそれぞれのノード情報を取得、といった処理をしています。
<?php $mecab = new MeCab_Tagger(); $s = 'PHPでMecabを使って日本語形態素解析の結果を取得'; $r = $mecab->split($s); print_r($r); echo "\n<br />\n"; echo "\n<br />\n"; $rs = Array(); for($n = $mecab->parseToNode($s); $n; $n = $n->getNext()){ if($n->getStat() != 2 && $n->getStat() != 3){ $rs[] = $n->getFeature(); } } foreach($rs as $e) { $data = explode(',', $e); print_r($data); echo "\n<br />\n"; }
結果は次のようになります。
Array ( [0] => PHP [1] => で [2] => Mecab [3] => を [4] => 使っ [5] => て [6] => 日本語 [7] => 形態素 [8] => 解析 [9] => の [10] => 結果 [11] => を [12] => 取得 ) Array ( [0] => 名詞 [1] => 一般 [2] => * [3] => * [4] => * [5] => * [6] => * ) Array ( [0] => 助詞 [1] => 格助詞 [2] => 一般 [3] => * [4] => * [5] => * [6] => で [7] => デ [8] => デ ) Array ( [0] => 名詞 [1] => 一般 [2] => * [3] => * [4] => * [5] => * [6] => * ) Array ( [0] => 助詞 [1] => 格助詞 [2] => 一般 [3] => * [4] => * [5] => * [6] => を [7] => ヲ [8] => ヲ ) Array ( [0] => 動詞 [1] => 自立 [2] => * [3] => * [4] => 五段・ワ行促音便 [5] => 連用タ接続 [6] => 使う [7] => ツカッ [8] => ツカッ ) Array ( [0] => 助詞 [1] => 接続助詞 [2] => * [3] => * [4] => * [5] => * [6] => て [7] => テ [8] => テ ) Array ( [0] => 名詞 [1] => 一般 [2] => * [3] => * [4] => * [5] => * [6] => 日本語 [7] => ニホンゴ [8] => ニホンゴ ) Array ( [0] => 名詞 [1] => 一般 [2] => * [3] => * [4] => * [5] => * [6] => 形態素 [7] => ケイタイソ [8] => ケイタイソ ) Array ( [0] => 名詞 [1] => サ変接続 [2] => * [3] => * [4] => * [5] => * [6] => 解析 [7] => カイセキ [8] => カイセキ ) Array ( [0] => 助詞 [1] => 連体化 [2] => * [3] => * [4] => * [5] => * [6] => の [7] => ノ [8] => ノ ) Array ( [0] => 名詞 [1] => 副詞可能 [2] => * [3] => * [4] => * [5] => * [6] => 結果 [7] => ケッカ [8] => ケッカ ) Array ( [0] => 助詞 [1] => 格助詞 [2] => 一般 [3] => * [4] => * [5] => * [6] => を [7] => ヲ [8] => ヲ ) Array ( [0] => 名詞 [1] => サ変接続 [2] => * [3] => * [4] => * [5] => * [6] => 取得 [7] => シュトク [8] => シュトク )
おもしろいですね。