3

敬虔な人は、冒とく的な表現をフィルタリングするという基本的な課題にどのように取り組みましたか。明らかに、すべてのシナリオに取り組むことはできませんが、防御の最前線として最も基本的なレベルで 1 つを用意することをお勧めします。

Obj-cで私は持っています

NSString *tokens = [text componentsSeparatedByString:@" "];

次に、各トークンをループして、各トークン内にキーワード (リストに約 400 個あります) が見つかるかどうかを確認します。

偽陽性の実現も問題です。単語が完全に一致する場合は、冒とく的な表現としてフラグが立てられます。それ以外の場合、冒とく的な単語が 3 つ以上見つかった場合でも、完全に一致するわけではなく、冒とく的な表現としてフラグが立てられます。

後で、この問題をより正確に解決する Web サービスを使用しますが、必要なのは基本的なことだけです。したがって、ペニスという単語を書いた場合、それはうん、いたずら、いたずら、悪い言葉が書かれます。

4

4 に答える 4

6

猥褻フィルター: 悪い考えか、信じられないほど性交する悪い考えか?

Jeff は、そのようなコードに着手する前に考慮すべき興味深い記事を持っています。

http://www.codinghorror.com/blog/2008/10/obscenity-filters-bad-idea-or-incredively-intercoursing-bad-idea.html

于 2010-05-12T02:28:53.090 に答える
3

文字列をトークン化するための提案があります。単語がすべて文字列で区切られている場合、あなたの方法はうまく機能しますが、通常は改行や句読点などを処理する必要があるため、ほとんどの使用シナリオではそうではありません。興味がある場合は、これを試してください。

NSMutableCharacterSet *separators = [NSMutableCharacterSet punctuationCharacterSet];

[separators formUnionWithCharacterSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];

NSArray *words = [bigString componentsSeparatedByCharactersInSet:separators];

ソース: http://www.tech-recipes.com/rx/3418/cocoa-explode-break-nsstring-into-individual-words/

于 2010-05-12T02:31:24.153 に答える
2

確かに、その方法で検索することは、冒とく的な表現を検索する最も効率的な方法ではありません...より効率的なアプローチは、単語を検出するための有限状態オートマトンを構築し、その FSA を介してテキストを 1 回実行することです。冒涜的な表現を見つけるために文字列を分割する必要は実際にはありません。また、そのすべての分割により、必要のない余分な割り当てとコピーのオーバーヘッドが追加されます。また、ブラックリストに登録された単語の一部には、各単語を個別に検索しても悪用されていない共通のパターンがある場合があります。

そうは言っても、400語はかなり多いと思います。正確には、あなたの聴衆は誰ですか? ユーザーが医学的な質問をした場合はどうなりますか? そのような質問は実際に禁止されるべきですか?どんな文脈でも冒涜と見なされる単語はほんの一握りしか思いつかないので、フィルタリングを再考することをお勧めします.

于 2010-05-12T02:30:18.047 に答える
1

いくつかのこと:

  • FSA は、フィルターをどの程度インテリジェントにするかによっては、必ずしも機能するとは限りません。
  • 正規表現は、実行したい数に応じて、一般的に非常に遅くなります
  • ニーズと言語によっては、400 語はやや少ない
  • 特に「ASSume」などの単語の埋め込みなど、フィルタリングの際には注意が必要な非常にトリッキーなケースが数多くあります。

私の会社である Inversoft は、非常にインテリジェントな商用フィルタリング ソリューションを構築しています。正規表現や FSA は使用しませんが、非常に高速かつ正確 (毎秒 4,000 件以上のメッセージ) を実現するカスタム構築の高速線形処理テクノロジを備えています。また、スラング、人種的中傷、ドラッグ、ギャング、宗教など、さまざまなカテゴリの 600 を超える英単語も収録されています。

サポート付きのインテリジェントなコンテキスト認識ソリューションを探している場合は、Inversoft の Clean Speak をチェックしてください。それを Obj-C に接続することは、XML WebService を使用して簡単に行うことができます。

于 2010-05-13T15:44:19.960 に答える