LoginSignup
40

More than 5 years have passed since last update.

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ですが、とても面白かった。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
40