AV-Text-Categorizer

Der V-Text-Categorizer ist eine Software in PHP, die Text anhand von Statistiken über Texte in Kategorien sortiert (z.B. in Spam und nicht-Spam). Funktionierende Beispiele finden Sie in den Dateien get_rank.php und insertmails.php.

Download:
  1. VTC 0.1
Dokumentation:
  1. 0.1

Der Filter, der auf dem Satz von Bayes aufbaut arbeitet folgendermaßen:

In einer Tabelle wird gespeichert, welches Wort wie oft in welcher Kategorie auftaucht. Hier ein Beispiel für einen Spamfilter:

Wort spam ham
berlios 0 1581
/> 0 1118
style=3D 0 1092
Lachschon 0 875
3dsupply 0 803
bytes=32 0 619
TTL=246 0 619
<br 1 1237
bolder 0 584
#333333 0 511

In einer zweiten Tabelle wird gespeichert, wie viele Wörter in allen Texten einer Kategorie enthalten sind, das Beispiel zeigt diese Tabelle für meine Mails:

Kategorie Nummer
ham 444755
spam 720599

Wenn nun ein neuer Text bewertet werden soll, zerteilt das Script ihn in einzelne Wörter, wobei standardmäßig folgende Zeichen als Wort-Trenner betrachtet werden: Leerzeichen, Tabulatoren, Zeilenumbrüche und folgende Zeichen:

.:,;(){}[]!?´`'

Das kann man aber mittels Perl-kompatibler Regulärer Audrücke ziemlich frei konfigurieren.

Dann ermittelt es für jedes Wort des Textes, wie oft es bereits in welcher Kategorie vorgekommen ist und bildet die Summen der Kategorien. Diese Summen werden jeweils durch die Anzahl der Wörter aus der zweiten Tabelle geteilt, um zu vermeiden, dass 10.000 Texte einer Kategorie von 1.000 Texten einer anderen Kategorie "erdrückt" werden.

Man erhält also so viele Zahlen wie man Kategorien hat und teilt schließlich jede dieser Zahlen durch die Summe der Zahlen, damit die Summe der endgültigen Zahlen 1 ergibt, es handelt sich schließlich um Wahrscheinlichkeiten.