bobuhiro11's diary

phpでmecabを使う.

26 Sep 2012
[mecab] [php]
環境
centos 6 x86_64
php 5.3.3
mecab 0.98
mecab_php 0.3.0

形態素解析をしなければならなくなったので,今日形態素解析エンジンのmecabをインストールして,phpから使えるようにしました.以下はその手順です.特にphp_mecabのとこでハマってしまいました.

1.mecab本体をインストールする.

yum install glibc
yum install gcc*
yum install php-devel
cd /usr/local/src
wget http://mecab.googlecode.com/files/mecab-0.98.tar.gz
tar zxfv mecab-0.98.tar.gz
cd mecab-0.98
./configure --enable-utf8-only --prefix=/usr/local
make
make check
make install

“make check”のときに

===================
1 of 3 tests failed
===================
make[2]: *** [check-TESTS] Error 1
make[2]: Leaving directory `/usr/local/src/mecab-0.98/tests'
make[1]: *** [check-am] Error 2
make[1]: Leaving directory `/usr/local/src/mecab-0.98/tests'
make: *** [check-recursive] Error 1

のようなエラーを吐きましたが,あまり気にしないで大丈夫みたいです.

2.辞書をインストールする.

mecab本体の他に辞書もインストールします.

cd /usr/local/src
wget http://mecab.googlecode.com/files/mecab-ipadic-2.7.0-20070801.tar.gz
tar zxfv mecab-ipadic-2.7.0-20070801.tar.gz
cd mecab-ipadic-2.7.0-20070801
./configure --with-charset=utf8
make
make install

ここまでインストールすると,こんな感じでmecabコマンドが使えるようになります.

% mecab
高知市内でコーチしないで
高知 名詞,固有名詞,地域,一般,*,*,高知,コウチ,コーチ
市内 名詞,一般,*,*,*,*,市内,シナイ,シナイ
で 助詞,格助詞,一般,*,*,*,で,デ,デ
コーチ 名詞,一般,*,*,*,*,*
し 動詞,自立,*,*,サ変・スル,未然形,する,シ,シ
ない 助動詞,*,*,*,特殊・ナイ,連用デ接続,ない,ナイ,ナイ
で 助詞,接続助詞,*,*,*,*,で,デ,デ
EOS

3.php_mecabを使ってphpから利用できるようにする.

% cd /usr/local/src
% wget http://www.opendogs.org/pub/php_mecab-0.3.0.tgz
% tar zxvf php_mecab-0.3.0.tgz
% cd php_mecab-0.3.0
% phpize
% whereis php-config
 php-config: /usr/bin/php-config /usr/share/man/man1/php-config.1.gz
% whereis mecab-config
 mecab-config: /usr/local/bin/mecab-config
% ./configure --with-php-config=/usr/bin/php-config --with-mecab=/usr/local/bin/mecab-config
% cd /usr/local/src/php_mecab-0.3.0/
% vi mecab.c
% make
% make test
% make install
Installing shared extensions: /usr/lib64/php/modules/

うちの環境ではmakeのときにエラーが出ました. さくらインターネットのレンタルサーバでMeCab Extensionを利用する方法

↑のページに丁寧に解説があります.そこ通りにmecab.cを直接編集すれば,makeが通るようになりました.

あとはphpから使うだけです.dl(‘mecab.so’)は駄目だって怒られたので,php.iniの中に

[mecab] extension="mecab.so"

みたいに追加すればOKです.

参考ページ

http://brandofme.vi-king.net/?p=197 http://www.programming-magic.com/20080808173652/ http://d.hatena.ne.jp/kouheiszk/20120131/1327941905 https://sites.google.com/site/wakatsukisdc/develop-tips/etc-tips/sakuraintanettonorentarusabademecabextensionwoliyongsurufangfa


comments powered by Disqus < logwatchでログを監視する. 迷惑メールフィルタには気を付ける. >