1.收集大量的垃圾邮件和非垃圾邮件,建立垃圾邮件集和非垃圾邮件集.2.提取邮件主题和邮件体中的独立字符串,例如ABC32,¥234等作为TOKEN串并统计提取出的TOKEN串出现的次数即字频.按照上述的方法分别处理垃圾邮件集和非垃圾邮件集中的所有邮件.3.每一个邮件集对应一个哈希表,hashtable_good对应非垃圾邮件集而hashtable_bad对应垃圾邮件集.表中存储TOKEN串到字频的映射关系.4.计算每个哈希表中TOKEN串出现的概率P=(某TOKEN串的字频)/(对应哈希表的长度).5.综合考虑hashtable_good和hashtable_bad,推断出当新来的邮件中出现某个TOKEN串时,该新邮件为垃圾邮件的概率.数学表达式为:A事件----邮件为垃圾邮件;t1,t2…….tn代表TOKEN串则P(A|ti)表示在邮件中出现TOKEN串ti时,该邮件为垃圾邮件的概率.设P1(ti)=(ti在hashtable_good中的值)P2(ti)=(ti在hashtable_bad中的值)则P(A|ti)=P2(ti)/[(P1(ti)+P2(ti)];6.建立新的哈希表hashtable_probability存储TOKEN串ti到P(A|ti)的映射7.至此,垃圾邮件集和非垃圾邮件集的学习过程结束.根据建立的哈希表hashtable_probability可以估计一封新到的邮件为垃圾邮件的可能性.当新到一封邮件时,按照步骤2,生成TOKEN串.查询hashtable_probability得到该TOKEN串的键值.假设由该邮件共得到N个TOKEN串,t1,t2…….tn,hashtable_probability中对应的值为P1,P2,……PN,P(A|t1,t2,t3……tn)表示在邮件中同时出现多个TOKEN串t1,t2……tn时,该邮件为垃圾邮件的概率.由复合概率公式可得P(A|t1,t2,t3……tn)=(P1*P2*……PN)/[P1*P2*……PN+(1-P1)*(1-P2)*……(1-PN)]当P(A|t1,t2,t3……tn)超过预定阈值时,就可以判断邮件为垃圾邮件.