としたにあんの左脳

備忘録です.

さくらインターネットのレンタルサーバーでPythonバインディングを使ってphpのMeCab APIを作りたい.

はじめに

生のphpmecab使って形態素解析をしたい. 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. MeCabPythonバインディングが入ってないのでインストールしようとする
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 ("今日もしないとね")


これでpythonで実行すればMeCabが使える.

4. phpでexec( )

exec('python words.py');

しても結果が取れない(´・ω・`)

php経由だとPythonのpathが有効にならないみたい...

結局一旦ファイルを経由して

exec(mecab xxx.txt);

...いかんでしょ