2006年3月20日

[SpamAssassin-JP 105]SpamAssassin-3.1.1日本語対応パッチ(案、その1)

** SpamAssassin メーリングリスト **
** 注意:このメールへの返信は SpamAssassin-jp へ行きます **
滝澤です。

SpamAssassin-3.1.1への日本語対応パッチ案その1を作ってみました。
パッチは次の場所に置いてあります。
http://www.emaillab.org/spamassassin/

内容は下記の通りです。Kakasi, MeCab両対応です。
ご意見、人柱報告等お願いします。
特に久保さんには、パッチの内容に問題ないか確認をお願いします。
私見ですが、互換性に関してはall or nothing(オプションスイッチのオフ・オン)
で良いのではないかと思っています。
---------------------------------------------------------------------------
spamassassin-3.1.1-normalize-test1.patch (2006-03-20)

本家にマージして貰いやすいように以下のポリシーで作成する。

- 互換性のためデフォルトでは無効にする
- 無効にした場合のオーバーヘッドを最小にする
- 世界中の人が幸せになるものはコアなコードにマージする
- 日本人だけが幸せになるものはプラグインにする

久保さんのパッチからの変更点

- normalizeはコンフィグ・オプション"normalize_encoding"を"1"に設定する
ことにより有効になる。このとき、コンフィグファイルに記述されたパターン
は全てUTF-8の文字として扱われ、過去(生ベタ書き)とのの互換性は無くなる。
無効の場合は過去との互換性は保たれている。
例) local.cfに以下の行を追加する。
normalize_encoding 1
- 分かち書きはプラグインで有効になるようにする。
後で宣言した方が有効になる。
例) v310.pre あるいは testplugin.cf に以下のどちらかを記述する。
loadplugin Mail::SpamAssassin::Plugin::TokenizerMeCab
loadplugin Mail::SpamAssassin::Plugin::TokenizerKakasi
- normalize時に漢字で終わり次の行が漢字で始まる行はunfoldingする。
これによりrule判定時の単語の分断を防げる。
- ベイズのトークナイズを行うときに分かち書きを行う。

気になる点

- SAは初期化(コンフィグのロードなど)を行う前にメッセージのヘッダの解析を
行うため、そのままではヘッダのnormalizeが有効に働かない。
そのため、SpamAssassin->parse()内でinit()を呼び出すようにしたが、これが
問題(副作用)がないか調べる。
そもそも何でparse()では初期化していないのか疑問である。
- ベイズのトークナイズ前に全角空白文字を空白文字に置換した方がよいか?
- 「UTF-8の文字が含まれているか」のパターンマッチの一部を「UTF-8のCJK文字
が含まれているか」に一部書き換えてしまったが問題ないか?
- 英文はいい加減に書いているので見直しが必要。
---------------------------------------------------------------------------

--
TAKIZAWA Takashi(滝澤 隆史)
http://www.emaillab.org/

--
SpamAssassin メーリングリスト
http://mm.apache.jp/mailman/listinfo/spamassassin-jp

投稿者 xml-rpc : 2006年3月20日 01:59
役に立ちました?:
過去のフィードバック 平均:(0) 総合:(0) 投票回数:(0)
本記事へのTrackback: http://hoop.euqset.org/blog/mt-tb2006.cgi/41004
トラックバック
コメント
コメントする




画像の中に見える文字を入力してください。