さくらインターネットのレンタルサーバーでPythonバインディングを使ってphpのMeCab APIを作りたい.
はじめに
生のphpでmecab使って形態素解析をしたい. phpファイルを置くだけでAPIが作れるのは魅力的ですね.
しかも,さくらインターネットレンタルサーバースタンダードプランにはデフォでMeCabが入ってるらしい.
というのも,以前,Yahooの日本語形態素解析API(http://developer.yahoo.co.jp/webapi/jlp/ma/v1/parse.html)を使っていたのですが,商用利用不可であるため,自分のアプリで使う際に使用できなかったので,手軽な形態素解析APIが必要になったのです.
ということで,以下のような方向で進めました.
phpバインディングのしかた
さくらインターネットにMecabのPHPExtensionのインストール - @chisei のはてなブログ
をみたらめんどくさそうなので,諦める.
なので,pythonバインディングで書くことにする.でも,Djangoかなんかでポート開いてやるのもめんどくさいので.
①pythonバインディングで形態素解析するpythonスクリプトを書く.
②phpのexec()でpythonスクリプトを実行して,返ってきたやつをXMLに整形して返す
ようにする.
問題点:
1.デフォのmecab辞書は EUC-JP 版の辞書なので,とりあえずUTF-8版をインストール
はてなブックマーク - さくらインターネットスタンダードプランで UTF-8 の MeCab を使う際のメモ « ゆっくり…して…イってネ!
2. MeCabのPythonバインディングが入ってないのでインストールしようとする
MeCabとMeCabPythonバインディング - rokujyouhitoma's blog
もちろん権限がないのでインストールできない(´・ω・`)
3. HOMEディレクトリにモジュールをインストールする
さくらのレンタルサーバで Python 外部モジュールを使う
インストールの時に
$ python setup.py install --home=$HOME
pythonのパスをスクリプトに追加してあげる
sys.path.append('~/lib/python')
で結局スクリプトはこんな感じ(words.py)
#!/usr/bin/env python # -*- coding: utf-8 -*- import sys import os sys.path.append('~/lib/python') import MeCab dicdir = os.path.expanduser('~/lib/mecab/dic/ipadic-utf8') m = MeCab.Tagger ("-Ochasen -d%s" % dicdir) print m.parse ("今日もしないとね")
4. phpでexec( )
exec('python words.py');
しても結果が取れない(´・ω・`)
php経由だとPythonのpathが有効にならないみたい...
結局一旦ファイルを経由して
exec(mecab xxx.txt);
...いかんでしょ