“坏词”filter

不是很技术性,但是…我必须在我们正在开发的一个新网站中实施一个不好的字词filter。 所以我需要一个“好的”不好的单词列表饲料我的数据库…任何提示/方向? 与谷歌环顾四周,我发现这一个,这是一个开始,但没有更多。

是的,我知道这种filter很容易逃脱…但客户端将是客户端! 🙂

该网站将不得不过滤掉英文和意大利文字,但对于意大利语,我可以请求我的同事帮助我build立一个社区build立的“parolacce”列表:-) – 一封电子邮件就可以做到。

感谢您的帮助。

我没有看到任何指定的语言,但是你可以使用这个PHP,它会为每个受损工作生成一个RegEx,所以即使是有意识的错误拼写(即@ss,i3itch)也会被捕获。

<?php /** * @author unkwntech@unkwndesign.com **/ if($_GET['act'] == 'do') { $pattern['a'] = '/[a]/'; $replace['a'] = '[a A @]'; $pattern['b'] = '/[b]/'; $replace['b'] = '[b B I3 l3 i3]'; $pattern['c'] = '/[c]/'; $replace['c'] = '(?:[c C (]|[k K])'; $pattern['d'] = '/[d]/'; $replace['d'] = '[d D]'; $pattern['e'] = '/[e]/'; $replace['e'] = '[e E 3]'; $pattern['f'] = '/[f]/'; $replace['f'] = '(?:[f F]|[ph pH Ph PH])'; $pattern['g'] = '/[g]/'; $replace['g'] = '[g G 6]'; $pattern['h'] = '/[h]/'; $replace['h'] = '[h H]'; $pattern['i'] = '/[i]/'; $replace['i'] = '[i I l ! 1]'; $pattern['j'] = '/[j]/'; $replace['j'] = '[j J]'; $pattern['k'] = '/[k]/'; $replace['k'] = '(?:[c C (]|[k K])'; $pattern['l'] = '/[l]/'; $replace['l'] = '[l L 1 ! i]'; $pattern['m'] = '/[m]/'; $replace['m'] = '[m M]'; $pattern['n'] = '/[n]/'; $replace['n'] = '[n N]'; $pattern['o'] = '/[o]/'; $replace['o'] = '[o O 0]'; $pattern['p'] = '/[p]/'; $replace['p'] = '[p P]'; $pattern['q'] = '/[q]/'; $replace['q'] = '[q Q 9]'; $pattern['r'] = '/[r]/'; $replace['r'] = '[r R]'; $pattern['s'] = '/[s]/'; $replace['s'] = '[s S $ 5]'; $pattern['t'] = '/[t]/'; $replace['t'] = '[t T 7]'; $pattern['u'] = '/[u]/'; $replace['u'] = '[u U v V]'; $pattern['v'] = '/[v]/'; $replace['v'] = '[v V u U]'; $pattern['w'] = '/[w]/'; $replace['w'] = '[w W vv VV]'; $pattern['x'] = '/[x]/'; $replace['x'] = '[x X]'; $pattern['y'] = '/[y]/'; $replace['y'] = '[y Y]'; $pattern['z'] = '/[z]/'; $replace['z'] = '[z Z 2]'; $word = str_split(strtolower($_POST['word'])); $i=0; while($i < count($word)) { if(!is_numeric($word[$i])) { if($word[$i] != ' ' || count($word[$i]) < '1') { $word[$i] = preg_replace($pattern[$word[$i]], $replace[$word[$i]], $word[$i]); } } $i++; } //$word = "/" . implode('', $word) . "/"; echo implode('', $word); } if($_GET['act'] == 'list') { $link = mysql_connect('localhost', 'username', 'password', '1'); mysql_select_db('peoples'); $sql = "SELECT word FROM filters"; $result = mysql_query($sql, $link); $i=0; while($i < mysql_num_rows($result)) { echo mysql_result($result, $i, 'word') . "<br />"; $i++; } echo '<hr>'; } ?> <html> <head> <title>RegEx Generator</title> </head> <body> <form action='badword.php?act=do' method='post'> Word: <input type='text' name='word' /><br /> <input type='submit' value='Generate' /> </form> <a href="badword.php?act=list">List Words</a> </body> </html> 

谨防粘连错误 。

Shutterstock有一个Github回购库,里面有用于过滤的不良词汇列表 。

你可以看看这里: https : //github.com/shutterstock/List-of-Dirty-Naughty-Obscene-and-Otherwise-Bad-Words

如果有人需要一个API,谷歌目前提供了一个坏词指标。

 http://www.wdyl.com/profanity?q=naughtyword { response: "false" } 

更新:Google现在已经移除了这项服务。

我会说,只要你知道他们删除post,并阻止用户过于明确的post。 你可以说非常冒犯的事情,不用发誓的话。 如果你屏蔽了驴(又名驴)这个词,那么人们只需要键入一个$$或者/ 55,或者input任何他们需要input的内容来通过filter。

+1在Clbuttic错误,我认为这是非常重要的“坏词”filter扫描的前后两个空格(例如,“屁股”),而不是只是确切的string,以便我们不会有像clbuttic ,clbuttes,buttert,buttess等

你总是可以说服客户有一个会议的用户只是不断发表咒骂,并作出一个简单的解决scheme,将其添加到系统。 这是很多工作,但可能会更有代表性的社区。

维基百科ClueBot有一个不好的单词filter,阅读它的来源。

http://en.wikipedia.org/wiki/User:ClueBot/Source#Score_list

我最近发现这个免费的坏词过滤在线web服务。 他们允许在JSON WCF和表单post。 它工作得很好,我不必更新列表,因为他们的列表不断更新。 他们有免费和负担得起的保费服务。

它值得一看。

http://www.thefilthylist.com

在研究这个话题时,我确定所需要的不仅仅是一个任意replace的列表。 我已经build立了一个Web服务,使您可以确定您所需的“清洁”级别。 它还努力识别误报 – 即在一种情况下某个词可能是坏的,而在其他情况下则不好。 看看http://filterlanguage.com

Interesting Posts