Help us understand the problem. What is going on with this article?

phpでmecab

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

kojirock5260
底辺のエンジニアです。 底の底でもがいています。
http://kojirooooocks.hatenablog.com/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした