Vengono contate il numero di volte che un token è presente in ogni corpus (senza effettuare stemming dei termini e ignorando il case dei token) . Alla fine di questa fase si ottengono due grosse hash table, una per ogni corpus, che mappano i token con il numero di occorrenze nel corpus.
Successivamente viene creata una terza hash table in cui ad ogni token viene associata la probabilità (ottenuta con il teorema di bayes) che una email contenente tale termine sia spam.
Quando un nuovo messaggio è passato come input al filtro, viene diviso in token e vengono considerati solo i 15 termini più interessanti. Un termine è tanto più interessante quanto più la sua probabilità di essere indice di spam si discosta da un neutrale valore 0.5.
Una email viene considerata spam se la probabilità combinata (il prodotto delle singole probabilità) dei 15 termini più rilevanti è maggiore di 0.9 (è stato empiricamente settato a questo valore perchè si ottengono i migliori risultati)
Un' ultima questione che si è presentata è stata quella di come gestire contenuti in formato html. Paul Graham dice di averle provate tutte, da ignorare completamente l' html a farne un parsing totale. Alla fine la soluzione scelta è stata quella intermedia: ignorare alcuni token, ma considerarne altri. Questo poichè ignorare completamente l' html è sicuramente una cattiva idea mentre farne una conversione totale in plain text comporta una importante perdita di informazione. Cosí vengono considerati i tag a, img e quelli dei font, ed anche i link e le immagini, poichè contengono preziosi url.
Alessio Pace 2004-03-26