PHPからMecabを利用する拡張モジュール

PHPからMecabを使いたかったので、Page2さんで公開されているPHP拡張モジュールを試してみた。試したのは、PHP5とMecab 0.95という組み合わせ。

  1. ソースのダウンロード
    $ wget http://page2.xrea.jp/pub/php_mecab-0.2.0.tgz
    $ tar zxvf php_mecab-0.2.0.tgz
  2. コンパイルとインストール
    $ cd php_mecab-0.2.0
    $ /usr/bin/phpize
    $ ./configure --with-php-config=/usr/bin/php-config \
    --with-mecab=/usr/bin/mecab-config
    $ make
    $ sudo make install
  3. 動作確認
    <?php
    dl('mecab.so');
    
    $t = new MeCab_Tagger();
    $str = 'すもももももももものうち';
    
    echo $t->parse($str);

    実行結果1

    す      接頭辞,名詞接頭辞,*,*,す,す,*
    もも    名詞,普通名詞,*,*,もも,もも,代表表記:股
    も      助詞,副助詞,*,*,も,も,*
    もも    名詞,普通名詞,*,*,もも,もも,代表表記:股
    も      助詞,副助詞,*,*,も,も,*
    もも    名詞,普通名詞,*,*,もも,もも,代表表記:股
    の      助詞,接続助詞,*,*,の,の,*
    うち    名詞,副詞的名詞,*,*,うち,うち,*
    EOS

    問題なく動作しているようだけど、「すもも」が一つの名詞として認識されてなくて、「す」+「もも」という変な組み合わせになっている。次に辞書をJumanからipadicに変更してみる。

    <?php
    dl('mecab.so');
    $options = array('-d', '/var/lib/mecab/dic/ipadic');
    
    $t = new MeCab_Tagger($options);
    $str = 'すもももももももものうち';
    
    print $t->parse($str);

    実行結果2

    すもも  名詞,一般,*,*,*,*,すもも,スモモ,スモモ
    も      助詞,係助詞,*,*,*,*,も,モ,モ
    もも    名詞,一般,*,*,*,*,もも,モモ,モモ
    も      助詞,係助詞,*,*,*,*,も,モ,モ
    もも    名詞,一般,*,*,*,*,もも,モモ,モモ
    の      助詞,連体化,*,*,*,*,の,ノ,ノ
    うち    名詞,非自立,副詞可能,*,*,*,うち,ウチ,ウチ
    EOS

    今度はちゃんと認識してくれた。素晴らしい!


2 Comments so far »

  1.  

    rsk said

    on 2008-01-07 10:50 a.m.

    紹介ありがとうございます。作者です。
    あっちのサイトで告知し忘れていたのですが、最新版は↓にあります。
    http://d.hatena.ne.jp/rsky/20071228/1...
    0.2.0との違いはPHP 5.3/6.0に対応しただけなので、特にアップグレードしなくても大丈夫です。

  2.  

    weboo said

    on 2008-01-07 5:46 p.m.

    rskさん、ありがとうございます。

    さらに新しいバージョンがあるんですね。MeCab extensionありがたく使わせてもらっています。ウノウラボのほうでも紹介させて頂きました。

    http://labs.unoh.net/2008/01/keyword-...


このエントリーのはてなブックマーク (-)