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 >