Rails ベースのアプリケーションで基本的な冒涜フィルターを作成しようとしています。これは、適切な属性がユーザーによって送信されるたびに、単純な検索と置換メカニズムを使用します。私の質問は、以前にこれらを書いたことがある人のために、冒とく的な言葉のリストを私のデータベースにインポートできるCSVファイルまたはデータベースがありますか? 冒とく的な表現を独自に置き換える言葉を提出しています。冒涜、人種的中傷、および正確に PG-13 と評価されていないもののデータベースがトリガーされるには多かれ少なかれ必要です。
4 に答える
ブリキ男が示唆したように、この問題は難しいですが、不可能ではありません。上記のすべてを処理する CleanSpeak という名前の商用冒とくフィルタを作成しました (リート スピーチ、音声学、言語規則、ホワイトリストなど) 。CleanSpeak は、ローエンド サーバーで 1 秒あたり 20,000 メッセージをフィルター処理できるため、適切に機能し、適切に機能するものを構築することができます。ただし、CleanSpeak は約 3 年間の継続的な開発の結果であることに言及します。
言語フィルターに取り組みたいと考えているすべての人に、私が伝えたいことがいくつかあります。
- 小さなリストがあり、多くのことが通過しても構わない場合を除き、正規表現を使用しないでください。正規表現は全体的に比較的遅く、管理が困難です。
- 活用、語形変化、およびその他の言語規則を処理するかどうかを決定します。これらは、多くの場合、プロジェクトにかなりの時間を追加します。
- 必要なパフォーマンスのタイプと、ストリングで複数のパスを作成できるかどうかを決定します。パスが多いほど、フィルターは遅くなります。
- スキャンスロープとクラブティックの問題を理解し、これらをどのように処理するかを決定します。これには通常、何らかの形式の言語インテリジェンスとホワイトリストが必要です。
- 空白には別の意味があることを認識してください。単語の区切りとして使用できなくなりました (このため)。
- 句読点はフィルターを回避するために使用できるため、取り扱いには注意してください (th---is のように)。
- ASCII アートと Unicode を使用して文字 (/ = v - これらはスラッシュ) を置き換える方法を理解してください。英語の文字のように見える Unicode 文字がたくさんあり、それらを適切に処理する必要があります。
- 人々は言葉をぶつけて (このように) 常に新しい冒涜的な表現を作り上げていることを理解し、それを処理したいかどうかを判断してください。
ここで忘れていたスレッドに関する詳細情報があるかもしれないので、他のスレッドに関する私のコメントを StackOverflow で検索できます。
個人的な経験に基づいて、あなたはそれが無益な運動であることを理解していますか?
誰かが冒とく的な表現を挿入したい場合、あるコンテキストでは無実で、別のコンテキストでは冒とく的な単語が多数あるため、クリーンな単語をブラックリストに載せないようにコンテキストパーサーを作成する必要があります。CMUのリストをひと目見ると、失礼/粗野/社会的に受け入れられないとは思わない言葉がわかります。固有名や名詞、国、愛情の言葉など、さまざまな単語が表示されます。また、L33Tスピークなどを使用してアルゴリズムを破棄する方法は無数にあります。ウィキペディアとインターネットを検索すると、文字のバリエーションの表を作成できます。
CMUのリストを見て、正しい文字に加えて、すべてa
が、、可能4
性o
がある、0
または可能性があるp
、可能性がある場合、リストの長さを想像してください。そして、それは非常に、非常に、短い例です。e
3
s
5
私は同様のタスクを実行するように依頼され、単語のL33Tバリエーションを生成するコードを記述し、インターネットで入手可能ないくつかの冒とく的/不快なリストに基づいて単語のヒットリストを生成しました。ジェネレーターを実行し、ファイルの1/4を少し超えた後、DBに100万を超えるエントリがありました。その時点でプロジェクトのプラグを抜いたのは、PerlのRegex :: Assembleを使用したとしても、検索に費やす時間がばかげているためです。特に、それでも簡単にだまされる可能性があるためです。
私はあなたがそれを要求した人と長い話をすることをお勧めします、そして彼らが関連するプログラミングの問題を理解しているかどうか、そして特に長期的には正確さと成功の可能性が低いか、またはあなたが打ち切っていることに気付いたときに顧客の反発の可能性があるかどうか尋ねてください彼ら。
追加したものがあります(少しわかりにくくなっています)が、ここにあります:https ://github.com/rdp/sensible-cinema/blob/master/lib/subtitle_profanity_finder.rb
使用できるものは次のとおりです。CMUサイトの攻撃的/冒涜的な単語リスト