Google App Engineではpure-Pythonなライブラリしか使えないため、Google App Engineで形態素解析をする場合には、Yahoo!の形態素解析サービスに処理を投げているものが多い。そうなると当然、他のサービスに依存してしまうため、そのサービスが落ちたりすると困ったことになる。できれば自分で形態素解析をしたいのだが、自分で全て書くには手間がかかるし、MeCabやChasenなどはpure-Pythonなものではないため使えない。
そこで「TinySegmenter: Javascriptだけで実装されたコンパクトな分かち書きソフトウェア」のTinySegmenterをPythonで書いてみた。
tiny_segmenter_for_python.zip (以下の3つのファイルをまとめたもの)
使い方はsample.pyを見てもらえばわかるが、こんな感じ。
#!-*- coding:utf-8 -*- from tiny_segmenter import TinySegmenter ts = TinySegmenter() result = ts.segment(u"日本語の新聞記事であれば文字単位で95%程度の精度で分かち書きが行えます。") # 結果表示 for seg in result: print seg
日本語 の 新聞 記事 で あれ ば 文字 単位 で 9 5 % 程度 の 精度 で 分かち 書き が 行え ます 。
これでおおよそ問題なく分かち書きはできるのだが、「Yahoo!の形態素解析」を「Yahoo | ! | の | 形態 | 素解 | 析」と分けたり、「辞書無しの分かち書き」を「辞書無 | し | の | 分かち | 書き」と分けたり、ときどきおかしな分割をする。品詞情報がない点や精度の問題を考えるとMeCabやChasenを使いたくなるが、数千行レベルのソースをPythonに移植するとなると、そうとうめんどうだ。まぁ、良い勉強にはなるのだろうが、イマイチ割に合わない。
誰かpure-Pythonな日本語形態素解析ライブラリを書いてくれないかなぁ・・・・・。