首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用于iPhone的Objective C中的基本脏话过滤器

用于iPhone的Objective C中的基本脏话过滤器
EN

Stack Overflow用户
提问于 2010-05-12 10:23:28
回答 4查看 2.5K关注 0票数 3

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

在Obj-c中,我有

代码语言:javascript
复制
NSString *tokens = [text componentsSeparatedByString:@" "];

然后我遍历每个令牌,看看是否在每个令牌中找到了任何关键字(我在列表中有大约400个)。

认识到误报也是一个问题,如果单词是完美匹配,它会被标记为亵渎,否则如果发现超过3个带有亵渎的单词而没有完全匹配,它也会被标记为亵渎。

稍后我将使用一个更精确地解决这个问题的need服务,但我真的只需要一些基本的东西。所以如果你写了阴茎这个词,它就会变成淘气的,坏的词。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-05-12 10:31:24

我只有一个建议,那就是将字符串标记化。如果单词都是用字符串分隔的,你的方法效果很好,但在大多数使用场景中很少出现这种情况,因为你通常必须处理换行符、标点符号等。如果你感兴趣,试试这个:

代码语言:javascript
复制
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/

票数 3
EN

Stack Overflow用户

发布于 2010-05-12 10:28:53

猥亵过滤器:糟糕的主意,还是令人难以置信的糟糕主意?

在开始编写这样一段代码之前,Jeff有一篇有趣的文章需要考虑:

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

票数 6
EN

Stack Overflow用户

发布于 2010-05-12 10:30:18

嗯,以这种方式搜索当然不是搜索亵渎的最有效的方式……一种更有效的方法是构建一个有限状态自动机来检测单词,并在FSA中运行一次文本。你并不真的需要拆分字符串来查找亵渎,而且所有拆分都会增加额外的分配和复制开销,这是你不需要的。此外,在一些列入黑名单的单词中可能存在共同的模式,您不能通过单独搜索每个单词来利用这些模式。

也就是说,我认为400个单词是相当多的。你的观众到底是谁?如果用户有医疗问题怎么办?这样的问题真的应该被拒绝吗?我只能想到一些在任何情况下都会被认为是亵渎的词,所以你可能需要重新考虑过滤。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2815788

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档