Keep on moving

あんまりまとまってないことを書きますよ

全裸でIgoですね。わかります。

11/27に駒込py*1に参加させていただいてきました。その際の作業成果です。

拙作のpyzenraはyahooの形態素解析apiを使っています。
他にもないか軽く検索しましたら、igo-pythoを見つけました。
JavaのプロダクトIgoをpure pythonに移植したもので、GAE/pyでも使えるとのこと。
しかもJava版IgoのページによるとMecab相当の形態素解析ができるとのこと。
すばらしい!というわけで堪らずこれでzenrizeしてみました。

コード

from igo.Tagger import Tagger

class ZenraIgo(object):
    def __init__(self, dataDir, position=u'動詞', text=u'全裸で', gae=False):
        self.dataDir = dataDir
        self.position = position
        self.text = text
        self.gae = gae

    def zenrize(self, sentence):
        if ( len(sentence) == 0 ):
            raise Exception('Japanese sentece is necessary!')

        result = u''

        for m in Tagger(self.dataDir, gae=self.gae).parse(sentence):
            # 形態素の品詞を取得
            position = m.feature.split(',')[0]
            if position == self.position :
                # ターゲットとなる品詞なら文字列を前に追加
                result += self.text
            result += m.surface

        return result

if __name__ == "__main__":
    z = ZenraIgo('ipadic_gae', gae=True)
    print z.zenrize(u'お腹がすいたのでスパゲッティが食べたい')
    # お腹が全裸ですいたのでスパゲッティが全裸で食べたい

    n = ZenraIgo('ipadic',position=u'名詞', text=u'夜の')
    print n.zenrize(u'お腹がすいたのでスパゲッティが食べたい')
    # 夜のお腹がすいたので夜のスパゲッティが食べたい

もちろんpyzenraモジュールに取り込んでみました。 > https://bitbucket.org/ehren/pyzenra/
悪のりしてpypiにもあげてみました。 > http://pypi.python.org/pypi/pyzenra
以下のようにすればインストールできます。上記のigo-pythonも入るように設定済みです。

pip install pyzenra

もちろん、これはジョークアプリなのでお叱りなどありましたらpypiから削除します。

参考

まとめ

igo-pythonはpure Pythonですが、速度もなかなかのものです。
これは、なんとかしてGAE/Pyで全文検索やってみたいですね。
というわけで明日からはGAE/Pyで全文検索に着手したいと思います。
まずは転置インデックス アルゴリズムの実装から手を付けてみます。

最後になりますがigo-pythonを実装してる @hideaki_t さんありがとうございました。
今後に期待しています。

*1: 駒込在住じゃないけど参加させていただきました。python好きな駒込周辺にすんでる方も参加しましょう!