PHPなWEBアプリケーションの開発をしていて、日本語の文字列のよみがなを取得したい ってな場合に、形態素解析エンジンのMeCabを利用する方法です。
Google Codeの閉鎖が予定されているせいかプロジェクトのホスティングサイトやダウンロードURLなどが変わってました。
MeCab
http://taku910.github.io/mecab/
環境
$ cat /etc/redhat-release
CentOS release 6.6 (Final)
$ php -r "echo PHP_VERSION;"
5.6.7
MeCabインストールに必要なものが入っているか確認する
$ which g++
/usr/bin/g++
$ which iconv
/usr/bin/iconv
MeCabインストール
作業ディレクトリ作成
$ mkdir -p ~/src/mecab; cd ~/src/mecab
MeCab本体のインストール
$ curl -L -o mecab-0.996.tar.gz "https://drive.google.com/uc?id=0B4y35FiV1wh7cENtOXlicTFaRUE&export=download"
$ tar zxf mecab-0.996.tar.gz
$ (cd mecab-0.996; ./configure --enable-utf8-only && make && sudo make install)
辞書のインストール
$ curl -L -o mecab-ipadic-2.7.0-20070801.tar.gz "https://drive.google.com/uc?id=0B4y35FiV1wh7MWVlSDBCSXZMTXM&export=download"
$ tar zxf mecab-ipadic-2.7.0-20070801.tar.gz
$ (cd mecab-ipadic-2.7.0-20070801; ./configure --with-charset=utf8 && make && sudo make install)
$ (cd mecab-ipadic-2.7.0-20070801; /usr/local/libexec/mecab/mecab-dict-index -f euc-jp -t utf8 && sudo make install)
動作確認
mecabコマンドの-Oyomiオプションで、よみがなが得られることを確認します。
$ echo '敗北?私はその言葉の意味を存じ上げません。' | mecab -Oyomi
ハイボク?ワタシハソノコトバノイミヲゾンジアゲマセン。
MeCab PHPバインディングのインストール
php-mecab: MeCab binding for PHP
https://github.com/rsky/php-mecab
インストール
$ mkdir -p ~/src/github/; cd ~/src/github/
$ git clone https://github.com/rsky/php-mecab.git; cd php-mecab/mecab
$ phpize && ./configure --with-mecab=/usr/local/bin/mecab-config && make && make test && sudo make install
$ sudo sh -c "echo 'extension=mecab.so' > /etc/php.d/mecab.ini"
動作確認
mecabコマンドと同様にPHPでも new MeCab_Tagger(array('-O' => 'yomi'))
として読みが得られることを確認します。
$ cat <<EOL > /tmp/test-mecab.php
<?php
if (!extension_loaded('mecab')) {
echo "Not loaded mecab.so". PHP_EOL;
exit(1);
}
\$str = \$argv[1];
if (\$str) {
echo "Test str = ". \$str . PHP_EOL;
} else {
echo "Not found str". PHP_EOL;
exit(1);
}
\$mecab = new MeCab_Tagger(array('-O' => 'yomi'));
echo \$mecab->parse(\$str) . PHP_EOL;
EOL
$ php /tmp/test-mecab.php "雨を喜び、風を楽しみ。"
Test str = 雨を喜び、風を楽しみ。
アメヲヨロコビ、カゼヲタノシミ。