以前にも記事で触れているが、@niftyがハッキリと認識すべき問題だと思うのであえて書かせていただく。迷惑メールフォルダーの学習フィルタは日本語メールへの対応度を改善すべきだ。MOOCS LAUNCH PARTYは楽しそうだが(※サービス開始おめでとうございます!)、できればそちらにばかり力を入れていないでこちらも改善してほしい。
以下はその理由。
11月現在、スパムメールブロックを解除した状態で迷惑メールフォルダーを利用した場合、日本語の迷惑メールに関しては相変わらずのすり抜け状態が続いている。
11月1日から11月10日の間、スパムメールブロックを解除した状態で迷惑メールフォルダーを利用してみた。なお、学習フィルタの学習内容を一度リセットしてから、迷惑メールフォルダーに溜まっていた1800通ほど迷惑メールを再学習させてある(再学習させた迷惑メールにはスパムメールブロックを使って弾いていたものも含めてある)。
- 迷惑メールフォルダー内にある、11/1-11/10に来た迷惑メールの内訳(午後七時時点)
- 日本語の迷惑メール:125通
- 日本語以外の迷惑メール:633通
- 11/1-11/10に来た、すり抜けてきた迷惑メールの内訳(午後七時時点)
- 日本語の迷惑メール:22通
- 日本語以外の迷惑メール:6通
※日本語の迷惑メールは全てinfo@系(関連記事)。
※日本語以外の迷惑メールは全て中国語のもの。半数以上は基本フィルタでの対応?
※すり抜けた迷惑メールに関してはその都度再学習を行っている。
※@niftyの迷惑メールフォルダーではSymantec提供の基本フィルタも動いている。
迷惑メールフォルダーに溜まっている迷惑メールが全て学習フィルタ(@niftyの場合はベイジアンフィルタを採用)によりフィルタされたものと仮定しても(実際はSymantec提供の基本フィルタによって振り分けられる迷惑メールの方が多い)、ベイジアンフィルタを通った日本語の迷惑メールのうち20%近くはすり抜けてきている事になる。すり抜けてくる率を考えても、日本語の迷惑メールに対しベイジアンフィルタが有効に動作しているとはいえないだろう。すり抜けてきた迷惑メールを再学習させても、数日後に同じ文面の迷惑メールがまたすり抜けてくるのだから性質が悪い。
迷惑メールフォルダーのメール受信状況 (2005/08/13~2005/11/10)

※基本フィルタで検出した迷惑メールが途中から激増し、間で激減している部分があるが、これはスパムメールブロックによるフィルタ(内容については関連記事を参照)を10月半ばに一旦解除しているため。
一般的な話になるが、英語の迷惑メールの場合、ベイジアンフィルタを使わなくても90%程度のスパムを弾くことができ、ベイジアンフィルタをすると98%程度までブロックできるらしい。であれば、日本語迷惑メールであっても、日本語に対する実装がきちんとしていればそれに近い数値になるはずだ。
ではなぜそうならないのか?これには日本語特有の問題が関係してくる。
ベイジアンフィルタではデータを最小単位の単語に分解してから統計処理をするのだが、スペースで単語を区切る英語とは異なり、日本語では単語を区切るための印がない。そのため、そのままベイジアンフィルタにかけても適切な統計処理を行うことができない。
この問題を解決するためには日本語の文章を適切な形に分解してからベイジアンフィルタに流し込む必要がある。日本語を適切な形にする方法としては下記のいずれかの方法がある。
- 形態素解析(内容については形態素解析 - Wikipediaを参照のこと。)
- bigram(日本語部分を 2 文字づつ切り出す)
- block(漢字、平仮名、片仮名のブロックごとに切り出す)
POPFile: JP FrequentlyAskedQuestions/LearningDifferenceによると、1はPOPFileで、2はscbayesで、3はMozillaで使われている方法だそうだ。
このように適切な形に分解する処理を入れることで、日本語の迷惑メールであってもベイジアンフィルタ上で適切にフィルタされるようになるわけだ。
個人的な感想だが、この中でフィルタ精度が一番高くなるのは形態素解析を利用する場合ではないだろうか。実際、形態素解析にKAKASIを採用するPOPFileでは98%程度の振分け精度を確保している。日本語と英語の違いを考慮したとしても優秀な数値と言える。
※POPFileにはこの他にもBase64エンコードの日本語メールも処理可能な様になっている(詳細は関連記事を参照)など、様々な工夫がなされている。振分け精度の高さはその辺りも影響しているので注意。
@niftyでどの方法を取っているかはわからないが、以前から英語の迷惑メールはかなりの高確率でブロックしているにも関わらず、日本語迷惑メールは相変わらずすり抜けてくる。すり抜けてくるメールの割合を考えると、日本語周りの実装が適切になされていないとしか言い様がないだろう。
ところで@niftyの迷惑メールフォルダーにおいて、学習フィルタ(ベイジアンフィルタ)はどのような位置付けなのだろうか?
@niftyの迷惑メールフォルダーではSymantec製の基本フィルタとベイジアンフィルタを組み合わせる形でサービスを提供している。迷惑メールの情報がSymantecのデータベースに追加されると基本フィルタでブロックされるようになる。が、ユーザーからSymantecに迷惑メールのデータが提供されてもデータに反映されるまでのタイムラグがあるのだろう。11月に入ってからも、2~3日程度の間に全く同じ文面の迷惑メールが複数すり抜けてきた。
普通に考えると、ユーザーから提供されるデータが基本フィルタに反映されるまでの間は代わりにブロックするのが学習フィルタの役割のはずだ。それなのにベイジアンフィルタが日本語迷惑メールを処理できないため、ユーザーにいらぬ負担を強いる事になっている。
データバックアップメモ - extended -: 「info@~」で始まる迷惑メールへの対処法 in @niftyで方法を紹介しているように、スパムメールブロックを使う事でブロックできる場合もあるが、それとて初心者ユーザーには設定すらできない場合があることを考えれば、とてもまともな解決策とはいえない。実際、ココログに投稿されているユーザーの意見をみても、迷惑メールフォルダーをすり抜けてくる迷惑メールに腹を立てている人が非常に多い。
基本フィルタがあるから大丈夫、スパムメールブロックがあるから大丈夫、ではないのだ。
@niftyは早急にベイジアンフィルタの日本語周りの実装を見直してほしい。
2005年11月11日追記
- 関連記事へのリンクが上手く張れていなかったので修正。トラックバックも打ち直し。
最近のコメント