不是很技术,但是......我必须在我们正在开发的新网站中实现一个坏词过滤器.所以我需要一个"好的"坏词列表来为我的数据库提供...任何提示/方向?环顾四周谷歌我找到了这个,这是一个开始,但仅此而已.
是的,我知道这种过滤器很容易逃脱......但客户端将是客户端!:-)
该网站将不得不过滤掉英语和意大利语单词,但对于意大利语,我可以让我的同事帮助我建立社区建立的"parolacce"列表:-) - 一封电子邮件即可.
谢谢你的帮助.
我在数据库中有一个发誓单词的字典,以下作品很棒
preg_match_all("/\b".$f."(?:ing|er|es|s)?\b/si",$t,$m,PREG_SET_ORDER);
Run Code Online (Sandbox Code Playgroud)
$t是输入文本,简单地说,$f = preg_quote("punk"); "punk"是来自数据库字典,所以在循环的这一点上表达式如下
preg_match_all("/\bpunk(?:ing|er|es|s)?\b/si",$t,$m,PREG_SET_ORDER);
Run Code Online (Sandbox Code Playgroud)
preg_quote替换符号,例如.#用\\#这样的表达是逃过一劫,但如果词典的检查如."F@CK"或"A$$"与上述表达式输入字符串没有检测到这些符号,我都a$$和f@ck在词典中,但它们不工作.如果我删除preg_quote()单词,则正则表达式无效,因为这些符号不会被转义.
有关如何检测的任何建议"a$$"???
编辑:
所以我想那些没有按预期工作的表达将是例如.
preg_match_all("/\bf\@ck(?:ing|er|es|s)?\b/si",$t,$m,PREG_SET_ORDER);
Run Code Online (Sandbox Code Playgroud)
哪个应该找到f @ ck in$t
更新:
这是我的用法,简单地说; 如果有$m替换它们的匹配"\*\*\*\*",则整个块在循环中通过字典中的每个单词,$f是字典单词并且$t是输入
$f = preg_quote($f);
preg_match_all("/\b$f(?:ing|er|es|s)?\b/si",$t,$m,PREG_SET_ORDER);
if (count($m) > 0) {
$t = preg_replace("/(\b$f(?:ing|er|es|s)?\b)/si","\*\*\*\*\*",$t);
}
Run Code Online (Sandbox Code Playgroud)
更新:看,var_dump:
preg_quote($f) = string(5) "a\$\$"
$t = string(18) "You're such an a$$"
expression = string(29) …Run Code Online (Sandbox Code Playgroud) 像/sf/ask/106515251/,但对于Python - 我正在寻找库,我可以在本地运行和控制自己,而不是Web服务.
(虽然听到你对亵渎过滤的原则的基本反对意见总是很好,但我并不是在这里专门寻找它们.我知道亵渎过滤不能发现所说的每一个有害的事情.我知道在大计划中咒骂事情,并不是一个特别大的问题.我知道你需要一些人力投入来处理内容问题.我只想找到一个好的图书馆,看看我能用它做什么.)
对于用Python编写的网络论坛,我正在亵渎亵渎过滤.
作为其中的一部分,我正在尝试编写一个带有单词的函数,并返回该单词的所有可能的模拟拼写,使用视觉上相似的字符代替特定字母(例如,s†å©køv€rƒ|øw).
我希望我不得不随着时间的推移扩大这个列表,以涵盖人们的创造力,但有一个列表浮动在互联网上的任何地方我可以用作起点吗?
您是否了解任何开源/免费的.NET亵渎过滤器(确切地说是ASP.NET MVC)?我搜索谷歌,但我无法想出任何.如果可能的话,我想避免完全依靠我自己实现它.犯错误或忽略某些事情很容易.
我想的是:
foreach (var word in paragraph.split(' ')) {
if (badWordArray.Contains(word) {
// do something about it
}
}
Run Code Online (Sandbox Code Playgroud)
但我确信有更好的方法.
提前致谢!
UPDATE 我不希望自动...删除淫秽我的web应用程序,我想如果我认为"糟糕"一词是用来通知.然后我会自己检查以确保它是合法的.一种自动标记系统.
去年,我正在开展一个圣诞节项目,允许客户通过256个字符的自由文本字段发送电子邮件给他们圣诞节请求.该项目通过在(非常大的)产品数据库中搜索与文本字段匹配的建议产品,但为那些找不到相关产品的客户提供了自由文本选项.
一个显而易见的问题是客户有机会向一些毫无戒心的客户发送明确的请求,公司的品牌围绕着它.
由于各种原因,该项目最终没有进行,亵渎方面是一个方面.
但是,我回过头来考虑这个项目,并想知道这里可以使用哪种验证方式.我知道clbuttic,我知道这是对这种性质的任何问题的标准回应.
我考虑的解决方案是:
所以有两个问题:
NB - 像"亵渎过滤器是邪恶的"这样的答案是无关紧要的.在这种半假设的情况下,我还没有决定实施亵渎过滤器,也没有决定是否实施亵渎过滤器.我只需要用我的编程技巧做到最好(如果可能的话,应该在LAMP堆栈上).
从给定的字符串中删除亵渎单词的正确方法是什么:
1)我有一个在字符串数组中要查找的100个单词的列表.2)处理部分单词的正确方法是什么?大多数人如何处理这个问题?例如,质量这个词.然后有时候一个部分词也很糟糕 - 假设foobar是一个非常亵渎的词我可能想要禁止foobar和foobar*和*foobar.
那么你把所有单词放在一个表达式中还是循环遍历列表?
解决问题的正确方法是什么?我正在使用Groovy/Grails,但欢迎任何现代语言示例.
我想在我正在开发的Web应用程序中使用base36 ...但由于用户可以看到id作为URL,我想过滤掉亵渎.有人解决了这个吗?或者这甚至是一个真正的问题?
在我的数据库序列中跳过数字是否有意义?
我正在尝试替换文本字符串中的一组单词。现在我有一个循环,它表现不佳:
function clearProfanity(s) {
var profanity = ['ass', 'bottom', 'damn', 'shit'];
for (var i=0; i < profanity.length; i++) {
s = s.replace(profanity[i], "###!");
}
return s;
}
Run Code Online (Sandbox Code Playgroud)
我想要一些工作更快的东西,并且可以用与###!原始单词长度相同的标记替换坏词。
profanity ×10
c# ×2
filter ×2
php ×2
python ×2
regex ×2
base36 ×1
dictionary ×1
glyph ×1
javascript ×1
list ×1
nlp ×1
preg-match ×1
unicode ×1
validation ×1