龙源期刊网基于内容过滤的反垃圾邮件系统的设计与实现作者:杜娟;邵盈盈;李利杰来源:《价值工程》2010年第07期摘要:垃圾邮件日益蔓延,引起全世界的广泛关注,研究基于内容过滤的反垃圾邮件技术,主要包括基于原则评分和基于概率统计的方法,并进行系统的设计和实现,最后,在实验中通过采用K次交叉的验证方法,得到系统的评价指标,并证明了系统的有效性。Abstract:Theincreasingspreadofspamhascausedwidespreadconcernaroundtheworld.Thestudyonanti-spamtechnologybasedoncontentfilteringincludesmethodsbasedonprinciplescoringandstatisticalprobabilityandthedesignandimplementationofthesystem.Finally,bymeansofKtimescross-validationintheexperiment,weobtaintheevaluationindexofthesystemandproveeffectivenessofthesystem.关键词:反垃圾邮件;内容过滤;贝叶斯算法;规则Keywords:anti-spam;contentfiltering;Bayesianalgorithm;rules中图分类号:TP311文献标识码:A文章编号:1006-4311(2010)07-0145-020引言随着Internet的迅猛发展,电子邮件以使用方便、快捷、廉价、可靠的特点很快被广大网民所接受,已成为当前最流行的信息交流方式。电子邮件给我们带来便利的同时,垃圾邮件应运而生,带来了巨大的危害,因此研究和设计高效率的垃圾邮件过滤系统有着重大的现实意义。贝叶斯算法广泛应用于文本分类等领域,垃圾邮件过滤本质上是文本分类问题,因此贝叶斯算法在垃圾邮件过滤领域有着很好的应用。基于贝叶斯算法的英文垃圾邮件的过滤达到了比较理想的效果,但对中文的支持还有一定的难度。本文通过了解现有反垃圾邮件技术,主要研究基于规则智能评分和贝叶斯概率统计方法,设计并实现一个基于内容过滤的反垃圾邮件系统,为反垃圾邮件技术的改进提供了参考依据。1系统设计及实现1.1国内外反垃圾邮件现状分析国内外市场上反垃圾邮件产品层出不穷,所采用的技术包括黑/白名单、SMTP认证、基于规则的内容过滤、基于概率统计的内容过滤、分布式特征数据库、灰名单、CR技术、邮件源头认证、蜜罐技术等。龙源期刊网基于内容的过滤技术史目前最主要的反垃圾邮件技术,由于过滤效果比较准确可靠,已被大多商用反垃圾邮件产品所采用。同时,为了能更可靠地判断垃圾邮件,启发式分析机制也经常被使用,通过综合各个反垃圾邮件模块,加权计算出一封邮件的总分后再与阀值进行比较,评估其为垃圾邮件的可能性,并将判断所得的邮件等级标识插入邮件信头中,指示邮件应用软件进行具体的处理。1.2基于内容过滤的反垃圾邮件技术一般常用于垃圾邮件过滤的文本分类方法主要有两种:一是基于规则,从训练文本集合中归纳总结得到显示规则,准确率比较高,但维护工作量比较大。一个比较知名的基于规则评分的过滤系统是SpamAssasion开源软件,它采用启发式检测机制对邮件进行分类,支持内置的朴素贝叶斯过滤模块,可以配合各种MTA使用,并且,CCERT反垃圾邮件研究小组还推出了周期更新的中文垃圾邮件过滤规则集Chinese_rules.cf,解决中文邮件过滤准确性不高的问题。二是基于概率统计,例如,贝叶斯过滤方法。目前,在各类发垃圾邮件产品中,朴素贝叶斯模型比较常用,它采用了特征独立性假设,可以简化计算,降低复杂度,并且具有较高的精确度。在实际反垃圾邮件系统中,贝叶斯分类器的基本工作原理为:收集邮件样本,人工分类合法邮件和垃圾邮件两个集合;对两类邮件集中每封邮件进行粉刺,即提取出特征项(Token)。为减小开销,可剔除一切出现频率过少的词或频率虽高但无法作为判断依据的非用词,例如,a、the、of、for等。1.3贝叶斯过滤算法的基本步骤①收集大量的垃圾邮件和非垃圾邮件,建立垃圾邮件集和非垃圾邮件集。②提取邮件主题和邮件体中的独立字串例如ABC32,¥234等作为TOKEN串并统计提取出的TOKEN串出现的次数即字频。按照上述的方法分别处理垃圾邮件集和非垃圾邮件集中的所有邮件。③每一个邮件集对应一个哈希表,hashtable_good对应非垃圾邮件集而hashtable_bad对应垃圾邮件集。表中存储TOKEN串到字频的映射关系。④计算每个哈希表中TOKEN串出现的概率P=(某TOKEN串的字频)/(对应哈希表的长度)⑤综合考虑hashtable_good和hashtable_bad,推断出当新来的邮件中出现某个TOKEN串时,该新邮件为垃圾邮件的概率。数学表达式为:A事件----邮件为垃圾邮件;t1,t2…….tn代表TOKEN串则P(A|ti)表示在邮件中出现TOKEN串ti时,该邮件为垃圾邮件的概率。龙源期刊网(ti)=(ti在hashtable_good中的值)P2(ti)=(ti在hashtable_bad中的值)则P(A|ti)=P1(ti)/[(P1(ti)+P2(ti)];⑥建立新的哈希表hashtable_probability存储TOKEN串ti到P(A|ti)的映射⑦至此,垃圾邮件集和非垃圾邮件集的学习过程结束。根据建立的哈希表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)超过预定阈值时,就可以判断邮件为垃圾邮件。1.4基于贝叶斯理论的邮件过滤系统运行的详细流程图贝叶斯的算法有很强的自学能力,会根据不断出现的新的垃圾邮件和正常邮件来调整垃圾邮件集和正常邮件集的概率,但是垃圾邮件的性能评价通常是由多个指标所决定的,贝叶斯算法中关于“特征之间互相独立”的假设可能导致在某些情况下与实际不符,从而导致邮件错判给用户带来损失。下面图1表示了贝叶斯算法的基本流程,通过这个过程可以比较准确的判断出垃圾邮件集和非垃圾邮件集。1.5基于贝叶斯理论的系统详细设计过程图2是系统的总体结构图,该图表明邮件要处理两个方面的内容。一方面是对样本邮件库中的已有邮件进行训练,另一方面是对新到的待定邮件进行分类过滤。因此,系统有两大部分组成龙源期刊网第一部分主要用于进行邮件过滤器的邮件训练,如下面的图3所示:第二部分主要用于邮件过滤器的邮件识别和分类,如图4所示:2总结对于这款基于贝叶斯理论的邮件过滤系统,我们的设计前提是利用贝叶斯理论的计算公式,分析计算大量的邮件,形成一个数据库,作为依据,然后再用公式计算出邮件的概率,通过分析概率来进一步判断邮件的性质。通过设计,已经基本实现了预先定义的功能,并且能够过滤出垃圾邮件,只是在预定义的数据库上信息量还不是十分强大,这是本系统需要改进的后续工作,在今后的设计过程中,我们也会在这方面做进一步的加强。参考文献:[1]KeizerG.Spamcostsworldbusinesses$50billion[EB/OL].[2]中国互联网络信息中心.第15次中国互联网络发展状况统计报告[EB/OL].[3]柴玉梅,王宇.基于TFIDF的文本特征选择方法[J].微计算机信息,2006,8(3):24-26.