一种识别垃圾邮件的方法

文档序号:7620171阅读:226来源:国知局
专利名称:一种识别垃圾邮件的方法
技术领域
本发明涉及一种邮件的处理方法,尤其涉及一种识别垃圾邮件的方法。
背景技术
随着网络的快速发展,人们使用电子邮件进行通信已是十分普遍。然而,人们会经常收到大量的垃圾邮件,这样,人们需要辨别哪些是垃圾邮件,哪些是正常邮件,对垃圾邮件要进行删除,因此,会极大地耗费邮件使用者的时间,所以,如何识别垃圾邮件是一项十分迫切的课题。
目前,识别垃圾邮件有以下几种方式规则法,黑名单法,白名单法贝叶斯等。下面对它们分别进行简单说明。
规则法是通过统计垃圾邮件中经常出现的规律,然后总结出规则库,为每条规则设定一个权重分值。对于一封新邮件,首先计算邮件符合哪些规则,对符合的规则的分值求和,就可以得到一个总的分值,当分值超过一个设定的阈值时,就可以认为邮件是垃圾邮件。规则法的缺点是每条规则的权重分值和设定的阈值都只能通过调整来得到,而且需要定时维护规则库,调整权重等,因此,这种方法工作量大。
黑名单法是将现有垃圾邮件的来信人地址加入一个名单中,在以后的收邮件过程中,判断来信人地址是否存在于黑名单中,如果存在,则将其认为是垃圾邮件。黑名单法的优点是操作简单,但缺点是对于假的或者不断变更的垃圾邮件来信人地址没有任何处理办法。
白名单法是将自己认识的来信人地址加入到一个名单中,在以后的收邮件过程中,判断来信人地址是否存在于白名单中,如果存在,则直接将其认为正常邮件。白名单法只能作为降低反垃圾时的误判率的辅助手段。一般必须结合其它反垃圾方法使用。
贝叶斯法是通过对一定量的垃圾邮件和非垃圾邮件进行学习,然后利用贝叶斯公式来判断一封邮件是否为垃圾邮件的方法。不论是学习或者是判断,都必须对邮件内容进行分词处理。然而,这种方法只能对英文进行分词,至今还没有中文的分词方法,因而,不能利用这种方法对中文的垃圾邮件进行识别。
综上所述,现有技术中识别垃圾邮件的各种方法都存在着这样或那样的不足之处。

发明内容
针对现有技术的上述缺陷,本发明的目的是提供一种识别垃圾邮件的方法,其识别垃圾邮件的成功率较高。
本发明是通过下述技术方案实现的,本发明提供了一种识别垃圾邮件的方法,包括A、对接收到的邮件主题和/或邮件内容中的中文字符进行分词;B、根据分词的结果利用样本库进行判断,从而确定所接收到的邮件为垃圾邮件。
所述的步骤A进一步包括对接收到的邮件主题和邮件内容与词典中的词语进行匹配。
所述的样本库以预定顺序排列,每一条记录代表一个词语;记录中包括词语长度、词语、包含本词语的垃圾邮件个数、包含本词语的正常邮件个数。
为样本库建立索引,该索引为哈希表,其哈希值为预定顺序排列的值,并对应该哈希值字符开头的词语在样本库中出现的起始位置。
所述的预定顺序为Unicode码顺序。
所述的步骤B进一步包括B1、利用分词后的词语查询样本库,确定包含该词语的邮件为垃圾邮件的概率;B2、根据所述的确定的包含词语的邮件为垃圾邮件的概率计算接收到的邮件为垃圾邮件的概率;B3、当接收到的邮件为垃圾邮件的概率大于或等于预定阈值时,则确定接收到的邮件为垃圾邮件,否则确定接收到的邮件为正常邮件。
所述的步骤B1进一步包括B11、从样本库中获得垃圾邮件样本个数、正常邮件样本个数、所述词语出现在垃圾邮件中个数、出现在正常邮件个数;B12、按公式(出现在垃圾邮件中个数/垃圾邮件样本个数)/(出现在垃圾邮件中个数/垃圾邮件样本个数+出现在正常邮件个数/正常邮件样本个数)计算该词语对应的该邮件为垃圾邮件的概率。
所述的步骤B2还包括根据第二预定数目的特征词语所对应的该邮件为垃圾邮件的概率计算该邮件为垃圾邮件的概率。
所述的特征词语为从其所对应的邮件为垃圾邮件的概率与0.5的绝对差值从大到小选择的词语。
根据本发明,通过对邮件的内容和邮件主题进行分词,通过对大量样本邮件的学习,利用贝叶斯公式可算出新邮件为垃圾邮件的概率。通过实验表明,本发明的方法识别垃圾邮件的成功率较高,识别速度较快。


图1示出了本发明的识别垃圾邮件的流程图。
具体实施例方式
为了便于本领域一般技术人员理解和实现本发明,现结合附图描绘本发明的实施例。
如图1所示,本发明的基本思想是在步骤1中,对邮件进行分词,在步骤2中,根据分词结果利用样本库获得该词语所对应的邮件为垃圾邮件的概率,在步骤3中,根据词语所对应的邮件为垃圾邮件的概率,利用贝叶斯公式计算该邮件为垃圾邮件的概率,在步骤4中,判断该邮件为垃圾邮件的概率是否大于等于预定阈值,若是,在步骤5中,表明该邮件为垃圾邮件,并对其进行处理,否则,在步骤6中,表明该邮件为正常邮件。下面首先以中文为例介绍邮件的分词过程。
中文分词技术属于自然语言处理技术范畴。对于一段话,人可以通过自己的知识来明白哪些是词,哪些不是词,但如何让机算机也能理解?其处理过程就是分词算法。根据本发明,采用基于字符串匹配的分词方法,这种方法又叫做机械分词方法,它是按照一定的策略将待分析的中文字符串与一个“充分大的”机器词典中的词条进行配,若在词典中找到某个字符串,则匹配成功(即识别出一个词语)。按照扫描方向的不同,串匹配分词方法可以分为正向匹配和逆向匹配;按照不同长度优先匹配的情况,可以分为最大(最长)匹配和最小(最短)匹配;按照是否与词性标注过程相结合,又可以分为单纯分词方法和分词与标注相结合的一体化方法。常用的几种机械分词方法如下
(1)正向最大匹配法(由左到右的方向);(2)逆向最大匹配法(由右到左的方向);(3)最少切分(使每一句中切出的词数最小)。
此外,还可以使用基于理解的分词方法和基于统计的分词方法。
根据本发明,优选的是,本发明采取正向最大匹配方法,以四个中文字符为词语的最大长度。下面通过“我是一个中国人”这个语句介绍该方法。通过对“我是一个”,“我是一”,“我是”这几个词语在词典中进行查询,均未发现它们,确定“我”是独立的词语;然后查询“是一个中”,“是一个”,“是一”,同样在词典中没有发现它们,确定“是”是独立的词语;然后查询“一个中国”,“一个中”,“一个”,发现词典中只有“一个”这个词语,确定“一个”为词语;最后查询“中国人”,发现有“中国人”这个词语,从而确定“中国人”是一个词语。至此,全句分为“我是一个中国人”,这个过程比较简单,且效率较高。
上面介绍了中文的分词过程,下面介绍贝叶斯的学习和判断。步骤如下收集大量的垃圾邮件和正常邮件作为邮件样本。
建立一个样本库,每一条记录对应一个词语,按Unicode码顺序排列。记录中包含的信息为词语长度(WordLength),词语(Word),包含本词语的垃圾邮件个数(BadCount),包含本词语的正常邮件个数(GoodCount)。
对各个样本邮件的主题和内容作分词处理,对于每个词语在样本库中查寻记录,如果不存在,则在相应位置插入一条记录。如果本邮件为垃圾邮件,则对记录中的BadCount增加1,如果本邮件为正常邮件,则对记录中的GoodCount增加1。
为了更快地在样本库中查找到词语,建立一个用于索引的哈希表。哈希表为65536个整数的数组,对应了全部的Unicode字符空间,对于中文来说,一个Unicode字符就是一个中文字符。每个位置存放了以对应的Unicode字符开头的词语在样本库中出现的起始位置。当要查找某个词语时,只需要按该词语第一个中文字符的Unicode内码取出哈希表中相应位置的整数,然后在样本库中定位到这个位置,就可以很快查找到词语的记录。
比如,在样本库中存放着“中国”,“中间”,“中文”等以“中”字开头的词语,其中“中国”在所有以“中”字开始的词语中是最靠前的。“中”的Unicode的内码为20013,那么,在哈希表中第20013个整数存放就是词语“中国”所在的位置。如果现在要查找“中间”,那么,首先取哈希表中第20013个整数,就得到以“中”字开头的词语在样本库中的起始位置,取哈希表中下一个整数,即是以“中”字开头的词语在样本库中的终止位置,然后按照二分法进行查找,可以高效地得到结果。
对垃圾邮件集和正常邮件集进行了学习后,就可以得到最终的样本库,同时保存样本邮件中的垃圾邮件样本数(BadEmailCount)和正常邮件样本数(GoodEmailCount)。
下面介绍利用上述的样本库判断新邮件是否为垃圾邮件的过程,首先利用分词技术将邮件主题和邮件内容分成若干个词语。然后,在样本库中找到该词语在垃圾邮件中出现的次数BadCount和在正常邮件中所出现的次数GoodCount,以及获得样本库中垃圾邮件样本数(BadEmailCount)和正常邮件样本数(GoodEmailCount)。最后根据BadCount、GoodCount、BadEmailCount和GoodEmailCount获得该邮件是否为垃圾邮件的概率;若在词语中找不到该词语,则忽略该词语。下面介绍如何判断是否为垃圾邮件。假设A事件邮件为垃圾邮件t1,t2,...,tn代表多个词语P(A|ti)表示当邮件中出现词语ti时,该邮件为垃圾邮件的概率。P(A|ti)也可简称为词语ti的垃圾概率。显然,P(A|ti)=(BadCount/BadEmailCount)/((GoodCount/GoodEmailCount)+(BadCount/BadEmailCount))设t1,t2...tn这些词语的垃圾概率为P1,P2...Pn.
P(A|t1,t2,t3,...,tn)表示在邮件中同时出现多个词语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)超过预定阈值时,就可以判断邮件为垃圾邮件。根据本发明。优选的是,阈值取0.9,即P(A|t1,t2,t3,...,tn)超过0.9时,就可以判断邮件为垃圾邮件。
对于垃圾邮件,可利用黑名单法,将其邮件地址放在黑名单中,同时将垃圾邮件放入垃圾邮件箱,定时清除或作为用于进一步贝叶斯学习的样本。
应该注意到,由于有些词语出现在垃圾邮件或出现在正常邮件中的概率大概相同,所以,利用贝叶斯公式判断是否为垃圾邮件时,可以忽略这些词语,只对那些出现在垃圾邮件或出现在正常邮件中的概率较大的词语(这些词语也称作特征词语)利用贝叶斯进行计算,以便算出为垃圾邮件的概率。例如,可在其为垃圾邮件的概率与0.5的绝对差值中从大到小取若干个特征词语作为判断是否为垃圾邮件的依据,根据本发明,优选的是,取20个这样的特征词语作为判断依据,再利用贝叶斯公式算出为垃圾邮件的概率,这样可节省计算时间。
本发明主要描述了中文的分词过程,判断中文邮件是否为垃圾邮件的过程。还应注意到,本发明的上述过程很容易推广到中英文混合的邮件、英文邮件两种情况,对于有英文的邮件,首先对英文进行分词,分词可采用特定分隔符法,如空格、分号、逗号、句号等分隔符作为每一单词的分隔符,然后,取大量的样本邮件进行学习,建立中文和英文样本库,该样本库结构与上述样本库结构相同,即,每一条记录包括词语长度(WordLength),词语(Word),包含本词语的垃圾邮件个数(BadCount),包含本词语的正常邮件个数(GoodCount)。判断邮件是否为垃圾邮件过程与上述判断过程完全相同。
根据本发明,通过对中文内容进行词语的拆分,从而可利用贝叶斯方法来对包含中文字符的邮件进行识别,以判断其是否为垃圾邮件,通过实验表明,本发明的方法识别垃圾邮件的成功率较高,识别速度较快。
本发明还可配合其它几种反垃圾方法,这样,可进一步提高判断准确率,降低误判率。
虽然通过实施例描绘了本发明,但本领域普通技术人员知道,在不脱离本发明的精神和实质的情况下,就可使本发明有许多变形和变化,本发明的范围由所附的权利要求来限定。
权利要求
1.一种识别垃圾邮件的方法,其特征在于,包括A、对接收到的邮件主题和/或邮件内容中的中文字符进行分词;B、根据分词的结果利用样本库进行判断,从而确定所接收到的邮件为垃圾邮件。
2.根据权利要求1所述的识别垃圾邮件的方法,其特征在于,所述的步骤A进一步包括对接收到的邮件主题和邮件内容与词典中的词语进行匹配。
3.根据权利要求1所述的识别垃圾邮件的方法,其特征在于,所述的样本库以预定顺序排列,每一条记录代表一个词语;记录中包括词语长度、词语、包含本词语的垃圾邮件个数、包含本词语的正常邮件个数。
4.根据权利要求3所述的识别垃圾邮件的方法,其特征在于,为样本库建立索引,该索引为哈希表,其哈希值为预定顺序排列的值,并对应该哈希值字符开头的词语在样本库中出现的起始位置。
5.根据权利要求3或4所述的识别垃圾邮件的方法,其特征在于,所述的预定顺序为Unicode码顺序。
6.根据权利要求1所述的识别垃圾邮件的方法,其特征在于,所述的步骤B进一步包括B1、利用分词后的词语查询样本库,确定包含该词语的邮件为垃圾邮件的概率;B2、根据所述的确定的包含词语的邮件为垃圾邮件的概率计算接收到的邮件为垃圾邮件的概率;B3、当接收到的邮件为垃圾邮件的概率大于或等于预定阈值时,则确定接收到的邮件为垃圾邮件,否则确定接收到的邮件为正常邮件。
7.根据权利要求6所述的识别垃圾邮件的方法,其特征在于,所述的步骤B1进一步包括B11、从样本库中获得垃圾邮件样本个数、正常邮件样本个数、所述词语出现在垃圾邮件中个数、出现在正常邮件个数;B12、按公式(出现在垃圾邮件中个数/垃圾邮件样本个数)/(出现在垃圾邮件中个数/垃圾邮件样本个数+出现在正常邮件个数/正常邮件样本个数)计算该词语对应的该邮件为垃圾邮件的概率。
8.根据权利要求6所述的识别垃圾邮件的方法,其特征在于,所述的步骤B2还包括根据第二预定数目的特征词语所对应的该邮件为垃圾邮件的概率计算该邮件为垃圾邮件的概率。
9.根据权利要求8所述的识别垃圾邮件的方法,其特征在于,所述的特征词语为从其所对应的邮件为垃圾邮件的概率与0.5的绝对差值从大到小选择的词语。
全文摘要
本发明公开了一种识别垃圾邮件的方法,包括对邮件主题和邮件内容进行分词;根据分词的结果利用样本库判断邮件是否为垃圾邮件;对垃圾邮件进行处理。根据本发明,通过对邮件的内容和邮件主题进行分词,通过对大量样本邮件的学习,利用贝叶斯公式可算出新邮件为垃圾邮件的概率。通过实验表明,本发明尤其是对带有中文字符的邮件,其识别垃圾邮件的成功率较高,识别速度较快。
文档编号H04L12/58GK1889108SQ20051008162
公开日2007年1月3日 申请日期2005年6月29日 优先权日2005年6月29日
发明者张小龙 申请人:腾讯科技(深圳)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1