Оно как всегда просто и эффективно.
То же самое, что я предлагал в топике, о котором вспомнил HandleX (http://bugtraq.ru/cgi-bin/forum.mcgi?type=sb&b=19&m=115424), только подсчитывать количество слов сраз в двух сообщениях. Как я сразу не догадался? :)
ЗЫ. Кстати, это решение, которое я тогда предлагал, на поверку оказалось эффективным. Пока ещё ни одного нормального сообщения просто так не отсёк, но и ни одного флудера не пропустил. Константу выбрал 1.5. Если кому надо, то вот код на Perl:
sub analys() {
my ($c2, $srctext);
$srctext=join (" ", @_);
# я не стал сильно заморачиваться с оптимизацией :)
# потом поправлю
$c2=0;
@srctext=split /[^\w\x84-\xFF]+/, $srctext;
# разбиение идет по нетекстовым сомволам для KOI8-R
@srctext=grep {length>3;} @srctext;
if (!@srctext) {@srctext=split /[^\w\x84-\xFF]+/, $srctext}
# аналогично
for (my $i=0;$i<=$#srctext;$i++) {
if (!defined($srctext[$i])) {next}
$c2++;
for (my $j=$i+1;$j<=$#srctext;$j++) {if ($srctext[$i] eq $srctext[$j]) {undef $srctext[$j]}}
}
return $c2!=0?($#srctext+1)/$c2:0;
} ---
|