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で単語を分割するので、日本語の
単語についてもそれなりにデータベースに登録されることです。
以下がオリジナルとの差分詳細です。
- iso-2022-jpなパートに対してkakasiのわかち書きを行う
- Content-Type:ヘッダでcharsetが指定されない場合のデフォルトのcharsetをiso-2022-jpに変更(kakasi-0.5以降)
- iso-2022-jpなパートを出力時(データベース登録時)にutf8へ変換(kakasi-0.4パッチ以前はeuc-jpへ変換)
- ワードサイズの最大長を256文字(半角)に変更(オリジナルは30文字)
- iso-2022-jp Bエンコーディングのsubject,to,fromをデコード (kakasi-0.2以降)
ダウンロード
必要なもの
インストール
下記のような感じでインストールされます。
% 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(要望があればやるかも)
- chasen対応
- 行の折り返しに対応してないのでそこで単語が切れる
- multipart対応
ono @ ono.org
$Id: index.html,v 1.45 2006/03/16 03:20:15 ono Exp $