text: Blog | nasauber.de
  Blog: Einträge 13.01–05.03.2006
  bayes-php
  Gesagt, getan: nachdem ich meinen Bayes-Filter in php geschrieben und einige Zeit getestet habe, stelle ich ihn jetzt der Allgemeinheit zur Verfügung. Dem ganzen habe ich den höchst kreativen Namen "bayes-php" gegeben, das Programm steht ab jetzt zum Download bereit.
  Standardmäßig benutzt bayes-php eine BerkeleyDB, um die statistischen Daten der gelernten Texte zu speichern. Falls diese nicht verfügbar sein sollte, kann alternativ auch eine MySQL-Tabelle benutzt werden.
  Nach ca. 100 gelernten Spam-Einträgen schätzt der Filter so gut wie alle Spam-Texte, die ich ihm anbiete, mit 90 % Wahrscheinlichkeit oder mehr als Spam ein. Den Rest meist mit zumindest mehr als 70–80 %. Wo man die Grenze setzt, ab wann ein Eintrag als Spam gehandhabt wird, bleibt jedem selbst überlassen.
  Also auf jeden Fall viel Spaß damit! Ich würde mich freuen, wenn jemand den Filter benutzen und mir evtl. auch Feedback bezüglich der Leistungsfähigkeit zukommen lassen würde :-)
  Thomas Bayes [Update]
  … so heißt der nette Mathematiker, der das nach ihm benannte Bayessche Theorem über bedingte Wahrscheinlichkeit aufgestellt hat. Gut so! Weil das ist die Grundlage für die Textkategorisierung aufgrund statistischer Daten der Bayes-Filter, die (z. B. in Thunderbird, Spamassassin oder Bogofilter) zur Identifizierung und Bekämpfung von Spam eingesetzt.
  Bedingt dadurch, daß in letzter Zeit einige meiner Bekannten bzw. Betreiber von Seiten, die ich öfters besuche, ihr Gästebuch geschlossen haben, weil es von Spam überschwemmt wird, hab ich mir gedacht, daß es vielleicht nicht dumm wäre, vorzusorgen.
  Auf der französischsprachigen Seite http://www.xhtml.net/ habe ich dann nach kurzem Suchen eine php-Implementation eines Bayes-Filters gefunden: den PHP Naive Bayesian Filter. Das Programm schien mir ein bißchen "zu" objektorientiert und komplex zu sein, aber nach ein paar Änderungen ist der Quellcode dann doch kleiner und übersichtlicher geworden. Jetzt läuft das ganze erstmal auf meinem lokalen Server zum Testen. Das einzige, was ich jetzt noch brauche, sind Spameinträge ;-)
  Die ersten Versuche sehen sehr vielversprechend aus. Sollte mein Gästebuch oder Weblog also demnächst auch zugespammt werden, könnte es passieren, daß ein Bot (oder sonstwer) statt eines "Eintrag gespeichert" ein "Mein Bayes-Filter denkt, daß dieser Eintrag Spam ist, deswegen wird er nicht sofort gespeichert. Sollte dem nicht so sein, wird der Eintrag nachträglich veröffentlicht." zu sehen bekommt.
  Naja, warten wir's mal ab!
  Das Script hat mir doch nicht so gefallen, bzw. es hat doch nicht so gut funktioniert, wie ich mir das vorgestellt hatte. Also hab ich kurzerhand meinen eigenen Bayes-Filter geschrieben. Viel kleiner und übersichtlicher – und vor allem mit einer BerkeleyDB statt MySQL als Datenbank. Ob's funktioniert, wird man sehen …
  Die ersten (Test-)Ergebnisse machen auf jeden Fall einen guten Eindruck und liefern bessere Ergebnisse, als es PHPNaiveBayesian getan hat. Wenn ich das ganze noch etwas getestet habe, dann werde ich den Filter auch hier veröffentlichen. Ich denke mal, es besteht einiger Bedarf an einem kleinen, effektiven Bayes-Filter, der in php geschrieben ist ;-)
  Endlich gibt es jetzt für alle Leute, die von der Gesellschaft ausgeschlossen und geächtet werden, keine Freunde und Bekannte haben, keine neuen Kontakte zu anderen knüpfen können und nie in ihrem kümmerlichen, bedauernswerten Leben an Frauen kommen werden, weil sie im Café nicht mit ihrem Web-'n'-Walk-Handy bei Google nach Soul Melon suchen können, die lang ersehnte Abhilfe: Opera Mini.
  Somit sollte es auch Losern (wie mir ;-), die immer noch, in der festen Überzeugung, daß ein Handy primär zum Telefonieren gut ist und keine mutimediale Unterhaltungsmaschine für den kommunikationsgestörten Menschen von Heute sein sollte, mit einem Uralt-Handy wie dem Nokia 6610 rumlaufen (wofür man in der Grundschule vermutlich mittlerweile verprügelt wird …), möglich sein, eine Reintegration in die Gesellschaft zu erfahren. Man bedenke: Dieses Handy hat noch nicht einmal eine Kamera! Aber es kann WAP. WAP? Okay, davon hatte ich mal was gehört … also, was soll's, probieren wir die Spielerei halt mal aus.
  Die schöne, neue, glitzernde Welt des Internet-überall-Gefühls vor Augen schicke ich also mein Handy auf die oben genannte Adresse. Promt wird mir der Download des 64 KB (!) großen Browsers angeboten. Also gönnen wir uns doch mal den Spaß!
  So stellt sich danach das Programm vor. Also: Los geht's!
  Der erste Eindruck nach dem Starten ist schonmal gut: sofort sticht einem die Google-Search-Bar ins Auge. Damit man die ganzen bereits nach Karten für Soul Melon lechzenden, zu allem bereiten Frauen auch mit eben solchen beglücken kann, ohne weitere unnötige Klicks machen zu müssen. Also dann!
  Wissend, daß ich nicht dringend Karten für Soul Melon brauche, um meine Freundin glücklich zu machen, wird dennoch erstmal die eigene Homepage angeschaut. Also ab zu www.nasauber.de!
  Und siehe da: Ich komme, nachdem der Opera-Server sich meine Seite geholt und für die Darstellung auf sagenhaften 128x128 Pixeln aufbereitet hat, tatsächlich auf meiner Startseite raus! Navigieren funktioniert auch, sogar kleine Bilder werden angezeigt:
  Nun gut … was haben wir jetzt daraus gelernt? Ich wurde danach nicht, wie in der Werbung, von einem Duzend mich bewundernder Frauen umringt, und ehrlich gesagt: es war kein Erlebnis, das mein Leben für immer umkrempeln wird. Aber für die 10 Minuten, die es gedauert hat, war es eine nette Spielerei, auch wenn sich die GPRS-Kosten für die paar KB wahrscheinlich auf einen Euro (für im Endeffekt nichts) belaufen werden.
  Immerhin kann man aber nun dank Opera also auch mit einem "normalen" Handy "das ganze Internet" haben. Ob das in Anbetracht der Eingabemöglichkeit mittels einer T9-Tastatur so eine riesige Freude ist, sei dahingestellt …
  Aber vielleicht kann ich ja demnächst einem armen, alleingelassenen Teufel, dessen einzige Chance, noch zum Glück zu finden, die Suche nach Soul Melon bei Google im Café ist, aus der Patsche helfen … ;-)
  Nachdem ich vor kurzem die Diskussion "Alternative zu FAT" im Gentoo-Forum angefangen habe, bin ich auf das ext2 Installable File System for Windows gestoßen. Das ist ein Windose-Treiber, mit dem man nativ (!) eine ext2-Partition einhängen kann. Mit einem USB-Stick (wenn bzw. weil da nur eine Partition drauf ist?) funktioniert das sogar ohne jegliche Benutzer-Interaktion. Und da ext3 abwärtskompatibel zu ext2 ist, kann man auch eine ext3-Partition mounten, nur eben ohne Journal. Also wenn das mal keine coole Sache ist!
  Welche Folgen hat das nun für mich im Speziellen? FAT fliegt von meinem USB-Stick runter und ext2 kommt drauf. Sollte es tatsächlich mal so weit kommen, daß ich den USB-Stick auf einem Windose-Rechner benutzen muß, ist ja wohl jedem die Installation dieses kleinen Treiberchens zuzumuten. Schließlich hat zu Windose-98-Zeiten auch jeder bereitwillig einen Treiber installiert, um überhaupt einen USB-Stick benutzen zu können! Und in absoluten (evtl. vorhersehbaren) Härtefällen kann man ja trotzdem noch schnell mit mkfs.vfat -F 32 /dev/sda1 ein FAT32-FS drauf erstellen.
  Ein chown root:users .; chmod g+w . im Mountpunkt des eingehängten USB-Sticks sichert Schreibrechte für alle. Man sollte lediglich schauen, daß man keine Datei auf chmod 0600 oder sowas setzt, damit alles auf jeden Fall auch von einem User auf einem anderen *nix-System lesbar ist, wo es evtl. keinen User mit der UID gibt, mit der die Datei erstellt wurde.
  Unterm Strich bleibt also festzuhalten: Die Welt ist wieder ein Stückchen besser geworden und ich bin ein Stück glücklicher mit meinem Computer-Kram ;-)
  Abzuwarten bleibt allerdings, ob aufgrund der kürzlichen Ereignisse nicht vielleicht noch der eine oder andere Hardware-Hersteller auch auf diese Idee kommt. Schön wär's ja!