Pergunta

Não é muito técnico, mas...Tenho que implementar um filtro de palavrões em um novo site que estamos desenvolvendo.Então, preciso de uma lista de palavrões "bons" para alimentar meu banco de dados ...alguma dica/direção?Olhando ao redor com o google eu encontrei isso um, e é um começo, mas nada mais.

Sim, eu sei que este tipo de filtros escapa facilmente...mas o cliente vai é o cliente vai!!!:-)

O site terá que filtrar palavras em inglês e italiano, mas para o italiano posso pedir aos meus colegas que me ajudem com uma lista de "parolacce" criada pela comunidade :-) - um e-mail bastará.

Obrigado por qualquer ajuda.

Foi útil?

Solução

Eu não vi nenhuma linguagem especificada, mas você pode usar isso para PHP, ele irá gerar um RegEx para cada trabalho inserido, de modo que mesmo erros ortográficos intencionais (ou seja,@ss, i3itch ) também será capturado.

<?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>

Outras dicas

Cuidado com erros de clube.

"A Apple cometeu o erro clássico de expulsar seu visionário - quero dizer, veja o que a NeXT tem feito!"

Hum."clbuttico".

Google "clbuttic" - milhares de acessos!

Tem alguém que chama seu carro de 'clbuttic'.

Existem painéis de mensagens "Clbuttic Steam Engine".

Dicionário Webster - sem ajuda.

Hum.O que pode ser isso?

DICA:As pessoas que fizerem bujões sobre seus scripts regex serão envergonhadas quando repetirem esse erro mbutivo.

A Shutterstock tem um repositório no Github com um lista de palavrões usado para filtragem.

Você pode conferir aqui: https://github.com/shutterstock/List-of-Dirty-Naughty-Obscene-and-Otherwise-Bad-Words

Se alguém precisar de uma API, o Google atualmente fornece um indicador de palavrões.

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

{
response: "false"
}

Atualizar:O Google já removeu este serviço.

Eu diria para apenas remover as postagens assim que você tomar conhecimento delas e bloquear os usuários que são excessivamente explícitos em suas postagens.Você pode dizer coisas muito ofensivas sem usar palavrões.Se você bloquear a palavra burro (também conhecido como burro), as pessoas simplesmente digitarão a$$ ou /\55, ou qualquer outra coisa que precisem digitar para passar pelo filtro.

+1 no erro Clbuttic, acho importante que os filtros de "palavrões" procurem espaços iniciais e finais (por exemplo, "ass"), em vez de apenas a string exata, para que não tenhamos palavras como clbuttic , clbuttes, manteiga, buttess, etc.

Você sempre pode convencer o cliente a ter uma sessão de usuários postando palavrões constantemente e criar uma solução fácil para adicioná-los ao sistema.É muito trabalhoso, mas provavelmente será mais representativo da comunidade.

Ao pesquisar este tópico, determinei que o que era necessário era mais do que apenas uma lista que fizesse substituições arbitrárias.Eu construí um serviço web que permite identificar o nível de 'limpeza' que você deseja.Também faz um esforço para identificar falsos positivos - ou seja,onde uma palavra pode ser ruim em um contexto, mas não em outros.Dê uma olhada http://filterlinguagem.com

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top