51

不是很技术,但是...我必须在我们正在开发的新站点中实现一个坏词过滤器。所以我需要一个“好”的坏词列表来为我的数据库提供......任何提示/方向?用谷歌环顾四周,我找到了这个,这是一个开始,但仅此而已。

是的,我知道这种过滤器很容易逃过......但客户意志就是客户意志!:-)

该网站必须过滤掉英语和意大利语单词,但对于意大利语,我可以请我的同事帮助我创建一个社区构建的“parolacce”列表:-) - 一封电子邮件就可以了。

谢谢你的帮助。

4

9 回答 9

59

谨防重大错误

“Apple 犯了一个严重的错误,将他们的远见者赶走——我的意思是,看看 NeXT 做了什么!”

唔。“克制”。

谷歌“clbuttic” - 成千上万的点击!

有人称他的车为“clbuttic”。

有“Clbuttic Steam Engine”留言板。

韦氏词典 - 没有帮助。

唔。这会是什么?

提示:那些对他们的正则表达式脚本进行反击的人,当他们重复这个错误的错误时会被拒绝。

于 2008-08-23T19:30:26.587 回答
39

我没有看到指定的任何语言,但您可以将其用于 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>
于 2008-08-23T21:27:01.017 回答
38

Shutterstock 有一个 Github 存储库,其中包含用于过滤 的坏词列表。

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

于 2012-03-09T05:28:18.923 回答
7

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

http://www.wdyl.com/profanity?q=naughtyword

{
response: "false"
}

更新:谷歌现在已经删除了这项服务。

于 2012-08-03T18:52:48.000 回答
4

我想说的是,当您意识到帖子时就删除它们,并阻止那些帖子过于露骨的用户。你可以在不使用任何脏话的情况下说出非常冒犯的话。如果您阻止单词 ass(又名驴),那么人们只需输入 a$$ 或 /\55,或者他们需要输入的任何其他内容以通过过滤器。

于 2008-08-24T01:23:18.280 回答
4

+1 关于 Clbuttic 错误,我认为“坏词”过滤器扫描前导和尾随空格(例如,“ass”)而不是只扫描确切的字符串很重要,这样我们就不会有像 clbuttic 这样的词, clbuttes, butt, buttess 等

于 2008-08-30T08:21:18.230 回答
2

Wikipedia ClueBot有一个坏词过滤器,请阅读其来源。

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

于 2010-09-02T04:29:39.020 回答
1

您总是可以说服客户进行一次用户会话,只是不断地发布脏话,并制定一个简单的解决方案将它们添加到系统中。这是很多工作,但它可能更能代表社区。

于 2008-08-23T22:03:13.503 回答
-2

在研究这个主题时,我确定需要的不仅仅是一个可以进行任意替换的列表。我已经构建了一个 Web 服务,可以让您确定您想要的“清洁度”级别。它还努力识别误报——即一个词在一个上下文中可能是坏的,但在其他上下文中不是。看看http://filterlanguage.com

于 2010-09-02T04:23:08.740 回答