Quando si scrive il proprio metodo, è necessario utilizzare una combinazione di euristica.
Ad esempio, è molto comune che i commenti spam contengano 2 o più collegamenti URL.
mi piacerebbe cominciare a scrivere il filtro in questo modo, usando un dizionario di parole grilletto e lo hanno loop through e usare quelli per determinare la probabilità:
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;
}
Nota che questo metodo si tradurrà in molti falsi positivi, a seconda del set di parole; potresti avere il tuo sito "flag" per la moderazione (ma diventa disponibile immediatamente) quelli con probabilità> .3 e < .6, hanno bisogno di quelli> .6 e < .9 inserire una coda per la moderazione (dove non appaiono fino all'approvazione), quindi qualsiasi cosa oltre> 1 viene semplicemente rifiutata.
Ovviamente questi sono tutti i valori che dovrete modificare le soglie, ma questo dovrebbe iniziare con un sistema piuttosto semplice. È possibile aggiungere ad esso diverse altre qualificazioni per aumentare/diminuire la probabilità di spam, come ad esempio il controllo del rapporto di cattive parole con le parole, cambiando i pesi di parole, ecc
aspetta un attimo ... non puoi fare ogni volta un testo strtol ($) per ogni parola. – dynamic
Perché no? In questo modo prende le variazioni sul caso. Non stiamo emettendo la nuova stringa minuscola, la stiamo solo confrontando e eliminandola. – Tim
A meno che non si intenda dire che l'efficienza è negativa, che sì, lo è, questo è solo un esempio di concetto. – Tim