Amazon Music HDが30日間無料

日本語文を品詞分解したくなったのでmecabをphpに入れるの巻

program コンテンツ

mecabをphpに入れる

mecabは、オープンソースの形態素解析エンジンです。

簡単に言うと与えた文章を品詞分解してくれます。

mecabは特定の辞書やコーパスに依存しない汎用な設計になっているため、研究分野などで活用されています。

mecabのライブラリをyumでインストール

まずmecabのライブラリをyumでインストールします。

 

yum install -y https://packages.groonga.org/centos/groonga-release-latest.noarch.rpm
yum makecache
yum install mecab mecab-ipadic mecab-devel

 

/usr/lib64/mecab/dic/ipadic
に辞書が入りました。

この時点でコマンドラインからmecabで呼び出しできます。

適当に文章を入力すると品詞分解してくれます。

phpのmecab拡張ライブラリをインストール

次にphpのmecab拡張ライブラリをソースからインストールします。

 

cd /usr/local/src

yum install re2c

git clone https://github.com/rsky/php-mecab
cd php-mecab/mecab
phpize
./configure
make
make install

 

phpの起動時にmecabモジュールを追加するように設定します。

vi /etc/php.ini

iniファイルの最終行に

;mecab
extension=mecab.so

を追記

phpを再起動します。

mecabが追加され有効になっているかを確認します。

php -m | grep mecab

php -r 'phpinfo();' | grep 'mecab' -i

 

mecabを使ったphpのサンプルコードです。

<?php
$str = 'スマホ相談ではプログラミング言語の話題も取り扱っています。';

$mecab = new MeCab\Tagger();
$nodes = $mecab->parse($str);

print_r($nodes);
?>

サンプルコードの出力結果はこんな感じになります。

スマホ  名詞,一般,*,*,*,*,*
相談    名詞,サ変接続,*,*,*,*,相談,ソウダン,ソーダン
で      助詞,格助詞,一般,*,*,*,で,デ,デ
は      助詞,係助詞,*,*,*,*,は,ハ,ワ
プログラミング  名詞,サ変接続,*,*,*,*,プログラミング,プログラミング,プログラミング
言語    名詞,一般,*,*,*,*,言語,ゲンゴ,ゲンゴ
の      助詞,連体化,*,*,*,*,の,ノ,ノ
話題    名詞,一般,*,*,*,*,話題,ワダイ,ワダイ
も      助詞,係助詞,*,*,*,*,も,モ,モ
取り扱っ        動詞,自立,*,*,五段・ワ行促音便,連用タ接続,取り扱う,トリアツカッ,トリアツカッ
て      助詞,接続助詞,*,*,*,*,て,テ,テ
い      動詞,非自立,*,*,一段,連用形,いる,イ,イ
ます    助動詞,*,*,*,特殊・マス,基本形,ます,マス,マス
。      記号,句点,*,*,*,*,。,。,。
EOS

 

mecabの実行時にオプションを付けたい場合は次のようにします。

$mecab = new MeCab\Tagger(array('-O' => 'chasen'));

コマンドライン実行時に”-Ochasen”(ChaSen互換の出力フォーマットにする)と付ける場合と同等です。
補足:
※ CentOS 7, php7.2の環境にインスコ

 

MeCab: Yet Another Part-of-Speech and Morphological Analyzer