具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例提供的识别图片垃圾邮件的方法及系统,预先收集正常图片和垃圾邮件图片样本,基于图片的压缩率分布特性提取图片特征,获得正常图片和垃圾邮件图片的特征集合;再使用贝叶斯分类器学习这些特征集合,计算获得最具代表性的特征是垃圾图片还是正常图片的概率结果集。具体如下:
一、收集正常图片和垃圾邮件图片样本:
使用图片抓取软件,从互联网上随机抓取格式为JPG或者GIF的图片,加入到正常邮件样本库中。
在邮件系统中部署举报系统,收集用户举报的包含图片的垃圾邮件,经过人工审核确认图片为垃圾邮件的,将该图片加入到垃圾邮件样本库中。
二、提取正常图片和垃圾邮件图片所包含的所有特征:
本发明实施例基于图片的压缩率分布特性提取图片特征,下面仅以JPG格式、GIF格式和PNG格式的图片为例详细描述提取图片特征的方法。
(1)、计算JPG格式图片的压缩率;
JPG格式的图片的压缩方式是对图片每8*8像素划分一个子块,并对每个子块进行独立的压缩,再将压缩后的块信息保存到文件。因此,在分析JPG格式的图片特征时,只需要获取图片压缩后的每一个子块的大小,再将子块大小除以(8*8),取整后即可获得这一子块的压缩率,无需对子块做解压操作。
扫描整个JPG文件,即可获得一个压缩率序列C1、C2、C3、C4...,其中C1代表图片左上角的8*8像素的子块的压缩率,C2是连续的相邻近的子块的压缩率,C3、C4类推。
(2)、计算GIF格式图片的压缩率;
GIF格式图片的压缩方式是著名的LZW压缩算法。LZW算法的主要思想是维护一个有256个单元的编码表,如果图片中某一行像素序列曾经在编码表里面出现过的,则使用编码表的下标来代替这段像素序列,以达到压缩的目的。
在分析GIF格式的图片特征时,只需要读取上述的码表下标(码表下标的长度固定为一个字节),通过查询对应的码表该下标所对应的像素值,以此计算出这一小块图片的压缩率:1/(码表对应的像素)。
扫描整个GIF文件,即可获得一个压缩率序列C1、C2、C3、C4...,其中C1代表图片左上角一行不定长像素的压缩率,C2、C3、C4类推。
(3)计算PNG格式图片的压缩率;
PNG格式图片使用LZ77压缩算法,其与GIF图片的LZW压缩算法相似,不同点仅在于,LZ77算法没有一个固定的编码表,而是使用之前已经遇到的序列的相对位置和长度来表示像素序列。例如:对像素序列abcdeabcde进行压缩时,在扫描到abcde之前,由于之前没有出现过与a、b、c、d或e重复的序列,因此不对abcde进行压缩,即输入序列abcde和压缩后的序列相等。但是,当扫描到abcdea的时候,由于序列a在之前出现过,然后继续比对abcde,发现之前也曾出现过abcde这个序列,于是第二次出现的abcde序列,用一个偏移量和长度来表示即可。也就是,PNG图片使用的LZ77算法没有固定的编码表,其码表就是隐含在当前位置之前已经出现过的序列中。需要说明的是,LZ77压缩算法是本领域的公知技术,上述只作简单的原理说明,实际上PNG图片的偏移量和长度等信息是按bit保存的,以便更加节省空间。
因此,在分析PNG图片的压缩率时,从压缩后的PNG数据流可以得出:对于没有做过压缩的数据序列,这些序列的压缩率为1;对于做过压缩的数据序列,这些序列使用(偏移量,长度)来表示该序列所对应的信息,可以在之前已经解压好的输出序列的特定位置找到。假定保存(偏移量,长度)信息需要N个字节,而(偏移量,长度)中的“长度”属性的值为M,则压缩率为N/M(即用N个字节保存M个字节的信息)。
通过分析压缩后的PNG数据流,即可获得一个压缩率序列C1、C2、C3、C4...,其中C1代表图片左上角一行不定长像素序列的压缩率,C2、C3、C4类推。
本发明实施例无需解压图片,节省大量运算资源和内存资源。
(4)、计算图片的特征值;
通过上述的(1)、(2)、(3)实施例获得JPG、GIF或PNG格式的图片压缩率序列后,将每4个连续的压缩率合并成一个新的压缩率变化元素D(其中4是经验值,是经过试验的结果,本发明不限于4)。D代表图片的4个相邻子块的压缩率变化情况,例如,对于压缩率序列C1、C2、C3、C4、C5、C6、C7、C8,经过转换后变成D1、D2序列,其中D1=C1C2C3C4,D2=C5C6C7C8。
在获得图片的压缩率变化元素序列后,将每一个压缩率变化元素加上该元素所在的相对位置信息,组成一个特征值。
例如,将图片分成6个区域,每一个区域对应一个固定的位置编码,如下:
左上角区域:位置编码为1;
上方区域:位置编码为2;
右上角区域:位置编码为3;
左下角区域:位置编码为4;
下方区域:位置编码为5;
右下角区域:位置编码为6;
如果像素块位于图片的左上角,其压缩率变化元素为D1的,则包含位置信息的特征值F1为1D1;如果像素块位于图片的右上角,其压缩率变化元素为D2的,则包含位置信息的特征值F2为3D2。依此类推,将压缩率变化元素和该元素对应的像素块在图片上的位置编码进行组合(位置编码+压缩率变化元素D),获得图片的特征序列:F1、F2、F3、F4...。
需要说明的是,上述仅以JPG、GIF和PNG格式的图片为例,以说明基于图片的压缩率特性提取图片特征的方法,本发明实施例还可以应用到其他的具有类似压缩率特性的图片中。
三、建立样本数据库:
(1)、建立正常图片和垃圾邮件图片的特征集合;
通过上述步骤二的方法计算出正常图片和垃圾图片所包含的所有特征值后,将正常图片的所有特征值保存在正常图片特征集合HAM中,将垃圾图片的所有特征值保存在垃圾图片特征集合SPAM中。
此外,正常图片特征集合HAM还记录了每个特征值在所有正常图片样本中出现的次数。例如,特征值F1在所有正常图片样本中出现的次数为10000,特征值F2在所有正常图片样本中出现的次数为20000,等等。
同理,垃圾图片特征集合SPAM也记录了每个特征值在所有垃圾图片样本中出现的次数。例如,特征值F1在所有垃圾图片样本中出现的次数为30000,特征值F2在所有垃圾图片样本中出现的次数为40000,等等。
对于某个特定的特征值Fn,它既可能出现在垃圾邮件图片样本中,也可能出现在正常邮件图片样本中,其出现的次数一般不相等。
(2)、计算每个特征值在垃圾图片中出现的概率,组建样本数据库;
从正常图片特征集合HAM和垃圾图片特征集合SPAM中,分别读取特征值F在正常图片样本和垃圾邮件图片样本中的出现次数,使用贝叶斯分类器进行计算,即可得出这个特征值F在垃圾邮件图片中出现的概率Q。例如,特征值F1在垃圾邮件图片中出现的概率为Q1,特征值F2在垃圾邮件图片中出现的概率为Q2,特征值F3在垃圾邮件图片中出现的概率为Q3。将F和Q的对应关系保存下来,即保存为F1:Q1,F2:Q2,F3:Q3...,组建成样本数据库。
本发明实施例所建立的样本数据库,保存有垃圾图片样本和正常图片样本的所有特征值,以及每个特征值在垃圾图片中出现的概率。
可选的,本发明实施例还可以按照Q值的大小,从高到低对“F1:Q1,F2:Q2,F3:Q3...”序列进行排序,只抽取Q值大于80%的那些序列F:Q(说明这些序列在垃圾邮件样本出现的概率很高)和Q值小于20%的那些序列F:Q(说明这些序列在正常邮件样本中出现的概率很高),作为最终贝叶斯评估的评估基准保存到样本数据库中。经验表明,Q值在(20%,80%)之间的序列F:Q,因为其特征序列F在正常图片和垃圾邮件图片中出现的次数数量差不多,F对于评判图片是否垃圾邮件图片没有太多的帮助,而且这类中性的F:Q序列占到F:Q序列总数的80%左右,因此剔除这些中性的数据,将有助于加快评估图片是否垃圾邮件图片的效率。
下面结合图1~图9,对本发明实施例提供的识别图片垃圾邮件的方法及系统进行详细描述。本发明实施例的概率统计公式包括贝叶斯(Bayes)公式和/或支持向量机(SVM)公式。应用贝叶斯公式进行计算,所获得的图片为垃圾邮件的概率称为“第一概率”;应用向量机公式进行计算,所获得的图片为垃圾邮件的概率称为“第二概率”。
参见图1,是本发明提供的识别图片垃圾邮件的方法的第一实施例的流程示意图。
在第一实施例中,应用贝叶斯公式计算图片为垃圾邮件的概率。所述方法包括以下步骤:
S101,根据邮件中的图片的压缩率分布特性,提取所述图片的特征值。
在具体实施当中,当接收到邮件后,包括:对邮件中所包含的图片进行扫描,获得所述图片的每一个子块的压缩率;将每N个连续的子块的压缩率合并成一个新的压缩率变化元素,再将每一个压缩率变化元素和它所在图片中的位置编码进行组合,获得所述图片的特征值。其中,N是大于1的自然数。优选的,N的值为4。
需要说明的是,本发明实施例可以处理JPG、GIF、PNG或其他格式的图片。其中,基于图片的压缩率分布特性提取JPG、GIF或PNG格式的图片的方法与上述实施例相同,在此不再赘述。
S102,根据所述图片的每个特征值在垃圾图片中出现的概率,应用概率统计公式计算获得所述图片为垃圾邮件的概率。
所述概率统计公式为贝叶斯公式,贝叶斯分类器的分类原理是通过某对象的先验概率,利用贝叶斯公式计算出其后验概率,即该对象属于某一类的概率,选择具有最大后验概率的类作为该对象所属的类。
贝叶斯(Bayes)分类器的数学基础是贝叶斯公式,如下:
若B1,B2,...为一系列互不相容的事件,如果以P(Bi)表示事件Bi发生的概率,且
P(Bi)>0,i=1,2,...
则对于任一事件A,有
i=1,2,...
通过上述步骤S101的处理,得到图片的所有特征值后,在步骤S102中,根据图片的每一个特征值查询样本数据库,获得所述图片的每个特征值在垃圾图片中出现的概率;再将所述图片的每个特征值在垃圾图片中出现的概率代入上述的贝叶斯公式中进行计算,获得第一概率。所述第一概率就是所述图片为垃圾邮件的概率。
例如,在接收到一封未知是否为垃圾邮件的图片邮件后,应用上述步骤S101的方法,获得图片的所有特征值:F1,F2,F3...。再查询样本数据库,得出每一个特征值在在垃圾图片中出现的概率:F1:Q1,F2:Q2,F3:Q3...。应用贝叶斯公式,输入上述的“F1,F2,F3...”特征值序列和“F1:Q1,F2:Q2,F3:Q3...”概率统计结果,即可计算出该未知的图片邮件为垃圾邮件的概率。
S103,应用哈希算法计算所述图片的哈希值,将所述哈希值和已接收的邮件图片的哈希值进行比较,得出所述图片被重复发送的次数。
Nilsimsa算法是一个著名的哈希算法,其特点是:如果输入的信息只作少量变化,则其输出的哈希值也只会有少量变化甚至没有变化。由于无论输入序列的长度是多少,其输出序列的长度都是固定的,因此可以通过Nilsimsa算法对输入序列进行计算,并通过比对输出序列的相似度来确定输入序列的相似度,大大加快了相似信息的聚类速度。
具体的,步骤S103包括:应用Nilsimsa算法对所述图片的特征值进行处理,获得所述图片的哈希值;将所述图片的哈希值和已接收的邮件图片的哈希值进行比较,得出所述图片和已接收的邮件图片的相似度;根据所述图片和已接收的邮件图片的相似度,得出所述图片被重复发送的次数。举例如下:
假设在上述步骤S101中得到图片的所有特征值F1,F2,F3...,则在步骤S103中,对上述的特征值“F1,F2,F3...”进行处理,输入序列是“F1,F2,F3...”,输出序列是一个固定长度的二进制序列“O1,O2,O3...”。其中,输出序列的长度一般是64字节,O的取值为0或1。该二进制序列“O1,O2,O3...”就是图片的哈希值。然后,再将所述图片的哈希值和之前已接收的邮件图片的哈希值进行比较,根据图片之间的相似度判定相似图片被重复发送的次数。
Nilsimsa算法具有如下优点:如果输入序列“F1,F2,F3...”只是做了较小的改动(比如在其中插入多段小的序列,修改其中一小段序列的内容等),其输出的二进制序列的稳定性很高,变动很少甚至不会变动。所以通过比较两个输出序列的相似度,即可获知两个输入序列的相似度,从而判定相似图片被重复发送的次数。
S104,根据所述图片的发信IP查询声誉值数据库,获得所述发信IP的声誉值。
本发明实施例配置了声誉值数据库,用于保存发信IP的声誉值。该声誉值是指发信IP所发送的正常邮件在其所有已发送的邮件中所占的比例,计算声誉值的方法如下:对发信IP在过去一段时间的发信行为进行记录,将发信IP发送的正常邮件比例作为此IP的声誉值。比如,某个发信IP在过去一段时间发送了100封邮件,其中有10封邮件被判定为垃圾邮件,则通过数学计算方式“(100-10)/100=90”得出该发信IP的声誉值为90。
因此,在步骤S104中,根据图片邮件的发信IP查询声誉值数据库,即可获得该图片邮件的发信IP的声誉值。
S105,根据所述图片为垃圾邮件的概率、被重复发送的次数、发信IP的声誉值查询预置的权重值列表,计算所述图片的权重和,并根据所述权重和判定所述图片是否为垃圾邮件。
本发明实施例预先配置了三个权重值列表,分别记录了图片为垃圾邮件的概率、被重复发送的次数、发信IP的声誉值所对应的权重值。
(1)本发明实施例根据图片属于垃圾邮件的概率所在的范围,将“图片为垃圾邮件的概率”定义为10段,并配置每段的权重值。“图片为垃圾邮件的概率”的权重列表如下:
图片为垃圾邮件的概率 |
概率范围 |
权重值(实数) |
BAYES_10 |
[0,10%] |
BAYES_10_W |
BAYES_20 |
[10%,20%] |
BAYES_20_W |
BAYES_30 |
[20%,30%] |
BAYES_30_W |
BAYES_40 |
[30%,40%] |
BAYES_40_W |
BAYES_50 |
[40%,50%] |
BAYES_50_W |
BAYES_60 |
[50%,60%] |
BAYES_60_W |
BAYES_70 |
[60%,70%] |
BAYES_70_W |
BAYES_80 |
[70%,80%] |
BAYES_80_W |
BAYES_90 |
[80%,90%] |
BAYES_90_W |
BAYES_100 |
[90%,100%] |
BAYES_100_W |
(2)本发明实施例根据图片邮件重复发送次数所在的范围,将“图片重复发送次数”定义为6段,并配置每段的权重值。“图片重复发送次数”的权重列表如下:
图片重复发送的次数 |
次数范围 |
权重值(实数) |
CNT_0_10 |
[0,10] |
CNT_0_10_W |
CNT_10_50 |
[10,50] |
CNT_10_50_W |
CNT_50_100 |
[50,100] |
CNT_50_100_W |
CNT_100_500 |
[100,500] |
CNT_100_500_W |
CNT_500_1000 |
[500,1000] |
CNT_500_1000_W |
CNT_1000 |
大于1000 |
CNT_1000_W |
(3)本发明实施例根据发信IP的声誉值的范围,将“发信IP声誉值”定义为10段,并配置每段的权重值。“发信IP声誉值”的权重列表如下:
发信IP声誉值 |
声誉值范围 |
权重值(实数) |
REPUTATION_0_10 |
[0,10] |
REPUTATION_0_10_W |
REPUTATION_10_20 |
[10,20] |
REPUTATION_10_20_W |
REPUTATION_20_30 |
[20,30] |
REPUTATION_20_30_W |
REPUTATION_30_40 |
[30,40] |
REPUTATION_30_40_W |
REPUTATION_40_50 |
[40,50] |
REPUTATION_40_50_W |
REPUTATION_50_60 |
[50,60] |
REPUTATION_50_60_W |
REPUTATION_60_70 |
[60,70] |
REPUTATION_60_70_W |
REPUTATION_70_80 |
[70,80] |
REPUTATION_70_80_W |
REPUTATION_80_90 |
[80,90] |
REPUTATION_80_90_W |
REPUTATION_90_100 |
[90,100] |
REPUTATION_90_100_W |
优选的,上述三个列表的权重值,是通过使用遗传算法对已知的样本进行学习来获得的。
需要说明的是,本发明实施例将图片为垃圾邮件的概率、被重复发送的次数、发信IP的声誉值进行分段,是为了减少后续处理的计算量,所定义的段数(即将“图片为垃圾邮件的概率”定义为10段,将“图片重复发送次数”定义为6段,将“发信IP声誉值”定义为10段)只是经验数字,本发明并不限于此。
具体的,经过上述的步骤S102、S103、S104的处理,获得图片为垃圾邮件的概率、图片重复发送次数、发信IP声誉值之后,在步骤S105中,进行如下处理:根据所述图片为垃圾邮件的概率、被重复发送的次数、发信IP的声誉值查询预置的权重值列表,分别获得三者的权重值;再将三者的权重值相加,获到所述图片的权重和;判断所述图片的权重和是否大于预定的门限值,若是,则确定所述图片为垃圾邮件;若否,则确定所述图片为正常邮件。举例如下:
假设对于一封包含有图片的邮件,经过上述步骤S101~S104的处理后,得出该邮件中的图片为垃圾邮件的概率为95%,被重复发送次数为2,发信IP的声誉值为78,分别查询权重列表中的BAYES 90(假定权重值为0.5),REPUTATION 010(假定权重值为0.1),REPUTATION 7080(假定权重值为0.3),计算得出该邮件图片的权重和为0.5+0.1+0.3=0.9,权重和小于1.0(1.0为门限值),则该邮件被判定为正常邮件。
进一步的,本发明实施例提供的识别图片垃圾邮件的方法还包括:在判定邮件中的图片为垃圾邮件后,重新计算所述图片的发信IP的声誉值,并对声誉值数据库中的相应的声誉值进行更新。
此外,本发明实施例还可以采用SVM(Support Vector Machine,支持向量机)算法计算图片为垃圾图片的概率。SVM算法可以比较直观地通过图2来解释,具体如下:
定义一个函数f(x,y)=a1*x+a2*y+b;其中x是邮件的一个固有特征,y是邮件的另一个与x无关的固有特征,a1、a2、b是常量,a1、a2控制图2可以切分两类点的平面的斜率。假如图2中的叉点表示垃圾邮件,圆点表示正常邮件,则邮件是否为垃圾邮件仅仅和x、y有关,只要f(x)大于某个值,即可认为邮件是垃圾邮件。
在实际应用中,对样本进行分类通常需要抽取几百到一千个特征才可能有比较好的效果。而对于如此多维度的模型,本实施例无法在三维图中表达出来。但是,可以推导出最终的SVM公式就是一个多项式:f(x,y,z,...)=a1*x+a2*y+a3*z+....+b;只要将未知样本的x、y、z...等特征的值代入SVM公式中,即可根据其结果是否大于0来判断样本是否为垃圾邮件。
SVM模型的一个关键是要通过未知样本,学习出上述公式的a1、a2、a3...,b等参数。具体实施时,只要提供了足够多的样本(正常邮件和垃圾邮件各一千左右即可),就可以通过特定的数学方法,获取上述的参数,由此获得SVM公式。需要说明的是,现有技术中已经有很多成熟的数学方法用于获取上述的参数,例如可以采用找边缘关键点拟合的方法,在此不再赘述。
SVM模型的另外一个关键是所提取的“特征”是否可以较好的描述问题,即上述的x,y,z等参数所代表的“特征值”是否可以较好的区分两类样本。本发明实施例的解决方案是:使用每个图片特征项在垃圾邮件中出现的概率来作为SVM的输入特征。在学习过程中,统计出每个特征值在垃圾邮件中出现概率之后,则按照特征值出现的顺序,构造出一个特征值概率序列,通过学习程序获得上述的SVM公式(即获取上述的a1,a2,a3...b参数)。举例说明:有一个图片,根据从图片文件中分解出来的顺序排列,有4个(实际可能有很多)特征值T1、T2、T3、T4,经统计可知其在垃圾邮件中出现的概率分别为G1、G2、G3、G4,则将此G1、G2、G3、G4作为向量输入SVM学习程序,通过对一批正常邮件和垃圾邮件的学习,即可获得适合学习样本的SVM公式。
在评估未知样本是否为垃圾邮件的时候,同样按照从图片文件分解出来的顺序,排列特征值T1、T2、T3、T4的概率G1、G2、G3、G4,把G1、G2、G3、G4代入SVM公式中,即可计算出此序列为垃圾邮件的概率。
Bayes算法与SVM算法相比,简而言之,在学习已知正常和垃圾邮件样本的时候,Bayes方法生成的是每个特征项为垃圾邮件的概率,而SVM方法生成的是每个特征项为垃圾邮件的概率以及SVM公式的参数。判断未知样本的时候,Bayes方法输入的是未知样本特征项,通过查表获知特征项是垃圾邮件的概率,然后通过Bayes公式计算邮件是垃圾邮件的概率;SVM方法输入的同样是未知样本的特征项,通过查表获知特征项是垃圾邮件的概率,然后通过学习过程生成的SVM公式计算邮件是垃圾邮件的概率。
参见图3,是本发明提供的识别图片垃圾邮件的方法的第二实施例的流程示意图。在第二实施例中,应用支持向量机(SVM)公式计算图片为垃圾邮件的概率。所述方法包括以下步骤:
S201,根据邮件中的图片的压缩率分布特性,提取所述图片的特征值。
本步骤S201与上述第一实施例的步骤S101完全相同,在此不再赘述。
S202,根据所述图片的每个特征值在垃圾图片中出现的概率,应用支持向量机公式计算获得所述图片为垃圾邮件的概率;
步骤S202具体包括:根据所述图片的特征值查询样本数据库,获得所述图片的每个特征值在垃圾图片中出现的概率;将所述图片的每个特征值在垃圾图片中出现的概率构造成特征向量,并代入支持向量机公式中进行计算,获得第二概率;所述第二概率就是所述图片为垃圾邮件的概率。
其中,所述样本数据库中保存有垃圾图片样本和正常图片样本的所有特征值,以及每个特征值在垃圾图片中出现的概率。
S203,应用哈希算法计算所述图片的哈希值,将所述哈希值和已接收的邮件图片的哈希值进行比较,得出所述图片被重复发送的次数。
S204,根据所述图片的发信IP查询声誉值数据库,获得所述发信IP的声誉值。
S205,根据所述图片为垃圾邮件的概率、被重复发送的次数、发信IP的声誉值查询预置的权重值列表,计算所述图片的权重和,并根据所述权重和判定所述图片是否为垃圾邮件。
步骤S203~S205与上述第一实施例的步骤S103~S105完全相同,在此不再赘述。
参见图4,是本发明提供的识别图片垃圾邮件的方法的第三实施例的流程示意图。在第三实施例中,同时应用Bayes公式和SVM公式计算图片为垃圾邮件的概率。所述方法包括以下步骤:
S301,根据邮件中的图片的压缩率分布特性,提取所述图片的特征值。
本步骤S301与上述第一实施例的步骤S101完全相同,在此不再赘述。
S302,根据所述图片的特征值查询样本数据库,获得所述图片的每个特征值在垃圾图片中出现的概率;
其中,所述样本数据库中保存有垃圾图片样本和正常图片样本的所有特征值,以及每个特征值在垃圾图片中出现的概率。
S303,将所述图片的每个特征值在垃圾图片中出现的概率代入贝叶斯公式中进行计算,获得第一概率;
本步骤S303与上述第一实施例的步骤S102完全相同,在此不再赘述。
S304,将所述图片的每个特征值在垃圾图片中出现的概率构造成特征向量,并代入支持向量机公式中进行计算,获得第二概率;
所述图片为垃圾邮件的概率包括所述第一概率和所述第二概率。
S305,应用哈希算法计算所述图片的哈希值,将所述哈希值和已接收的邮件图片的哈希值进行比较,得出所述图片被重复发送的次数。
本步骤S305与上述第一实施例的步骤S103完全相同,在此不再赘述。
S306,根据所述图片的发信IP查询声誉值数据库,获得所述发信IP的声誉值。
本步骤S306与上述第一实施例的步骤S 104完全相同,在此不再赘述。
S307,根据所述图片为垃圾邮件的概率、被重复发送的次数、发信IP的声誉值查询预置的权重值列表,计算所述图片的权重和,并根据所述权重和判定所述图片是否为垃圾邮件。
本步骤S307与上述第一实施例的步骤S105基本相同,其不同点在于,所述图片为垃圾邮件的概率包括第一概率和第二概率,且分别对应于一个权重值列表。因此,在查询预置的权重值列表时,将分别获得“第一概率”对应的权重值、“第二概率”对应的权重值、“被重复发送的次数”对应的权重值和“发信IP的声誉值”对应的权重值,共四个权重值。将四个权重值相加,得到图片的权重和,再根据所述权重和判定所述图片是否为垃圾邮件。
本发明实施例提供的识别图片垃圾邮件的方法,基于图片的压缩率分布特性提取邮件中的图片的特征值,应用概率统计公式计算获得所述图片为垃圾邮件的概率;再根据所述图片为垃圾邮件的概率、被重复发送的次数、发信IP的声誉值三者的权重值计算所述图片的权重和,根据所述权重和判定所述图片是否为垃圾邮件。本发明基于图片的压缩率分布识别图片垃圾邮件,效率高,并且能够识别扭曲变形的或者背景包含噪音信息的图片。此外,本发明应用哈希算法判断图片的相似度,并统计相似图片被重复发送的次数,而根据这一特征可以很好地判断发信者的行为是否与垃圾邮件的发信行为相似,从而提高了识别图片垃圾邮件的准确率。
相应地,本发明实施例还提供了一种邮件系统,能够实现上述实施例中的识别图片垃圾邮件的方法的所有步骤。
参见图5,是本发明实施例提供的邮件系统的结构示意图,该邮件系统包括:
图片特征提取模块1,用于根据邮件中的图片的压缩率分布特性,提取所述图片的特征值;
垃圾邮件概率获取模块2,用于根据所述图片的每个特征值在垃圾图片中出现的概率,应用概率统计公式计算获得所述图片为垃圾邮件的概率;
图片发送次数获取模块3,应用哈希算法计算所述图片的哈希值,将所述哈希值和已接收的邮件图片的哈希值进行比较,得出所述图片被重复发送的次数;
声誉值获取模块4,用于根据所述邮件的发信IP查询声誉值数据库,获得所述发信IP的声誉值;
垃圾邮件判定模块5,用于根据所述图片为垃圾邮件的概率、被重复发送的次数、发信IP的声誉值查询预置的权重值列表,计算所述图片的权重和,并根据所述权重和判定所述图片是否为垃圾邮件。
如图6所示,所述图片特征提取模块1具体包括:
图片扫描单元11,用于对邮件中的图片进行扫描,获得所述图片的每一个子块的压缩率;
图片特征生成单元12,用于将每N个连续的子块的压缩率合并成一个新的压缩率变化元素,并将每一个压缩率变化元素和它所在图片中的位置编码进行组合,获得所述图片的特征值;其中,N是大于1的自然数。
如图7所示,所述垃圾邮件概率获取模块2具体包括:
概率查询单元21,用于根据所述图片的特征值查询样本数据库,获得所述图片的每个特征值在垃圾图片中出现的概率;
贝叶斯计算单元22,用于将所述图片的每个特征值在垃圾图片中出现的概率代入贝叶斯公式中进行计算,获得第一概率;
支持向量机计算单元23,用于将所述图片的每个特征值在垃圾图片中出现的概率构造成特征向量,并代入支持向量机公式中进行计算,获得第二概率;
所述图片为垃圾邮件的概率为所述第一概率和/或所述第二概率。
如图8所示,所述图片发送次数获取模块3具体包括:
哈希值计算单元31,应用哈希算法对所述图片的特征值进行处理,获得所述图片的哈希值;
相似度判断单元32,用于将所述图片的哈希值和已接收的邮件图片的哈希值进行比较,得出所述图片和已接收的邮件图片的相似度;
重复发送次数确定单元32,用于根据所述图片和已接收的邮件图片的相似度,得出所述图片被重复发送的次数。
如图9所示,所述垃圾邮件判定模块5具体包括:
权重查询单元51,用于根据所述图片为垃圾邮件的概率、被重复发送的次数、发信IP的声誉值查询预置的权重值列表,分别获得三者的权重值;
邮件识别单元52,用于将三者的权重值相加,获到所述图片的权重和;判断所述图片的权重和是否大于预定的门限值,若是,则确定所述图片为垃圾邮件;若否,则确定所述图片为正常邮件。
进一步的,如图5所示,所述邮件系统还包括:
样本数据库6,用于保存垃圾图片样本和正常图片样本的所有特征值,以及每个特征值在垃圾图片中出现的概率;
声誉值数据库7,用于保存发信IP的声誉值;所述声誉值是发信IP所发送的正常邮件在其所有已发送的邮件中所占的比例;
声誉值更新模块8,用于在所述垃圾邮件判定模块判定图片为垃圾邮件后,重新计算所述图片的发信IP的声誉值,并对声誉值数据库中的相应的声誉值进行更新。
需要说明的是,本发明实施例提供的邮件系统,其识别图片垃圾邮件的流程与上述实施例相同,在此不再赘述。
本发明实施例提供的邮件系统,基于图片的压缩率分布特性提取邮件中的图片的特征值,应用概率统计公式计算获得所述图片为垃圾邮件的概率;再根据所述图片为垃圾邮件的概率、被重复发送的次数、发信IP的声誉值三者的权重值计算所述图片的权重和,根据所述权重和判定所述图片是否为垃圾邮件。本发明基于图片的压缩率分布识别图片垃圾邮件,效率高,并且能够识别扭曲变形的或者背景包含噪音信息的图片。此外,本发明应用哈希算法判断图片的相似度,并统计相似图片被重复发送的次数,而根据这一特征可以很好地判断发信者的行为是否与垃圾邮件的发信行为相似,从而提高了识别图片垃圾邮件的准确率。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random Access Memory,RAM)等。
以上所述是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也视为本发明的保护范围。