phpでmecab

# phpでMecab使ってみた

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

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

## index

* [mecabインストール](#link_1)
* [辞書のインストール](#link_2)
* [php-mecabのインストール](#link_3)


<a name="link_1"></a>
## mecabインストール

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

### 参考URL

[http://qiita.com/Keech/items/3b51a60c89b9e803b256](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++で作られているようで、そりゃコンパイラが必要でしたね。。。すいません。


<a name="link_2"></a>
## 辞書のインストール

標準的な「IPA辞書」ではなく、ググッて評判が良さそうだった、「[mecab-ipadic-neologd](https://github.com/neologd/mecab-ipadic-neologd)」を入れるようにしました。

### 参考URL
* [http://diary.overlasting.net/2015-03-13-1.html](http://diary.overlasting.net/2015-03-13-1.html)
[http://www.slideshare.net/overlast/mecab-ipadicneologdtokyordf-46497035](http://www.slideshare.net/overlast/mecab-ipadicneologdtokyordf-46497035)


### 手順

    ##### 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

<a name="link_3"></a>
## 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

### 使用方法

#### コード

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