 tp tim peters tim one comcast net writes the false positive rate is NUMBER NUMBER finally i had to scrub a bunch of previously unnoticed spam from my inbox both collections have about NUMBER messages tp does this mean you trained on about NUMBER of each the total collections are NUMBER messages i trained with NUMBER NUMBER messages tp can t guess you re in a good position to start adding more tp headers into the analysis though for example an easy start tp would be to uncomment the header counting lines in tokenize tp look for anthony likely the most valuable thing it s tp missing then is some special parsing and tagging of received tp headers i tried the anthony stuff but it didn t make any appreciable difference that i could see from staring at the false negative rate the numbers are big enough that a quick eyeball suffices then i tried a dirt simple tokenizer for the headers that tokenize the words in the header and emitted like this s s hdr word that worked too well the received and date headers helped the classifier discover that most of my spam is old and most of my ham is new so i tried a slightly more complex one that skipped received data and x from_ which all contained timestamps i also skipped the x vm headers that my mail reader added class mytokenizer tokenizer skip received NUMBER date NUMBER x from_ NUMBER def tokenize_headers self msg for k v in msg items k k lower if k in self skip or k startswith x vm continue for w in subject_word_re findall v for t in tokenize_word w yield s s k t this did moderately better the false negative rate is NUMBER NUMBER over the tests performed so far this is versus NUMBER NUMBER for the previous test run that used the timtest header tokenizer it s interesting to see that the best descriminators are all ham discriminators there s not a single spam indicator in the list most of the discriminators are header fields one thing to note is that the presence of mailman generated headers is a strong non spam indicator that matches my intuition i got an awful lot of mailman generated mail and those lists are pretty good at surpressing spam the other thing is that i get a lot of ham from people who use xemacs that s probably barry guido fred and me one final note it looks like many of the false positives are from people i ve never met with questions about shakespeare they often start with stuff like dear sir madam may i please take some of your precious time to ask you to help me to find a solution to a problem that is worrying me greatly i am old science student i guess that reads a lot like spam jeremy NUMBER hams NUMBER spams false positive NUMBER NUMBER false negative NUMBER NUMBER new false positives new false negatives best discriminators x mailscanner clean NUMBER NUMBER NUMBER x spam status in_rep_to NUMBER NUMBER NUMBER delivered to skip s NUMBER NUMBER NUMBER NUMBER x mailer lucid NUMBER NUMBER NUMBER x mailer xemacs NUMBER NUMBER NUMBER x mailer patch NUMBER NUMBER NUMBER x mailer under NUMBER NUMBER NUMBER x mailscanner found NUMBER NUMBER NUMBER cc zope com NUMBER NUMBER NUMBER i ll NUMBER NUMBER NUMBER references skip NUMBER NUMBER NUMBER NUMBER NUMBER rossum NUMBER NUMBER NUMBER x spam status skip s NUMBER NUMBER NUMBER NUMBER van NUMBER NUMBER NUMBER httpNUMBER zope NUMBER NUMBER NUMBER email addr zope NUMBER NUMBER NUMBER from python org NUMBER NUMBER NUMBER to jeremy NUMBER NUMBER NUMBER zope NUMBER NUMBER NUMBER list archive skip m NUMBER NUMBER NUMBER NUMBER list subscribe skip m NUMBER NUMBER NUMBER NUMBER list unsubscribe skip m NUMBER NUMBER NUMBER NUMBER from zope com NUMBER NUMBER NUMBER return path zope com NUMBER NUMBER NUMBER wrote NUMBER NUMBER NUMBER jeremy NUMBER NUMBER NUMBER email addr python NUMBER NUMBER NUMBER x mailman version NUMBER NUMBER NUMBER NUMBER NUMBER NUMBER x mailman version NUMBER NUMBER NUMBER NUMBER python NUMBER NUMBER NUMBER 