Gästebuch

Eintrag 76 bis 85 auf Seite 2; bisher 95 Einträge auf 10 Seiten
85. Eintrag von Holger Teichert (http://www.complanar.de/) vom 05.09.2010, 13.47 Uhr :

Das mit b8 0.5 hatte ich schon mitbekommen und mit den Code vor einiger Zeit aus dem svn runtergeladen.
Für meinen „b8 fork“ hatte ich beide Versionen studiert.
Wie gesagt ich, habe eigentlich nur die Wahrscheinlichkeitsberechnungen übernommen, und alles andere neu geschrieben. Aber Ehre, wem Ehre gebührt, ich will nicht alle Ideen für mich beanspruchen.

Aber auch bei b8 0.5 finde ich die Trennung von Datenbank und Berechnung noch nicht ausreichend, obwohl schon viel besser als in der Version 0.4.
Ich finde zum Beispiel, dass die Funktion process_text() in storage_base.php nichts zu suchen hat, weil sie viel mehr als Datenbankfunktionen übernimmt, sie entscheidet nämlich auch, unter welchen Umständen etwas eingefügt/aktualisiert wird - also wesentlich mehr als nur reine Datenbankfunktionen, sondern auch b8-Programmlogik.

Noch ein anderer Tip: Du bezeichnest deinen Filter als Bayesschen Spamfilter. Das ist nicht ganz korrekt, weil du in der Berechnung der Wahrscheinlichkeiten den Satz von Bayes gar nicht verwendest. Es ist zwar verwandt, aber eben nicht dasselbe. Es sei dir verziehen, du bist Zahnarzt, aber ich bin Mathematiker, und kann das nicht mit gutem Gewissen ignorieren…
Der Satz von Bayes ist zwar eine hübsche (und wahrscheinlichkeitstheoretisch auch exakte) Methode die Spamwahrscheinlichkeit zu bestimmen, hat in der Praxis aber einige Einschränkungen, weil die Zahlen unter Umständen sehr klein werden können und dann (durch die Fließkommaberechnungen) Rundungsfehler auftreten, die zu falschen Ergebnissen (z.B. sinnlosen Wahrscheinlichkeiten von 123943,034349%) führen können. Deine Methode ist da etwas besser (obwohl auch gefährdet, wenn man mehr als die bei dir als Standard vorgegebenen 15 wichtigsten Wörter in die Berechnung einbezieht), hat aber nicht mehr viel mit dem Satz von Bayes zu tun.

So, genug des Gelabers, sondern viele Grüße,

Holger

84. Eintrag von Tobias (http://nasauber.de/) vom 03.09.2010, 11.46 Uhr :

Hi :-)

Schön zu sehen, daß meine Arbeit jemandem was bringt! Die PHP-5-Version ist mittlerweile von Grund auf überarbeitet als Download verfügbar. Insbesondere das Datenbank-Backend-Konzept wurde vollkommen neu geschrieben. Du kannst dir das ja gern mal anschauen, es ist erheblich besser als das der PHP-4-Version, insbesondere, wenn eine SQL-Datenbank als Backend zum Einsatz kommt.

Vielen Dank für die Info über deinen „Fork“ :-)

Grüße, Tobias

83. Eintrag von Holger Teichert (http://www.complanar.de/) vom 03.09.2010, 07.50 Uhr :

Hi Tobias,

ich habe aus deinem b8 Filter (noch Version 4) vor einiger Zeit ein REDAXO-Plugin gebaut, mit dem der Filter in dieses CMS eingebaut werden kann.

Ich habe aber bald festgestellt, dass der Server mit einer Fehlermeldung zu überschrittener Skiptlaufzeit abbricht, wenn man z.B. mehr als 20-25 Texte mit einem mal erlernen will.

Das hat mich dazu veranlasst, mich etwas tiefer in den Code zu vertiefen und herausgekommen ist ein anderer Spamfilter namens TrashBouncer, zu finden auch auf meiner Website.

Ich habe das ganze Designkonzept etwas verändert und Datenbank und Berechnungsfunktionen sauber getrennt (das halte ich bei deiner Variante für eine große Schwäche).

Außerdem habe ich eine Art Blacklisting/Whitelisting (Wörter, die ab einer bestimmten Anzahl einen Eintrag unabhängig von seiner Wahrscheinlichkeit blockieren und Wörter die ignoriert werden) hinzugefügt und die Möglichkeit, zwischen verschiedenen Sprachversionen zu unterscheiden, denn das macht auf nicht-englischsprachigen Seiten durchaus Sinn, da Spamtexte bei mir meist auf Englisch sind.

Mir ist klar, dass die Stop- und Ignorierwortlisten nicht allzuviel bringen, aber ich wollte es mal ausprobieren.

Weiter werden alle Versuche geloggt (unter bestimmten Umständen automatisch erlernt) und können einfach wieder umsortiert bzw. gelöscht werden.
Eine einfache Ex-/Importfunktion erleichtert das Übertragen von Trainingsdaten zwischen verschiedenen Installationen.

Ich habe vor, noch auszuwerten, ob die Dichte von besonders kurzen oder besonders langen Wörtern im Text eher hoch oder tief ist. Dazu muss ich aber erst einmal schauen, was so rauskommt, denn das variiert sicher von Sprache zu Sprache. Welche Werte da sinnvoll sind und ob das überhaupt ein brauchbares Kriterium ist, wird sich erst noch herausstellen müssen.

Wenn du Interesse hast, schau es dir doch einfach mal an. Ich hab dich natürlich im Sourcecode verewigt…

Grüße, Holger

82. Eintrag von Tobias Leupold (http://nasauber.de/) vom 09.06.2010, 13.28 Uhr :

Hi :-)

Well, your entry was actually the very first false positive since 2006. But I got thousands of English spam entries and – until now – only German ham entries, so I think we can forgive b8 for this one ;-)

First of all: feel free to write me an email, so I can also answer you in this way.

I think your changes aren't a very good idea. You can't say your "exclude" words say nothing concerning the classification of ham and spam. You just think they do. If they actually do so, b8 won't use them anyway, as they will appear in ham and spam equally and b8 will calculate a rating near 0.5 for these words. The results won't get better, if not even worse creating such an exclude list.
Additionally, you expect your entries to be English. A lot of my spam is Russian or Chinese – so such an exclude list won't work for non-English texts anyway.
Same thing for your lexer change: you expect the texts to be English. Although the idea itself is not bad.

It would leave everything as it is anyway concerning your changes ;-)

But it's always nice to hear that b8 is in use out there :-) As said above, feel free to contact me per email.

Greetings, Tobias

81. Eintrag von stensi (http://stensi.com) vom 09.06.2010, 13.15 Uhr :

Hi Tobias

Just wanted to let you know I found your B8 filter to be extremely useful. I've actually restructured it into a Kohana 3 module (http://github.com/stensi/Kohana-B8) for the Kohana PHP Framework (http://kohanaframework.org/ ).

I've made some additional functionality:

Lexer:
Added config "ignore_words" setting which is an array of words that the lexer will ignore.

For example, the words "and", "is", "when", "about", "would", "you", "should" etc. can always be considered neutral (0.5) so I remove these from the tokens that come back from the lexer.

I found doing this gave me classifications that were further away from 0.5, especially when starting out with very little data in the database. Do you think this is a good idea? or is it better to just leave B8 to figure these out as neutral over time through its normal behaviour?

Degenerator:
Instead of just degenerating with strtoupper and ucfirst, I added inflections (singular and plural). This way I get more possible degenerate matches.

For example, if the token was "books", I would end up with these starting degenerates:

book
BOOK
Book
books
BOOKS
Books

Whereas yours will currently only start with these degenerates:

books
BOOKS
Books

Again, do you think this was a good idea? that will work well with B8's behaviour?

Thanks again. Hope to hear back from you.

80. Eintrag von Libby (http://nasauber.de/) vom 29.09.2009, 13.34 Uhr :

Danke für die Blumen! Und für den Link zu deinem Homepage, das sicher in besserem Design daherkommt … leider habe ich kein Neffe ;-)

79. Eintrag von Klaus vom 28.09.2009, 23.04 Uhr :

Trostloser homepage - Ich habe noch tränen in den augen, es gibt bilder und farben, jemals von design gehört? Hast du ein neffe dann lass ihn ran.

Klaus

78. Eintrag von Libby (http://nasauber.de/) vom 16.04.2009, 13.21 Uhr :

Danke für den Tip! Hab‘s reingeschrieben :-)

77. Eintrag von Martin (http://www.schach-tipps.de) vom 16.04.2009, 12.41 Uhr :

Danke für die Anleitung zur Änderung der UID in Linux, hat mir sehr geholfen.
Ich würde aber empfehlen noch ein "-h" einzubauen, damit symbolische Links auch geändert werden. Vielleicht kannst du ja auch noch eine kurze Erläuterung zum Befehl schreiben, für die die weniger Ahnung haben (so wie ich^^). Wobei in der manpage von find auch alles nachgelesen werden kann...

find <Verzeichnis bzw. /> -xdev -uid <alte UID> -print0 | xargs -0r chown -h <neue UID>

76. Eintrag von afrie vom 16.02.2009, 23.51 Uhr :

Danke für den Hinweis USB-Cardreader unter Linux:
Device Drivers ---> SCSI device support ---> Probe all LUNs on each SCSI device
Das hat geholfen.
MfG afrie

nasauber.de © 2005–2017 by Tobias Leupold