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
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
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
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.
Danke für die Blumen! Und für den Link zu deinem Homepage, das sicher in besserem Design daherkommt … leider habe ich kein Neffe ;-)
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
Danke für den Tip! Hab‘s reingeschrieben :-)
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>
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
Amarok speichert standardmäßig alle Daten in einer SQLite-3-Datenbank. Mit sqlite3 ~/.kde/share/apps/amarok/collection.db kannst du darauf zugreifen. Die Statistik-Daten sind (denke ich) in der Tabelle statistics gespeichert, aber frag mich nicht, was da welche Spalten bedeuten! Da gibt's aber sicher eine Dokumentation dazu. Kannst ja mal auf der Amarok-Homepage schauen, oder auf IRC fragen :-)