迷惑メール振り分け技術として良く使われているベイジアンフィルタを用いたspam避けプラグインです。きちんと学習させればおそらく最強のspam対策プラグインであることは間違いないと思います。
反響が予想以上に大きかったので、さっくりと作ってしまいました。もともとローカルのMecabを使って形態素解析をしていたのですが、この部分を誰もが導入可能なようにごっそりとYahoo!のウェブサービスに置き換えたものです。
† あくまでベータ版です
とりあえず動作可能*1ではありますが、あくまで人柱版という位置づけです。
技術的な問題に関しては積極的に対応していきますが、それ以外のサポートはあまりする予定がありません。また、日本語はきちんと処理できますがインタフェイスは英語のままです。
※使い方についてはplugins:spambayesjp[Nucleus CMS Japan Wiki]にまとめる予定です。
動作確認はNucleus 3.3(UTF-8)、PHP 4.4.7環境で行っています。
動作確認報告、バグ報告はこのエントリへ、コメント・トラックバックをお願いします。
† 導入にあたって
このプラグインは形態素解析器としてYahoo!Japanで公開されている日本語形態素解析Webサービスを使用しています。このため、使用を開始する前にYahoo!JapanIDを取得の上、アプリケーションIDを取得しておく必要があります。
また、サイト上にYahoo!デベロッパーネットワークのガイドライン沿ってクレジット表示を行う必要があります。これらの手順については「Yahoo! JAPAN Webサービス」最初の一歩」を参考に行ってください。
インストール後、プラグインオプションに取得したアプリケーションIDを設定してください。
† 2007/6/20 16:00 追記 v1.1b
なにか忘れたと思ったら、文字コードを変換するルーチンを埋め込んでいませんでした。おそらくEUC-JP環境ではうまく動きません。数日中にアップデートしますのでしばらくお待ちください。実際に動作確認はしていませんが、EUC版でも動くように処理を追加しました。
† 2007/6/23 1:43 追記 v1.2b
管理画面でバッチアップデートができない問題を解決しました。
† 2007/6/23 13:20 追記 v1.3b
バッチアップデートができない部分を再度修正しました。DBの採番ルールを変更したので、一旦DBをクリアする必要があります。プラグインオプションの「Clear the database when uninstalling」をはいに設定してアンインストールを行い、その後インストールしてください。
† 2007/6/24 14:43 追記 v1.4b
バッチアップデートの部分に最新版がちゃんと反映されていませんでした。このバージョンから正常に動くはずです。
† 2007/6/24 17:16 追記 v1.5b
バッチアップデートの部分を再度修正し、確率が自動的にアップデートされるようにしました。また、管理画面から確率のアップデートを手動で行えるようにしました。
† 2007/6/25 20:49 追記 v1.6b
YahooAPIについてのエラーハンドリングを改良しました。また、形態素解析器としてMecabを使うことができるようになりました。
早速公開されてすぐに活用例があってうれしいです^^
あれ、みつかってしまいましたか。
# ウェブ界隈だと即日新サービスということもさして珍しくないので、これでも遅い方だと思っていたんだけどね。
さっそく試してみました。すでにスパムコメントを20件ほど受けましたが、ログが一件も追加されてないのが気になります。「Use SpamBayes action logging?」は「はい」にしてあるのですが。たしか本家版を軽く試した時もそうだった気がします。
spam対策プラグインはプラグイン一覧で上にあるものから順次実行されていくので、おそらくですが他のspam対策プラグインspamを弾いていてNP_SpamBayesが処理をしていないのだと思います。
プラグインの順番を変えて、たとえばNP_SpamBayesが一番上に来るようにするとログが残るようになると思います。
原因分かりました。
以下のイベントに登録: QuickMenu, SpamCheck
SpamCheck…そうそう、これってVer3.3からでしたよね?Ver3.24環境で試してました。Ver3.3にアップデートしてから試してみたところ、無事にログが刻まれるようになりました。このログを使えば手軽にトレーニングができるので便利ですね。
本家のwikiやフォーラムには特にVer3.3じゃないとダメとかは特に書いてないように思えますが、Ver3.24以前では使えないはずですよね。
なるほど、3.24以前の場合にはAddSpamCheckEvent(http://blog.cles.jp/item/1795)を入れてもらわないといけませんね。
# NP_Blacklistなどと併用することしか想定していませんでした。
ありがとうございます。NP_AddSpamCheckEventですか。V3.3へのアップデートが億劫な場合は暫定的にこれをあてておくとよさそうですね。
別件でひとつ気付きました。
with selected:xxxxx Uitvoeren(select all - deselect all )
ログ一覧画面で上記のような一括処理インターフェイスが実装されてますが(xxxxxのところは、スパムとしてトレーニング・ハムとしてトレーニングのリストです)、これが実際には動いてないように思います。
確かに動いていないですね。
この部分については修正したいと思います。
バッチ処理の部分、bugfixしました。
さっそく試してみました。ちなみにこのページのリンクが切れていたので、cvsからゲットしました。
試してみると、見た目には処理経過表示がされるようになりましたが、spamのwordcount数は更新されないようです。なお、一括削除はできました。
もういちど修正してみました。
リンク切れについては多分ダウンロードしたタイミングが悪かったんだと思います。
# 一度ファイルを差し替えたりしていました。
最新アーカイブで試してみました。ログ一覧画面で「train spam」を実行すると、以下のようなエラーが出力されます。
mySQL error with query INSERT INTO nucleus_plug_sb_ref (ref, catcode, content) VALUES (500000000, 'spam','Nice site. Thanks.\nhttp://airlinelastminute
…以下省略
「Clear the database when uninstalling」にチェックのうえで3度アンインストールして試してみましたが同様でした。
何度もありがとうございます。
私のほうではエラーが再現できませんでした。以下省略の部分におそらくエラー内容が書かれていると思うので、差し支えなければ教えてもらえますか?
了解です。テキストファイルにまとめてメール(sourceforge.jpのほう)でお送りしますね。
最新の1.4b確認しました。エラーは出なくなりましたが、見た目は処理経過が表示されるもののwordcountが更新されず…の状態に戻ってしまいました。
wordcountが更新されないのは、オリジナルの状態でwordcountを更新するための処理が入っていないためでした。この部分は修正してあります。
おそらくオリジナル版のバグなのだと思われます。何でこんなにオリジナル版にバグがあるのかはちょっと疑問です。もしかしたら1.1.0は最新版ではないのではないかと、心配になってきました。
動作確認しました。今度は問題なし。おつかれさまでした。
Added the option to publish a false positive to your weblog and item.
ちょっと気になったこと。今回のベースになった1.1には上記のようなオプションがあるはずなんですが、見当たらないです。間違ってクロ判定してしまったコメントを正常な投稿として承認し直せる機能なんだと思いますが、この機能があると安心だなあと。
いろいろありがとうございました。やっと使えるレベルになったと思います。
間違ってクロ判定してしまったコメントを正常な投稿として承認し直せる機能
確かにオリジナル版にはこの機能があるのですが、実はこの機能、今回のバージョンには入れていません。実装がv3.3互換ではなく、またかなりアクロバティックな処理になっているのが気になったというのもあります。
この件についてはspam判定されたコメントを保留にするためのNP_Moderate(http://forum.nucleuscms.org...)を日本語対応するか、もしくはNP_CommentControlにそのような機能を付け加えるのが良いのではないかと思っています。
# 実際、そのように改造したNP_CommentControlは既にここで動いているのですが、ドキュメント等の整備をしていないので公開に到っていません。。。。
そうですね。複数のプラグインで機能を分担し合えるとよさそうに思います。NP_Moderateのことはよく知らなかったのですが、そういう用途に使うものなんですか。またチェックしときます。
話の流れ自体は僕もちゃんとつかんでいるわけではないのですが、NP_CommentControlの後継がNP_Moderateみたいな感じのようです。
報告です。最後のチューニングから3週間近く経ち5000件近くのスパム投稿のチャレンジを受けましたが、今のところ一件も誤判別がありません。今までいろいろと試してきた中では確かに最強と言えそうです。
そうですか。いいエビデンスをありがとうございます。うちでも同じくらいの成果は出ていると思います。
他の人はどうなのか気になりますが、早めにインタフェイスを日本語化しようかなと思うのですが、管理画面が多いのでかなり手間がかかりそうです。
コメントは承認後の表示となります。
OpenIDでログインすると、即時に公開されます。