iPhone 向け Objective C の基本的な冒涜フィルター
-
26-09-2019 - |
質問
同様の考えを持つ人々は、冒涜的な言葉をフィルタリングするという基本的な課題にどのように取り組んできましたか。明らかにすべてのシナリオに取り組むことはできませんが、防御の最前線として最も基本的なレベルで 1 つ用意しておくとよいでしょう。
Obj-cでは、私は持っています
NSString *tokens = [text componentsSeparatedByString:@" "];
次に、各トークンをループして、各トークン内にキーワード (リストには約 400 個あります) が見つかるかどうかを確認します。
誤検知も問題であることを認識します。単語が完全に一致する場合、冒涜としてフラグが立てられます。そうでない場合、完全に一致せずに冒涜的な単語が 3 つ以上見つかった場合も、冒涜としてフラグが立てられます。
後で、より正確に問題に取り組む Web サービスを使用しますが、本当に必要なのは基本的なものだけです。つまり、ペニスという言葉を書いたら、それはうんざりする、いたずらな、悪い言葉が書かれたものになるでしょう。
解決
私は単なる文字列をトークン化のための提案を持っています。あなたの方法は、単語がすべての文字列で区切られていますが、通常、あなたが興味を持っている場合は、これを試してみてくださいなど、改行、句読点、対処しなければならないとして、それはめったにほとんどの使用シナリオの場合とされていないだけでなく場合に動作します:
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/する
他のヒント
わいせつフィルター:悪いアイデア、それとも信じられないほど悪いアイデアを交わすのか?
Jeff は、このようなコードに着手する前に考慮すべき興味深い記事を提供しています。
さて、そのように検索すると、確かに冒涜を検索するための最も効率的な方法ではありません...より効率的なアプローチは、単語を検出するための有限状態オートマトンを構築し、そのFSAを通じて一度テキストを実行することです。あなたは本当に冒涜を見つけるために、分割された文字列にする必要はありませんし、すべてその分割は、余分な割り当てを追加し、あなたが必要としないことオーバーヘッドコピーします。また、あなたが個別に各単語を検索して活用されていないブラックリストに単語の一部に共通のパターンがあるかもしれません。
と、私は400本の言葉は非常に多くあると思います。 、正確に、あなたの聴衆は誰ですか?どのようなユーザーが医療疑問を持っている場合はどうなりますか?そのような質問は、実際に禁止されるべきか?私はあなたがフィルタリングを再考する場合がありますので、任意のコンテキストで冒涜と考えられる単語の一握りを考えることができます。
いくつかのこと:
- FSA は、フィルターにどの程度のインテリジェント性を求めるかによって、必ずしも機能するとは限りません
- 正規表現は、実行する数に応じて通常非常に遅くなります
- ニーズや言語にもよりますが、400 ワードはやや少ないです
- フィルタリング、特に「ASSume」などの単語の埋め込みの際には、注意が必要な非常に注意が必要なケースが多数あります。
私の会社、Inversoft は商用フィルタリング ソリューションを構築していますが、それは非常にインテリジェントです。正規表現や FSA は使用しませんが、カスタム構築された高速リニア処理テクノロジーを備えており、非常に高速かつ正確です (1 秒あたり 4,000 以上のメッセージ)。また、俗語、人種的中傷、薬物、ギャング、宗教などを含むさまざまなカテゴリの 600 以上の英単語も収録されています。
サポート付きのインテリジェントなコンテキスト認識ソリューションをお探しの場合は、Inversoft の Clean Speak をチェックしてください。XML WebService を使用すると、Obj-C への接続が簡単になります。