Kommentare gehen wieder

Ich habe mich jetzt endlich daran gemacht, den schon lange versprochenen Spam-Filter zu schreiben, was erstaunlich einfach ging. Daher könnt ihr jetzt wieder Kommentare schreiben.

Der Filter ist ein sogenannter naiver Bayes-Spamfilter, der die Wahrscheinlichkeit berechnet, dass ein Eintrag Spam ist, basierend darauf wie oft ein Wort in Spam- und Nichtspam-Kommentaren gesehen wurde. Die Implementierung folgt dabei ziemlich exakt [dem englischen Wikipedia-Artikel](http://en.wikipedia.org/wiki/Bayesian_spam_filtering), ohne weitere Heuristiken für seltene Wörter oder anderes.

Falls es jemanden interessiert, ich kann gerne den Code hochladen, es ist erstaunlich wenig. Der wichtigste Einzelpunkt, der mir aufgefallen ist: Der Spam-Filter spielt leicht verrückt wenn ein Wort entweder als Spam oder als “erlaubtes” Wort nie gesehen wurde. Um dies zu vermeiden, wird bei jedem neuen Wort erst mal eine Sichtung sowohl als Spam als auch als nicht-Spam eingetragen, bevor die echten Sichtungen beginnen. Natürlich verfälscht das Ergebnis etwas, aber nicht genug um echt zu stören.

In der jetzigen Form hat der Filter drei Stufen. Kommentare deren Spam-Wahrscheinlichkeit über 95% liegt werden gar nicht erst in die Datenbank geschrieben, sondernd sofort abgelehnt. Kommentare mit einer Spam-Wahrscheinlichkeit von 70% werden eingetragen, aber erst angezeigt sobald ich entschieden habe dass sie kein Spam sind. Diese Entscheidung trainiert den Spam-Filter weiter, so dass er in Zukunft immer genauer werden sollte. Natürlich kann es sein dass ich beide Grenzen noch anpassen muss.

Geschrieben am 3. Juli 2010 um 23:36

5 Kommentare

  1. Geschrieben 4 Juli 2010

    Septdeneuf

    Ist denn ein Kommentar, in dem das Wort SPAM vorkommt selbst SPAM? Keine ahnung, warum mein iphone SPAM immer grosschreibt, aber egal. Schöne grüße aus ny, falls dieser Eintrag seinen weg in deine Datenbank findet.

  2. Geschrieben 4 Juli 2010

    Torsten Kammer (admin)

    Nein, der Spam-Filter schaut nur, welche Worte viel in Spam-Nachrichten vorkommen. SPAM großgeschrieben tut das nie. Das einzige Wort in deinem Artikel, dass er als Spam bewertet hat ist das wort "in", was etwa doppelt so oft in Spam vorkommt wie in normalen Nachrichten und was du auch noch zweimal drin hast. Trotzdem ist die gesamte Spam-Wahrscheinlichkeit für deinen Kommentar nur 5.4503091189246*10^-27. :D

  3. Geschrieben 5 Juli 2010

    Björn

    Soso, die Steffi ist in den USA.

    Dort gibt es laut E-Mails immer günstiges VIAGRA, STELLENANGEBOTE, FLAGGENMÄSTE, CHEF-SESSEL oder auch JOBS.
    Es gibt bestimmt auch Sachen für unter 20 CENT.
    Schreibe mir doch auch mal eine MAIL.

    Hier klicken um diesen Post abzubestellen.

    - BUY VIAGRA NOW - SHIPPING FOR FREE !

    -> UNSUBSCRIBE HERE <-

  4. Geschrieben 5 Juli 2010

    Torsten Kammer (admin)

    Der Filter ist auf meinen Kommentarspam trainiert, nicht den von Emails. "Unsubscribe here" stand bei mir noch nie in einem Kommentar^^. Außerdem unterscheidet der Filter nach Groß- und Kleinschreibung. Daher ist deiner auch als "sehr wahrscheinlich erlaubt" eingestuft.

    Aber trotzdem, seit dem der Filter läuft habe ich keine Spamkommentare mehr erhalten, in der Testphase ohne Filter waren es 50 pro Tag und mehr.

  5. Geschrieben 21 Juli 2010

    Torsten (admin)

    Nur noch ein Test…

New comments can no longer be posted because it got to annoying to fight all the spam.