Pregunta

No es muy técnico, pero...Tengo que implementar un filtro de malas palabras en un nuevo sitio que estamos desarrollando.Así que necesito una lista de palabras "buenas" y malas para alimentar mi base de datos...¿Alguna pista/dirección?Mirando a mi alrededor con google I encontró esto uno, y es un comienzo, pero nada más.

Sí, ya sé que este tipo de filtros se escapan fácilmente...¡¡¡Pero la voluntad del cliente es la voluntad del cliente !!!:-)

El sitio tendrá que filtrar palabras en inglés e italiano, pero para el italiano puedo pedirles a mis colegas que me ayuden con una lista de "parolacce" creada por la comunidad :-) - un correo electrónico será suficiente.

Gracias por cualquier ayuda.

¿Fue útil?

Solución

No vi ningún idioma especificado, pero puedes usar esto para PHP; generará una expresión regular para cada trabajo insertado, de modo que incluso los errores ortográficos intencionales (es decir,@ss, i3itch ) también serán capturados.

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

Otros consejos

Cuidado con errores clbutticos.

"Apple cometió el clásico error de expulsar a su visionario. Quiero decir, ¡mira lo que ha estado haciendo NeXT!"

Mmm."clbuttico".

Google "clbuttic": ¡miles de visitas!

Hay alguien que llama 'clbuttico' a su coche.

Hay foros de mensajes sobre "Clbuttic Steam Engine".

Diccionario Webster: no ayuda.

Mmm.¿Qué puede ser esto?

PISTA:Las personas que hacen globas nubladas sobre sus guiones regex se verán embarcadas cuando repitan este error mbuttive.

Shutterstock tiene un repositorio de Github con un lista de malas palabras utilizado para filtrar.

Puede verificarlo aquí: https://github.com/shutterstock/List-of-Dirty-Naughty-Obscene-and-Otherwise-Bad-Words

Si alguien necesita una API, Google proporciona actualmente un indicador de malas palabras.

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

{
response: "false"
}

Actualizar:Google ahora ha eliminado este servicio.

Yo diría que simplemente elimines las publicaciones a medida que te des cuenta de ellas y bloquees a los usuarios que sean demasiado explícitos con sus publicaciones.Puedes decir cosas muy ofensivas sin usar malas palabras.Si bloqueas la palabra culo (también conocido como burro), entonces la gente simplemente escribirá a$$ o /\55, o cualquier otra cosa que necesiten escribir para pasar el filtro.

+1 en el error de Clbuttic, creo que es importante que los filtros de "malas palabras" busquen espacios iniciales y finales (por ejemplo, "ass") en lugar de solo la cadena exacta para que no tengamos palabras como clbuttic. , clbuttes, buttert, buttess, etc.

Wikipedia: ClueBot tiene un filtro de malas palabras, lea su fuente.

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

Siempre se puede convencer al cliente para que tenga una sesión de usuarios que publiquen constantemente malas palabras y encontrar una solución sencilla para agregarlos al sistema.Es mucho trabajo pero probablemente será más representativo de la comunidad.

Al investigar este tema, determiné que lo que se necesitaba era más que una simple lista que hiciera reemplazos arbitrarios.He creado un servicio web que le permite identificar el nivel de "limpieza" que desea.También se esfuerza por identificar falsos positivos, es decir,donde una palabra puede ser mala en un contexto pero no en otros.Echa un vistazo a http://filterlanguage.com

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top