nasauber.de

Blog: Einträge 28.03–20.05.2006

bayes-php 0.2 out now! [Update]

Gerade habe ich die nächste Version meines Bayesschen Spam-Filters bayes-php online gestellt. Die Änderungen sind folgende:

Ich habe einige Verbesserungsvorschläge aus Paul Grahams Artikel Better Bayesian Filtering berücksichtigt. Tokens, die nur in Ham oder nur in Spam vorkommen, werden ab jetzt mit 0,9998 bzw 0,0002 gewertet, falls sie maximal 10 mal aufgetaucht sind, bei häufigerem Vorkommen mit 0,9999 bzw. 0,0001. Das sollte ein schärferes Trennen von Ham und Spam auch bei weniger gespeicherten Spam-Einträgen bewirken.
Außerdem wurde die Konfiguration der Datenbankverbindung in eine extra Datei ausgelagert, so daß man ab jetzt nicht mehr die eigentlichen Programmdateien editieren muß und die Konfiguration nach einem Update erhalten bleibt.

Ich hoffe, bayes-php bringt euch was! Viel Spaß damit :-)

Update:

Nach einer Nacht drüber schlafen habe ich mich doch dazu entschieden, auch die „Degeneration“, wie sie in dem oben genannten Artikel steht, umzusetzen. Das heißt, daß wenn ein Token auftaucht, der nicht in der Datenbank steht, dann wird nach ähnlichen Tokens gesucht. Beispiel: Im Text steht „FREE!!!!!“, aber es gibt diesen Token nicht in der Datenbank. Dann wird bayes-php ab jetzt nach folgenden Tokens suchen:

Wird davon etwas in der Datenbank gefunden, dann wird der Wert benutzt, der am weitesten von 0,5 weg liegt. Wird auch keiner der „degenerierten“ Tokens gefunden, wird (wie vorher) ein Wert von 0,4 veranschlagt.

Ich habe das Paket (trotz Update) nicht 0.2.1 genannt. Sollte sich sich also schon jemand die alte Version 0.2 heruntergeladen haben, dann bitte updaten :-)


Lupenbrille

Am Freitag hab ich mir mein Physikumszeugnis geholt. War ein ungemein gutes Gefühl, für die ganze Schufterei endlich mal was in der Hand zu haben! Womit wir beim Thema wären. Ich hab, im Schweiße meines Angesichts, das Physikum bestanden, heiße jetzt „Cand. med. dent.“ und bin in der Klinik. Schon lang vor der Prüfung habe ich beschlossen, mich, wenn es denn dann so weit wäre, selber mit einer Lupenbrille zu belohnen. Wo geht man also hin, wenn man optisches Gerät haben will? Zum Optiker (oder?!). Es hat sich aber gezeigt, daß die Optiker allesamt nicht unbedingt viel über Lupenbrillen wissen („Tut mir leid … da kann ich Ihnen wirklich nicht weiterhelfen!“). Alle hatten nur einen Katalog von Zeiss da. Ansonsten nur Sachen, die für Sehbehinderte gedacht sind. Da aber die Zeiss-Lösung zum einen deutlich zu teuer und zum anderen nicht das war, was ich mir so vorgestellt hatte, mußte ich mich wohl oder übel selbst auf die Suche machen.
Google. Was sonst? Aber auch Google reagierte auf die Suchanfrage „Lupenbrille“ oder gar „Lupenbrille Zahnmedizin“ eher verhalten. Was ich gefunden habe war die Firma Videns. Deren Produkte sahen auf den ersten Blick genau nach dem aus, was ich gesucht habe: eine Schutzbrille mit Korrekturgläsern, die mit einem Lupenvorsatz kombinierbar ist. Der Blick in den Videns-Online-Shop hat mich dann aber doch schnell auf andere Gedanken gebracht: Eine Schutzbrille mit Halterungen für Korrekturgläser (nicht etwa mit Korrekturgläsern!) und einer 2,5x-Lupe von Heine Optotechnik würde 1170,00 € kosten. Allein 59,00 € davon schon für den Versand! Okay, auch auf die Gefahr hin, daß mir evtl. der Bundeskanzler oder der Papst die bestellte Brille dafür übergeben hätte, sah ich mich gezwungen, nach Alternativen Ausschau zu halten.

Nach langem Suchen, Telefonieren, etc. bin ich am Schluß dann doch fündig geworden und habe eine Kombination von Schutzbrille und Lupe gefunden, von der man denken könnte, daß sie genau für eben diesen Einsatzzweck gemacht sind: eine Schutzbrille von DOC's Safety Glasses kombiniert mit einer Lupe von Heine mit 2,5facher Vergrößerung auf 34 cm.:

Schutzbrille Lupe Schutzbrille mit Lupe

Die Gläser der Brille sind etwas anders geschliffen, als vorgesehen, damit die Halterung der Klemme der Lupe genau oben drüber paßt, also zwischen dem Rahmen und den Gläsern und somit komplett auf der Schutzscheibe sitzt. Die Lupe sitzt bombenfest und die Brille hält, auch mit Lupe, einwandfrei. Ohne weitere Bänder, etc.
Zum einen harmonieren diese beiden Produkte so, als ob sie aufeinander abgestimmt wären, zum anderen ist diese Lösung haargenau das, was ich mir vorgestellt hatte. Man kann die Lupe ohne jeglichen Aufwand in 10 Sekunden auf die Brille setzen. Perfekt :-)

Und abgesehen davon war das, auch mit den Korrekturgläsern, zwar teuer aber bezahlbar. Mit dem netten Nebeneffekt, daß meine Kohle nicht nur in Deutschland, sondern sogar in Bayern geblieben ist ;-)
Jetzt kann die Klinik kommen! Hoffentlich haben meine zukünftigen Patienten nicht allzuviel Angst vor mir, wenn ich das Teil aufsetze *g*


Mein neues Handy

Vor ungefähr einem viertel Jahr hat mir die Telekom einen Brief geschrieben, daß mein Vertrag jetzt nach zwei Jahren wieder verlängert werden könnte. Wie war das? Da bekommt man dann doch ein neues Handy, oder? Naja, da ich zu dem Zeitpunkt weder Zeit noch Lust hatte, mir anzuschauen, was es mittlerweile alles für multimediale Technikwunderwerke gibt, mit denen man gnädigerweise auch noch telefonieren kann, hab ich das Projekt „Handy“ erstmal auf die lange Bank geschoben.
Semesterferien bringen mit sich, daß man da gelegentlich auch mal nix zu tun hat, also dachte ich mir, daß man der Telekom das Geld ja auch nicht unbedingt schenken muß und hab mir ein neues Handy zugelegt. Das Nokia 6230i mit dem obligatorischen, hippen, Apple-iPod-Generations-konformen „i“ ist es dann geworden. War das einzige, was den Eindruck gemacht hat, was zu taugen. Und was es alles kann. Ich kann mich vor lauter Begeisterung kaum mehr halten. Ehrlich. Meine Anforderungen waren: „Ich will damit telefonieren und SMS schreiben“. Jetzt hab ich eine Kamera, die mehr Auflösung hat, als mein Bildschirm, eine mp3- und AAC-Player (natürlich kann der kein Ogg Vorbis), Spiele, die vermutlich früher nichtmal auf meinem Computer gelaufen wären, eine MMC-Karte für die ganzen Filme, die dan so normalerweise mit seinem Handy aufnimmt und sicher noch 1000 andere lebenswichtige Gimmicks, ohne die sich der durchschnittliche 13jährige heutzutage vermutlich nicht mehr auf den Pausenhof trauen würde.
Hab ich schon erwähnt, daß man damit auch telefonieren und SMS schreiben kann? Nun ja, kann es; also waren ja meine Anforderungen (augenscheinlich) erfüllt. Gut. Geben wir dem Ding also eine Chance.

Es hat auch nur einen Nachmittag gedauert, alle Telefonbucheinträge per Infrarot zu kopieren. Das kann man natürlich nicht irgendwie automatisch für alle machen. Aber dafür kann man ja auch Filme filmen. Gut. Zwei Wochen später war es dann so weit: das Telefon meint, der SMS-Speicher wäre voll, und demnächst könnten keine mehr empfangen werden. Mein altes (nunmehr schon fast prähistorisch anmutendes), ausgedientes Handy, das Nokia 6610 (ohne „i“) hatte da eine nette Funktion. Man konnte einstellen, daß bei Speichermangel einfach SMS im Eingang bzw. gespeicherte gesendete überschrieben werden. Das wird das supertolle neue auch schon können, oder? Fehlanzeige. Kann es nicht. Warum um alles in der Welt wird so eine nützliche Funktion einfach weggelassen?! Bei nochmaligem Überlegen konnte das schon mein allererstes Handy, das mittlerweile sicherlich unter Teenagern vollkommen indiskutable Nokia 6210. Das hatte kein Farbdisplay, keinen AAC-Player, keine Kamera, keinen Schnickschnack, keine MMC-Speicherkarte – aber es konnte automatisch SMS im Eingang löschen. Und man konnte ca. 180 SMS speichern.
Nach wievielen SMS hat denn meine Neues aufgegeben? 73 im Eingang, 78 im Ausgang. Gut, manche davon waren verkettete; also schätzen wir doch mal: rund 180. Aha – es hat sich also SMS-technisch nicht viel getan seit dem 6210. Dafür kann das neue weniger als das alte.

Das komplette Ausmaß dieser Tatsache erschließt sich einem allerdings erst, wenn man sich das ganze etwas näher anschaut: Das Telefon hat laut eigenen Aussagen 22,6 MB Speicherplatz. Dazu kommen nochmal 30,3 MB auf der MMC-Karte (ohne die ich mir telefonieren gar nicht mehr vorstellen könnte!!!). Mit 173 Einträgen in meinem Telefonbuch, von denen die meisten zwei Nummern oder mehr enthalten, ist der Telefonbuchspeicher zu sage und schreibe 17 % voll. Nutz tatsächlich jemand 100 %? Das würden, geht man von einem simplen Dreisatz aus, ca. 1018 Einträge sein. Ich will eigentlich bloß meinen Bekanntenkreis in meinem Telefonbuch haben und nicht das Telefonbuch von Konradsreuth mit Ortsteilen.

Gehen wir mal von 180 SMS aus. Und davon, daß in jeder 160 Zeichen sind, was nicht der Fall ist. Dann kommt man für diese SMS (ohne jetzt irgendwelche Header oder sonstwas zu berücksichtigen) auf ganze 28,13 KB oder 0,027 MB. Geht man also mal von 52,9 MB verfügbarem Speicherplatz auf dem Telefon aus, dann hat Nokia immerhin 0,052 % davon für SMS reserviert. Glückwunsch. Zum Vergleich: ich habe mal ein Skript für's erste Semester Zahnmedizin geschrieben. In LaTeX. Die Druckversion hat 130 Seiten, der Quelltext 4109 Zeilen, 15.103 Wörter und ganze 137.909 Bytes. Abgesehen von den Bildern. Das sind 134,68 KB oder 0,13 MB. Anders ausgedrückt: 0,249 % des Speicherplatzes auf dem Telefon.
Bin ich zu altmodisch oder zu engstirnig, wenn ich angesichts der Tatsache, daß weit unter 1 % des Speicherplatzes meines neuen Telefons für eine der beiden Grundfunktionen desselben reserviert sind, meine Stirn kurz in Falten legen mußte? Wofür ist dann bitte der Rest?! Für all die lebenswichtigen Funktionen, die das Telefon sonst hat? Filme drehen? Fotos schießen? Spiele spielen? Kommt es wirklich nur mir so vor, daß da irgendwas ganz gewaltig aus dem Ruder läuft und in keiner Relation zum eigentlichen Sinn und Zweck einens Handys (mehr) steht?

Das Ding kann zwar keine SMS automatisch überschreiben und es hat genausoviel Platz dafür wie ein mittlerweile 5 (?) Jahre altes … aber zumindest kann ich AAC-Dateien damit hören. Na toll. Würde man den kompletten Speicher des Telefons zum SMS speichern benutzen können, könnte man vermutlich über 300.000 speichern. Und dabei würde mir ja eigentlich schon reichen, wenn das Ding sie automatisch überschreiben könnte …


Reguläre Ausdrücke

Ich frage mich ernsthaft, wie ich früher ohne reguläre Ausdrücke leben konnte. Das könnt ich mir beim besten Willen nicht mehr vorstellen!

Anlaß für die Freude: Mein Gästebuch und mein Weblog verlinkt jetzt URLs in Einträgen und Kommentaren automatisch. War an sich auch net schwer: mit einem

/(.*?)((?:https?:\/\/|www.)[^\s">]+)(.*)/

ist da schon viel getan! Wobei ich zugeben muß, daß ich vor ein paar Jahren noch mit Unverständnis auf eine fürs ungeübte Auge verständlicherweise kryptische Zeile Code reagiert hätte ;-) Die php-Umsetzung sieht dann folgendermaßen aus:

preg_match("/(.*?)((?:https?:\/\/|www.)[^\s">]+)(.*)/", $eintrag, $treffer);

Danach hat man dann in $treffer[1] den Text vor dem ersten Link, in $treffer[2] den Link selber und in $treffer[3] den Text danach. Dann muß man ja bloß schauen, daß der Link auch mit „http://“ anfängt und ob's ein interner ist (/^http:\/\/www.nasauber.de/) und entsprechend verlinken. Dann ab mit Treffer 1 und 2 in die Ausgabe und Treffer 3 wird wiederum nach nem Link durchsucht. Und so weiter :-)

Mit Perl könnt man das natürlich noch schöner machen. Und kürzer: Nach einem

$eintrag =~ !((?:https?://|www.)[^\s">]+)!;

hat man in $` den Text vor dem Link, in $1 den Link selber und in $' den Text danach. Aber wenn der Rest der Homepage (leider) in php geschrieben ist, kann man halt nix machen …

Auch meine kürzlich geschriebene Download-Statistik wäre ohne reguläre Ausdrücke aufgeschmissen: denn da wird erstmal geschaut, was grep '$gestern_log.\+GET.\+.gz' /.../...log so zu bieten hat und per /\"(.+?)\".+\"(.+?)\"$/ werden die relevanten Daten rausgezogen.

Ich weiß nicht, wer den Kram erfunden hat … aber vielen Dank dafür :-)