SKKでGoogle日本語入力APIを使う

前回の続き
http://d.hatena.ne.jp/osanine/20101003


前回pyskkservを作ったので、今回はGoogle日本語入力APISKKに多文節の変換を実現するというなんともあれな機能を実装してみます。


今回はGoogle IMEAPIを使います。
http://www.google.com/intl/ja/ime/cgiapi.html


変換したい文字列を送ると変換候補がJSONで送られてくるという面白いAPIです。


変換の度にリクエストを投げるため、あんまりやるとIP制限とかを食らう可能性もあるのでその辺は自己責任でお願いします。あと変換を押してから候補が出るまでが非常に遅くなります。


本当にこの機能が使いたい人はmecab-skkserv[1]なり別のものを使うべきだと思います(


多文節の変換となると例えば、「たけやぶやけた」だと{竹薮/たけやぶ}{焼けた/やけた}のように文節ごとに候補が複数あることが多々ありますが、SKKにはそんな高級な機能は付いていませんので今回は全ての組み合わせを返すというなんとも力技な方法で実装しました。


なので長い文章を変換すると変換候補数が爆発します。ただ大抵の場合は最初のものが一番それらしい候補なので結構なんとかなったりもします。


ちなみに送り仮名を含む時は変換してもちゃんとした候補が出ないため、特に何もしないようにしています。

あとskkservは文字列をeuc-jpに一度変換しないといけないので、♡や♬などUnicode固有の記号類は一切出ません。


例)
input: たけやぶやけた
output: 1/竹やぶ焼けた/竹藪焼けた/竹薮焼けた/たけやぶやけた/タケヤブヤケタ/


input: にわにはにわにわとりがいる
output: 1/庭には二羽鶏がいる/庭には二羽ニワトリがいる/庭には二羽鶏が居る/にわにはにわにわとりがいる/ニワニハニワニワトリガイル/


まあここまでするならSKKじゃなくてATOKなり別のものを使えという話ですね、はい。


というわけでソースはこちら
http://github.com/osa9/pyskkserv


前回と比較して、
mod/GoogleAPI.pyの追加
pyskkserv.pyにモジュールの条件を追加
しただけです。


[1] http://chasen.org/~taku/software/mecab-skkserv/