上記のサイトを見ているとコメントスパムが結構深刻な状況になってるなぁと思ったので、何か対策しようとやってみました。最初に思いついたのはベイズ系フィルタをMovableTytpeに実装する方法。POPFileのソースを眺めてみましたが、バケツのおかげで処理が煩雑なのでやめ(笑)次にSpamAssassinに実装されているベイズフィルタ機能をパクろうかと思ったんですが、こっちはモジュール同士の依存性が高くってベイズフィルタ機能だけ切り出せそうも無いのでやっぱりやめ。MTMovableTypeのプラグインとして実装されている神を発見(≧▽≦)ノ早速上記サイトからmt-bayesian-1.1.tar.gzを落として実装してみました。インストール方法は大体以下のような感じ展開して出てきたファイルを次のように再配置します。bayesian_list_pings.tmpl最後にbayesian-init-db.cgiをMTDirに置いてCGIの実行権限を付与、そしてそのCGIを一度だけブラウザから見てください。well.」というメッセージが表示されるのでそれを確認したらbayesian-init-db.cgiは削除してしまってもいいです。database.」と表示された場合はすでにデータベースが出来ているということなのでこれでも成功です)さて、これでインストールは終わりましたが、このベイズフィルタは英単語しか比較用文字列として収集してくれないのであんまり日本人向きじゃありません。今度は日本語も収集していくれるようにちょこっとソースをいじることにします。その前に日本語の判定を行うためには日本語を単語ごとに分解してやる必要があります。そのために私はText::Kakasiモジュールを使いました。(サーバの設定をいじれるならcpanで簡単にインストール出来ますし)なのでこれ以降の変更を行う際は自分のサーバでText::Kakasiモジュールが使えるか確認してから行ってください。{に変更これで日本語の単語もDBに登録されるようになりました。次にコメントをspamかどうか学習させなければなりません。学習するためには自分のMovableTypeのエントリ記入用URL(http://my.domain.blog/mt/mt.cgi)の「mt.cgi」の部分をを「mt-bayesian.cgi」に変更してアクセスしてください。Commentsにアクセスするとコメントの一覧が表示され、それぞれのコメントについてスパムかどうか指示するためのチェックボックスがあるので、それを使ってスパムコメントとそうでないコメントをベイズフィルタに学習(「TRAIN」ボタンを押す)させます。Pingsについてはトレースバックのスパム判定でこれも上記と同じ方法で学習させます。追記ちなみにこのフィルタは自動でスパムコメントを弾いてくれるものではありません。SPAM」ボタンで一気に削除しちゃってください。SPAMのチェックを入れ替えてから「TRAIN」ボタンを押すと間違いを正すことが出来ます。̄)ノなお、どうしても待てない人はこっちのエントリに対スパムボット用ハックがあるので試して見ると良いかもしれません。この記事にコメントするあ〜、なんか勘違いしている人がいるようですが、スパムコメントはこのプラグインでは自動で削除されません。削除するかどうかは最終的に人間が決定します。このプラグインは削除画面でスパムっぽいメッセージに削除するためのチェックを入れておいてくれるだけです。そのため大量に来るようなケースでは効果覿面ですが、散発的に1通とかずつ来るケースでは余り効果は望めません。09:01英語のスパムがひどくて本当にうんざりしているところに、こちらのサイトを見かけて早速導入させていただきました。11:26ソースを見てみたらコメントの番号を調べてそれを削除する場所なんですが、どうもそれに失敗しているようです。別の手段で既に消してしまったコメントをさらに消そうとしたりするとそんなエラーが出そうな気がしますが、そういうことも無いですよね?ちょっと簡単には答えられそうに無いです。16:45お答えありがとうございます。コメントは自分で削除しない状態で、やっていたので...きっとなにか自分がアップなどで失敗したに違いないです。ありがとうございました。_)mにしても、コメントがちゃんとあるのになんでこけるんだろう。12:43こんばんは。参考にさせていただきました。なんとか導入できました。ありがとうございました。00:17こんにちは。何とか導入しようと四苦八苦しております。MySQLを使用しておりますのでDBを認識させるところまではいったのですが、mt-bayesian.cgiをいざ実行するとエラーが出て止まってしまいます...。2024.きちんと所定の場所に*.tmplファイルも置いてるのですが...何か良い対処方法があればご教授いただけると幸いです。19:24エラーメッセージには「logonav.tmplが無いよ」と書いて居ますが、きちんとこのファイルはありますか?通常は、{MTDir}/tmpl/cms/にlogonav.tmplがあるはずですが、もし無いようならMTの大元のパッケージから持ってきて上記の場所にアップロードしてみてください。19:41インストールフォルダの中にはなかったので、確認をしてみたところ3.x系ではどうもlogonav.tmplそのものが存在していないようです。#3.01D-jaと3.1enのフルパッケージを落としなおして確認をしました2.661からlogonav.tmplを引っ張ってきたところ動くようになりました。#imagesの中身も一部2.661から引っ張らないと表示がアレになります...お騒がせして申し訳ありませんでした。3.x系で設置に引っかかった方の助けになれば幸いです。20:48書き忘れてしまいました。logonav.tmplのほかに、mininav.templも必要になります。UTF-8で日本語化したものを使っていますが、今のところ問題なく動いているようです。imagesは「lang-ja」フォルダをフォルダごとそっくりそのまま追加しました。20:52なるほどMT3.x系でしたか。今のところMT3に移るメリットが全く無いんでいじってないんですが、やっぱり移行は大変そうですね。519.私も同様の問題を経験しましたが、dbディレクトリ内にある一連のファイルを削除したところ、正常に動作するようになりました。再度全てのコメントをTrainしなおさなければなりませんが。この問題の原因はどなたかも指摘されていたように、フィルターを使わずにあるコメントを削除したためにコメントのIDがずれてしまったためではないかと思います。(その辺のことは詳しくありませんが、身に覚えがあるので。12:58>dbディレクトリ内にある一連のファイルを削除したところ、正常に動作するようになりました。DBをまっさらにすれば復旧は簡単ですが、やはり再学習が面倒ですね。DBとしてMySQLやPostgreSQLを用いていれば、SQL文を直接発行することでDBの中身を操作して修正することも可能なのですが、割と面倒な作業なので、学習済の件数次第ではまっさらにして再学習が最も早いような気がします。MTをダウンロードしてインストールしたのですが、keroyonさんと同じエラーがでて困ってました。ググってここにたどり着き、解決方法を見つけてほんと助かりました。Takuchanさん、keroyonさんありがとうございました。MT本家から2.6のパッケージをダウンロードしようと思ったけど「最新版」しかダウンロードできませんでした。16:28この記事にコメントする。