トップ 差分 一覧 Farm ソース 検索 ヘルプ RSS ログイン

BugTrack-plugin/351

ページの作成や編集にはユーザ登録が必要です。

スパムフィルタプラグイン(学習機能有り版)

  • 投稿者: あき
  • カテゴリ: 新規
  • 優先度: 重要
  • 状態: 提案
  • 日時: 2007年08月02日 23時24分29秒

 内容

スパム投稿(迷惑なコメント投稿やページの編集)をブロックするためのプラグインです。投稿元の情報や投稿内容(文章)を解析し、自動でスパム投稿か否かを判断します。

投稿時の操作はオリジナルの操作方法と変わりません。(認証のための文字を入力するなどの特別な処理は不要です)

処理アルゴリズムには、ベイジアンフィルタをメインとした様々なアルゴリズム(『詳細』の『判定方法』を参照)を採用しています。(BugTrack-plugin/339の高機能&学習機能付き版です)

  • スパムと判定された場合、スパム判定された旨のエラーメッセージが表示され、投稿は拒否されます。
  • 拒否されたメッセージはログに蓄積されていきます。(管理画面にて拒否されたスパム投稿の内容を確認することができます)

 更新履歴

_ex_spam_filter_20070802.zip(879) β版リリース。
多分ですが、問題なく動作すると思います。β版としているのは、動作確認が不十分なのと内部コードがまだキチンと精査できてないためです。エラー時のメッセージ等も暫定的なメッセージのままです。
_ex_spam_filter_20070808.zip(925) 初版リリース。
ソースを整理しました。学習し直すと辞書が少し変化してしまうバグを修正しました。(←やっと原因が分かった(^_^;)) ログの出力形式を統一しました。
_ex_spam_filter_20070810.zip(854) バグ修正。
デグレード(改悪)してたので修正しました。ソースを整理しました。 ログの出力形式を修正しました。
_ex_spam_filter_20070817.zip(848) 機能拡張。
サイト内既存ページからの学習、スパムログの表示/削除、判定方法のカスタマイズなど、大幅に機能を拡張しました。かなり使い勝手が良くなりました。
_ex_spam_filter_20070822.zip(845) 安定性の向上。機能拡張。
Perlのバージョンによっては複雑な正規表現によるテキスト処理で異常終了してしまう場合があった(Perl自身のバグ)ため一度に処理するテキストのサイズを制限することで対処した。学習が途中で異常終了した場合に異常終了した箇所から再開できるよう安定性を向上させた。また、カスタマイズできるパラメータの数を増やした。学習用に追加した文章を学習前ならいつでも削除できる機能を追加した。DBの状態を表示するようにした。その他各種改良。
_ex_spam_filter_20070823.zip(827) 機能拡張。
trackbackプラグインにも対応しました。精度測定用文章数の上限を指定できるようにしました。
_ex_spam_filter_20070824.zip(820) バグ修正。機能拡張。
フレーズ数の正規化処理が不十分だったため修正しました。小さな文章に若干強くなりました。学習文章数の指定に偏りを持たせられるようにしました。(調整することにより、精度を最大限に引き出せるようになります)
_ex_spam_filter_20070920.zip(850) 機能拡張。(V2.0β相当)。
大幅な機能拡張を行いました。変更点が多すぎてここでは挙げ切れません。学習文章数のバランス調整が不要になりました。DBのサイズを自由に変更できるようになりました(精度重視⇔速度重視の調整が自由自在)。拡張判定機能を増やし、それだけでも大半のスパムははじけるようになりました。(むしろ学習機能はおまけ?) 機能としては目指していた完成系にほぼ近い感じです。が、機能を大幅に拡張しましたので、安定性に関しては低下していると思います。
_ex_spam_filter_20070923.zip(816) バグ修正。若干の機能拡張。
細かな修正と若干の機能拡張を行いました。機能的には全てを盛り込んだつもりです。かつ、気になっているバグも特にありません。後はプログラムソースの整形や操作性の向上、マニュアルの充実等を行っていく予定ですが、開発自体はひとまずこれでクローズします。
_ex_spam_filter_20070927.zip(807) 微修正。
学習中にエラーが出た際の継続実行に若干の不具合があったので修正(場合によっては何度学習を繰り返しても学習が完了しないことがあった)。学習で Internal Server Error が出にくいよう初期パラメータを若干修正した。スパムログへの出力情報が欠けるケースがあったので全て出力するよう修正。ブラウザ判定用のユーザーエージェントにPDAやマイナーなLinux向けブラウザの定義を追加。
_ex_spam_filter_20071003.zip(1133) バグ修正。 ←最新版
Wiki書式挿入編集ボタンプラグインとの競合問題に対応。

 インストール方法

  1. 各ディレクトリ(plugin,spamfilter,tmpl)をディレクトリごと対応するディレクトリにコピーして下さい。
  2. 管理者メニューの『プラグイン設定』画面にて_ex_spam_filterを有効にして下さい。[1]
  3. インストール後、管理者メニューの『スパムフィルター』画面にて学習を実行して下さい。学習を行わないと機能しません。

ドキュメントを同梱させてありますので、詳しくはそちらをご覧下さい。

  • [1]非標準プラグインをご利用になられる場合は、plugin/_ex_spam_filter/Install.pmの20行目辺りをコメントの指示に従って修正して下さい。

 ライセンス

  • GPL

 対応バージョン

  • 3.6.2 ←確認したバージョンです。その他のバージョンでも問題ないはずです。

 詳細

判定方法

当プラグインでは、ベイジアンフィルタをメインとした様々なアルゴリズムを採用しています。下記に示すような機能が判定方法があり、利用する機能を選択して使用することができます。

ログインしているときはチェックしない。
ログイン状態の時はスパム判定を行いません。「ログインできるユーザは信頼できる投稿者である」という理論に基づいた判定方法です。これによって誤ってスパム判定される煩わしさから開放されます。
海外からの投稿であればスパムと判定する。
投稿元のIPアドレスをチェックし、海外からのアクセスであればスパム投稿と判定します。スパム投稿の殆どは海外からの投稿です。サイトの利用が国内のユーザのみの場合、これを利用するだけでほぼ完全にスパムを阻止できます。
ブラウザからの投稿でなければスパムと判定する。
接続元端末情報(ユーザーエージェント)を参照し、ブラウザらしき端末からの接続でなければスパムと判定します。ユーザーエージェント情報を詐称していないスパムクローラーからの投稿(プログラムによる投稿)を拒否できます。たいていは詐称されていますので、効果はあまり期待できません。
日本語対応ブラウザからの投稿でなければスパムと判定する。
接続元ブラウザの対応言語情報を参照し、日本語に対応しているブラウザでなければスパムと判定します。英文のみのスパム投稿はほぼこれに該当します。
無効文字が含まれていればスパムと判定する。
投稿された文章の全文字種をチェックし、機種依存文字や外字、未登録文字が含まれていた場合、スパムと判定します。サイトのエンコード情報を考慮していないスパムクローラーからの投稿(プログラムによる投稿)を拒否できます。ヒット率はあまり高くありませんが、ベイジアンフィルタでは弾ききれないスパムでこれに該当するものが多いので利用を推奨します。
半角カタカナが含まれていればスパムと判定する。
投稿された文章の全文字種をチェックし、半角カタカナが含まれていれば投稿を拒否します。携帯端末からの投稿では半角カタカナが使われることが多いので利用は微妙です。が、日本語のスパム投稿では半角カタカナが使われることが多いので、サイトの運用規則として『半角カタカナを禁止する』というルールを設けることによって、日本語のスパム投稿をある程度軽減できるかもしれません。また、閉じられたネットワーク環境での利用で利用文字種の制限、という観点からも利用価値は考えられます。
改行文字が含まれていればスパムと判定する。
コメント投稿系プラグインの時、改行コードを含む投稿を拒否します。コメント投稿系プラグインでは、パソコンのブラウザ上からは通常改行コードを含んだ投稿はできません。が、スパムクローラーからの投稿(プログラムによる投稿)にはこういった文章の投稿が時々あります。携帯端末からの投稿では改行コードも含めることができたりもしますが、そのような投稿は表示結果も崩れてしまうため禁止にして問題ないでしょう。またFSWiki本体も、次版からはそういった仕様になる予定です。
英単語の割合をチェックする。
投稿された文章の全フレーズ文字種をチェックし、英単語の割合が指定された割合以上であればスパムと判定します。英文のみのスパム投稿はこれで完全ブロックすることが可能です。但し、スパムでない投稿でも、英文ベースの投稿はスパム判定されてしまいますので注意が必要です。
ベイジアンフィルタによるスパム判定を行う。
投稿された文章を各フレーズに分解し、フレーズの並びやその頻度から、投稿された文章がスパムであるか否かを判定します。投稿された文章の内容をチェックしますので、より人間的なスパム判定を行わせることが可能です。また、学習機能も存在しますので判定を誤った文章を学習させていくことで判定精度をより向上させて行くことができます。サイト毎に特化したスパムの学習も可能です。

ベイジアンフィルタによるスパム判定

投稿された文章を各フレーズに分解し、フレーズの並びやその頻度から、投稿された文章がスパムであるか否かを判定します。(内部アルゴリズムには独自のニューラルネットワーク技術を用いています)

予め十分な精度が出るよう学習させてありますが、誤判定された文章を学習させていくことにより、判定精度をより高めていくことができます。(リリース時点では本サイト(FSWiki公式サイト)向けに学習させてありますので、学習を繰り返し、貴サイト向けに学習させていって下さい)

どのようなスパムメッセージを弾いてくれるかはこちらの例をご覧下さい。実際に適当な文章を投稿して確認して頂いても結構です。

当プラグインの強み

自由自在なDBサイズ
当プラグインで作成されるDBは、精度を最大限に保ったまま、使用するDBサイズを自在に変化させることができます。高いレスポンスが求められる環境下では、使用するDBサイズを制限し、そうでない環境下ではフルの特定精度で利用することが可能です。使用するDBサイズを10分の1程度に制限しても精度は殆ど変化しません。
単語ではなくフレーズを学習
一般的なベイジアンフィルタでは、文章内から単語を抽出してその頻度を判定材料に使用していますが、当プラグインではフレーズ(漢字、ひらがな、カタカナ、英字等の文字種区切りで分割した文字列)を判定材料に使用しています。単語を利用したほうが、より少ない情報量で効果的な学習が行わせることができますが、それでは、「ありがとうございました」等の単語を含まない文章は学習できなってしまいます(つまり、短い文章に弱くなる)。また、処理速度的にもPerlでは使い物にならないくらい時間がかかってしまいます。よって、当プラグインでは単語の変わりにフレーズを用いることにしました。
出現頻度だけでなく並びも学習(ノイズに強い)
一般的なアルゴリズム(単純ベイズ)では単語の出現頻度だけを元に学習を行っていますが、当プラグインのアルゴリズムでは、それぞれのフレーズの並びも同時に学習します。また、ノイズを多く含む文章の分類に強い Balanced Winnow という学習アルゴリズムを採用しています。これにより、下記に示すような効果的な学習が可能です。

例えば、非スパム/スパムのいずれにもURLが記載されることがあるとします。かつ、スパムの方がその確率が圧倒的に高かったとします。但し、厳密には非スパムの場合はURLのみが記載されることが多く、スパムとしては「<a href=http://〜>」のような形でHTMLタグが書かれることが多かったとします。(あくまでこれは一つの例です) この条件で学習させた場合、単純ベイズではURLのみの投稿があった場合、常にスパムと判断されてしまいます。しかし、当プラグインのアルゴリズムでは、「http」は非スパムとしての学習を優先し、「a href http」はスパムとして学習する、といったような気の利いた学習を行ってくれます。つまり、URLのみの投稿があった場合、きちんと非スパムと判定してくれます。

当プラグインの特徴

全般

  • 本体と同じPurePerlです。外部モジュールは不要です。
  • CAPTCHAを用いたスパム対策プラグインと異なり、投稿時に指定された文字を入力する煩わしさがありません。
    • スパム判定をすり抜ける文章だった場合、スパムクローラーであっても投稿を受け付けてしまいます。
  • Akismetを用いたスパム対策プラグインと異なり、Akismetサーバーへの接続が不要です。その分高速です。外部に接続できないローカル環境でも利用できます。『海外からの投稿をブロック』などこれに多少近い機能は実装されています。
  • クローラー対策機能も備えています。

ベイジアンフィルタ

  • 文字数の少ない投稿の場合、概ね判別が苦手となります。
  • 標準搭載のスパムワード(禁止語句)と異なり、強引な締め出しは行われません。
    • その分、保存動作は遅くなります。判定速度は利用するDBのサイズで調節可能です。

作用するプラグイン

最新バージョンでスパムフィルターが作用するプラグインは下記のとおりです。

標準インストールプラグイン

  • commentプラグイン
  • bbs,bbs2プラグイン
  • bugtrackプラグイン
  • 通常のページ編集

非標準プラグイン

※非標準プラグインにフィルターをかける場合は、「plugin/_ex_spam_filter/Install.pm」を若干修正して頂く必要があります。(同ファイルの20行目辺りをご覧下さい)

 コメント

  • land.toで試してみた所 学習を実行した所 Internal Server Error が帰って来てしまいます。宜しく御願いいたします。 (2007年08月15日 07時28分28秒)
  • もう少し詳細をお聞かせ願えませんか? 何十秒も時間が経過した後、エラーが出たのでしたら、サーバー側でタイムアウトした可能性もあります。その場合は再試行して頂けると動作する可能性があります。(エラーが出た所から再開されるため、再試行で問題ありません)後は、spamfilterディレクトリがCGI側から見て読み書き可になっているか確認してみてください。 - あき (2007年08月15日 22時43分25秒)
  • そうですね これじゃ何が何だか分からないですね。あまりにすぐに Internal Server Error が帰って来てしまっていたので 何を伝えれば良いのか見当がつかなかったもんで。学習を実行後2〜3秒くらいで Internal Server Error が帰って来てしまいます。で、spamfilter/text 下には0000001.dat 〜 10000021.dat と 0000001.txt 〜 10000350.txt が出来ています。この状態で測定を実行すると Software Error:フレーズ重みテーブル(spamfilter/learn_weight.dat)がオープンできません。 と表示されてしまいます。ちなみに spamfilter/learn_weight.dat ?と思い見てみるとそんな名前のファイルは有りませんでした。 - kitta (2007年08月16日 20時05分35秒)
  • 有難うございます。spamfilter/text/*.datファイルが途中までしか展開できていないようです。従って学習ができておらずspamfilter/learn_weight.datが生成できておりません。本当であれば再学習を実行することで続きから作成されていくはずなのですが、何らかの原因でそれが行われないようですね。何度再学習させても駄目ですか? 「学習を実行後2〜3秒くらいで…」というのは2度目以降ってことですよね? Internal Server Errorはサーバ側の問題だと思うのですが、詳細はApcheならApcheのログを見てみないと何とも…ですね。1ディレクトリ内に格納できるファイル数の制限とかあったりするんでしょうかねぇ。一度spamfilterディレクトリを削除して、spamfilterディレクトリだけを入れなおして再実行してみて頂けませんか? - あき (2007年08月16日 22時02分57秒)
  • やってみました。「学習を実行後2〜3秒くらいで…」は最初です。以降 学習を実行すると、即 Internal Server Error が帰って来ます。で、何度学習を実行しても dat が 10000021 まで、txt が 10000350 までです。spamfilter ディレクトリを何度削除しても同じ結果でした。ファイル数の制限も試してみました。FTP でのアップロードですが 2000 くらいは問題無く1ディレクトリーにアップロード出来ました。 - kitta (2007年08月16日 22時20分41秒)
  • あれ?kittaさんだったんですか? って質問はいいとして…。分かりませんねぇ。β版の方ではないですよね? あちらはバグがあったので…。Farm上でってわけでもないですよね? 今のところ原因不明です。私もland.to登録してみました。試してみます。ってか、もし、もう少しお待ち頂けるのでしたら、今もっと凄いの(次版)を作ってますのでもう少しお待ち頂いてもいいです。ちょっとファイル構成が変わってしまいます。 - あき (2007年08月16日 23時05分38秒)
  • lando.toで試してみました。こちらでは問題なく動きますね。拡張系のプラグインは_ex_spam_filterだけを入れた状態です。何が悪さしているんでしょう? - あき (2007年08月16日 23時43分03秒)
  • あ、そうそう。スパムじゃないのにどうしてもスパムとして弾かれてしまう時用の対応手段、考えました。毎度ながらのコロンブスの卵的発想ですが、ログインしてるときだけはチェックしないモードを設けることにしました。 - あき (2007年08月17日 00時53分35秒)
  • 00時53分にコメント.... お疲れさまです。さようでございます。kittaでございます。ありゃ?あんで最初のコメント名前消えとんのじゃ?ってのは置いておいて。land.toは最近募集分については、鯖の仕様を変えているみたいです。んだもんで ちょっと私の環境とは違う 鴨です。今晩にでも 私の環境でも新品まっさらなwikiでTESTしてみます。「今もっと凄いの(次版)を作ってます...」おぉ〜かっこいい 。それ待たしてもらおうかなぁ。「ログインしてるときだけはチェックしないモード...」あ、これで事足りちゃいそうですね。 - kitta (2007年08月17日 05時54分49秒)
  • そうそう、それと 試したのはβ版でもFarm上でも無いです。 - kitta (2007年08月17日 07時05分30秒)
  • 「land.toは最近募集分については、鯖の仕様を変えているみたいです。」>なるほど、今は仕様が異なるのですね。益々分からなくなってしまいましたね。「「今もっと凄いの(次版)を作ってます...」おぉ〜かっこいい 。」>見た目的に、かなり熱が入ってますよ。そんなに凝るなって言われそうですが…。(笑)「試したのはβ版でもFarm上でも無いです。」>了解です。どこでも起こり得るってことでしょうかね。 - あき (2007年08月17日 07時57分44秒)
  • 大幅に機能を拡張しました。いろいろと気の利いたことをやってくれるようになりました。 - あき (2007年08月17日 19時43分26秒)
  • 20070817+「ちょっと前の鯖land.to on 新品wiki」で試してみました。撃沈です。ほぼ症状は同じです。今回は、datが00000173まで、txtが10000350まで作られています。これは何度学習させてもこれ以上は進みません。spamfilter/learn_weight.dat は作られていませんでした。なにか有益な情報を取り出す方法でもあるといいですけど... - kitta (2007年08月17日 21時10分21秒)
  • ひょっとして…。Perlのバージョン古すぎ、とかですか? plugin/_ex_spam_filter/spam.pmの147〜149行目のif()文を削除(又はコメントアウト)してみてやってみてもらえません? - あき (2007年08月17日 22時08分15秒)
  • 5.8.7なんで そんなに古くはないと思いますけど試してみました。同じ.. ですね。 - kitta (2007年08月17日 22時33分11秒)
  • あ、出ました。うちんところで借りてるあるレンタルサーバ(ロリポップ)、ここのサーバだけですが、Internal Server Errorが出始めました。何とか追ってみます。Apcheのログが見れないのが痛いなぁ…。 - あき (2007年08月18日 01時08分33秒)
  • 理由は分らないのですが、こちらでは動くようになりました。『環境設定』ページで『リダイレクト時の処理』を『METAタグでリダイレクト』から『Locationヘッダでリダイレクト』にしてみただけです。この2つの違いがイマイチよく分かりません。METAタグは恒久的なリダイレクトでLocationヘッダは一時的なダイレクト? ってことは単純にエラーが出た際のキャッシュされたページ内容が表示されていたとか、そういったオチ?よく分かりませんが…。見た目的にはページの移動時に「Wait or Click Here!」というメッセージが表示されるか否かだけの違いです。Locationヘッダの方はこのメッセージが表示されず、かつページの移動は高速です。ただ、Locationヘッダ側では以前携帯からのアクセス時、上手くページ更新ができなった記憶があります。なので「だから標準では遅い側になってるんだぁ」と一人で納得した覚えがあります。今はうまく行くようですが…。なので、やはりイマイチよく分かりません。後、こちらで出ていたエラーですが、全ての学習が済んだ後、ページの表示段階でInternal Server Errorが出てましたのでそちらとはエラーの発生タイミングが異なるようです。一か八かで同様の設定変更を試されてみるのは良いかもしれませんが…。 - あき (2007年08月18日 03時10分55秒)
  • 03時10分... お疲れさまでございます。試してみました。う〜ん 特に変化無しかなぁ datが00000042まで、txtが10000350までです。すこし止まるの早くなっちゃいましたかね?後、今 気がついたんですけど perl5.8.7.core(8.2MB) なんてのも出来ちゃいますね。ダウンロード数あんまり伸びませんねぇ 私がノイズになっちゃってますか? - kitta (2007年08月18日 06時42分43秒)
  • お手数をかけることになってしまうんのですが、こちらでデバッグ版を準備しますので、それをインストールして試してみてもらっても構いませんか?「perl5.8.7.core(8.2MB) なんてのも出来ちゃいますね。」>やはり、途中で落ちてしまってるんですね。 - あき (2007年08月18日 11時11分45秒)
  • いいですよ。有益な情報が提供出来るんならいくらでも協力しますよぉ。 - kitta (2007年08月18日 11時56分07秒)
  • ありがとうございます。現在準備中です。 - あき (2007年08月18日 12時13分59秒)
  • kitta殿、_ex_spam_filter_debug.zip(827)を使ってみてください。tmplとかも含め、インストールしてみてください。初回目学習を実行し、エラー発生後このスパムフィルター設定画面に戻ってくると同画面の最下部にテキストエリアが表示され、その中にデバッグ情報が出力されているはずです。さらにその状態で、2回目の学習を実行してみてください。2回目も同様にエラーが出ると思われますが気にせずスパムフィルター設定画面に戻ってテキストエリア内に出力されたログ情報を添付ファイルとしてご提供下さい。以上、よろしくお願い致します。 - あき (2007年08月18日 15時12分53秒)
  • やってみました。宜しく御願いいたします。 debug.txt.zip(903) - kitta (2007年08月18日 15時24分17秒)
  • kitta殿、一応初回目に作成されたファイルはきちんと再利用されているようです。ってことで再試行することで前回異常終了した所の続きからは実行されているようです。で、若干バグが見つかりました。plugin/_ex_spam_filter/spam.pmの448行目の「<=」を「<」に変えてみて、再試行して頂けますでしょうか?そのファイルだけを差し替えての再実行でいいです。できれば一度「ログの削除」を実行して頂いたあと、やっていただけるとありがたいです。同様にその結果を添付頂けると嬉しいです。…ともう一点、spamfilter/text/10000071.txtが落ちている原因っぽいです。内容をご確認頂いて、プライバシー的に問題の無いファイルであればそちらも添付してください。プライバシー的に問題でしたら、ファイル内容を空にして、再試行して頂けますでしょうか?ひょっとすると動き出すかもしれません。ってことで、テキストに何らかの問題があるっぽい気がしてきました。含まれているとまずい文字コード、又はそれらの並びがあるのかな? - あき (2007年08月18日 15時57分43秒)
  • を、何か見えて来ましたか?やってみました。とりあえず何も変化は無い気がします。添付したファイルを解凍すると10000071.txt と ログが入っています。debug2.zip(888) - kitta (2007年08月18日 16時46分00秒)
  • ありがとうございます。どうやら、使用メモリの上限とか、そんなもの臭いですね。でもそんなにメモリ食わないんだけどな。何でだろ?ですが、途中から再開の際、上手く動いていない部分が見つかりました。それは修正します。それから、さっき「<=」を「<」に変えて頂いた修正、あれはあれで合ってました。きちんと動き出しました。ってことでもう少し改良しますので待っててください。ちょっと時間がかかります。 - あき (2007年08月18日 17時34分42秒)
  • 了解です。 - kitta (2007年08月18日 17時37分56秒)
  • なおしてもらってる途中にごめんなさい。BugTrack-plugin/108のTBスパムにも対応出来ないでしょうか?最近、TBスパムが多くて このプラグインを外しちゃってるサイトを沢山見かけるのを思い出したもんで...。私の所も外しちゃいました。宜しく御願いいたします。 - kitta (2007年08月19日 17時14分43秒)
  • TrackBackPingプラグイン、お恥ずかしいことまだ使ったことがないんですよね。対応はすぐにできると思いますが…。了解です。予定に入れておきます。それと、改良版の方はもう暫くお待ち下さい。根本的な部分を改良していると意外に修正量が多くて…。 - あき (2007年08月19日 17時30分49秒)
  • 有り難うございます。 - kitta (2007年08月19日 17時35分43秒)
  • kitta殿、作成しました。何処で異常終了してもその場所から再開できるようにしました。さらに今度は全ての状態を初期化できるようにも対応しました。何度でも一から学習し直せるように…。ドキュメントは未修正ですが取りあえず動作するか確認してみてもらえませんか?_ex_spam_filter_20070820.zip(872)です。 - あき (2007年08月20日 21時14分52秒)
  • お疲れさまです。とにもかくにも まっさらなwikiでやってみました。結論から言うと学習が終了しません。エラーが出る度に戻り10回くらいやってみましたが駄目。で、txtが10001050マデ datが 途中が無かったりしますが 10000070マデです。これ以上進みません。今回はspamfilter下にlearn_0.txt learn_1.txt learn_progress.log sample2_0.txt sample2_1.txt なんてのが出来てました。で、学習を初期化--->学習させた所 spamfilter下のファイルは同様。今回はtxtが10000350マデ datが00000043マデ で、再度学習させてもどちらも一歩も進まなくなってしまいました。 - kitta (2007年08月20日 21時56分25秒)
  • 再度学習を初期化--->学習 今度は00000284.dat 10000350.txtまででした。 - kitta (2007年08月20日 22時02分05秒)
  • と、学習する度に止まる所が違います。 - kitta (2007年08月20日 22時06分43秒)
  • txtが10001050マデ?あれ、まだバグがありますね。何やら想定外の動きをしますね。(^_^ゞ 何だろう?ファイルシステムの違いとかなのかな?エラーが出たファイルを読み飛ばす、とかっていうのがとりあえずの策なのかな?テキスト内のフレーズ解析でどうやら落ちてそうですね。まずは読み飛ばす方向で考えてみます。 - あき (2007年08月20日 22時10分44秒)
  • 「学習する度に止まる所が違います。」>了解です。やはり特定の文章のようですね。学習のたびに文章をシャッフルして学習用とテスト用に選り分けて使ってますので…。止まる場所が違う、ということはメモリの問題では無さそうです。 - あき (2007年08月20日 22時13分24秒)
  • とりあえずtxtが10001050マデは一度だけです。その後は何度やっても10000350.txtまでですね。 - kitta (2007年08月20日 22時15分56秒)
  • ちょっと気がついた事があります。何度か学習させてて 止まった次のtxtをダウンロードしてみると必ず4.3~5.5KBくらい有り少し大きいです。00000067.datで止まった時は 00000068.txtがそうでしたし 00000233.datで止まった時は00000234.txtがそうでした。 - kitta (2007年08月20日 22時34分08秒)
  • そしてそれより前では 4KB以上の txtは出来ていません - kitta (2007年08月20日 22時40分21秒)
  • とりあえずの応急処置はしました。_ex_spam_filter_20070820.zip(872)に上書きアップロードしてます。一度エラーが出たものは無視するようにしました。ただ、これで動いたとしても根本的な解決にはなりませんが…。 - あき (2007年08月20日 22時51分07秒)
  • ん?4KBの制限?どっかでそういう問題にぶち当たったことがあるような…。 - あき (2007年08月20日 22時53分07秒)
  • そうです。止まった時の次のファイルが怪しいファイルです。今度はとりあえず*.dat.tmpという空のファイルを作成してからそのファイルの処理に入るようにしました。異常終了した場合は*.dat.tmpというファイルが残るので、次回からはそのファイルをスキップするようにしました。 - あき (2007年08月20日 22時57分06秒)
  • どうしましょ 試してみますか? - kitta (2007年08月20日 22時57分36秒)
  • はい。とりあえず異常終了する箇所だけをスルーして、動くようになる可能性はあります。あとはそれがどれくらいの頻度で出るか次第ですが…。やはり問題は複雑な正規表現のせいだと思います。Perlのバージョンにより、以前からこういったことは起きたりしてました。5.0.?の時代のバージョンだったので、5.8.7なら全然大丈夫だとは思うのですが…。 - あき (2007年08月20日 23時00分23秒)
  • とりあえず 5〜6回学習させると学習は終了します。で、今度は 精度測定を実行すると 500 Internal Server Error が帰って来ます。 - kitta (2007年08月20日 23時07分10秒)
  • なるほど、精度測定ですね。じゃぁそちらもとりあえずスルーさせるようにします。一歩だけ前進しましたね。('-^*) - あき (2007年08月20日 23時08分46秒)
  • と、思ったけど無理だなぁ。Internal Server Errorじゃその続きができませんね。むず…。(汗) - あき (2007年08月20日 23時10分59秒)
  • おりょ... 厳しいですなぁ〜 - kitta (2007年08月20日 23時12分23秒)
  • と、お願いしてて ごめんなさい。明日ちょっと早いんで今日はすんません。明日は端末に向かえるのは遅い時間になっちゃうかもしれません。ごめんなさいです。 - kitta (2007年08月20日 23時20分24秒)
  • 了解です。怪しそうなところチェックしておきます。 - あき (2007年08月20日 23時27分50秒)
  • kitta殿、改良しました。今度はファイルサイズがいくら大きくても、指定サイズ(とりあえず4000byte)で区切りながら処理するようにしました。テキストサイズが大きくて、かつ正規表現の置換の部分で落ちていたなら、これで解決するはずです。他にもいろいろ修正&機能拡張しました。_ex_spam_filter_20070821.zip(808)です。 - あき (2007年08月21日 20時50分18秒)
  • 最初 Software Error:学習対象のファイルが1件も存在しません。が 何度も出て...ん?と思いconfig/spamfilter.dat を削除。で動き始めまして。が、1000Byte-5回,4回 2000Byte-4回,4回 3000Byte-4回,5回 4000Byte-3回 ,4回5000Byte-5回,7回 と各二回ずつ設定を変えてやってみたんですが 学習を実行しても一度で終わる事は無く4回から7回までかかります。と、学習文章数を250くらいにしても1回減るくらいでそれほど効果が無い気がします。その状態で精度測定を実行しても 500 Internal Server Error が帰って来てしまいます。うぅ〜ん 一歩進んで何とやらって感じですか?あれ?指定サイズで区切っているのに何で.dat.tempが出来てるんでしょ? - kitta (2007年08月21日 23時28分38秒)
  • 「最初 Software Error:学習対象のファイルが1件も存在しません。が 何度も出て…」>先に『学習を初期化』しないと駄目ですね。「学習を実行しても一度で終わる事は無く…」>ブロック数を減らしても一度で終わる/終わらないというのとは関係ないです。正規表現での置換で異常終了しないようにするためだけの対応でした。「その状態で精度測定を実行しても 500 Internal Server Error が帰って来てしまいます。」>う〜ん。正規表現の所じゃないのかもしれませんね。先は長いなぁ〜。(>_<;) こっちでも出てくれたら楽なのに…。 - あき (2007年08月21日 23時40分48秒)
  • 「あれ?指定サイズで区切っているのに何で.dat.tempが出来てるんでしょ?」>未だに異常終了してるから…のようですね。 - あき (2007年08月21日 23時42分56秒)
  • う〜ん と いっその事私が 借りてる鯖で直にやってみます? - kitta (2007年08月21日 23時43分39秒)
  • 本BugTrackに関係ない話題で申し訳ないのですが、上記本文の「ベイジアンフィルタ」「ニューラルネットワーク」のリンク先がフィッシングサイト?にこっそり書き換わっていました。差分では既に戻せなかったので、分かる方、正しいリンク先に変更をお願いします。現在は便宜的にexample.comを入れてます。書き込まれたフィッシングサイト?のURL(http://www.nlftweb.com/lineage http://www.fc2weday.com/lineage) - MRB (2007年08月21日 23時53分16秒)
  • MRB殿、ご報告ありがとうございます。修正しておきます。 - あき (2007年08月21日 23時59分41秒)
  • kitta殿、駄目ですね。検討が付かないです。埒があかないですね。その分デバッグにはなってますが…。(^_^ゞ 「いっその事私が 借りてる鯖で直にやってみます?」>えっ、いいんですか?それができればとても効率的です。もしよろしいのでしたら、(消しました - kitta)の方にメール頂けますでしょうか?「@」の部分は半角に置き換えて送信してください。よろしくお願い致します。 - あき (2007年08月22日 01時24分06秒)
  • ありがとうございます。ftp及びwikiにログインできること、そして Internal Server Error が出ることも確認できました。 - あき (2007年08月22日 08時16分06秒)
  • 必要なだけ試して下さい。1週間くらい使えなくても問題有りません。 - kitta (2007年08月22日 08時58分47秒)
  • kitta殿、解決したっぽいです。v(^-^) やはり正規表現の部分でした。テキストを指定サイズ分ずつに区切って処理させるようにしましたが漏れが一箇所ありました。ソースを整理してからアップします。 - あき (2007年08月22日 20時34分50秒)
  • おぉ〜 素晴らしい。 - kitta (2007年08月22日 22時43分09秒)
  • アップしました。疲れあした〜。(-o-;) - あき (2007年08月22日 22時45分37秒)
  • じゃ、鯖のパスワード変えちゃってOKですか? - kitta (2007年08月22日 22時57分01秒)
  • 実は…、それ以外にもパラメータを変えたりしていろいろやっていると、ちょこちょこ異常終了してしまうことがあるようなのですが、再実行すれば動いたり、最後まで実行されているのにエラーだけ出ていたりでよく分らない部分があります。原因が分らないので気持ち悪いのですが、頻繁に起きるわけではありませんし、再実行等で回避できますので、ひとまずこれでクローズさせて下さい。ってことで、はい、パスワードは変えてしまって結構です。どうもありがとうございました。 - あき (2007年08月22日 23時17分08秒)
  • 次はTrackBackPingプラグインへの対応ですね。ちょっと動かしてみましたが、イマイチ使い方がよく分かりません。送信するときのポートは80番固定とかなんでしょうかねぇ。ソース中には存在しないエラーが出ます。ちょっと内容までは覚えてません。それとも同じサーバ内だと駄目なのかな?そんなことはないですよね?分かりませんが…。まあ、後日また追ってみます。 - あき (2007年08月22日 23時25分05秒)
  • なるほどぉ 色々と了解しました。とりあえず一区切りですね。有り難うございました。これで 一つ幸せになれます。 - kitta (2007年08月22日 23時38分09秒)
  • ひとりウィキで試してみたんですが 学習は必ず2回。1回で終了する事は有りません。それと精度測定が出来ません。何度DBを作り直しても 10秒から13秒くらいで500 Internal Server Errorです。とりあえず 精度測定 って出来なくても問題無いですか? - kitta (2007年08月23日 07時10分39秒)
  • あちゃぁ、そうなんですか?(^_^ゞ 私がやった時はほぼ確実に1回で学習が終了してましたが…。(「ほぼ…」というのは学習時のパラメータを変えると1回で終了しないことがたまにあったからです) 精度測定でエラーが出るのは、サンプル文章の数が多すぎるからかもしれませんね。学習後にspamfilter/test_0.txtを覗くと何行くらいになってますか?こいつが大きすぎるんじゃ…。私の環境ではこれが250行くらいだったんで、それくらいに加工して(ようは250行目以降削除とか…)やると精度測定ができるようになるかもしれません。しかしまあいろいろ出てくれますね。いいデバッグになってます。(^_^;) - あき (2007年08月23日 07時28分53秒)
  • wiki3下では 問題無かったです。test_0.txt... 577行ありますなぁ...。 - kitta (2007年08月23日 13時22分23秒)
  • でかっ!!そっかぁ、じゃぁこれも、上限を指定できるようにしようかな。 - あき (2007年08月23日 14時26分16秒)
  • trackbackプラグインと精度測定用文章数の上限の指定に対応しました。 - あき (2007年08月23日 18時38分31秒)
  • う〜ん... 特段変化無しですなぁ。難しいですねぇ. - kitta (2007年08月23日 20時03分33秒)
  • wiki3 の上の index.cgiで直にやってみますか? - kitta (2007年08月23日 20時04分48秒)
  • ちょっと制度が落ちますけど DB格納最大フレーズ数:2000 精度測定に使用する文章数:150で 出来ました。測定結果は非スパム:149/150件( 99.33%)スパム :124/150件( 82.67%)トータル:273/300件( 91.00%)です。 - kitta (2007年08月23日 20時20分12秒)
  • 変化無し?ひえぇぇ。パラメータ等、一度初期化して頂けましたでしょうか?そうですねぇ。もう少しお借りした方がいいのかな? - あき (2007年08月23日 20時23分18秒)
  • パスワード送ります。この間と同じアドレスでいいですか? - kitta (2007年08月23日 20時40分12秒)
  • 91%は低すぎですね。非スパムの精度は上々ですが、スパムに対しては精度悪すぎです。判定レベルは『少し甘く判定』のままですか?理論上は『厳密に判定』にすると非スパムもスパムも同程度の精度になります。そうならないとすると、選り分けられた文章にたまたま偏りがあった、と言えそうです。DBを初期化してやり直すともっと自然なバランスになるのが確認できるかもしれません。それにしても、トータルで91%は低すぎな気がします…。 - あき (2007年08月23日 20時43分40秒)
  • 少し甘く判定』のままです - kitta (2007年08月23日 20時44分59秒)
  • はい。同じでいいです。 - あき (2007年08月23日 20時45分34秒)
  • kitta殿、対応終わりました。精度差に関しては、正規化処理が不十分だったのと、情報量の少なさ、という観点で当然の話でした。学習文章数に偏りも持たせられるようにし、これに対応しました。一応これでひと段落ですね。 - あき (2007年08月24日 20時43分30秒)
  • ですね。ありがとうございました。これ凄いです。これだけでも FreeStyleWiki を選択する理由になるんじゃないかしら? - kitta (2007年08月24日 22時26分51秒)
  • ありがとうございます。そう仰って頂けて光栄です。スパムに関しては兼ねてからWikiにとって癌だと思ってましたので、ずっと「何とかしなきゃな」って思ってました。外部ツールに頼らず、FSWikiオリジナルの機能が実現できて良かったです。 - あき (2007年08月25日 00時10分18秒)
  • FSWikiを選択する理由…になってくれたりなんてするのかな?(^_^ゞ まぁ、そこまではいかなくても、FSWikiが敬遠される理由が一つでも減ってくれるなら、それはありがたいことです。さぁて、次はどんなプラグインかな? - あき (2007年08月25日 00時15分18秒)
  • あのぉ 気がついた事があります。非スパム/スパム文章の追加 から追加しますと、学習済み文章の表示/削除 へは 非スパムで登録したのに スパム文章へ、スパム文章で登録したのに非スパムに 登録されたように表示されます。これってどれが正しいんでしょうか? - kitta (2007年08月25日 05時26分57秒)
  • ほんとですね。『学習済み文章の表示/削除』って方が逆になってます。最後の表示だけが逆です。すみません。修正版のアップロードの方はまた後ほど…。 - あき (2007年08月25日 09時39分44秒)
  • plugin/_ex_spam_filter/AdminSpamFilterHandler.pmの113行目ですね。「非スパム文章」と「スパム文章」が逆になってます。お急ぎでしたらそこだけ書き換えて使ってください。次版で修正します。 - あき (2007年08月25日 09時51分15秒)
  • 了解です。とりあえず動作に問題無い事が確認出来て安心しました。 - kitta (2007年08月29日 07時37分40秒)
  • 動作に問題無い…と言われると微妙ですね。(^_^;) あれからもかなり修正しました。Internal Server Error への対応の際に、フレーズ解析の部分でバグを含めてしまってました。文字化けを起こしてます。精度がフルに出ないのと、無効文字チェック機能が働かない程度で特に問題はありませんが…。 - あき (2007年08月29日 11時24分42秒)
  • それから、開発者的には精度にまだ大きな不満を持ってます。検出漏れは許せても、誤検出は許られざるべきものと考えています。非スパム99.5%、スパム95%を目標で考えています。(人間が目で見て、「これなら誤検出されても仕方がないだろう」と思えるもの以外は全て認めたくない。ってか、そこまでの精度が確保できれば、CAPTCHAとの連動とかは考えなくても済むようになるでしょう) 一応、採用するフレーズの細かな取捨選択とパラメータ調整、それからフレーズ以外にも半角/全角の記号類を学習材料として加えたことで、精度的な目標はクリアできるようになったのですが、DBサイズがその分大きくなってしまいました(30〜50Kbyte→150〜300Kbyte。一応、学習文章数を減らすこと現行リリースバージョンと同程度のDBサイズ、精度にもできます) 他にも、学習の際に面倒な試行錯誤が発生してしまう部分にも懸念を感じています。もう少し、いろいろ頑張ってみます。Internal Server Error が出る件に関しても、分割学習やバッググラウンド学習等、手段を考えていきたいです。 - あき (2007年08月29日 11時24分55秒)
  • まだまだ良くなりそうですね。今の所、誤検出は あきさんのコメントだけという皮肉な状況です。もうすでにかなり優秀ですよ。改良版 楽しみにしてます。 - kitta (2007年08月30日 05時42分07秒)
  • いろいろやっているんですが、なかなか落ち着きどころがなく苦戦しています。DBサイズの件は、優先度の高い順に頭から何フレーズ分使用するか、で精度を殆ど低下させることなくDBサイズを小さく抑えることができるので問題なかったのですが(すごいです!!50+50文献の学習で、頭から100フレーズ(辞書サイズ2〜3Kbyte)を使っただけでも、平均で95%の精度は出ます)、やはり学習文章数のバランス(偏り)に関しては、現在のところサイト管理者に委ねる以外の案が見つかっておりません。最高レベルの精度を維持するにはかなり重要のようです。当初は「総テキストサイズでバランスを取れば…」と思っていましたが、特徴量なので例えるなら圧縮した際のファイルサイズに近いものがあります。これを自動で算出するのは現実問題かなり難しいです。追加学習という機能のことも考えなければなりませんし、そうなるとまたバランスの問題が出てきてしまいます。後、新しい要素として記号文字を追加しましたが、こちらも様々な問題があります。全ての記号文字を含めると学習文章数の偏りの影響をモロに受けてしまいますし、含める文字を細かく設定すると確かに精度はよくなりますが、行き当たりばったりの対応のようで(要は汎用性がない。サイトによっては使われる記号文字の種類や頻度も異なってくるのではないか?)、ちょっとためらってしまっています。後は、学習文章数の偏りにあまり影響されない正規化方法もあり、過去にそういったアルゴリズムでリリースした版もあったりしたのですが、それでは精度自体は安定するものの、最高レベルの精度は出てくれません。また、サイズの小さな文章の判定に非常に弱くなってしまいます。一言、二言だけのコメントとかの投稿も考えられる現在のシステムでは、この欠点は致命的だと言わざるを得ません。ってことで現状、手詰まり感が出てきてしまってます。設置されるサイトによってスパムの定義も異なりますし、追加学習の件もありますので、文章数に対する中身も濃さは自動で推測させることはできません。かなり難しいです。精度測定しながらの自動パラメータ調整っていうのも考えたのですが、そうなると精度測定用のサンプルをサイト管理者に常にメンテナンスし続けてもらう、ということが前提になってきてしまいますし、そんな条件は開発者側としては設けたくありません。現実的な解としては、学習の際にまずはその文章を自身のDBで特定させてみて、特定を誤った場合だけ本当に学習する、などのような仕組みにしてやれば内容の薄い文章はDBに含まれることはなくなるのかな?と思っています。そうすれば、バランスの問題は解決できそう。でも、非常に仕組みが複雑になってしまいますね。頭の痛い問題ばかりです。 - あき (2007年08月31日 11時44分46秒)
  • 一つ質問です。スパム文章の追加でTBスパムはどの様に追加するのが正しいのでしょうか?例えば以下の樣な時そのままコピペでいいのか もしくは、各要素を追加するのか?と言うことです。宜しくお願いいたします。 - kitta (2007年08月31日 21時46分05秒)
*Title: [adult channel internet tv|http://---dereted---/]
**Excerpt: 潯べた地図
**Weblog: adult channel internet tv
**Tracked: 2007年08月31日 03時32分47秒
*Title: [adult direct tv|http://---dereted---/]
**Excerpt: 潯べた地図
**Weblog: adult direct tv
**Tracked: 2007年08月31日 04時12分34秒
*Title: [adult free internet tv|http://---dereted---/]
**Excerpt: 潯べた地図
**Weblog: adult free internet tv
**Tracked: 2007年08月31日 04時16分18秒
  • 本文が対象ですので、Excerpt の部分だけです。 - あき (2007年08月31日 21時54分46秒)
  • Excerptですね。了解しました。ただ この場合はTitleとWeblogもチェックしていたなら 必ず拒否していただろうになぁ とか思ったりもします。 - kitta (2007年08月31日 22時21分31秒)
  • そうですね。確かに…。(汗) じゃそのように改良します。 - あき (2007年08月31日 23時38分22秒)
  • 最新版をアップしました。今回はかなりの改造&機能拡張を行っています。力入れすぎ…。(汗)  更新内容に関しては更新履歴の項にも記載してありますが、変更量が多すぎて挙げきれません。とにかく…、かなり使いやすくなったと思います。精度面に関しても、拡張判定機能を増やしたことにより、実運用では殆どのスパムがベイジアンフィルタを通すまでもなく弾けるようになっていると思います。但し、今回は大幅な機能拡張を行ったことにより、動作の安定性がいくらかは低下してしまっていると思います。もちろん今後もデバッグは続けますが、システムが大きくなりすぎたため、一人での動作確認には現実的問題限界があります。実際にお使い頂いて、不具合情報などをお寄せ頂けると幸いです。 - あき (2007年09月20日 13時21分04秒)
  • 早速、試させていただいています。zipのサイズが倍くらいになっていて驚きました。インストールですが、前のバージョンに上書きは止めた方がいいですね・・・spamfilterディレクトリ削除、config/spamfilter.dat 削除をしてから入れないと何かとエラーが出てしまいました。しばらく使ってみます。 - ktr (2007年09月20日 17時25分19秒)
  • すみません。早速バグが見つかりました。パラメータを変更しても、その変更したパラメータを使用してくれない箇所があります。ただいま上書き更新しました。 - あき (2007年09月20日 17時55分04秒)
  • 倍くらいにはなってるかもしれません…。(汗) インストールは『学習を初期化』してからでしたら、上書き更新で大丈夫なはずです。 - あき (2007年09月20日 17時57分25秒)
  • ってか、一つ前のバージョン古っ!! 確かにこれじゃ上書き更新じゃダメかもしれないです。ちょっと記憶にズレが…。(汗) - あき (2007年09月20日 18時03分06秒)
  • 最新版をアップしました。スパムログへの出力内容に不自然な点がありましたので見直しました。ベイジアンフィルタによるスパム判定を必須ではなくオプションの一つとしました。(学習ができない環境でも、十分な効果が期待できます) バグが発見されない限り、開発はひとまずこれでクローズします。マニュアル等古いままになってますので、充実させて行く予定です。ご意見、ご感想、不具合情報等ありましたら是非お寄せ下さい。 - あき (2007年09月23日 18時13分20秒)
  • 学習が機能しない環境なので今まで学習機能なし版を使っていましたが、早速こちらを使わせていただきますね。 - 犬山ぽち丸 (2007年09月24日 15時45分55秒)
  • すみません。学習で Internal Server Error が出た際の再試行時の処理に問題を見つけました。後ほど更新しておきます。 - あき (2007年09月24日 18時17分57秒)
  • 犬山ぽち丸殿>了解です。今回のは学習ができなくても意外と使えますよ。というか、学習もできるように努力するのが私の務めですのでそれは続けます。今修正中のものがありますので、修正後ののものだと動作するようになるかもしれません。 - あき (2007年09月24日 18時27分31秒)
  • 最新版をアップしました。現版ではWiki書式挿入編集ボタンプラグインと相性が良くないようです。近いうち調査します。 - あき (2007年10月02日 13時09分07秒)
  • 最新版をアップしました。Wiki書式挿入編集ボタンプラグインと同時に使用するとWiki書式挿入編集ボタンプラグインが機能しなかった問題を解決しました。 - あき (2007年10月03日 10時08分33秒)
  • 最近こちらに中々繋がらなくて新版が出ているのを知りませんでした。現時点の最新版でもまだ学習は機能しないみたいです。やはりサーバ側の制限が原因なのかもしれません。 - 犬山ぽち丸 (2007年10月08日 15時48分07秒)
  • 犬山ぽち丸殿>どういった症状でしょうか? 学習を開始して即エラー?それとも数十秒経ってエラー? 数十秒経ってエラーでしたら、実学習文章数が増えていっている間はまだ学習中ですので、何度か『学習を実行』を繰り返してみてください。学習対象文章数を超えてもエラーが続くようであればバグです。即エラーだった場合ですが、一度パラメータ等を初期化して頂いてからでも駄目でしょうか? エラーはどのステップでおきますか? 『学習を実行』のステップでエラーになってしまう場合は、学習対象文章数をうんと少なくしてやると動作するかもしれません。極端な話1文章だけの追加でもOKです。(『詳細を開く』ボタンをクリックすると詳細が表示されます) 後は誤判定の度に追加学習させていけば良いだけですので…。後は、もしベイジアンフィルタが利用できなくても『海外からの投稿であればスパムと判定する。』や『日本語対応ブラウザからの投稿でなければスパムと判定する。』、『無効文字が含まれていればスパムと判定する。』をONにしてやるだけでも殆どのスパムは阻止できますので、そういった運用を検討されてみるのも良いかもしれません。あ、それから、もし差し支えなければ、サーバ環境等(何処のレンタルサーバを使っているのか等)を教えて頂けると嬉しいです。 - あき (2007年10月08日 17時37分52秒)
  • 色々詳しくありがとうございます。今までずっと『学習を実行』を行うと即座にエラーになってしまいます。ラーニングプログレスログを見てみるとサンプル文章の選り分けまでは完了しているようです。それと使わせて貰っているサーバはusamimi.infoというところのサービスです。 - 犬山ぽち丸 (2007年10月10日 20時04分55秒)
  • 知りたかった情報を察知したうえでのご報告、ありがとうございます。さすがです。「サンプル文章[0][1]=学習用」とか「サンプル文章[0][1]=テスト用」とかっていうのが1行も出力されていないということですね? うーむ、学習を開始しようともせずにエラーになってますね。環境の問題でしょうか? でもだとしたら何かしらのエラーが出るはずなのですが…。エラーの種類はなんでしょう? やはり Internal Server Error でしょうか? ベース辞書の作成はうまくいってるってことですもんね。全く検討がつきません。『テキストブロックサイズ』をもっと小さな値にしてみても駄目でしょうか? 『判定時の偏り』を1.00にしてみたらどうでしょう? - あき (2007年10月10日 22時13分50秒)
  • usamimi.infoですが、新規登録とか、今は受け付けていないのでしょうか? サーバのスペック等についてはいろいろ書かれてるんですが、新規登録に関する説明が見当たりません。プランやレンタル料についての説明なども…。後、肝心のPerlのバージョン等についても書かれてませんね。それから、SpeedyCGIが使えるとか使えないとか書かれてますが、SpeedyCGI上で動作させているのだとすると、ひょっとするとこのプラグインはSpeedyCGI上では動作しないのかもしれませんね。そうでないことを願いたいですが…。 - あき (2007年10月10日 22時27分24秒)
  • FSWikiで主に掲示板を運用していましたが、海外からのSPAM書き込みにうんざりしていました。今は、このプラグインのおかげで、SPAM判定されたログを見ながら、にやにやしています。 - s (2007年10月10日 23時49分47秒)
  • 作者自身もニヤニヤしてます。あ、公には敢えて説明してないのですが、良かったら試しにHerderページやFooterページで{{honeypot_form}}を使ってみてください。面白いものがとれますよ。 - あき (2007年10月11日 00時24分20秒)
  • 説明の仕方が悪くて申し訳ありません。実はラーニングプログレスログは「サンプル文章[0][3]=学習用(改行)サンプル文章0=3」という部分で終了していて「完了」といった感じの表記が無かったもので、完了した部分だけお知らせしてしまいました。webサーバからのエラーメッセージは仰る通りInternal Server Errorです。それとSpeedyCGIを使えるようには設定して設置していないのでそちらはあまり関係ないかもしれません。新規登録についてはこんな感じのようです。http://www.usamimi.info/~sakura/cgi-bin/puki/index.php?ETC - 犬山ぽち丸 (2007年10月11日 10時19分29秒)
  • 了解です。少し安心しました。『ベイジアンフィルタによるスパム判定を行う。』のみをオンにして頂いて、『テキストブロックサイズ』を小さく設定してみてもダメでしょうか? また、ひょっとするとサイト内のページに都合の悪いデータが含まれている可能性も考えられます。もし試したことがなければ…ですが、『サイトデータの登録』をスキップして(飛ばして)試してみては頂けませんでしょうか? それから…、新規登録できそうですね。こちらは無料で提供されているサービスなのでしょうか? - あき (2007年10月11日 11時06分47秒)
  • 『テキストブロックサイズ』を4000ににして、『サイトデータの登録』を行わずにやってみたところ、数回『学習を実行』を繰り返したところで即座にInternal Server Errorが出るようになりました。(それまでの実行ではちょっと時間を置いて同様のエラーが出ていました)ラーニングプロセスログは「サンプル文章[0][271]=学習用(改行)サンプル文章0=271」というところまで行きましたけども、即座にエラーが出るようになって以後はそれ以上ログは増えませんでした。あ、そうそう、usamimi.infoのサービスは無料で提供されています。 - 犬山ぽち丸 (2007年10月11日 13時41分37秒)
  • あれ?『テキストブロックサイズ』は最初から4000ですよね? サンプル文章が271? こちらもおかしいですね。『学習対象文章数』の初期値は50のはずなので、サンプル文章は最大でも50までしかいかないはずなのですが…。一度、『設定を初期化』を実行してから、再度いろいろ試して頂けませんでしょうか? ただ、それで学習が完了したとしても271で落ちる原因は解決されませんね。ひょっとすると『テキストブロックサイズ』をより小さな値に設定すれば動くようになるのかもしれませんが…。一番期待しているいい落ちどころは、『サーバ側で使用できるメモリが制限されている』というオチでしょうか? それでしたら『最大実学習文章数』をうんと小さく(例えば50とかに)してやると一応は動作するかもしれませんね。ですがそればかりはサーバ側の都合なのでプラグイン側としてはどうしようもないです。フルの精度は出ないことになりますが、我慢してそれで利用して頂くことになります。いずれにしてもですが、usamimi.infoが無料で使えるということは好都合ですので、こちらでも登録して動作確認してみようと思います。 - あき (2007年10月11日 14時21分57秒)
  • 作者様、すばらしいプラグインをありがとうございます。早速、ハニーポットをフッターとBBSのトップページに仕込んでみました。とれますね!(なんて言うか、ゴキブリほいほいに獲物が引っかかるような気分です) 今までは、キーワードとhtaccessに頼っていましたが、結構いたちごっこでしたが、ブラウザ判定と英文比率で今の所問題なしです。 - s (2007年10月13日 10時22分07秒)
  • 最近気が付いたのですが、trackbackプラグインなんですが どうも精度が低い。と言うか スコアで弾いている件数が少ないんです。英単語 99% 以上を弾く様にしていたので気が付かなかったのですが、本文しか見ていない気がします。確か trackback元の名前かアドレスもチェックする様にしてもらっていた気がするんですが... 違いましたっけ? - kitta (2007年12月14日 16時21分31秒)
  • kitta殿>うひょひょっ! そうなんですか? 一応テストしてみた記憶はあるのですが、気のせいだったのかな? それとも、元々フレーズ数(文字数)が少ないので精度が出にくいのかな? すぐにでも確認してみたいのですが、ちょっと今体調を壊してまして…。対応が遅くなってしまうと思いますがご了承下さい。他にもやりたいことがいっぱいあるし…。(新コーナーの設置とか、拡張パックの開発再開とか…) ほんとごめんなさい。 - あき (2007年12月14日 22時39分16秒)
  • 気がついたレベルなんで ゆっくりで全然かまわないですぅ。 - kitta (2007年12月15日 07時42分13秒)
  • ちなみに こんな感じです。spam_trackback.log(891) - kitta (2007年12月15日 11時08分17秒)
  • honeypotは ログしない設定が有ると嬉しいです。 - kitta (2007年12月24日 17時05分44秒)
  • honeypotは単独で指定して使用するプラグインですので、ページ中に記載しなければ動作しないのですが…、そういうことじゃないのかな? 「ブラウザ上でON/OFFを切り替えられるようにしてほしい」といったご要望でしょうか? 手作業でも良ければ…ですが、spamfilterディレクトリ内のhoneypot.datという設定ファイルがありますので、その42行目辺りにある『insert_method=〜』の行を全てコメントアウト(行頭に「#」を挿入)してやって下さい。 - あき (2007年12月26日 23時18分24秒)
  • honeypot に スパムを誘導してもログしちゃ ディスクスペースがもったいないかな?とか 思ったもんで。 - kitta (2007年12月27日 14時43分07秒)
  • IPアドレスフィルタが古いためか、国内(SoNet)からの書き込みをアクセス元判定で切ってしまっているようです。判定リストを手動で更新することも出来ますが、更新手順を明確にするとか、定期的にアップデートする機能とかが欲しいです。 - 試用中 (2008年02月29日 22時49分56秒)
  • lynx だと、{{honeypot_form}}で投稿フォームが表示されちゃいますね。まあ、仕方ないんでしょうね。 - 名無し (2008年03月02日 00時42分13秒)
  • 『IPアドレスフィルタが古いためか…』>ご報告ありがとうございます。そうですね。そういった問題がありました。半年おきくらい毎に更新する必要がありますね。どうやってリスト作成したんだろ? 検索効率を上げるためにいくつかのツールを通してリストを生成してますので、これをユーザの方々に行ってもらうのは非常に酷だと思います。アップデートの方向で考えてみます。ですが現在心障により長期療養中ですので、対応には暫くお時間を下さい。申し訳ありません。 - あき (2008年03月02日 18時23分08秒)
  • 『lynx だと…』>テキスト系ブラウザですね。対応できなくはないです。ユーザーエージェントさえ分かれば表示しないようにすることは可能だと思います。申し訳ありませんが、こちらも対応は今暫くお待ち下さい。ご迷惑をお掛けして申し訳ございません。 - あき (2008年03月02日 18時31分21秒)
  • 最新版だとドキュメントが同梱されていないようなのですが、spamfilterフォルダはFSwikiのあるフォルダのどの階層に設置すればよろしいのでしょうか? - J (2008年06月03日 15時34分44秒)
  • よく知らずに答えますが、このページにあるインストール方法で不十分だったですか?古いバージョンも残っていますから、ドキュメントだけ取り出すこともできそうですね。 - いしだなおと (2008年06月03日 15時54分57秒)
  • 『古いバージョンも…』>初版のファイル内にreadmeファイルを見つけました。ありがとうございます。 - J (2008年06月05日 14時13分56秒)
  • スパムがひどいので、コメント機能を一時無効にしています。 - - (2009年10月23日 10時09分00秒)
  • スパム対策用キーワードを追加しておきました。 - KG (2009年10月23日 10時32分00秒)
  • perl 5.10.0 FSWiki 3.6.2 です。コメントスパムが来るようになったので、さきほど、こちらのプラグインをインストールして管理画面で スパムDBの学習 のところを順次実行していきました。 「制度測定を実行」のボタンを押すと 「Software Error:HTML::Template->param() : You gave me an odd number of parameters to param()! at plugin/layout/Layout.pm line 233」 の表示になります。 ・・・自分の側で用意したスパムのコメント投稿はきちんと判別して弾いてくれるし、サイトのほかの機能や表示には(まだ)とくに影響はなさそうなので、なにか不審な動作や不具合がみられるまでは放置しておくつもりです。 ・・・とりあえず、エラーが出ました、ということだけ報告しておきます。 - hypatia (2010年11月22日 17時38分11秒)
  • hypatia様>作者です。久しぶりに覗きにきました。精度測定はお使いのサーバーによってはエラーが出ることがあります。ただ、エラーの内容が記憶のものとは違うようですが…。精度測定はおまけの機能ですので気にしないで下さい。 - あき (2010年11月29日 09時47分18秒)
  • あき さま、コメント、恐縮です。いまのところサイトの機能にはほかになにも影響は見られません。そして、コメントスパムの捕獲率は100%で誤判定ゼロです! 毎日、捕獲されたスパムの一覧をみてほくほくしてます! よいプラグインを作ってくださって、ありがとうございます! エラーのほうは、ほかにもいろいろプラグインを入れているので相互干渉しているのだろうと思っています。そのうち原因がみつけられたらまた、ご報告いたしますね。 - hypatia (2010年11月30日 00時36分00秒)
  • 原因判明しました。Layoutプラグインにてフォームデータの配列要素となる値の設定に失敗していました。Layoutプラグインの方を修正しておきます。なお、修正は最新版のみ行いますので、hypatiaさんが使用しているバージョンとは異なると思われます。一応、以下に修正箇所を示しておきますので旧バージョンをご使用の場合は該当箇所を修正しておいてください。 - KG (2010年11月30日 11時05分49秒)
plugin/layout/Layout.pm:233行目付近の該当箇所
# CGI->param の設定値
foreach my $key ($cgi->all_parameters()) {
    $layouttmpl->param('CGI_PARAM_'.$key => $cgi->param($key));
}
            ↓
# CGI->param の設定値
foreach my $key ($cgi->all_parameters()) {
    my @values = $cgi->param($key);
    if ($#values > 0) {
        @values = map { {'CGI_PARAM_'.$key => $_} } @values;
        $layouttmpl->param('CGI_PARAMS_'.$key => \@values);
    } else {
        $layouttmpl->param('CGI_PARAM_'.$key => $values[0]);
    }
}
  • LayoutプラグインのCGIパラメータをテンプレートキーとする部分の仕様が若干変わってしまいますが、ご了承ください。(配列要素の場合は CGI_PARAM_xxxx ではなく CGI_PARAMS_xxxx 内に CGI_PARAM_xxxx にて各値を設定するようになります。) - KG (2010年11月30日 11時11分01秒)
  • ログインしている自分がスパムとしてはじかれてしまいます。 - 困りました (2012年01月30日 15時22分32秒)
  • ログインしているときはチェックしないをさわったら、はじかれなくなりました。 - お騒がせでした (2012年01月30日 22時52分15秒)
お名前: コメント: