• 27
    いいね
  • 0
    コメント
この記事は最終更新日から1年以上が経過しています。

phpでMecab使ってみた

案件でmecab使うことあったから、phpで扱うためのインスト備忘録です。

ちなみにphpバージョンは5.6です。

index

mecabインストール

mecab本体のインストール方法です

参考URL

http://qiita.com/Keech/items/3b51a60c89b9e803b256

手順

##### rootで作業

cd /usr/local/src/
wget http://mecab.googlecode.com/files/mecab-0.996.tar.gz
tar xvf mecab-0.996.tar.gz 
cd /usr/local/src/mecab-0.996/
./configure
make
make check
make install

確認方法

$ mecab -v
mecab of 0.996

makeでコケる場合

自分の環境の場合以下のツールがなかったためmakeでコケました。

yum install gcc-c++

※ そもそもc++で作られているようで、そりゃコンパイラが必要でしたね。。。すいません。

辞書のインストール

標準的な「IPA辞書」ではなく、ググッて評判が良さそうだった、「mecab-ipadic-neologd」を入れるようにしました。

参考URL

手順

##### rootで作業

cd /usr/local/src/mecab-0.996/
mkdir library
cd /usr/local/src/mecab-0.996/library
git clone --depth 1 https://github.com/neologd/mecab-ipadic-neologd.git
cd /usr/local/src/mecab-0.996/library/mecab-ipadic-neologd/
./bin/install-mecab-ipadic-neologd -n

コケる場合

自分の環境では以下のツールをインストールすることで、問題なく入りました

yum install patch

確認方法

$ mecab -d /usr/local/lib/mecab/dic/mecab-ipadic-neologd
センテンススプリングでも文春でもどっちでもいいだろ

センテンス 名詞,一般,*,*,*,*,センテンス,センテンス,センテンス
スプリング 名詞,一般,*,*,*,*,スプリング,スプリング,スプリング
で 助詞,格助詞,一般,*,*,*,で,デ,デ
も 助詞,係助詞,*,*,*,*,も,モ,モ
文春  名詞,固有名詞,一般,*,*,*,文春,ブンシュン,ブンシュン
で 助詞,格助詞,一般,*,*,*,で,デ,デ
も 助詞,係助詞,*,*,*,*,も,モ,モ
どっち   名詞,代名詞,一般,*,*,*,どっち,ドッチ,ドッチ
でも  助詞,副助詞,*,*,*,*,でも,デモ,デモ
いい  動詞,自立,*,*,五段・ワ行促音便,連用形,いう,イイ,イイ
だろ  助動詞,*,*,*,特殊・タ,未然形,だ,ダロ,ダロ
EOS

php-mecabのインストール

手順

##### rootで作業

cd /usr/local/src/
git clone https://github.com/rsky/php-mecab.git
cd /usr/local/src/php-mecab/mecab
phpize
./configure --with-php-config=/usr/bin/php-config --with-mecab=/usr/bin/mecab-config
make
make test
make install

### extensionファイル作成
vim /etc/php.d/mecab.ini
  extension=mecab.so 

/etc/init.d/httpd restart

確認方法

$ php -r 'phpinfo();' | grep 'mecab' -i
/etc/php.d/mecab.ini
mecab
MeCab Support => enabled
MeCab Library => 0.996 => 0.996
mecab.default_dicdir => no value => no value
mecab.default_rcfile => no value => no value
mecab.default_userdic => no value => no value

使用方法

コード

check.php
<?php

    $str     = 'センテンススプリングでも文春でもどっちでもいいだろ';
    $options = array('-d', '/usr/local/lib/mecab/dic/mecab-ipadic-neologd');

    $mecab = new MeCab_Tagger($options);
    $nodes = $mecab->parseToNode($str);

    foreach ($nodes as $n)
    {
        echo $n->getSurface() . "<br />";
        echo $n->getFeature() . "<br />";
    }

結果

BOS/EOS,*,*,*,*,*,*,*,*
センテンス
名詞,一般,*,*,*,*,センテンス,センテンス,センテンス
スプリング
名詞,一般,*,*,*,*,スプリング,スプリング,スプリング
で
助詞,格助詞,一般,*,*,*,で,デ,デ
も
助詞,係助詞,*,*,*,*,も,モ,モ
文春
名詞,固有名詞,一般,*,*,*,文春,ブンシュン,ブンシュン
で
助詞,格助詞,一般,*,*,*,で,デ,デ
も
助詞,係助詞,*,*,*,*,も,モ,モ
どっち
名詞,代名詞,一般,*,*,*,どっち,ドッチ,ドッチ
でも
助詞,副助詞,*,*,*,*,でも,デモ,デモ
いい
動詞,自立,*,*,五段・ワ行促音便,連用形,いう,イイ,イイ
だろ
助動詞,*,*,*,特殊・タ,未然形,だ,ダロ,ダロ

BOS/EOS,*,*,*,*,*,*,*,*

やってみて

言葉では知ってたけど実際にやったことなかったmecabですが、とても面白かった。