SpamAssassin 3.2用ルール作成スクリプト Version 0.4 2008-02-23 滝澤 隆史 taki _at_ 3ware.co.jp  このスクリプトのステータスはExperimentalです。  このスクリプトにより生成したルールはまだ十分にはテストおよび評価されていま せん。 ■概要  このスクリプトはスパムメールコレクションから日本語の単語を抽出して出現頻度 を調べて、SpamAssassin 3.2用のルールを作成するスクリプトです。 ■必要なもの - MeCab - Mecab用IPA辞書 - 日本語対応パッチのあたったSpamAssassin 3.2.x - Perlモジュール - Text::MeCab - Lingua::JA::Hepburn::Passport ■構成  次の二つのスクリプトから構成されます。   - sa-tokenizer.pl - sa-ja-testmaker.pl  前者はメールコレクションからトークナイズしたデータを生成します。  後者はトークナイズしたデータからSpamAssassin用のテストルールを作成します。 ■実行方法  まず、メールコレクションのメールを解析し、トークンに分解します。 $ ./sa-tokenizer.pl -r DIR -r 再帰的にディレクトリを検索します。 DIR 1ファイル1メールの形式のメールを格納しているディレクトリ 分解されたトークンは標準出力に出力されます。  この作業をスパムメールおよびハムメールそれぞれについて行います。  次に、スパムメールおよびハムメールのトークナイズしたデータのファイルを 与えて、テストルールを作成します。 $ ./make-body-rule.pl -s SPAMDIR -h HAMDIR -s SPAMDIR スパムメールコレクションが格納されている1メール1ファイル 形式のメールボックス -h HAMDIR ハムメールコレクションが格納されている1メール1ファイル 形式のメールボックス 生成したテストルールは標準出力に出力されます。  実行例を以下に示します。 $ ./sa-tokenizer.pl -r ~/Mail/spam > spam.txt The number of messages : 39525 The number of uniq messages: 28863 $ ./sa-tokenizer.pl -r ~/Mail/ham > ham.txt The number of messages : 4956 The number of uniq messages: 4778 $ ./sa-ja-testmaker.pl -s spam.txt -h ham.txt > body-ja.cf The spam words: The number of Japanese words : 1412565 The number of uniq words : 83553 The ham words: The number of Japanese words : 1841092 The number of uniq words : 197798 The number of removed words : 80325 The number of remaining uniq words: 3228 The number of made tests : 200 ■変更履歴 0.4 - 2008-02-23 - スクリプトを機能毎に二つに分けた。 - 本文が同一であるメールを除外するようにした。 - hamメールの重み付けを10倍に変更した。 - 生成するスコアの最大値を0.6に変更した。 - 生成するスコアの最小値を0.2に変更した。 0.3 - 2008-02-16 - hamメールによる補正の重み付けを3倍とした。 - 最大スコアと判定する順位を上位から5%とした。 0.2 - 2008-02-16 - hamメールによる補正を追加した。 0.1 - 2008-02-12 - 初期バージョン。