9

いくつかのプログラムにフィードバック機能を提供しました。残念ながら、ある種のスパム保護を含めるのを忘れていました。これにより、ユーザーは自分のサーバーに何でも送信できるようになりました。すべてのフィードバックは巨大なデータベースに保存されます。

最初は定期的にそれらのフィードバックをチェックしました。使用可能なものを除外し、ゴミを削除しました。問題は、1 日あたり 900 件のフィードバックを受け取ることです。本当に役立つのは 4 ~ 5 個だけです。他のメッセージはほとんど 2 種類の意味不明なものです。

  • ナンセンス: jfvgasdjkfahs kdlfjhasdf (キーボードで頭をぶつけている人々)
  • わからない言語

私がこれまでにやったこと:

  1. 「asdf」、「qwer」などを含むフィードバックを削除するフィルターをインストールしました... -> 1 日あたり 700 件のみ

  2. 不適切な言葉を含むものをすべて削除する単語フィルターをインストールしました -> 1 日あたり 600 件 (聞かないでください - しかし、そこには奇妙な人がたくさんいます)

  3. 自分の言語で使用されていない文字を含むメッセージを除外します -> 1 日あたり 400 件

しかし、1日400回は多すぎます。ですから、以前にそのような問題に対処したことがあり、無意味なメッセージを除外するアルゴリズムを知っている人がいるかどうか疑問に思っています。

どんな助けでも本当に感謝します!

4

11 に答える 11

12

独自の実装ではなく、ベイジアン スパム フィルターの既存の実装を使用するのはどうでしょうか。DSpam で良い結果が得られました

于 2009-02-01T22:10:01.877 に答える
12

フィードバック メッセージをアカウントに電子メールで送信し、標準のスパム フィルターを使用するようにシステムをセットアップするという、少し異なるアプローチがあります。それらを gmail 経由で送信し、フィルタリングで攻撃することができます。完璧ではありませんが、実装するのにそれほど労力はかかりません。

于 2009-02-01T22:11:23.530 に答える
6

多くのスパム フィルタで使用されているベイジアン アルゴリズムを試すことができます。

より良いベイジアン フィルタリング

ウィキペディアの説明

一部オープンソース

于 2009-02-01T22:18:49.303 に答える
6

英語のコメントだけを期待している (または気にしている) 場合は、アップロードされたフィードバックで (辞書に関して) 有効な単語の数を単純に数えてみませんか。数値が一定のしきい値を超えた場合は、フィードバックを受け入れます。そうでない場合は、廃棄してください。この単純なヒューリスティックは、辞書を追加することで他の言語にも拡張できます。

于 2009-02-01T22:10:16.497 に答える
5

私のサイトの 1 つで、かなり前にゲストブック機能でスパムの問題が発生しました。私の解決策は、ユーザーに「あなたはスパムロボットですか?」と尋ねる小さなキャプチャのような Q&A フィールドを追加することでした。「いいえ」という言葉を含む回答(「いいえ、私は違います」、「いいえ」、「まったくない」も、楽しみのために...)は、ユーザーが投稿することを許可しました...

キャプチャを使用しないことにした理由は、単純に、ユーザーがサイトにもっと「居心地の良い」雰囲気を求めていたためで、キャプチャは形式的すぎると感じました。これはより個人的なものでした=)

于 2009-02-01T22:11:35.383 に答える
3

最も簡単な方法は、各文字の出現回数を数えることです。E は英語で最も一般的な文字であるため、最もよく使用する必要があります。単語と有​​向グラフの頻度を確認することもできます。英語で最も頻繁に使用されるもののリストを取得するには、ここをご覧ください

于 2009-02-01T22:13:34.350 に答える
2

クロード・シャノンとマルコフのモデルを調べてください。これらは、文字の組み合わせが特定の言語ソースに由来する確率を評価するための統計的手法につながります。

プリンストン大学の関連するコースノートをいくつか紹介します

于 2009-02-01T22:08:26.000 に答える
2

Fidelis Assis と私は、Web アプリケーションを含む他のアプリケーションに簡単に適応できるように、スパム フィルターOSBF-Luaを適応させてきました。このスパム フィルタは、TREC スパム コンテストで 3 年連続優勝しました。(アルゴリズムは Fidelis のものであり、私のものではないため、自慢してもかまいません。)

試してみたい場合は、「ほぼベータ版」のコードを に用意しています。

git clone http://www.cs.tufts.edu/~nr/osbf-lua-temp

きちんとしたリリースにはまだほど遠いですが、automake 1.9 をインストールすれば、コードはビルドされるはずです。それを使用してデータベースをクリーンアップし、アプリケーションに統合する方法について、喜んでアドバイスさせていただきます。

于 2009-02-07T21:40:33.303 に答える
0

はい、人々が指摘したように、スパム フィルターまたはマルコフ モデルを見ることができます。

もっと簡単なのは、各応答のさまざまな単語を数えて、頻度で並べ替えることです。次のような単語が先頭にない場合は、有効なテキストではない可能性があります。

およびまたは... _ _ _

これらは、通常の英語のテキストで最も頻繁に使用される単語です。

于 2009-02-07T21:58:24.097 に答える
0

ベイジアンにインスパイアされた分類器をいくつかのスパム フィルターに固定することに関する前述の回答は良い考えです。あなたのアプリケーションでは、長い無意味な単語がたくさん出てくるように見えるので、パーサーでバイグラムとトライグラムをトレーニングするオプションをオンにするのが最善です。そうしないと、ナンセンスな単語の多くが「今まで見たことがない」ものとして扱われ、あなたのケースでは最も有用な解析ではありません。

于 2009-02-02T14:10:30.630 に答える
0

コメントを保留状態で保存し、Akismet または Defensio を介して渡し、応答を使用して潜在的なスパムとしてマークするか、アクティブとしてマークします。

http://akismet.com/

http://defensio.com/

個人的にはDefensioのAPIの方が好きですが、どちらも素晴らしくうまく機能します。

于 2009-02-07T22:03:14.443 に答える