経緯
PHP で日本語形態素解析が使いたい。
Yahoo!デベロッパーネットワーク – テキスト解析 – 日本語形態素解析 は手軽に使えそうだけど登録しないと使えないというのが好みじゃない。
MeCab と chasen は、Xrea で使えた実績があるらしいことがわかって、そっちを使うことにする。
MeCab を使うだけなら、CakePHP を使う必要はないが、元文章は RSSなどの XML または、XHTML から自動的に取得 → マルコフ連鎖でカオスな文章を生成 → つぶやく。という圧縮新聞みたいなのを作ってみたいと思った。
XML または XHTML の取得、蓄積は CakePHP で過去に作ったことがあるので、それを流用することにするのが CakePHP を使う理由。
Xrea + CakePHP + MeCab を使う上での問題点と解決方法
Xrea で mecab が使えるか?
→ /usr/local/bin/ 配下に mecab があることを確認。
Xrea はセーフモードのため、mecab を使うには、CGI モードで動作させる必要がある。
→ PHPをCGIとして動かす方法について – XREA&CORE SUPPORT BOARD
CakePHP で Session をファイルで管理している場合、CGI モードで動かすとパーミッションの問題でWarning がでる。
→ CakePHPクッキング – 投稿の詳細: Sessionをデータベースで管理する
MeCab で解析する処理が発生するときだけ CGI モードで動かしたい。
→ CakePHP + mod_rewrite の構成の場合、すべての基点が webroot/index.php になるので、すべての処理が CGI モードで動いてしまう。
→ <Location> ディレクティブ でなんとかならないかと、.htaccess をいじってみたけど、思い通りに動かず断念。 Apache Core Features
→ webroot 配下に、CGI モード用のディレクトリを作ってその配下に CGI モード用の.htaccess を配置、同ディレクトリ内に下記のような Cron で使うときのファイルを用意してそのファイルにアクセスする。あまりスマートではないが、個人API 的に生成文字を取得 or DBに保存 or API を使ってポストすることを考えているので、URL が美しくなくてもまぁよい。
<?php $_GET['url'] = "controller/action"; require_once dirname(dirname(__FILE__)) . "/index.php"; ?>
参考
日本語形態素解析
MeCab: Yet Another Part-of-Speech and Morphological Analyzer
chasen legacy — an old morphological analyzer
KAKASI – 漢字→かな(ローマ字)変換プログラム
その他参考
圧縮新聞
プログラミング関係ごちゃごちゃメモ: XREAでMeCab(PHPから使う)
分かち書きとマルコフ連鎖でカオスな文章を生成するまで | oitake blog
core – Apache HTTP サーバ
データファイルへのブラウザ経由(http://~)でのアクセスを拒否する方法
MeCab extensionを使ってTwitterで流行っているキーワードをクラウド化 – Do You PHP はてな
Yahoo!のAPIを利用してマルコフ連鎖で文章生成(php)
文章を自動生成するBot(人工無脳)まとめ – Twiwiki::TwitterまとめWikiサービス
トラックバック一覧
この記事にはトラックバックがついていません。