bogofilterはベイズ推定をSPAMフィルターに応用したソフトウェアです。
kakasiはもともとは日本語の漢字仮名まじり文をひらがな書きやローマ字に変換するソフトです。
文を変換する際、単語に分解(分かち書き)する機能を持つことから、分かち書き機能単独で出力が得られるよう拡張が行われたものです。
bogofilterにおいて、ベイズ推定利用の肝は単語毎に統計を取るところにあります。元来日本語は、欧米系の言語と違い、
単語を空白で区切らないという表記形式をとっており、そのままではこの単語毎の統計という処理がうまく働きません。そこで、
一続きに書かれた日本語の文を単語に区切るという操作(分かち書き)が必要になります。ここにkakasiの分かち書き機能が使われます。
パッチのオリジナルがbogofilter-1.0.1までしか
対応していない(2012/12/04現在)ため、最新の1.2.4にあたるように手をいれたものです。
パッチのロジカルな部分には手を入れていないため、もしかしたら不具合を起こしているかもしれません。
でも、自分のところではそれなりに動いてます(^^;
MeCabを使った日本語対応(bogofilter+MeCab patch)はこちら
このパッチのご使用はご自身の責任の範囲でお願いします。
$ tar zxf kakasi-2.3.4.tar.gz $ cd kakasi-2.3.4 $ ./configure $ make $ sudo make installもし、以下のようなエラーで最後のlibraryのリンクに失敗するとき(MacOSX 10.7)
ld: can't use -undefined warning or suppress with -twolevel_namespace collect2: ld returned 1 exit status make[2]: *** [libkakasi.la] Error 1 make[1]: *** [all-recursive] Error 1 make: *** [all-recursive-am] Error 2失敗した直後にこのパッチを当てて試してみます
... $ pwd kakasi-2.3.4 $ patch < ../kakasi-2.3.4-libtool.MacOSX.diff $ make $ sudo make install
$ tar jxf bogofilter-1.X.Y.tar.bz2 $ cd bogofilter-1.X.Y $ zcat ../bogofilter-1.X.Y+kakasi-0.5.patch.gz | patch -p1 -T $ CFLAGS="-I/usr/local/include" LDFLAGS="-L/usr/local/lib" ./configure $ make $ sudo make install
---- .procmailrcの抜粋 ---- #### bogofilter passthrough-update #### #:0fw :0Efw | bogofilter -p -e -l # -f)isher, -p)assthrough -u)pdate, -l)og -e)xitcode 0 for spam and ham # -v)erbose #### begin error catcher #### :0e { EXITCODE=75 HOST } #### end error catcher ####※-u (update) してないのは、一日一回 DBのバックアップ、メンテナンス(bogoutil)と同時にまとめて実施しているためです。
kakashiはこのパッチを当てた方が良いかもしれません。(bogofilterがcore吐くとき)