これは解決するために非常に困難な問題であり、あなたは正規表現がうまくいくかどうかを判断必要(実際のF単語を除いてfrackfaceのような冒涜に辞書の単語を追加すると)埋め込みをどのように処理するのかを示します。
通常、正規表現ではできる限度に制限があり、通常はすべての単語に対して1つの正規表現を使用できなくなります。文字列に対して複数の正規表現を実行するのは、あなたが必要とするパフォーマンスと、ブラックリストの入手可能性に応じて、実際には遅くなります。当初は正規表現システムとしてCleanSpeakを実装しましたが、それは拡張されず、別のメカニズムを使用して書き直しました。
また、フレーズ、句読点、スペース、リート・スピーチなどの言語も考慮する必要があります。これらのすべてが、正規表現を解決策としてあまり魅力的にしません。 | - | ello
h3llo
- リスト項目
- ハロー
- ハロー
- h_e_l_l_o
- :こんにちは単語を使用して、いくつかの例がある(それがこの演習のための冒涜であると仮定)
- 「こんにちは」(このフレーズには不公平な言葉が含まれていないかもしれませんが、それらは不公平です)
また、2つ以上の辞書(ホワイトリスト)の単語が相互に隣り合ったときに冒涜を含む場合の境界ケースを処理する必要があります。S-単語を含むいくつかの例:
静かな時間だこれらは明らかに冒涜ではありませんが、ほとんど自家製、多くの商用ソリューションは、これらのケースで問題を抱えています。
CleanSpeakで使用されているフィルタをこの3年間で完成させました。これらのすべてのケースを確実に処理するために、私たちはそれを調整して改善し続けています。パフォーマンスのためにシステムを完成させるのに8ヶ月を費やし、毎秒約5,000件のメッセージを処理できます。使えるものを作ることはできませんが、出てくるかもしれない多くの問題に対処し、正規表現を使用しないシステムを作成する準備は整っていません。
このリンクをチェックしてください:http://stackoverflow.com/questions/273516/how-do-you-implement-a-good-profanity-filter –
Scunthorpeの問題を見つけてください:http://en.wikipedia .org/wiki/Scunthorpe_problem – rossum