bogofilterはベイズ推定をSPAMフィルターに応用したソフトウェアです。
MeCabは日本語を単語に分解し、品詞評価を行う形態素解析エンジンです。
大雑把に言うと、ベイズ推定利用の肝は単語毎に統計を取るところにあります。元来日本語は、欧米系の言語と違い、
単語を空白で区切らないという表記形式をとっており、そのままではこの単語毎の統計という処理がうまく働きません。そこで、
一続きに書かれた日本語の文を単語に区切るという操作(分かち書き)が必要になります。これを行うのが形態素解析エンジンです。
形態素解析エンジンとしては
kakasiや
ChaSenなどが知られています。
ここではMeCabを採用しました。
最近(2018現在)では解析精度の高いJUMANN++なるものもあるようです。(処理スピードに難有り?)
kakasiを使った日本語対応(bogofilter-1.2.4用kakasi-0.5 patch)はこちら
なお、このパッチのご利用はご自身の責任の範囲でお願いします。
$ tar zxf mecab-X.Y.tar.gz $ cd mecab-X.Y $ ./configure --with-charset=utf8 $ make $ make check $ sudo make install
$ tar zxf mecab-ipadic-2.7.0-XXXX.tar.gz $ cd mecab-ipadic-2.7.0-XXXX.tar.gz $ configure --with-charset=utf8 $ make $ sudo make install
$ tar jxf bogofilter-1.X.Y.tar.bz2 $ cd bogofilter-1.X.Y $ zcat ../bogofilter-1.X.Y+mecab-0.1.patch.gz | patch -p1 -T $ CFLAGS="-I/usr/local/include -DWAKATI" LDFLAGS="-L/usr/local/lib" LIBS="-lmecab" ./configure $ make $ sudo make installLinuxやSolarisでlibmecab.soが見つからないというエラーが出るときは
$ sudo ldconfigを試してからbogofilterを再makeしてみてください。
---- .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)と同時にまとめて実施しているためです。