Einzelnen Beitrag anzeigen

Gruber_Hans_12345

Registriert seit: 14. Aug 2004
1.426 Beiträge
 
Delphi 2007 Professional
 
#1

SPAM Filter selber basteln

  Alt 4. Nov 2004, 10:23
Möchte (habe zum Teil) einen SPAM Filter für mein PRogramm gebaut, aber leider komme ich bei der Umsetztung des bayesian (Meflin wußte es) Filter nicht wirklich auf einen grünen Zweig.

*) Habe eine Liste der Wörter mit einer Bewertung (0 kein SPAM bis 10000 voller SPAM, 4000 ist neutral)
*) nun gehe ich das Mail Wort für Wort durch

Delphi-Quellcode:
p1 := 1.0;
p2 := 1.0;

p1 := p1*(word^.FWertigkeit / 10000.0);
p2 := p2*(1.0 - word^.FWertigkeit / 10000.0);
und am Ende dann (wobei spamcount die Anzahl der gefunden Wörter ist, für die es eine Wertigkeit oben gab)
Delphi-Quellcode:
    if spamCount > 0 then begin
        p1 := Power(p1, 1.0 / spamCount);
        p2 := Power(p2, 1.0 / spamCount);
        Result := 5000 + round(5000.0 * ( (p2 - p1) / (p2 + p1) ));
    end;
Aber irgendwo passt das ganze nicht.
Wenn ich mir ein SPAM Mail durchlaufen lasse :
p2 geht sehr schnell gegen 0
p1 geht etwas langsamer aber trotzdem noch schnell gegen 0 (der größte wert in der Wertigkeitsliste ist 9900)
daher p1 = 0,99*0,99*0,99*0,99*0,99*0,99*0,99*0,99*0,99*0,99* 0,01

wenn ich das nicht hinbekomme, dann verwende ich einfach
Result := Summe(Werigkeit) / spamCount; Hoffe jemand kann mich auf die richtige Spur bringen.
Gruss Hans

2B or not 2B, that is FF
  Mit Zitat antworten Zitat