6

昨年、私はクリスマス プロジェクトに取り組んでいました。このプロジェクトでは、顧客がクリスマス リクエスト用に 256 文字の自由テキスト フィールドを使用してメールを相互に送信できるようにしていました。このプロジェクトは、(非常に大規模な) 製品データベースを検索して、テキスト フィールドに一致する提案製品を探しましたが、問題の製品を見つけることができなかった顧客には自由なテキスト オプションを提供しました。

明らかな懸念の 1 つは、顧客が疑いを持たない顧客に対して、会社のブランドが周囲にある状態でかなり露骨な要求を送信する機会があることでした。

プロジェクトは、さまざまな理由で最終的には進行しませんでした。冒涜的な側面もその 1 つです。

しかし、私はプロジェクトについて考え、ここでどのような種類の検証を使用できるか疑問に思いました。私は、この種の質問に対する標準的な回答であるclbutticを認識しています。

私が検討した解決策は次のとおりです。

  • WebPurify のようなものを実行します
  • MechanicalTurk を使用する
  • リスト内の単語を探す正規表現パターンを記述します。これのより複雑なバージョンでは、単語の複数形と過去時制も考慮されます。
  • 疑わしい単語の配列を書き、それぞれにスコアを付けます。提出物がスコアを上回った場合、検証は失敗します。

したがって、2 つの質問があります。

  1. 提出が失敗した場合、UI の観点からどのように処理しますか?
  2. これらのソリューションの長所と短所、または提案できる他のソリューションは何ですか?

注意 - 「冒とく的なフィルターは悪」などの回答は関係ありません。この半仮説的な状況では、冒涜フィルターを実装することを決定していないか、実装するかどうかの選択を与えられていません。私は自分のプログラミング スキル (可能であれば LAMP スタック上にある必要があります) でできる限りのことをしなければなりません。

4

3 に答える 3

6

ベイジアンフィルタリングについて考えたことはありますか?ベイジアンフィルタリングは、スパムを検出するためだけのものではありません。さまざまなテキスト認識タスクでそれらをトレーニングできます。ベイジアンフィルターを取得し、大量のリクエストテキストを収集して、冒とく的な表現が含まれているかどうかをマークし始めます。しばらくすると(どのくらいの時間がトレーニングデータの量と種類に大きく依存します)、フィルターは冒とく的な表現を含まないリクエストから冒とく的な表現を含むリクエストを検出できるようになります。

これは絶対確実ではありませんが、単純な文字列照合や問題に対処するよりもはるかに優れています。PHPでのベイジアンフィルタリングにはさまざまな可能性があります。

bogofilter

Bogofilterは、任意のUNIXOSで実行されるスタンドアロンのベイジアンフィルターです。これは電子メールのフィルタリングを対象としていますが、あらゆる種類のテキスト用にトレーニングできます。私はこれを使用して、自分のWebサイト(ソース)にカスタムコメントスパムフィルターを実装することに成功しました。他のコマンドラインアプリケーションと同じように、bogofilterとインターフェイスできます。例については、私のソースコードのリンクを参照してください。

あなた自身を転がしてください

チャレンジが好きな場合は、ベイジアンフィルターを完全にゼロから実装できます。これは、PHPでのベイジアンフィルターの実装に関するまともな記事です。

既存のPHPライブラリ

(Ab)既存の電子メールフィルターを使用する

標準のSpamAssassinまたはDSpamインストールを使用して、冒とく的な表現を認識するようにトレーニングすることができます。特に電子メールメッセージを対象としたオプション(たとえば、mimeブロックの解析、ヘッダーの読み取り)を無効にし、ベイジアンテキスト処理を処理するオプションを有効にするようにしてください。DSpamの方が適応しやすい場合があります。SpamAssassinには、ベイジアンフィルターの上にカスタムルールを追加できるという利点があります。SpamAssassinの場合は、すべてのデフォルトルールを無効にし、代わりに独自のルールを作成してください。デフォルトのルールはすべて、スパム電子メールの検出を対象としています。

于 2011-04-27T20:52:12.350 に答える
0

過去に、私は美化された形式のstr_replace. これが私の根拠でした:

  1. 冒涜的な言葉は、メッセージの本来の要点を伝えるが冒涜的な言葉の使用を思いとどまらせる愚かな言葉に置き換える余裕があります
  2. フィルタリングが行われた成功した投稿では、成功メッセージがユーザーに表示されましたが、サニタイズが行われたという通知がありました (「あなたの投稿が追加されました、トイレットマウス」のようなものです)。
  3. 提出が失敗することを望んでいませんでした。投稿は、無修正または検閲済みのいずれかで投稿されました。あなたの場合、冒涜的な投稿を完全に防ぎたいと思うかもしれません。

それだけの価値はありますが、Apple はつい最近、無料のレーザー彫刻でわいせつな言葉を禁止することをやめました。おそらく、彼らには合理的な理由がありましたか?

于 2011-04-25T17:23:46.987 に答える
0

いくつかの文字列一致ルールを使用して、それらのみをモデレーション キューに入れるのはどうでしょうか?

多くのリクエストはフリー テキスト フィールドを使用しない可能性があるため、安全に通過する必要があるようです。

次に、ごくわずかな割合で文字列の一致をトリップして、適度に終了する必要があります. ユーザーベースが大きい場合でも、これによりモデレーション時間を最小限に抑えることができます。f または n という単語の自動化に失敗するなど、明らかな冒とく的な表現を作成して、残りのリストをさらに削減することさえできます。

モデレートページを使いやすくし、メッセージにフラグを立てた単語を強調表示して、スキャンしてクリーンアップするための迅速なプロセスにする必要があります。ゴミを投稿しようとしている人や、誤検知が多すぎる場合は、必要に応じて調整してください。

または、@Sanderが提案したようなベイジアンフィルタリングでこの戦略を使用してください。

編集:また、「不正行為を報告する」ボタンは、悪いものが通過しているかどうかを知るのに役立ちますが、これには送信されたメッセージをしばらく保存する必要があり、これが非常に活発になる場合は理想的ではないかもしれません.

于 2011-04-27T21:03:18.333 に答える