分かち書きに MeCab を使うパッチを更新

分かち書きに MeCab を使うパッチを、MeCab 0.91、POPFile 0.22.4 に対応したものに更新した。(POPFile フォーラムへのポスト

前回からの主な変更点は、

  • MeCab 0.91 に対応(というか、0.8x では動かない)
  • POPFile 0.22.4 に対応
  • MeCab がインストールされていなければ Text::Kakasi を使うように
  • MeCab も Text::Kakasi もインストールされていなければ文字種ごとに分割(ただし漢字は 2 文字ごとに分割)するように

というところ。文字種ごとに分割する部分は、浅倉さんのkakasiなしで使うためのパッチを若干修正したものを取り込んでみた。

MeCab 0.91、mecab-perl (MeCab.pm) 0.91 がインストールされている必要があるが、若干の速度向上も見られるので興味のある方はどうぞ。使用する際には、上に書いたように辞書の編集をお忘れなく。

Kakasi に比べて大きな速度向上が見込めるのではないかと思っていたのだけれど、私の環境でテストした限りでは思ったほどの変化はないようだ。単純に分かち書き部分だけを比較すると、MeCab の方が 2 倍くらい速いのだが、POPFile でのメール処理全体で見ると 1 割速いくらいに薄められてしまう。精度面の影響も含めて、もう少し検証してみる必要がありそうだ。

CPAN に公開されている Text::MeCab というモジュールの方が MeCab.pm よりも速いということで気になっているのだけれど、分かち書きした結果だけを出力してくれるという機能はないようで、得られたノードの surface を順につないでいくという処理を書いたらかえって遅くなってしまった(当たり前か……)。私が見つけられていないだけかもしれないけれど、速く動くというのは非常に気になるところ。