Gedanken zu Blog-Spamerkennung mittels bogofilter

Folgendes habe ich gerade im Serendipity Forum eingekippt - vielleicht interessiert es ja auch die Leser hier:

Da Akismet und auch TypePad Antispam tlw. ein wenig viel wegfiltern - gerade Kommentare auf Deutsch - habe ich gestern ein wenig begonnen, mir über Alternativen Gedanken zu machen. Erst wollte ich Spamassassin zur Erkennung von Spam/Ham verwenden, bin dann aber bei bogofilter gelandet, da Spamassassin sehr viele Tests für Mailheader hat und diese auch erwartet (Received-Zeilen etc.).
Da bogofilter ein Bayes-basierter Filter ist, muss er erst lernen, was gut und was schlechte Kommentare sind. Dazu habe ich zwei Dinge getan:
Alle guten Kommentare je in eine Datei pro Kommentar geschrieben:
SELECT author,url,body FROM serendipity_comments WHERE STATUS = 'approved';

Alle erkannten und abgelehnten Spamkommentare in je eine Datei pro Kommentar geschrieben:
SELECT author,url,body FROM serendipity_spamblocklog WHERE type = 'REJECTED';

In meinem Fall ergab das dann zwei Verzeichnisse, einmal "blogspam" mit fat 370.000 abgelehnten Spams und ein "blogham" Verzeichnis mit 700 guten Kommentaren und Trackbacks. Jede der Dateien hatte untereinander author, url und body stehen.
Jetzt zum lernen:
CODE:
loco@bigboy ~ $ bogofilter -v -H -n -B blogham/ # 6663 words, 696 messages

CODE:
loco@bigboy ~ $ bogofilter -v -H -s -B blogspam/ # 331002 words, 369836 messages

Wenn ich jetzt je einen neue Spamkommentar und einen erfundenen, aber validen sauberen Kommentar zur Prüfung durch den bogofilter jage, erkennt er das brav:
CODE:
loco@bigboy ~ $ bogofilter -v -H < test.blog X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.1.7

CODE:
loco@bigboy ~ $ bogofilter -v -H < test.blog X-Bogosity: Spam, tests=bogofilter, spamicity=1.000000, version=1.1.7

Manuell tut das jetzt alles - aber wie verwende ich das in Serendipity? Ich bin SysAdmin, habe es überhaupt nicht mit der PHP Programmierung. Gäbe es denn Interessierte, die diesen Ansatz der Spamfilterung mittels Bayesfilter weiter verfolgen möchten und evtl. in ein Spamblock-Plugin giessen?
Tags für diesen Artikel: , , ,
Kategorie: Technik
Trackbacks

Trackback-URL für diesen Eintrag

Keine Trackbacks
Kommentare
avatar

joschi

02/18/2009 10:02

*Ich habe so etwas ähnliches mal für ein paar andere Skripte geschrieben. Im Hintergrund wird CRM114 (http://crm114.sourceforge.net/) genutzt, als Frontend gibt es eine SOAP- und eine XMLRPC-Schnittstelle. Prinzipiell ist es kein Problem, solchen Bayes-Filter ein PHP-Frontend zu verpassen und bspw. in s9y einzubinden.

Der Nachteil ist allerdings, dass diese Filter nur die bei dir bereits eingekippten Spamkommentare erkennen. Darin liegt der Vorteil von Lösungen wie Akismet: Durch die schiere Menge der Benutzer können Spamkommentare verhältnismäßig sicher einfach an der Auftrittshäufigkeit in verschiedenen Blogs erkannt werden. Die Erkennungsrate für "neue" Spamkommentare wird daher bei deinem trainierten Bogofilter trotzdem geringer sein, als die von Akismet und Co.
avatar

el*Loco

Homepage

02/18/2009 10:09

*Naja, wenn ich bogofilter mit "meinen" Kommentaren anlerne, wovon die "guten" fast komplett deutschsprachig sind - dann bringt das schon eine ganze Menge. Es ist ja schon entscheidend, ob das mein Blog in deutscher Sprache ist, oder das Blog eines russischen Viagralieferanten. Der hat sicher ganz andere Ansichten von "Spam" und "Ham".

Ohne Training bringen Bayes Filter natürlich gar nichts.

CRM114 habe ich mir vor langer Zeit mal angeschaut - das tue ich jetzt vielleicht nochmal.
Kommentar schreiben



Umschließende Sterne heben ein Wort hervor (*wort*), per _wort_ kann ein Wort unterstrichen werden.
Standard-Text Smilies wie :-) und ;-) werden zu Bildern konvertiert.
Die angegebene E-Mail-Adresse wird nicht dargestellt, sondern nur für eventuelle Benachrichtigungen verwendet.

Um maschinelle und automatische Übertragung von Spamkommentaren zu verhindern, bitte die Zeichenfolge im dargestellten Bild in der Eingabemaske eintragen. Nur wenn die Zeichenfolge richtig eingegeben wurde, kann der Kommentar angenommen werden. Bitte beachten Sie, dass Ihr Browser Cookies unterstützen muss, um dieses Verfahren anzuwenden.
CAPTCHA

BBCode-Formatierung erlaubt
Pavatar/Gravatar/Favatar/MyBlogLog/Pavatar Autoren Bilder werden unterstützt.