Google App Engineではpure-Pythonなライブラリしか使えないため、Google App Engineで形態素解析をする場合には、Yahoo!の形態素解析サービスに処理を投げているものが多い。そうなると当然、他のサービスに依存してしまうため、そのサービスが落ちたりすると困ったことになる。できれば自分で形態素解析をしたいのだが、自分で全て書くには手間がかかるし、MeCabChasenなどはpure-Pythonなものではないため使えない。

そこで「TinySegmenter: Javascriptだけで実装されたコンパクトな分かち書きソフトウェア」のTinySegmenterをPythonで書いてみた。

(ちなみに、Perl版Ruby版は既にあった。)


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な日本語形態素解析ライブラリを書いてくれないかなぁ・・・・・。