Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

MH pick with Bayes' Theorem

20 views
Skip to first unread message

Yasushi Shinjo

unread,
May 13, 2003, 3:23:39 AM5/13/03
to
新城@筑波大学情報です。こんにちは。

ベイズの定理で spam を検出するような MH の pick コマンド相当
のプログラムは、どこかにないでしょうか。自動的に分類するとい
うよりは、pick してscan して目でざっと見てから refile するな
り rmm するなりしたいわけです。

procmail で「怪しい」とマークして、普通の pick 取り出すとい
うのでもいいのかもしれません。

ベイズの定理を使うフィルタは、全然使ったことはないのですが、
どのくらい重たいのでしょうか。重たいなら pick より procmail
でやってもらった方が待ち時間がないし、再計算もしないので良さ
そうではあります。

ベイズの定理を使うものは、話としてはちらほら聞くのですが、メー
ル・リーダなどに組込まれていて、日本語も通るようなものは存在
するのでしょうか。

ここ最近、英語の spam が増えていますが、英語だけでもかなりう
れしいということはあります。

\\ 新城 靖 (しんじょう やすし) \\
\\ 筑波大学 電子・情報       \\

Kawaguti Ginga

unread,
May 14, 2003, 8:07:05 AM5/14/03
to
川口です

<YAS.03Ma...@kirk.is.tsukuba.ac.jp>の記事において
y...@is.tsukuba.ac.jpさんは書きました。


> ベイズの定理で spam を検出するような MH の pick コマンド相当
> のプログラムは、どこかにないでしょうか。自動的に分類するとい
> うよりは、pick してscan して目でざっと見てから refile するな
> り rmm するなりしたいわけです。

例えば:

* procmail で "仮ごみフォルダ" に振り分けてそちらを
ちょろちょろチェック

* bayesian filter は通すだけで,すぐには自動振り分けせず,
MUA の機能で X-SpamProbe: みたいなヘッダを検索して判断

ま,どちらでも実質的に同じことだと思いますが.

# 前者でやるつもりだったのですが,spamprobe で閾値を厳しめに
# 設定しなおしてからは仮ごみフォルダはほとんど
# チェックしなくなってしまいました.いかんですね...

たまにはミス判断してくれないとチェックする情熱が
なくなってしまうんですよね...

> ベイズの定理を使うフィルタは、全然使ったことはないのですが、
> どのくらい重たいのでしょうか。重たいなら pick より procmail
> でやってもらった方が待ち時間がないし、再計算もしないので良さ
> そうではあります。

手元の spamprobe(0.7c)は DB が現在 80MB弱ありまして,
メールが届く度にそれを漁るので,結構重いといえるかもしれません.

# HDD が "ガー" というのが biff 替わりになってます.

いい加減,spamprobe のバージョンもあげないといけないのだけど,
DB 構成し直さないといけないんかな...

> ベイズの定理を使うものは、話としてはちらほら聞くのですが、メー
> ル・リーダなどに組込まれていて、日本語も通るようなものは存在
> するのでしょうか。

"日本語として" の処理はしてくれないものがほとんどですが,
実用上はそれなりに使えています.
chasen などを前段にかませている方もいらっしゃるようで,
その方がよりマトモに動作するのだろうとは思いますが.
--
∧∧
Zzz.. (- - )⌒⌒⊇~ 川口 銀河
############## gi...@athena.club.ne.jp

Hiroshi Fujishima

unread,
May 14, 2003, 3:15:00 PM5/14/03
to
gi...@athena.club.ne.jp (Kawaguti Ginga) writes:

>> ベイズの定理を使うものは、話としてはちらほら聞くのですが、メー
>> ル・リーダなどに組込まれていて、日本語も通るようなものは存在
>> するのでしょうか。
>
> "日本語として" の処理はしてくれないものがほとんどですが,
> 実用上はそれなりに使えています.
> chasen などを前段にかませている方もいらっしゃるようで,
> その方がよりマトモに動作するのだろうとは思いますが.

http://www.geocities.co.jp/SiliconValley-PaloAlto/7043/#spamfilter.el

というのがあります。

--
Hiroshi Fujishima

Yasushi Shinjo

unread,
Jun 6, 2003, 10:11:48 AM6/6/03
to
新城@筑波大学情報です。こんにちは。

In article <YAS.03Ma...@kirk.is.tsukuba.ac.jp>


y...@is.tsukuba.ac.jp (Yasushi Shinjo) writes:
> 新城@筑波大学情報です。こんにちは。
> ベイズの定理で spam を検出するような MH の pick コマンド相当
> のプログラムは、どこかにないでしょうか。自動的に分類するとい
> うよりは、pick してscan して目でざっと見てから refile するな
> り rmm するなりしたいわけです。

この質問に対して、電子メールで bsfilter というプログラムとそ
の MH での利用方法を教えてもらいました。試してみたのですが、
これは、「すばらしい」の一言につきます。情報を下さったずけら
んさん、bsfilter の作者の NABEYA Kenichi さん、ありがとうご
ざいます。

http://www.h2.dion.ne.jp/~nabeken/bsfilter/
------------------------------------------------------------
bsfilterとは

* spamと、そうではない正当なメイル(このページではcleanと呼
ぶ)を自動判別するフィルタ
* 日本語に対応している
* rubyで書かれている
* ~/.procmailrcから呼び出して使用することが想定されている
* 動作はスパムへの対策 ---A Plan for Spam、 ベイジアンフィ
ルタの改善 --- Better Bayesian Filtering、 Sapm Detection
を基本としている
* GPLのもと、配布されている
------------------------------------------------------------

------------------------------------------------------------
ず's tiny software
http://www.zukeran.org/shin/software/
SPAMをpickするmh用のスクリプト(bsfilter利用版)
http://www.zukeran.org/shin/software/pick-spam3
沖縄Linuxユーザー会(OLUG)のbsfilterのPukiWiki
http://www.olug.gr.jp/index.php?%5B%5Bbsfilter%5D%5D
------------------------------------------------------------

bsfilter は、学習させてから使う必要があります。今までこんな
こともあろうかと、spam メールを消さないでため込んでいたかい
がありました。spam 以外のメールも、フォルダを分割して保存し
ていたのですが、一部だけ学習させるとspam と判定されてしまう
ことがありますね。今はあんまり考えないで学習させましたが、も
う少し考えて学習させた方がいいかもしれません。postmaster の
メールの内容のコピーが入っているものを避けるとか。

ずけらんさんの pick-spam3 は、日常的に使うには便利そうです。
MH の pick コマンドとは、使い方は違います。

pick に似せるには、こんな感じです。
------------------------------------------------------------
#!/bin/sh

bsfilter=$HOME/bin/bsfilter.1.31

dir=`mhpath`
cd $dir
msgs=`pick $@`

# combined probability Mail/inbox/1245 1 0.000000

$bsfilter $msgs |
while read dummy1 dummy2 file nospam spam ;
do
rate=`echo $spam | sed 's/\\.//;'`;
if [ "$rate" -gt 90000 ] ; then
echo $file
fi
done
------------------------------------------------------------

> ベイズの定理を使うものは、話としてはちらほら聞くのですが、メー
> ル・リーダなどに組込まれていて、日本語も通るようなものは存在
> するのでしょうか。

漢字のあつかいですが、bsfilter は、bigram(連続する漢字2文字)
と MeCab(和布蕪)を呼び出す方法をサポートしています。MeCab の
方は、つい最近加わったみたいです。

http://nabeken.tdiary.net/20030531.html

MeCab (和布蕪) は、ChaSen の高速化版です。

http://cl.aist-nara.ac.jp/~taku-ku/software/mecab/

Yasushi Shinjo

unread,
Jun 14, 2003, 3:44:06 PM6/14/03
to
新城@筑波大学情報です。こんにちは。

In article <YAS.03Ju...@kirk.is.tsukuba.ac.jp>


y...@is.tsukuba.ac.jp (Yasushi Shinjo) writes:
> 新城@筑波大学情報です。こんにちは。

> http://www.h2.dion.ne.jp/~nabeken/bsfilter/


> bsfilterとは
> * spamと、そうではない正当なメイル(このページではcleanと呼
> ぶ)を自動判別するフィルタ
> * 日本語に対応している
> * rubyで書かれている

その続報です。

> pick に似せるには、こんな感じです。

この pick (p-pickという名前とします)といっしょに、次のような
csh の alias を定義しました。

alias p-set 'set p=`p-pick \!*`'
alias p-scan 'p-set \!*; if( "$p" != "" ) scan $p'
alias p-refile 'if( "$p" != "" ) refile $p +junk; unset p;'
alias spam 'bsfilter -s `mhpath \!*`; bsfilter -u'
alias nospam 'bsfilter -c `mhpath \!*`; bsfilter -u'

p-set は、シェル変数 p に spam メッセージのリストをセットし
ます。p-scan で、spam らしい記事を表示します。中では p-set
を呼んでいます。p-set や p-scan は、inbox 全体をやると重
たいので、
% p-scan last:20
のように、最新の 20 個だけ調べるといったこともできます。

それであっていれば p-refile で、それを +junk に送っています。
時々、間違うので、その時には、そのメッセージを spam, nospam
で学習させます。

こんな使い方をしていると、主に spam の方だけ学習させることに
なります。こういう使い方で、大丈夫なんですかね。1週間くらい
使った感じでは、わりと平気なんですけれど。

ちょっと怖かったのは、最初、+junk の spam と日本語のまともな
メッセージだけ学習させたら、英語のメッセージがバンバン spam
と判定されて。慌てて過去のまともな英語のメッセージを学習させ
ました。

あと、何回かしつこく学習させても、spam と判定してくれないも
のもありますね。

Yasushi Shinjo

unread,
Jun 19, 2003, 11:52:59 PM6/19/03
to
新城@筑波大学情報です。こんにちは。

In article <YAS.03Ju...@kirk.is.tsukuba.ac.jp>
y...@is.tsukuba.ac.jp (Yasushi Shinjo) writes:

> > http://www.h2.dion.ne.jp/~nabeken/bsfilter/


> > * spamと、そうではない正当なメイル(このページではcleanと呼
> > ぶ)を自動判別するフィルタ
> > * 日本語に対応している
> > * rubyで書かれている

さらに続報です。どうもうまく弾けない spam があるかと思ったら、
HTML で書かれていて、コメントで単語を分割していました。こん
な感じ。

元の文書:
This is a pen.

分割された文書:
Th<!--jie0ln2fap4-->i<!--kh1m5v2azsmnpk-->s is a
pe<!--662ypx2t9efl-->n.

敵もさるもの、というか、コメントバリバリの HTML は弾きやすい
というか。

みなさん、コメントバリバリのメッセージはどうしています?

IKEDA Kenji

unread,
Jun 20, 2003, 12:11:39 AM6/20/03
to
In article <YAS.03Ju...@kirk.is.tsukuba.ac.jp>,
y...@is.tsukuba.ac.jp (Yasushi Shinjo) writes:

> みなさん、コメントバリバリのメッセージはどうしています?

近々の3通ほどを調べましたが、どれも

1. multipart じゃないただの HTML メイルだった。
2. IDENT user が CacheFlowServer だった。
3. HELO ホストが FQDN でもアドレスでもなかった。

ということで、悲しくなるほどのスコアでもってゴミ箱へ直行してました。

--
池田研二 稲城駅前在住

to...@lbm.go.jp

unread,
Jun 20, 2003, 3:38:08 AM6/20/03
to
In article <3988483...@insigna.ie.u-ryukyu.ac.jp> ko...@ie.u-ryukyu.ac.jp writes:
>> こういうのって一体何を狙ってるんでしょうね?
>> 内容解析して要らんのを除去するソフトの掏り抜けを狙ってるとか?
>ってことなんでしょうねぇ。
>> 実効性あるんだろうか?
>ないでしょう。

ということで、とりあえず納得してたら、
fj.mail.systemで、

In article <YAS.03Ju...@kirk.is.tsukuba.ac.jp> (Subject: Re: MH pick with Bayes' Theorem) y...@is.tsukuba.ac.jp writes:
>> > * spamと、そうではない正当なメイル(このページではcleanと呼
>> > ぶ)を自動判別するフィルタ
>> > * 日本語に対応している
>> > * rubyで書かれている
>さらに続報です。どうもうまく弾けない spam があるかと思ったら、
>HTML で書かれていて、コメントで単語を分割していました。

という例が紹介されていました。
それなりの効果はあるようですね。

つい昨日、やたら無意味な文字列が書いてあるspamが来たので、
よく見てみたら、無意味な文字列の前後が
<font color="white">

</font>
で挟まれていました。
(私はHTMLメールはソースだけが見える環境になっています)

内容解析ツールの統計情報を混乱させようという魂胆のようです。

戸田 孝@滋賀県立琵琶湖博物館
to...@lbm.go.jp

Yasushi Shinjo

unread,
Jun 20, 2003, 12:30:20 PM6/20/03
to
新城@筑波大学情報です。

すみません。訂正です。

In article <YAS.03Ju...@kirk.is.tsukuba.ac.jp>
y...@is.tsukuba.ac.jp (Yasushi Shinjo) writes:
> さらに続報です。どうもうまく弾けない spam があるかと思ったら、
> HTML で書かれていて、コメントで単語を分割していました。

> 分割された文書:
> Th<!--jie0ln2fap4-->i<!--kh1m5v2azsmnpk-->s is a
> pe<!--662ypx2t9efl-->n.

と書きましたが、それは bsfilter でちゃんと扱えます。作者のな
べやさんから連絡いただきました。その手の弾けないものが2通続
けて来たので、そうかと勘違いしました。

In article <86u1al2...@poe.mob.or.jp>


IKEDA Kenji <noro...@mob.or.jp> writes:
> > みなさん、コメントバリバリのメッセージはどうしています?
> 近々の3通ほどを調べましたが、どれも
> 1. multipart じゃないただの HTML メイルだった。
> 2. IDENT user が CacheFlowServer だった。
> 3. HELO ホストが FQDN でもアドレスでもなかった。
> ということで、悲しくなるほどのスコアでもってゴミ箱へ直行してました。

このスコアは、ベイズの定理ではなくて、別のプログラムで付けて
要るわけですね。

MH ではねているので、HELO も IDENT も調べられないなあ。
procmail でも遅いんですよね。

Yasushi Shinjo

unread,
Jul 26, 2003, 2:31:21 PM7/26/03
to
新城@筑波大学情報です。こんにちは。

bsfilter ですが、どんどん更新されていきますね。最新は、7月13
日に出た 1.33.4.1 。

http://www.h2.dion.ne.jp/~nabeken/bsfilter/

私は、bsfilter.1.31 を使っているのですが、この間まで間違った
使い方をしているのに気が付きませんでした。具体的には、検索す
る時には、--method g (1.31 のデフォルト) で、データベースを
作り直す時には --method rf でやっていました。スクリプトが別
なので気が付かなかったんです。

それで、間違いに気が付いて修正したら、逆に成績が悪くなってし
まいました。それで、また間違った状態に戻したのでした。まあ、
道具だからいいですよね。

Taku

unread,
Jul 26, 2003, 9:23:42 PM7/26/03
to

Yasushi Shinjoさんの<YAS.03Ju...@kirk.is.tsukuba.ac.jp>に関する投稿です。


=>bsfilter ですが、どんどん更新されていきますね。最新は、7月13
=>日に出た 1.33.4.1 。
=>
=>http://www.h2.dion.ne.jp/~nabeken/bsfilter/
=>
=>私は、bsfilter.1.31 を使っているのですが、この間まで間違った
=>使い方をしているのに気が付きませんでした。具体的には、検索す
=>る時には、--method g (1.31 のデフォルト) で、データベースを
=>作り直す時には --method rf でやっていました。スクリプトが別
=>なので気が付かなかったんです。
=>
=>それで、間違いに気が付いて修正したら、逆に成績が悪くなってし
=>まいました。それで、また間違った状態に戻したのでした。まあ、
=>道具だからいいですよね。
つい最近,1.33を使いはじめました。
#ベータ版はちょっと恐い。
いままで悩まされていたスパムがうそのようになくなりました。

これまで,スパムに絶えられらくなると新しいフリーメールアドレスに
乗り換える方法をとってきたのですが,これで気に入ったアドレスを
使い続けることができます。
newsに投稿するとスパムの数が飛躍的に増加するので,newsは
アドレス集めの標的になっているのだと思いますが,
これもなかなか止められず,bsfilterのおかげで
あまり気にせずに投稿できるようになりました。

procmailで使っていますが,procmailrc用のレシピを
もっと紹介していただけるとありがたいです。
#未承認,韓国語・中国語メール,ngwordsの設定はしています。


□■ Taku t...@pop.707.to
■□■ powered by AMD K6-266 with FreeBSD 4.8-RELEASE

Shinji KONO

unread,
Jul 26, 2003, 9:26:10 PM7/26/03
to
河野真治 @ 琉球大学情報工学です。

In article <YAS.03Ju...@kirk.is.tsukuba.ac.jp>, y...@is.tsukuba.ac.jp (Yasushi Shinjo) writes

> それで、間違いに気が付いて修正したら、逆に成績が悪くなってし
> まいました。それで、また間違った状態に戻したのでした。まあ、
> 道具だからいいですよね。

ありがち...

最近は二つのアドレスに同時に来た奴は排除するようにしてます。

でも、これって、やっぱり根本的に直さないとだめなんじゃないか
なぁ。メールを送る権利みたいなのを送信ID込で配布するような感
じのシステムにしないとだめなような気がする。

日本からのが少ないのは少しは救いだが、人間って性悪だ
ってのが良くわかる現実ですね。

---
Shinji KONO @ Information Engineering, University of the Ryukyus,
PRESTO, Japan Science and Technology Corporation
河野真治 @ 琉球大学工学部情報工学科,
科学技術振興事業団さきがけ研究21(機能と構成)

Yasushi Shinjo

unread,
Jul 28, 2003, 1:20:56 AM7/28/03
to
新城@筑波大学情報です。こんにちは。

In article <bfv9iu$qo4$2...@news522.nifty.com>
t...@pop.707.to (Taku) writes:
> つい最近,1.33を使いはじめました。
> いままで悩まされていたスパムがうそのようになくなりました。

ほんと、spam がよく取れて、楽しくなりますよね。

> #ベータ版はちょっと恐い。

私の見た感じだと、ベータ版といっても、新しい機能が入ったばか
りという意味じゃないですかね。

> procmailで使っていますが,procmailrc用のレシピを
> もっと紹介していただけるとありがたいです。

bsfilter は、~/.procmailrc には特に凝った設定をしなくてもい
いというのが、うれしいんじゃないですか。調整するとすると、
method と閾値。私は、MH の pick 風にして使っているのですけど。

> #未承認,韓国語・中国語メール,ngwordsの設定はしています。

学習させると、こういう単語にも反応してくれて、そういう
procmailrc の設定をしなくてもよくなるはずです。といいつつ、
私の場合も、昔設定したその手のフィルタは、残ったままなんです
けれど。これから始める人は、procmail のレシピに凝るよりは、
いきなり bsfilter でいいんじゃないかと思います。

ngwordsって何ですか。

In article <3988659...@insigna.ie.u-ryukyu.ac.jp>
ko...@ie.u-ryukyu.ac.jp (Shinji KONO) writes:
> 最近は二つのアドレスに同時に来た奴は排除するようにしてます。

「同時」といいつつ、時間差はあるわけですよね。
bsfilter 使うと、そういうのはあんまり考えなくともよくなります。

> 日本からのが少ないのは少しは救いだが、人間って性悪だ
> ってのが良くわかる現実ですね。

今の所、bsfilter では、MeCab(和布蕪) は使っていませんが、そ
れでも数が少ないということで、今の所、問題ないですね。

アメリカとかヨーロッパでは、SPAM の規制を法律でなんとかとい
う話はあるのでしょうが、効かないんでしょうね。規制されても、
日本とか、そういう規制がない所から発信すればいいから。

Hiroshi Fujishima

unread,
Jul 29, 2003, 3:01:34 AM7/29/03
to
y...@is.tsukuba.ac.jp (Yasushi Shinjo) writes:

>> #未承認,韓国語・中国語メール,ngwordsの設定はしています。
>
> ngwordsって何ですか。

`no good words' じゃないですか。

--
Hiroshi Fujishima

Taku

unread,
Jul 29, 2003, 7:35:42 AM7/29/03
to

Yasushi Shinjoさんの<YAS.03Ju...@kirk.is.tsukuba.ac.jp>に関する投稿です。

=>ngwordsって何ですか。
超ローカルな話題でした。
私の環境でのspamを判断する単語のはいったファイル名です。
少しずつ単語を追加しています。

0 new messages