bogofilter + kakasi

kakasi-0.5パッチ適用時のご注意
kakasi-0.4パッチ以前はデータベースに保存される漢字コードをeuc-jpに変換していましたが、 bogofilter-0.95.0以降でオリジナルがunicode対応されました(データベースにutf-8で保存できるようになりました)。 そこで、kakasiパッチでもそれにあわせてutf-8で保存できるように変更しました。 そのためkakasi-0.4以前を使用して保存されたデータベースはそのままでは使用できません。 例えば以下のような方法でデータベースをutf-8に変換する必要があります。
    bogoutil -d wordlist.db > wordlist.raw.txt
    iconv -f euc-jp -t UTF-8 < wordlist.raw.txt > wordlist.UTF-8.txt
    bogoutil -l wordlist.db.new < wordlist.UTF-8.txt
ただしこの方法では識別不能なコードが含まれていた場合変換できないこともありますので、データベースを一から作りなおしたほうが よさそうです。

これはなに?

bogofilter で処理中のメッセージがiso-2022-jpの場合に kakasiのわかち書 き (kakasi -w)を使用するようにするパッチです。 出力(~/.bogofilter/{spam,good}list.db)はeuc-jpに変換しています。 出力(~/.bogofilter/wordlist.db)はutf8に変換されます。

さて、これで何が嬉しいかというと、kakasiで単語を分割するので、日本語の 単語についてもそれなりにデータベースに登録されることです。 以下がオリジナルとの差分詳細です。

ダウンロード

必要なもの

インストール

下記のような感じでインストールされます。
% tar zxvf bogofilter-1.X.Y.tar.gz
% cd bogofilter-1.X.Y
% zcat ../bogofilter-1.X.Y+kakasi-0.5.patch.gz | patch -s -p2
% ./configure
% make
% su
# make install

使い方

オリジナルと同様

履歴

kakasi-0.5
オリジナルがutf8対応したためそれにあわせてわかち書き後の漢字コードをeuc-jpからutf8に変更
Content-Type:ヘッダでcharsetが指定されない場合のデフォルトのcharsetをiso-2022-jpに変更
kakasi-0.4
SJIS bodyのときにsegfaultする問題を修正
kakasi-0.3
ヘッダのMIMEエンコーディングがbogofilter-0.15.0以降扱える ようになったため、iso-2022-jp エンコーディングのkakasiでの処理方法を変 更
kakasi-0.2
iso-2022-jp Bエンコーディングのヘッダを処理できるようにした
kakasi-0.1
初期バージョン

bogofilterの内部解析メモ

以下オリジナル版bogofilter-1.0.1の解析結果です。
ヘッダの処理
=?
ボディの処理
Content-Typeがapplication/*, image/*, audio/*, video/*の場合は処理対象外(マルチパートの場合、各パートが前期の場合処理対象外)
ただし、charsetの処理はこれとは異なり、ヘッダ中のcharset=XXXX で指定されたcharsetが変換元コードとなり、ボディ中の文字はXXXXからutf-8へ変換される。

TODO(要望があればやるかも)


ono @ ono.org
$Id: index.html,v 1.45 2006/03/16 03:20:15 ono Exp $