PHPから日本語形態素解析「MeCab」を使うためにコンパイル
前の記事ではwordpressの記事の類似ページ(関連記事)を表示するための方法を調べた。今回は実際に日本語形態素解析「MeCab」をコンパイル、インストールしてPHPから利用できるように設定してみた。
環境はCentOS 5.4, Lampp 1.7.1
まずはMeCabのコンパイル。詳しくは公式サイトを参考に。
必要なツールをインストール
# yum install gcc-c++
iconvはインストール済みだった。
# tar zxvf mecab-0.98.tar.gz.gz
# cd mecab-0.98
# ./configure --with-charset=utf-8
# make
# make check
# make install
辞書のインストール
# tar xzvf mecab-ipadic-2.7.0-20070801.tar.gz.gz
# cd mecab-ipadic-2.7.0-20070801
# ./configure --with-charset=utf-8
# make
# make install
/usr/local/lib/mecab/dic/ipadic/
にインストールされた。他にも辞書はいろいろ。「IPA、NAIST、UniDic、JUMANの辞書実演比較」を参考に。
次はPHPで使うための拡張モジュールphp_mecabをインストール。ライセンスはMIT。ここからダウンロード。参考。ちなみにSWIGを理解すれば自作できそう(公式サイト「スクリプト言語のバインディング」)。
# tar xzvf php_mecab-0.3.0.tgz
# cd php_mecab-0.3.0
# /opt/lampp/bin/phpize
# ./configure --with-php-config=/opt/lampp/bin/php-config --with-mecab=/usr/local/bin/mecab-config
warningが出た
checking for re2c... no
configure: WARNING: You will need re2c 0.13.4 or later if you want to regenerate PHP parsers.
一応解決しとく。ここからre2cをダウンロード、インストール
# tar xzvf re2c-0.13.5.tar.gz.gz
# cd re2c-0.13.5
# ./configure
# make
# make install
再度php_mecabのコンパイル
# ./configure --with-php-config=/opt/lampp/bin/php-config --with-mecab=/usr/local/bin/mecab-config
# make
# make install
php.iniに次の行を追加
extension="mecab.so"
lamppの再起動。
# /etc/rc.d/init.d/lampp restart
php.infoにmecabが表示されていれば成功。
さて、次はWordPressの記事を形態素解析して、関連記事を取得するプラグインを作らなければ。
< 2012/06/07 Modified >
最新Versionの0.994をCompileしようとしたら下記Error。
libtool: link: g++ -O3 -Wall -o .libs/mecab mecab.o ./.libs/libmecab.so -lpthread -lstdc++ -Wl,-rpath -Wl,/usr/local/lib
./.libs/libmecab.so: undefined reference to `__sync_val_compare_and_swap_4'
collect2: ld returned 1 exit status
環境はCentOS 5.8。
下記記事でg++の4.4以上を入れれば大丈夫らしい。
CentOS 6.2の環境では問題なく完了した。
さらにPHP 5.3以上だとphp_mecab-0.3.0が下記ErrorでCompile出来ない。
/php_mecab-0.3.0/mecab.c:3843: warning: ‘php_std_error_handling’ is deprecated (declared at /usr/include/php/main/php.h:296)
これはphp_mecab-0.4.1, 0.5.0があるので、それを使えば大丈夫。
# yum install php-pear
# pear channel-discover pecl.opendogs.org
# pear install opendogs/mecab-0.5.0
# echo "extension=mecab.so" > /etc/php.d/mecab.ini
< Related Posts >