Al escribir su propio método, tendrá que emplear una combinación de heurística.
Por ejemplo, es muy común que los comentarios de spam tengan 2 o más enlaces URL.
me gustaría comenzar a escribir su filtro como tal, el uso de un diccionario de palabras de activación y tienen que recorrer y las usará para determinar la probabilidad:
function spamProbability($text){
$probability = 0;
$text = strtolower($text); // lowercase it to speed up the loop
$myDict = array("http","penis","pills","sale","cheapest");
foreach($myDict as $word){
$count = substr_count($text, $word);
$probability += .2 * $count;
}
return $probability;
}
Tenga en cuenta que este método dará lugar a muchos falsos positivos, dependiendo de tu conjunto de palabras; podría tener su sitio "indicador" para la moderación (pero se activa inmediatamente) aquellos con probabilidad> .3 y < .6, haga que requiera esos> .6 y < .9 ingrese una cola para la moderación (donde no aparecen) hasta que se apruebe), y todo lo que sea mayor de 1 es simplemente rechazado.
Obviamente, estos son todos los valores que tendrá que modificar los umbrales, pero esto debería comenzar con un sistema bastante básico. Se puede añadir a la misma varios otros calificadores para aumentar/disminuir la probabilidad de correo no deseado, como la comprobación de la relación de malas palabras a las palabras, los cambios de peso de las palabras, etc.
espere un momento ... no puede hacer cada vez un strtolower ($ text) por cada palabra. – dynamic
¿Por qué no? De esta forma detecta variaciones en el caso. No estamos produciendo la nueva cadena en minúscula, solo la estamos comparando y librándonos de ella. – Tim
A menos que quiera decir que la eficiencia es mala, que sí, lo es, esto es solo un ejemplo conceptual. – Tim