Pisząc własną metodę, musisz zastosować kombinację heurystyki.
Na przykład bardzo często komentarze spamowe mają 2 lub więcej linków URL.
Chciałbym rozpocząć pisanie tak jak filtr, korzystając ze słownika wyrazów spustowych i mieć go pętli i używać tych, do określenia prawdopodobieństwa:
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;
}
Należy zauważyć, że metoda ta spowoduje wiele fałszywych alarmów, w zależności od zestawu słów; możesz mieć swoją "flagę" witryny dla moderacji (ale zaraz pojawi się na żywo) z prawdopodobieństwem> .3 i < .6, czy wymagają tego> .6 i < .9 wprowadź kolejkę do moderacji (gdzie nie pojawiają się dopóki nie zostanie zatwierdzony), a następnie wszystko powyżej> 1 jest po prostu odrzucane.
Oczywiście są to wszystkie wartości, które trzeba będzie zmodyfikować, ale to powinno zacząć od całkiem prostego systemu. Można dodać do niego kilka innych kwalifikatorów na zwiększenie/zmniejszenie prawdopodobieństwa spamu, takich jak sprawdzanie stosunek złych słów do słów, zmiana wagi słów, itp
odczekaj chwilę ... nie możesz zrobić za każdym razem strtolower ($ text) dla każdego słowa. – dynamic
Dlaczego nie? W ten sposób przechwytuje zmiany w przypadku. Nie wypisujemy nowego łańcucha znaków, tylko go porównujemy i pozbywamy się go. – Tim
Jeśli nie masz na myśli, że wydajność jest zła, a tak, to jest to tylko przykład koncepcji. – Tim