2004-03-13(Sat) [長年日記]

_1 [bsfilter] --imap-auth auto

Smilezone::blogのおかげで勉強できた。

  • AUTHENTICATE命令のLOGINと、LOGIN命令は別
  • Net::IMAP#authenticate("login"...と、Net::IMAP#loginが、それぞれに対応
  • bsfilterは、--imap-auth loginと、--imap-auth logincで区別する
    • 引数の名前がよろしくない感じ
  • --imap-auth autoも追加
    • CAPABILITYを見つつ、"cram-md5"、"login"、"loginc"の優先順位で接続する
    • 失敗したら、次の優先順位の方法でトライ、というのはしない

_2 [bsfilter] --ignore系オプションベンチマーク

spam特有のノイズに弱くなるような気がして、--ignore-after-last-atag --ignore-plain-text-partは使っていないのだが、本当にそうなのかベンチマークした。使っても使わなくても一緒、というのが手元のデータでの結論。

TESTHOME="/home/nabeken/tmp/def"
OPTIONS="-v --homedir $TESTHOME"
rm -r $TESTHOME
find /home/nabeken/tmp/testcase/study_clean  -type f | xargs bsfilter $OPTIONS -c
find /home/nabeken/tmp/testcase/study_spam   -type f | xargs bsfilter $OPTIONS -s
bsfilter $OPTIONS -u
find /home/nabeken/tmp/testcase/study_clean  -type f | xargs bsfilter $OPTIONS --list-spam
find /home/nabeken/tmp/testcase/target_clean -type f | xargs bsfilter $OPTIONS --list-spam
find /home/nabeken/tmp/testcase/study_spam   -type f | xargs bsfilter $OPTIONS --list-clean
find /home/nabeken/tmp/testcase/target_spam  -type f | xargs bsfilter $OPTIONS --list-clean

clean/spam区別ずみの過去メイルを、学習用と判定ターゲット用に等分した。各フォルダのメイル数は、study_clean:2491、study_spam:877、target_clean:2491、target_spam:877。studyで学習し、study、targetの両方で判定した結果、判定ミスは--ignoreなしで52通、ありで53通で、誤差の範囲。どちらもfalse positive(誤爆)が1通、残りはfalse negative(見逃し)で、正解率は98.5%。サンプルが簡単過ぎるのかも。

3368通の学習、6736通の判定にかかった時間は、Athlon 1GHzで15分。0.1 sec/mailくらいのスピードだが、実運用ではスクリプトの起動、DBのopenの回数がもっと多いはずで、この数字は参考にならない。

本日のツッコミ(全3件) [ツッコミを入れる]
_ やまぐち (2004-03-16(Tue) 05:08)

--update/--auto-update系の利用による,還元がbsfilterの重要なポイントだと思うのですけれど,この評価では還元の際にノイズでtoken DBが撹乱されてしまうかどうかがわからないと思うのです.<br># しばらく首が回りそうにないから手が回らないなぁ... :<

_ nabeken (2004-03-16(Tue) 22:26)

問題にしている点がよく分からないので、どのようなテストを行うべきか教えて下さい。

_ やまぐち (2004-03-20(Sat) 05:13)

word saladの影響なんて関係ないのであれば,</BODY>とか</HTML>とかの後を無視する必要もない訳ですし,--ignore-plain-text-part, --ignore-after-last-atag, --ignore-bodyなんてのも要らないと思うのです.<br><br>他のBayesian spam filterでも,word saladの影響を無視できなくなってきている(spammerがfilter対策を行っている)のですから,やっぱり要るのかなと.<br>word saladがrandom stringならば問題ないのですが,英単語とか普通の日本語とか,辞書に実際に載っているようなtokenがsaladとして用いられると,bsfilterで、--auto-updateによる還元を行いながら処理をし続けた場合に,<br>・hamがspamとして誤認式される確率が徐々に高くなる<br>・spamがhamとして誤認式される確率が徐々に高くなる<br>と思うのです.結果,bsfilterのdefaultの閾値のままであれば,先ず擦り抜けが増えるという傾向が予想されます.(X-Spam-Probability の変化を観察した結果による)<br><br>で,実際に必要なのは,一通ずつ--auto-updateを行いながら辞書を鍛えつつ判定を続けた場合に,どのような違いがあるかなのです.<br>更に,傾向と対策を考える上では... spamの種類も選別しておいた上で結果を観察することが有効なのかなと思います.

[]

トップ «前の日記(2004-03-11(Thu)) 最新 次の日記(2004-03-14(Sun))»