PHPで形態素解析エンジンのmecabを動かす。〜「私は貝柱になりたい。」を字句解析してみる〜
字句解析関連のアプリを作ってみよー。twitterでの1人liveコーディングを始めます。といいつつ調べものからなので、時間かかります。徹夜覚悟。
— 堤 庸(mitsugi) (@mitsugeek) 2013年1月3日
ということで、 twitterでliveコーディング(全然コーディングしてないじゃん。)しながら、 形態素解析エンジンのmecab動かすということを1人で黙々とやってる(現在進行形) そのときのサンプル。
<!DOCTYPE html> <html> <head> <title>形態素解析エンジンを試す</title> <meta charset="UTF-8"> </head> <body> <?php $str = '私は貝柱になりたい。'; $str = mb_convert_encoding($str, "euc-jp", "utf-8"); $mecab = new Mecab(); $nodes = $mecab->parseToNode($str); foreach($nodes as $node) { echo mb_convert_encoding($node->surface,"utf-8","euc-jp")."<br />\n"; } ?> <body> </html>
結果
<!DOCTYPE html> <html> <head> <title>形態素解析エンジンを試す</title> <meta charset="UTF-8"> </head> <body> <br /> 私<br /> は<br /> 貝柱<br /> に<br /> なり<br /> たい<br /> 。<br /> <br /> <body> </html>
サーバ側の結果はこちら→ http://mitsugeek.net/mecab/test.php
※申し訳ありませんが、いまは動いてません。。
以下は、インストールまでの流れ
まずは字句解析する。「とりあえずオープンソースで」という他力本願でスタート。「形態素解析エンジン」というやつですね。フムフム。
— 堤 庸(mitsugi) (@mitsugeek) 2013年1月3日
形態素解析エンジンはどれにするか。
— 堤 庸(mitsugi) (@mitsugeek) 2013年1月3日
高速らしい、MeCabにしてみましょう。http://t.co/5BmLYf8B
mecab-0.994をダウンロード。他力本願で進めます。車輪の再発明ノンノン。http://t.co/Ei9u7kjv
— 堤 庸(mitsugi) (@mitsugeek) 2013年1月3日
wget http://t.co/8mOhrD9t
— 堤 庸(mitsugi) (@mitsugeek) 2013年1月3日
tar xzvf mecab-0.994.tar.gz
— 堤 庸(mitsugi) (@mitsugeek) 2013年1月3日
./configure !
— 堤 庸(mitsugi) (@mitsugeek) 2013年1月3日
make !
make install !
と呪文を唱えて見る。
wget http://t.co/uTUAEBmF
— 堤 庸(mitsugi) (@mitsugeek) 2013年1月3日
wget tar xzvf mecab-ipadic-2.7.0-20070801.tar.gz
— 堤 庸(mitsugi) (@mitsugeek) 2013年1月3日
辞書も同じく、./configure !
— 堤 庸(mitsugi) (@mitsugeek) 2013年1月3日
make !
make install !
という呪文でインストール。
【echo "今日はいい天気" | nkf -e | mecab | nkf -w】
— 堤 庸(mitsugi) (@mitsugeek) 2013年1月3日
とかすると化けない。ということでEUCで動くみたいです。
形態素解析エンジンの準備できたので、次にWEBサーバとアプリケーションサーバを準備。
— 堤 庸(mitsugi) (@mitsugeek) 2013年1月3日
php_mecabとかあるらしいので、PHPで。いや、rubyとかjavaでもなんでも良いんだけど、準備が一番楽なんでPHPを。。。
— 堤 庸(mitsugi) (@mitsugeek) 2013年1月3日
yum install httpd
— 堤 庸(mitsugi) (@mitsugeek) 2013年1月3日
yum install php
— 堤 庸(mitsugi) (@mitsugeek) 2013年1月3日
yum install php-mbstring
— 堤 庸(mitsugi) (@mitsugeek) 2013年1月3日
yum install php-devel
— 堤 庸(mitsugi) (@mitsugeek) 2013年1月3日
pearをインストールする
— 堤 庸(mitsugi) (@mitsugeek) 2013年1月3日
wget http://t.co/nQGxdPAw
— 堤 庸(mitsugi) (@mitsugeek) 2013年1月3日
php go-pear.phar
— 堤 庸(mitsugi) (@mitsugeek) 2013年1月3日
php_mecabを次にインストール。
— 堤 庸(mitsugi) (@mitsugeek) 2013年1月3日
pear channel-discover http://t.co/jCBxUVZL
— 堤 庸(mitsugi) (@mitsugeek) 2013年1月3日
pear install opendogs/mecab-beta
— 堤 庸(mitsugi) (@mitsugeek) 2013年1月3日
「You should add "extension=mecab.so" to php.ini」というメッセージが出てきました。
— 堤 庸(mitsugi) (@mitsugeek) 2013年1月3日
echo "extension=mecab.so" > /etc/php.d/mecab.ini
— 堤 庸(mitsugi) (@mitsugeek) 2013年1月3日
phpinfo()で、mecabインストール確認。
— 堤 庸(mitsugi) (@mitsugeek) 2013年1月3日
Directiveという項目は全て「no value」いやはやこれが何を意味しているのか。