コメントスパム対策
Bayesian filter for MTでスパムを一括削除できるようにしてあるが、削除する作業すら面倒。そもそもスパムと分かっているコメントは保存されないようにしたい。同じようなことを考えている人は絶対いると思うのだが、ちょっと探しても見つからなかったので、以下のようなことを試してみた。
lib/MT/App/Comments.pmの190行目と191行目
$comment->save;
$app->rebuild_indexes( Blog => $blog )
を以下のように書き換え。
$comment->save;
require MT::Bayesian;
my $by = MT::Bayesian->new;
$by->new_bayesian( {blog_id => $entry->blog_id, comment_id => $comment->id} );
if ($by->spam>0) {
$comment->remove;
$by->remove;
return $app->error($app->translate(
"Spam.", $app->errstr));
exit;
}
$app->rebuild_indexes( Blog => $blog )
これでベイジアンフィルタがスパムと判定したコメントは書き込めなくなった。本当は $comment->save の前に弾きたいのだが、うまく行かなかったので一旦保存して判定してから削除している。これでもリビルドは掛からないし、とりあえず満足。
2004-10-11 追記
しばらく使ってみると、フィルタの学力(笑)が足りないのか、しばしばスパムではないものも弾いてしまうことがあった。そこで以下のように変更した。
if ($by->spam>0) {
$comment->remove;
$by->remove;
return $app->error($app->translate(
"Spam.", $app->errstr));
exit;
}
を
if ($by->prob*100>50) {
#$comment->remove;
#$by->remove;
return $app->error($app->translate(
"Spam.", $app->errstr));
exit;
}
に変更。上の方では「スパムか否か」で判定していたところが、下ではもう少し細かく数値で指定できるようになる。$by->prob*100>50の「50」がmt-bayesian.cgiのManage Comments画面に表示されるSpam Probability。例えばうちに来るspamはほとんど全てが90%以上のProbabilityだが、spamではないものも時々70%とかになることがあるので、この数値を75程度にすることで誤判定が減ることを期待できる。
さらにコメントとその判定結果の削除を省略し、誤判定したコメントも後からManage Comments画面でspamではないと学習し直させ、復活可能にすることにした。結局こまめにメンテナンスが必要な状態に一歩後退してしまったが、立て続けに数十のスパム爆弾でリビルドが掛かりまくることを考えると、これでもまだマシ。
ベイズフィルタがもう少し賢くなったら再度問答無用モードに戻そうと思っている。
2004-10-14 追記
現在のところ以下のようにしている。
require MT::Bayesian;
my $by = MT::Bayesian->new;
$by->new_bayesian( {blog_id => $entry->blog_id, comment_id => $comment->id} );
if ($by->prob*100>70) {
#$comment->remove;
#$by->remove;
$app->log("Spam: $user_ip");
return $app->handle_error('スパムコメントの可能性があります');
}
$app->errorだと終了しっぱなしなので、$app->handle_errorにして、誤判定された人が修正しやすいようにしたのと、なぜかうまく働かない$app->translateを外した。
Refererなしスパムが大半の場合は、こちらの方法がベイジアンフィルタもいらないので簡単で手っ取り早い。
Posted by jiro at
12:17
|
コメント (1)
|
トラックバック
機種変更
長年使ってきたA5301Tからようやく変更。
W21SA。
とりあえず、ざっと感想。
てんこ盛りの最新なので、単純に面白い。
やはりナビウォークはすごい。歩行経路検索だけではなく、途中の乗換検索も込みで一発で検索できる。3両目に乗ってた方が乗換楽っすよ、とか出る。タウンページに載ってるなら電話番号でも目的地を出す。車で行った方が早いっすよ、なんて結果も出す。タクシーだと大体800円ですかねぇ、あ、ここらへんとあそこらへんで渋滞してますから。とVICS情報を地図上に出したりもする。本当にdoor to doorのナビ。これに路線バス検索と、「とほナビ」と同じような音声入力が付いたら完璧。もうちょっとか。
定額・高速でアップロードしまくり!と思ったら、ダウンロードのことしか考えていないような仕様。ネットワーク経由で送出できるデータは150KBまで。しょぼ。40分の動画が撮れるんだから、マイク感度も周囲の音を拾えるように変えられてICレコーダーみたいに長時間録音できるんだから、アップロードさせてほしい。動画も音声も3g2は150KB以下でもなぜかダメ。音データは従来通りqcp、動画は3gpで、両方とも15秒まで。がっくり。
定額システム上では、データを「売る」ダウンロードしか利益を出せないんだから当然かもしれない。下りはビジネスにつながるが、上りは設備投資するだけ無駄。だから上りは絞っておく、って感じか。トホホ。
写真はなかなかきれい。接写時にオートフォーカスの恩恵。
ところがQRコード読み取りアプリがオートフォーカスをまともに扱えない感じで、ちょっと離すとピンボケしまくり。従って大きめのコードは読めない。EZアプリカタログに2次元コードリーダーのディレクトリがあるので、バージョンアップに期待してしまう。
「ダウンロードしてくる大容量な何か」で面白い使いみちを見つけるのが、正攻法な使い方という感じです。なんか古くさくて、残念。
追記:qcpでも、いいマイクをつなげばそれなりに環境音を録れるかと思って試したが、W21SAでは外部接続のマイクが音声通話時以外使用不可なのが判明。
悪いことばかりではなく、ささやかないいことも。miniSDカード経由などで他から持ってきた画像にもGPS情報を付加できる。デジカメでバッチリ撮った写真にも。
でもそこそこ必要充分な画質を備えるに至ったW21SAではあんまり意味ないかも。
もうこうなったら他機種に対する残るアドバンテージはUSBマスストレージとPictBridgeくらい。どちらも有線もの。ケータイなのに(涙)。
PictBridge対応のモバイルプリンターでも買うか。(本末転倒)
Posted by jiro at
03:19
|
コメント (1)
|
トラックバック