さくらVPSにMeCabをインストールしてPHPから利用(CentOS6.4+PHP5.3.3/5.4.2)

| カテゴリ:Web・IT
日本語形態素解析APIをリリースするに当たって色々としたわけなんですが、そのうちの一つ(というかほぼすべて)に形態素解析エンジンMeCab(和布蕪)のインストールがあります。
せっかくなのでインストール手順をここに書き残しておきます。
インストールしたときの環境はざっと以下の通り。
  • サーバ:さくらVPS
  • OS:CentOS6.4
  • PHP:5.3.3(5.4.2でも同様でした)
  • MeCab:0.996
  • IPAdic:2.7.0
  • php-mecab:0.5.0
  • 文字コード:UTF-8
本記事ではディレクトリ構成がデフォルトのままであることを前提に進めていますので、構成をいじっている方はそれに合わせて変更してください。
さくらVPSへのMeCabインストールを取り上げたblog記事はすでにいくらでもあるのですが、バージョンが古かったり環境が微妙に違っていたりもするので、こうして新しい情報を掲載するのも、まあ、意味があるのではないかと。

はじめに

上記二つの記事をかなり参考にさせていただきました。
読みやすいblog、好きです。
本当にありがとうございます。

MeCabのインストール

$ cd
$ su
まずはrootに移動、それと管理者権限を取得。
(説明不要とは思いますが、上記コマンドの頭の「$」並びに今後出てくる「#」は打つ必要ないです)
わかりやすいように管理者権限を取得して作業を進めていますが、makeやvimでのファイル書き込みといった必要な箇所でsudoを頭につけるのでもOKです。
# wget https://mecab.googlecode.com/files/mecab-0.996.tar.gz
# tar zxfv mecab-0.996.tar.gz
# cd mecab-0.996
# ./configure --enable-utf8-only
# make
# make install
やっていることはファイルのダウンロードと解凍、configureでの文字コード設定、makeでのインストールです。

IPAdicのインストール

次に辞書のインストールをします。
標準辞書であるIPAdicです。
# wget http://sourceforge.net/projects/mecab/files/mecab-ipadic/2.7.0-20070801/mecab-ipadic-2.7.0-20070801.tar.gz
# tar zxvf mecab-ipadic-2.7.0-20070801.tar.gz
# cd mecab-ipadic-2.7.0-20070801
# ./configure --with-mecab-config=/usr/local/bin/mecab-config --prefix=/usr/local/ --with-charset=utf8
# make
# make install
サーバの構造を変えている場合は、configureの際のパスが変わることがあるかと思います。
mecabが使う辞書の設定はmecabrcというファイルに書き込まれています。
下記コマンドで開いてみましょう。
(vimなのは私の好みです。viでもemacsでもご自分の好みでどうぞ)
# vim /usr/local/etc/mecabrc
すると、以下の行があるかと思います。
これが使用する辞書の指定部分となります
dicdir = /usr/local/lib/mecab/dic/ipadic
違う辞書を使う場合はこのファイルを変えることになりますが、今回は上記のままで。

php_mecabのインストール

MeCabをPHPから使えるようにするため、php_mecabをインストールします。
PHP5.3.x以降の場合、バージョン0.4.0以前だとインストールが通らないみたいなので、0.4.1以降を使うようにします。
今回は最新の0.5.0としました。
# wget https://github.com/downloads/rsky/php-mecab/php-mecab-0.5.0.tgz
# tar xzvf php-mecab-0.5.0.tgz
# cd php-mecab-0.5.0
# phpize
# ./configure --with-php-config=/usr/bin/php-config --with-mecab=/usr/local/bin/mecab-config
# make
# make install
以下のようなメッセージが表示されると思います。
Installing shared extensions: /usr/lib64/php/modules/
以下のコマンドでmecab.soというファイルができていることを確認できます。
# ls -l /usr/lib64/php/modules/mecab.so
実際にphpから呼び出すためには、php.iniを書き換えるか、あるいはプログラム内でモジュールをロードするかのどちらかが必要になります。
今回はphp.iniを書き換えることにします。
# vim /etc/php.ini
上記コマンドでphp.iniを開いて、どこかに
extension=mecab.so
と追加してください。
# service httpd restart
Webサーバを再起動しました。
これでphpからMeCabを使えるようになりました。
# exit
管理者権限を抜けました。

試してみる

以下、動作を確認するためのサンプルコード二つです。
<?php
$result = mecab_split("テスト用の文字列だよ");
print_r($result);
?>
<?php
$mecab = new MeCab_Tagger();
$nodes = $mecab->parseToNode("テスト用の文字列だよ");
foreach($nodes as $node){
    echo $node->getId()."<br />";
    echo $node->getSurface()."<br />";
    echo $node->getStat()."<br />";
    echo $node->getLength()."<br />";
    echo $node->getFeature()."<br />";
}
?>

概要

青春B運営メンバー多口カタンによる雑記blogです。
自己紹介はこちら。開発物をまとめたものはこちら
 
ヘッダーイラストはkojiさん制作です。
感想・意見・要望等ありましたら気軽にフォームにてコンタクトくださいませ。
 
Twitterはじめましたので誰でも気軽に声かけてくださいね。