Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
iPhone目标C中的基本亵渎过滤器_Iphone_Objective C_Regex_Web Services_Profanity - Fatal编程技术网

iPhone目标C中的基本亵渎过滤器

iPhone目标C中的基本亵渎过滤器,iphone,objective-c,regex,web-services,profanity,Iphone,Objective C,Regex,Web Services,Profanity,你的志同道合的人是如何应对过滤亵渎的基本挑战的?显然,我们不可能解决所有的情况,但最好有一个最基本的层面作为第一道防线 在Obj-c中,我有 NSString *tokens = [text componentsSeparatedByString:@" "]; 然后我循环遍历每个令牌,看看是否在每个令牌中找到了任何关键字(我在列表中找到了大约400个关键字) 认识到误报也是一个问题,如果单词完全匹配,则其标记为亵渎,否则如果发现3个以上带有亵渎的单词不完全匹配,则其也标记为亵渎 稍后我将使用一

你的志同道合的人是如何应对过滤亵渎的基本挑战的?显然,我们不可能解决所有的情况,但最好有一个最基本的层面作为第一道防线

在Obj-c中,我有

NSString *tokens = [text componentsSeparatedByString:@" "];
然后我循环遍历每个令牌,看看是否在每个令牌中找到了任何关键字(我在列表中找到了大约400个关键字)

认识到误报也是一个问题,如果单词完全匹配,则其标记为亵渎,否则如果发现3个以上带有亵渎的单词不完全匹配,则其也标记为亵渎


稍后我将使用一个更精确地解决问题的Web服务,但我确实需要一些基本的东西。所以,如果你写了“阴茎”这个词,它会变成是的,顽皮的,写了不好的词。

淫秽过滤器:坏主意,还是难以置信的相互交流坏主意?

杰夫在着手编写这样一段代码之前有一篇有趣的文章:


那么,以这种方式搜索肯定不是搜索亵渎的最有效方式。。。一种更有效的方法是构造一个有限状态自动机来检测单词,并在FSA中运行文本一次。实际上,您不需要拆分字符串来查找亵渎内容,而且所有这些拆分都会增加额外的分配和复制开销,而这是您不需要的。此外,在一些被列入黑名单的单词中可能存在一些常见的模式,您没有通过单独搜索每个单词来利用这些模式


也就是说,我认为400字是相当多的。你的听众到底是谁?如果用户有医疗问题怎么办?这些问题真的应该被禁止吗?我只能想到一些在任何上下文中都会被视为亵渎的单词,因此您可能需要重新考虑过滤。

我只是有一个关于标记字符串的建议。如果单词都由字符串分隔,则您的方法很有效,但在大多数使用场景中很少出现这种情况,因为您通常需要处理换行符、标点符号等。如果您感兴趣,请尝试以下方法:

NSMutableCharacterSet *separators = [NSMutableCharacterSet punctuationCharacterSet];

[separators formUnionWithCharacterSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];

NSArray *words = [bigString componentsSeparatedByCharactersInSet:separators];
资料来源:

有几件事:

  • FSA不一定能工作,这取决于您希望过滤器的智能程度
  • 正则表达式通常非常慢,这取决于您要运行的数量
  • 400字有点少,这取决于你的需要和语言
  • 过滤时有许多非常棘手的情况需要小心,特别是嵌入“假定”之类的词
我的公司Inversoft构建了一个商业过滤解决方案,它非常智能。它不使用正则表达式或FSA,但有一个定制的快速线性处理技术,使它非常快速和准确(每秒4000多条消息)。它还有600多个英语单词,包括俚语、种族诽谤、毒品、帮派、宗教等


如果您正在寻找具有支持的智能上下文感知解决方案,您应该查看Inversoft的Clean Speak。使用XML Web服务将其连接到Obj-C应该很简单。

同意,淫秽过滤器是一个糟糕的主意。在任何正常情况下,我都会尽量避免使用亵渎过滤器,这对我来说似乎也是浪费时间……但客户aka客户特别要求它,强调不喜欢亵渎,我100%地意识到我的解决方案是“绷带”,但我需要一些至少能解决最普遍情况的东西。版本2.0将使用更现实的过滤,并将涉及一个社交报告工具,即“报告此用户”。但在那之前,我需要的是一条绷带。@David,这听起来很合理。苹果也会拒绝那些含有过多令人反感内容的应用,比如诅咒和粗鲁的谈话。因此,有时需要过滤器来通过应用商店指南;我们有一个应用程序,允许用户在一些论坛上交流,但我们的大多数用户都是儿童,并且有一些非常粗俗甚至色情的公共交流。appreview不会通过我们,所以我们要么切换到13+并失去一半的用户统计,删除用户交互并失去一半功能,要么让一些智能的亵渎过滤工作,可能是使用Regex。如果我们自己建造的话,可能会把它放在github上。非常感谢Sosburn!我现在正在使用你的代码!我感谢你在那里的帮助!好吧,这不是答案,这是一个很好的提示,用来恭维我正在努力实现的目标。你是对的,这个列表是暂定的,下载了一个论坛的列表,最终的列表可能会被删减,但它会随着时间的推移而改变。我希望在将列表提交给客户之前,将其作为一个基础/起点,客户可以最终决定哪些需要,哪些不需要。我正在考虑使用FSA正则表达式而不是线性while循环,我只是对iPhone SDK还不太熟悉,所以一旦我确定了最好的方法是什么,我将采用GREP方法。我将继续使用正则表达式,这应该会更有效一些。