文档库 最新最全的文档下载
当前位置:文档库 › 针对垃圾邮件的直接多关键词匹配算法

针对垃圾邮件的直接多关键词匹配算法

针对垃圾邮件的直接多关键词匹配算法
针对垃圾邮件的直接多关键词匹配算法

针对垃圾邮件的直接多关键词匹配算法1

刘萍谭建龙沙瀛

中国科学院计算技术研究所

北京2704信箱,100080

E-mail: liuping@https://www.wendangku.net/doc/ff2210525.html, tan@https://www.wendangku.net/doc/ff2210525.html, shaying@https://www.wendangku.net/doc/ff2210525.html,

摘要:本文提出了一种直接扫描电子邮件内容的多关键词匹配算法。邮件文本多采用Base64编码,由于Base64编码是前后相关的,所以完成匹配需要特殊的处理。本文提出的算法在不进行Base64解码情况下,直接对邮件内容进行扫描匹配;同时针对Base64编码结果是32位整型数据流的性质,本算法以32位块进行匹配操作,从而获得了比8位块的匹配更高的效率。实验结果表明,本算法比“解码-再匹配”策略快,比直接检索原始文本方法也要快。

关键词:垃圾邮件直接多关键词匹配串匹配Base64 StringMatching

1 引言

为了扫描邮件病毒、拒绝垃圾邮件,安全系统需要具备对邮件内容进行分析的功能。过滤垃圾邮件,不仅仅需要对发送者地址、收件人地址、域名以及IP地址过滤,还需要对邮件文本内容和附件内容进行过滤。由于邮件内容通常采用Base64编码,而对于编码后的内容,普通关键词匹配就不能直接工作。一种简单直接的方法就是先解码再匹配,这种方法受到对Base64解码速度的限制,使邮件内容处理的速度大大下降。因此,为了实现高效的邮件内容的分析,需要一种能直接在Base64编码文本上进行快度串匹配的方法。

目前可以用两种不同的方法来搜索编码后的文本。第一种方法非常实用,是一种专门针对单词、基于Huffman编码的高效解决方案【11】,但这种方法只能检索整个单词和整个句子。第二种方法针对压缩后的文本(压缩也认为是一种编码方式)【2】,目前有很多在压缩后的文本中直接进行关键词匹配的工作。但是由于Base64编码后的数据一般比原始数据要大33%,因此直接进行Base64编码的关键词匹配算法不同于一般的文本压缩中的关键词匹配算法。

分析邮件内容需要单独对关键词进行编码,理由主要有两点:一,由于Base64编码是前后相关的,它的编码过程是将每组24 bit的输入表示成一组32-bit的输出。换言之,一个字符的编码值是与它前面的两个字符相关的,这样,同一个原始关键词在不同位置就会产生不同的编码,所以直接扫描Base64文本中编码后的关键词,会产生错误。二,由于电子邮件数据是网络数据中的重要部分,设计一个有针对性的关键词匹配算法将利用编码的特性,提高检索、过滤系统的性能。原始文本经Base64编码后,成为base64字符集中的一个单个字符,占32 位。现在计算机中,CPU在同样的指令执行时间内,既能处理8位的字符型数据,也能处理32位的长整型数据。因此,关键词匹配算法能够利用这个有利条件来提高算法的性能。

在Wu-Manber【4】,Commentz-Walter【5】和Jang-Jong Fan【6】等算法的基础上,本文提出了一种高效的分析电子邮件内容的多关键词匹配算法(简称为EMailMatch)。该算法首先在原始关键词字符串中选择3个字符(24位),并按Base64格式将这3元字符编码成4

1本文获863项目“网络信息动态监控及防渗透技术的研究与实现”支持,项目编号:2002AA142110。

元字符;然后,我们按编码后的4元字符串建立跳跃表;接下来,用4元字符(32位长整型)而不是字符(8位字节)扫描Base64文本。如果得到一个正位移,就可以跳过一段Base64文本。如果不能跳跃,就将Base64文本中的窗口文本解码成正常文本,然后将正常文本同原始关键词字符串进行比较。如果正常文本与原始关键词匹配,则报告发现了某个关键词。

实验结果表明,本算法比“解码-再匹配”策略快,比直接检索原始文本方法也要快。 2 Base64内容传输编码【10】

Base64内容传输编码用来表达任意八位字节的序列。编码过程是将24位一组的位输入表示成32位一组的输出。处理从左向右进行的,一个24位的输入包括3个8位输入组。处理过程中,24位组被当作4个相互链接的6位组,每个6位组被转换成Base64字符集中一个单独的8位字符。下面的图1展示了1个24位转换成32位Base64编码的逻辑过程。

由于Base64编码的输出流是以32位为一组的,而在当前计算机中,32位是一个无符号的长整数,所以算法利用这个特性,将32位做为一个块来进行处理,这样能够比以8位为一块的算法(例如:Wu_Manber 算法)更快的进行跳跃,从而能够加快扫描的速度。

另外,由于Base64编码是前后相关的,所以当原始文本的第一个字节、第二个字节或第三个字节被分在24位中不同的8位位置上,它们产生的编码是不同的。这样,在Base64编码的文本上直接简单的利用32位块来进行串匹配是不可以的,必须要区分3个字节在3个位置的不同情况来处理,这也是本算法核心处理的地方之一。详细处理方法参看下一节的pSkip[k]值的计算部分。

图1:Base64内容传输编码

3 预处理过程

在预处理过程中,我们将关键词中的3个字符作为一组进行编码,转换成32位的Base64字符(一个长整数)。因为存储32位字符的直接映射表需要4G 空间,为了节约空间,我们将这个长整数散列成一个短整数(16位),同时采用链地址法来处理散列冲突。

这一预处理过程类似于Wu-Manber 【4】算法。预处理过程中将建立两个表:一个pSkip 表,一个pCheck 表。pSkip 表用于决定将来在扫描Base64文本时,最远能跳跃的距离(这里使用长整数的距离,而 Wu-Manber 算法中使用的是字符距离)。当跳跃值为0时,就使用pCheck 表。pCheck 表用于决定哪个关键词可能匹配,哪里的Base64文本必须被解码,以及如何验证原始文本是否和原始关键词匹配。下面我们将描述pCheck 表的细节。

pSkip 表中的跳跃值决定了在扫描Base64文本时,能够向前跳过多远。我们使用k 表示16位的散列值;m 表示关键词的长度;ceilDiv(x,y)表示(x+y-1)/y ;Base64(s)表示把字符串s 使用Base64编码后的串。

对于pSkip[k]的计算,有两种情况:

1:k 不能从任何关键词的子串中计算出来,则:

)})

,20)),64(p (Hash(Base k

, 4,3) - ceilDiv(m pSkip 2j..j k P p m j ∈-<<=?=+

2:k 能够从关键词的子串中计算出来,则: }),20)),4(p Hash(Base6k

, 5,3)- j - ceilDiv(m min({pSkip 2j..j k P p m j ∈-<<===+

例如,对于字符串“Gutenberg ”中的3个字符“ten ”,编码得到“dGVu ”,“dGVu ”使用长整数表示是75564764;然后我们将75564764进行散列,散列后得到一个短整数12850,符合上述的第二种情况,所以得到pSkip[12850] =1。

当pSkip[k]=0时,pCheck[k]的值指向一个TCheckItem 的数据结构。TcheckItem 中包含从编码域到原始域需要的全部信息。TcheckItem 中有一个成员pNext ,pNext 指向另一个

表1:CheckItem 信息

结构成员first_code 和first_check 类似Wu-Manber 算法中的Prefix ,它用于加快匹配校验的速度。由于对Base64编码文本的窗口文本解码比较耗时,所以我们首先使用first_code 对要解码的窗口文本进行确认,看是否可能出现匹配。结构成员back_distance 、decode_len 和compare_postion 用于对Base64文本窗口解码并检验是否与原始文本匹配。它们的关系可以参看图2的示例。

图2:TcheckItem 示例

Base64

4 扫描过程

本算法的扫描过程虽然与Wu-Manber 的算法很类似,但有两个主要的区别:一,我们把输入的Base64文本改为长整型数组,这样可以一次处理32位,同时加快散列的速度。这也是我们的算法适宜32位计算机硬件的主要原因。二,在我们校验原始文本和原始关键词是否匹配前,我们先校验Base64文本和关键词编码后的第一个长整数是否相等。只有在这个长整数相等的情况下,才进一步解码,这样就进一步减少了需要解码的可能性。

表2:EMailMatch 检索文本算法

表2中,我们给出EmailMatch算法中检索文本流的部分C代码。全部代码和测试数据可以

从2下载。

5 EmailMatch算法的实验

为了评价算法性能,我们将EMailMatch同agrep,fgrep进行了比较。我们使用0xffff 大小的pSkip表和pCheck表,一台1.6GHz Pentium IV CPU,128M内存的工作站。测试结果的所有时间都是用Linux的time命令得到的用户时间。在实际运行中,因为关键词匹配算法的速度很快,很难准确测量出一次的执行时间,因此测试时间是运行100次的时间总和。所有算法,包括EmailMatch,fgrep和agrep都使用相同编译选项“O2”。fgrep的版本是2.5.1,agrep的是从glimpse-4.15.tar.gz得到的。文本数据集与SumKim1999【12】的数据集一致:文本文件取自Gutenberg项目中的King James Bible2,关键词从Unix词典/usr/dict/words中选取。我们从这些单词中随机选取了一组关键词,它们的长度均为10。比较结果见图3。

应该注意到:fgrep或agrep检索的是原始长度为4.7M的文本,但是EMailMatch检索的是6.2M的Base64文本。从图中可以看到,虽然EmailMatch扫描匹配的文本大小为fgrep 或agrep扫描的133%,但是它所用的时间却比它们都少。

图3:对文本字符串检索100次的运行时间之和

更重要的是EMailMatch算法能够直接检索Base64文本。与Wu-Manber算法的平均时间一样,Base64算法解码所需的时间复杂度是O(n),因此EmailMatch算法比解码-再匹配的方法快m倍。表3将我们的算法同解码-再检索的方法进行了比较,从中可以看到:EmailMatch算法平均能比解码-再匹配的方法加速595%。解码-再匹配的方法所需的平均

表3:对长度为10的字符串检索100次的时间和

2https://www.wendangku.net/doc/ff2210525.html,/dsms/StringMatch/EMaillMatch.zip

6结论和展望

本文提出的EmailMatch算法针对Base64编码结果是32位整型数据流的性质,充分利用了计算机硬件数值运算的能力,以32位块代替8位块进行匹配操作,获得更高的匹配效率。但是该算法也有一定的局限性:首先它和Agrep、ShiftOr【2】等算法一样,在设计算法时把机器的字长作为一个因素来考虑,使得算法在某些情况下不适合使用;其次它需要关键词有一定的长度,本算法要求大于6个字符,对于长度大于2个字符的关键词,算法也可以使用同样的思想进行设计。EmailMatch算法的将关键词编码而不是把编码文本解码的思想是通用的,可以使用在UT7、UT8、BIG5等编码文本的字符串匹配中。由于多关键词匹配算法基本是亚线性的算法,使用这种将关键词编码再直接匹配的方法,就可以把必须使用O(n)时间的解码算法优化为O(n/m)时间的匹配算法,从而提高整个系统的性能。另外,EmailMatch算法是在LongMatch【15】算法基础上改进的,这种考虑硬件加速和分前后两次校验的思想,对优化其他算法也有借鉴作用。

在未来的工作中,我们将把这个设计思想应用到多DNA序列匹配系统和G带宽的网络信息安全系统中,希望能提高这些系统的性能。

致谢:本文工作过程得到程学旗、郭莉、李栋栋、卜东波和安全组的全体同事等人的建议、帮助和支持,在此表示感谢!

参考文献:

[1]Gonzalo Navarro and Mathieu Raffinot , Flexible Pattern Matching in Strings:Practical on-line

search algorithms for texts and biological sequences, Cambridge University Press, 2002,ISBN 0-521-81307-7

[2]Gonzalo Navarro. Regular Expression Searching over Ziv-Lempel Compressed Text. In Proc.

12th Combinatorial Pattern Matching Conference (CPM'01), pages 1-17, 2001. LNCS 2089. [3]Dan Gusfield, Algorithms on Strings, Trees and Sequences: Computer Science and

computational Biology, University of California Press, CA, 1997

[4]Sun Wu,Udi Manber,A FAST ALGORITHM FOR MULTI-PATTERN

SEARCHING”,Technical Report Department of Computer Science Chung-Cheng University Chia-Yi, Taiwan sw@https://www.wendangku.net/doc/ff2210525.html,.tw

[5]Jang-Jong Fan, Keh-Yih Su: An Efficient Algorithm for Matching Multiple Patterns. IEEE

Transactions on Knowledge and Data Engineering (TKDE) 5(2): 339-351 (1993)

[6]Commentz-Walter, B, ‘‘A string matching algorithm fast on the average,’’ Proc. 6th

International Colloquium on Automata, Languages, and Programming (1979), pp. 118-132. [7]BOYER R.S., MOORE J.S., 1977, A fast string searching algorithm. Communications of the

ACM. 20:762-772.

[8]Aho, A. V., and M. J. Corasick, ‘‘Efficient string matching: an aid to bibliographic

search,’’Communications of the ACM 18 (June 1975), pp. 333-340.

[9]Carnivore Diagnostic Tool https://www.wendangku.net/doc/ff2210525.html,/hq/lab/carnivore/carnivore.htm

[10]Request for Comments: 1521: MIME (Multipurpose Internet Mail Extensions) Part

One:Mechanisms for Specifying and Describing the Format of Internet Message Bodies

[11]E.Moura,G.Navarro,N.Ziviani,and R.Baeza Yates.Fast and exible word searching on

compressed text.ACM Trans.on Information Systems 2000,Previous versions in SIGIR'98 and SPIRE'98

[12]Sun Kim A Fast Multiple String-Pattern Matching Algorithm,17th AoM/IAoM Interantional

Conference on Computer Science, San Diego, CA, August, 1999

1999_https://www.wendangku.net/doc/ff2210525.html,/sunkim/

[13]T. Nishimura, Shuichi Fukamachi, Takeshi Shinohara: Speed-up of Aho-Corasick Pattern

Matching Machines by Rearranging States. SPIRE 2001: 175-185

[14]王永成沈州许一震,改进的多模式匹配算法,《计算机研究与发展》2002 Vol.39 No.1

[15]谭建龙白硕郭莉宋新波, 一种新的多关键词匹配算法Long-Karp-Rabin, 第七届研究

生学术研讨会,被评为优秀论文,2002-6

Direct Multi-strings matching to anti-spam

LiuPing, TanJianlong, ShaYing

Software Division, Institute of Computing Technology

Chinese Academy of Sciences, Beijing, P.R.China. 100080

Email: liuping@https://www.wendangku.net/doc/ff2210525.html, tan@https://www.wendangku.net/doc/ff2210525.html, shaying@https://www.wendangku.net/doc/ff2210525.html,

Subject:

A new direct multi-strings matching algorithm was presented to anti-spam.For the

content of Email is usually Base64 encoded, which is context sensitive, hence, a special matching algorithm is needed. In this paper, a new algorithm was proposed to direct-match without decoding. On the other hand, for the encoding results of Base64 are 32-bit streams, we utilized 32-bit block instead of 8-bit ones to speed up. Experiment shows that the new algorithm run faster than both the "decode-matching” method and direct-match in original contents.

Keywords: anti-spam, direct multi-strings matching, string matching, Base64

作者简介:

1、刘萍,女,1972年出生,助理研究员,主要方向:信息安全,数据流管理。

2、谭建龙,男,助理研究员。

3、沙瀛,男,助理研究员。

采用技术手段应对垃圾邮件

计算机世界/2004年/06月/21日/第D12版 垃圾邮件的危害引起国内外相关人士的广泛观注,许多安全厂商适时地推出了各种反垃圾邮件的软件和硬件产品。为了帮助广大用户了解反垃圾邮件市场的主流产品与技术,此前,计算机世界评测实验室特别进行了反垃圾邮件产品的横向评测,并于上期公布了评测结果。 不过面对价格不菲的反垃圾邮件产品,大多数小型企业和个人用户还是望而却步的。难道除了借助专业的反垃圾邮件产品之外,真的没有其他方法来减轻垃圾邮件的危害吗?答案是,用户可以 采用技术手段应对垃圾邮件 中国科学院自动化研究所综合自动化技术工程研究中心张前进邹益仁 如今,垃圾邮件的危害越来越大,但怎样阻止垃圾邮件,以及因垃圾邮件引发的屏蔽问题,显然还没有得到足够的重视。在舆论的压力下,如何解决垃圾邮件这一长期被忽视的问题终于被摆上了桌面。下面我们将着重从技术角度介绍对付垃圾邮件的方法。 SMT P(Sim ple M ail Transfer Protocol,简单邮件传输协议)在初始设计时的目的就是把电子邮件从Internet上的一台主机传递到另外一台主机,直到电子邮件到达目的地。因此,SM TP最初并没有过多地考虑安全性,后来随着人们逐渐意识到安全的重要性,才对其进行了多次补充和扩展。但是由于邮件服务器的缺省设置都是遵循最初始的标准,以获得最大的兼容性和可用性,因此一个刚刚装好、未加任何修补措施的邮件服务器是不具备诸如对发信人进行身份验证的安全措施。我们必须对其进行修补,并处理好以下几个环节,才能较好地应对垃圾邮件。 修补邮件服务器的漏洞 由于SMTP和Internet协议的开放性,我们在阻住不需要邮件的同时,保证邮件服务器对Internet邮件用户的可用性是比较困难的。虽然如此,但还是有些技巧可以用来保护邮件服务器。对于一个刚刚安装完的IMail Server系统来讲,我们要对缺省设置做如下修改。 邮件转发选项 在SMT P服务的SMTP Security属性中,IM ail Server提供了五种邮件转发模式:Relay mail for anyone、Relay mail for、No mail relay、Relay for local hosts only、Relay for local users only。 由于本地邮件不使用转发功能,也就是说当一封信的目标主机是IM ail Server所在的计算机或者一封信来源于IMail Server所在的计算机时,该邮件是不用转发的。所以当所有的邮件用户使用相同的IM ail Server或者他们都使用Web M essag ing来存取邮件时,可以简单使用No mail relay模式,也是这几种转发模式中最安全的。但使用这种模式时必须确认Disable SMT P Auth Reporting没有被选中,这样就会强制邮件用户在发送邮件的时候进行身份验证,只有那些通过身份验证的用户才能发送成功。当Outlook或Eudora作为邮件客户端程序时,请确认我的服务器要求身份验证(my server requires authentication)!被选中,其他的邮件客户端也有相应的选项,但文字表达可能不尽相同。

模式匹配的KMP算法详解

模式匹配的KMP算法详解 模式匹配的KMP算法详解 这种由D.E.Knuth,J.H.Morris和V.R.Pratt同时发现的改进的模式匹配算法简称为KMP算法。大概学过信息学的都知道,是个比较难理解的算法,今天特把它搞个彻彻底底明明白白。 注意到这是一个改进的算法,所以有必要把原来的模式匹配算法拿出来,其实理解的关键就在这里,一般的匹配算法: int Index(String S,String T,int pos)//参考《数据结构》中的程序 { i=pos;j=1;//这里的串的第1个元素下标是1 while(i<=S.Length && j<=T.Length) { if(S[i]==T[j]){++i;++j;} else{i=i-j+2;j=1;}//**************(1) } if(j>T.Length) return i-T.Length;//匹配成功 else return 0; } 匹配的过程非常清晰,关键是当‘失配’的时候程序是如何处理的?回溯,没错,注意到(1)句,为什么要回溯,看下面的例子: S:aaaaabababcaaa T:ababc aaaaabababcaaa ababc.(.表示前一个已经失配) 回溯的结果就是 aaaaabababcaaa a.(babc) 如果不回溯就是 aaaaabababcaaa aba.bc 这样就漏了一个可能匹配成功的情况 aaaaabababcaaa ababc 为什么会发生这样的情况?这是由T串本身的性质决定的,是因为T串本身有前后'部分匹配'的性质。如果T为abcdef这样的,大没有回溯的必要。

基于特征的图像匹配算法毕业设计论文(含源代码)

诚信声明 本人声明: 我所呈交的本科毕业设计论文是本人在导师指导下进行的研究工作及取得的研究成果。尽我所知,除了文中特别加以标注和致谢中所罗列的内容以外,论文中不包含其他人已经发表或撰写过的研究成果。与我一同工作的同志对本研究所做的任何贡献均已在论文中作了明确的说明并表示了谢意。本人完全意识到本声明的法律结果由本人承担。 申请学位论文与资料若有不实之处,本人承担一切相关责任。 本人签名:日期:2010 年05 月20日

毕业设计(论文)任务书 设计(论文)题目: 学院:专业:班级: 学生指导教师(含职称):专业负责人: 1.设计(论文)的主要任务及目标 (1) 了解图象匹配技术的发展和应用情况,尤其是基于特征的图象匹配技术的发展和应用。 (2) 学习并掌握图像匹配方法,按要求完成算法 2.设计(论文)的基本要求和内容 (1)查阅相关中、英文文献,完成5000汉字的与设计内容有关的英文资料的翻译。(2)查阅15篇以上参考文献,其中至少5篇为外文文献,对目前国内外图象匹配技术的发展和应用进行全面综述。 (3)学习图象匹配算法,尤其是基于特征的图象匹配算法。 (4)实现并分析至少两种基于特征的图象匹配算法,并分析算法性能。 3.主要参考文献 [1]谭磊, 张桦, 薛彦斌.一种基于特征点的图像匹配算法[J].天津理工大学报,2006, 22(6),66-69. [2]甘进,王晓丹,权文.基于特征点的快速匹配算法[J].电光与控制,2009,16(2), 65-66. [3]王军,张明柱.图像匹配算法的研究进展[J].大气与环境光学学报,2007,2(1), 12-15.

多关键词模糊匹配算法名词解释

编辑距离:是指两个字串之间,由一个转成另一个所需的最少编辑操作次数;俄罗斯科学家Vladimir Levenshtein在1965年提出这个概念;编辑距离越小的两个字符串越相似,当编辑距离为0时,两字符串相等。 距离:两个子串之间的“差异”叫做距离。 海明距离:相同位相同值的个数。 Hash函数:就是把任意长度的输入(又叫做预映射,pre-image),通过散列算法,变换成固定长度的输出,该输出就是散列值。这种转换是一种压缩映射,也就是,散列值的空间通常远小于输入的空间,不同的输入可能会散列成相同的输出,所以不可能从散列值来确定唯一的输入值。简单的说就是一种将任意长度的消息压缩到某一固定长度的消息摘要的函数。 Simhash算法:分为5个步骤:分词(带权重w)、hash(得hash值)、加权(hash值*w)、合并(多关键词)、降维(海明距离)。 算法伪代码: 1,将一个f维的向量V初始化为0;f位的二进制数S初始化为0; 2,对每一个特征:用传统的hash算法对该特征产生一个f位的签名b。对i=1到f: 如果b的第i位为1,则V的第i个元素加上该特征的权重; 否则,V的第i个元素减去该特征的权重。 3,如果V的第i个元素大于0,则S的第i位为1,否则为0; 4,输出S作为签名。 通配符:一种特殊语句,主要有星号(*)和问号(?),用来模糊搜索文件。当查找文件夹时,可以使用它来代替一个或多个真正字符;当不知道真正字符或者懒得输入完整名字时,常常使用通配符代替一个或多个真正的字符。 TF词频(Term Frequency):是指某一个给定的词语在该文件中出现的次数。一种统计方法,

怎样避免邮件被当作垃圾邮件

电子邮件送达率是衡量电子邮件营销效果的重要指标之一。随着垃圾邮件越来越泛滥,世界上所有的 ISP 和服务器提供商都采取了越来越严厉的过滤垃圾邮件措施,同时也给正常邮件,以及合法合理、用户欢迎的电子邮件营销带来不便。不过这是大势所趋,不是营销人员能解决的。 垃圾邮件过滤方法垃圾邮件过滤方法 电子邮件营销人员能做的是尽量减少自己的邮件被当作垃圾邮件的机会。要做到这一点,首先需要了解主要的垃圾邮件过滤方法。 第一种是以触发式过滤算法鉴别垃圾邮件,这样的过滤器通常已经装在电子邮件客户端软件或邮件服务器上。其原理是过滤软件检查邮件的发信人,标题,正文内容,邮件中出现的链接和域名,甚至电话号码,当发现带有明显广告性质,或经常出现已知垃圾邮件的典型特征,则给这封邮件打一定的垃圾邮件特征分数。当分数达到一定数值时,邮件将被标志为垃圾邮件,直接过滤到垃圾邮件文件夹。 比如,邮件标题中出现¥、$符号,可能给予2 分垃圾分数。邮件内容中出现“免费”、“发票”、“促销”等典型垃圾邮件中经常出现的词汇时,也各给 1 分。邮件中如果包含已经被确认的经常发垃圾的域名,再加 1 分。甚至邮件内容中出现被确认与垃圾邮件相关联的电话号码,也给个分数。 当这些垃圾分数相加达到某一个数值时,比如达到 10 分,这个邮件将被标志为垃圾。 第二种方法是以黑名单为基础。有一些创建和维护链接邮件黑名单的组织,专门接受用户的垃圾邮件投诉,如果确认确实是垃圾邮件,黑名单运行者将把发送垃圾邮件的服务器和用户IP 地址放入黑名单。 比较有规模的垃圾黑名单通常都与其他ISP 及服务器运营商共享黑名单数据库。一旦某个IP 地址被列入黑名单,世界上很多ISP 和邮件服务器将拒收来自这个 IP 地址的所有邮件。 有的时候用户投诉其实并不是真的因为所收到邮件是垃圾邮件,而是用户忘记了曾经注册这个电子杂志。如果你的IP 地址被错误地投诉而列入黑名单,唯一的方法是联系黑名单维护组织,说明情况,提出证据,要求把你的IP 地址从黑名单中删除。不过这一过程有时非常复杂艰难。 第三种方法是邮件防火墙。很多大公司的服务器是运行在邮件防火墙之后,这些防火墙会综合使用各种过滤器以及黑名单,再加上自行研制的一些算法,来鉴别和剔除垃圾邮件。这些防火墙的算法则更复杂,并且不与其他人分享细节,对正常邮件的送达也可能起到致命的影响。 第四种方法是使用邮件确认。当电子邮件帐号收到一封email 时,这封 email 会首先进入待送达队列中排队,同时自动回复给发信人一封确认邮件。确认邮件中包含有一个确认链接,或标题中包含有一个独特的确认序列号,只有原来的发件人点击确认链接,或回复这封确认邮件,发信人的邮件地址才会被列入白名单,原来所发送的第一封原始邮件才真正被送达到收件箱。 鉴别和阻挡垃圾邮件大致上是这几种方法,有一些邮件服务器可能会综合使用这些方法。 为了避免邮件被这些过滤手段鉴别为垃圾邮件,应该注意下面一些问题。 检查服务器 IP 地址是否在黑名单中?选择邮件服务器时,应该检查服务器提供商的IP 地址是否被列在主要的垃圾黑名单中。国际上主要的垃圾黑名单包括: https://www.wendangku.net/doc/ff2210525.html,

关于快速高效的模式匹配算法的剖析与改进

关于快速高效的模式匹配算法的剖析与改进 摘要:模式匹配算法是现代化网络入侵检测中的关键环节,本文主要介绍了几种常用的模式匹配算法,并在此基础上,提出一种更快捷、更高效的改进方法,以提高模式匹配的效率与质量,确保网络安全。 关键词:模式匹配入侵检测改进 随着我国计算机与网络技术的飞速发展,网络应用已涉及到人们生产、生活的各个领域,其重要性日益凸显。随之而来的网络攻击问题也备受关注,给网络安全性带来挑战。传统的网络防御模式,主要采取身份认证、防火墙、数据加密等技术,但是与当前网络发展不适应。在此背景下,入侵检测技术营运而生,并建立在模式匹配基础上,确保检测的快捷性、准确性,应用越来越广泛。 1、模式匹配原理概述 模式匹配是入侵检测领域的重要概念,源自入侵信号的层次性。结合网络入侵检测的底层审计事件,从中提取更高层次的内容。通过高层事件形成的入侵信号,遵循一定的结构关系,将入侵信号的抽象层次进行具体划分。入侵领域大师kumar将这种入侵信号划分为四大层次,并将每一个层次与匹配模式相对应。以下将分别对四大层次进行分析: (1)存在。只要存在审计事项,就可以证明入侵行为的发生,并深层次挖掘入侵企图。存在主要对应的匹配模式就是“存在模式”。可以说,存在模式就是在固定的时间内,检查系统中的特定状态,

同时判断系统状态。 (2)序列。一些入侵的发生,是遵循一定的顺序,而组成的各种行为。具体表现在一组事件的秩序上。序列对应的是“序列模式”,在应用序列模式检测入侵时,主要关注间隔的时间与持续的时间。 (3)规则。规则表示的是一种可以扩展的表达方式,主要通过and 逻辑表达来连接一系列的描述事件规则。一般适用于这种模式的攻击信号由相关活动组成,这些活动之间往往不存在事件的顺序关系。 (4)其他。其他模式是不包含前面几种方法的攻击,在具体应用过程中,难以与其他入侵信号进行模式匹配,大多为部分实现方式。 2、几种常用的模式匹配算法 2.1 ac算法 ac算法(aho-corasick)是一种可以同时搜索若干个模式的匹配算法,最早时期在图书馆书目查询系统中应用,效果良好。通过使用ac算法,实现了利用有限状态自动机结构对所有字符串的接收过程。自动机具有结构性特征,且每一个前缀都利用唯一状态显示,甚至可同时应用于多个模式的前缀中。如果文本中的某一个字符不属于模式中预期的下一个字符范围内,或者可能出现错误链接的指向状态等,那么最长模式的前缀同时也可作为当前状态相对应的后缀。ac算法的复杂性在于o(n),预处理阶段的复杂性则在于o(m)。在采取ac算法的有限状态自动机中,应该在每一个字符的模式串中分别建立节点,提高该算法的使用效率与质量。目前,应用有限

字符串的模式匹配算法

在前面的图文中,我们讲了“串”这种数据结构,其中有求“子串在主串中的位置”(字符串的模式匹配)这样的算法。解决这类问题,通常我们的方法是枚举从A串(主串)的什么位置起开始与B串(子串)匹配,然后验证是否匹配。假设A串长度为n,B串长度为m,那么这种方法的复杂度是O(m*n)的。虽然很多时候复杂度达不到m*n(验证时只看头一两个字母就发现不匹配了),但是我们有许多“最坏情况”,比如: A=“aaaaaaaaaaaaaaaaaaaaaaaaab”,B=“aaaaaaaab”。 大家可以忍受朴素模式匹配算法(前缀暴力匹配算法)的低效吗?也许可以,也许无所谓。 有三位前辈D.E.Knuth、J.H.Morris、V.R.Pratt发表一个模式匹配算法,最坏情况下是O(m+n),可以大大避免重复遍历的情况,我们把它称之为克努特-莫里斯-普拉特算法,简称KMP算法。 假如,A=“abababaababacb”,B=“ababacb”,我们来看看KMP是怎样工作的。我们用两个指针i和j分别表示,。也就是说,i是不断增加的,随着i 的增加j相应地变化,且j满足以A[i]结尾的长度为j的字符串正好匹配B串的前j个字符(j当然越大越好),现在需要检验A[i+1]和B[j+1]的关系。 例子: S=“abcdefgab” T=“abcdex” 对于要匹配的子串T来说,“abcdex”首字符“a”与后面的串“bcdex”中任意一个字符都不相等。也就是说,既然“a”不与自己后面的子串中任何一字符相等,那么对于主串S来说,前5位字符分别相等,意味着子串T的首字符“a”不可能与S串的第2到第5位的字符相等。朴素算法步骤2,3,4,5的判断都是多余,下次的起始位置就是第6个字符。 例子: S=“abcabcabc” T=“abcabx”

百度搜索关键词逻辑算法

搜索关键词提炼 选择搜索关键词的原则是,首先确定你所要达到的目标,在脑子里要形成一个比较清晰概念,即我要找的到底是什么?是资料性的文档?还是某种产品或服务?然后再分析这些信息都有些什么共性,以及区别于其他同类信息的特性,最后从这些方向性的概念中提炼出此类信息最具代表性的关键词。如果这一步做好了,往往就能迅速的定位你要找的东西,而且多数时候你根本不需要用到其他更复杂的搜索技巧。 细化搜索条件 你给出的搜索条件越具体,搜索引擎返回的结果也会越精确。比方说你想查找有关电脑冒险游戏方面的资料,输入game是无济于事的。computer game范围就小一些,当然最好是敲入computer adventure game,返回的结果会精确得多。此外一些功能词汇和太常用的名词,如对英文中的“and”、“how”、“what”、“web”、“homepage”和中文中的“的”、“地”、“和”等等搜索引擎是不支持的。这些词被称为停用词(Stop Words)或过滤词(Filter Words),在搜索时这些词都将被搜索引擎忽略。 用好搜索逻辑命令 搜索引擎基本上都支持附加逻辑命令查询,常用的是“+”号和“-”号,或与之相对应的布尔(Boolean)逻辑命令AND、OR和NOT。用好这些命令符号可以大幅提高我们的搜索精度。 精确匹配搜索 除利用前面提到的逻辑命令来缩小查询范围外,还可使用""引号(注意为英文字符。虽然现在一些搜索引擎已支持中文标点符号,但顾及到其他引擎,最好养成使用英文字符的习惯)来进行精确匹配查询(也称短语搜索)。 特殊搜索命令 标题搜索多数搜索引擎都支持针对网页标题的搜索,命令是“title:”,在进行标题搜索时,前面提到的逻辑符号和精确匹配原则同样适用。网站搜索此外我们还可以针对网站进行搜索,命令是“site:”(Google)、“host:”(AltaVista)、“url:”(Infoseek)或“domain:”(HotBot)。链接搜索在Google和AltaVista中,用户均可通过“link:”命令来查找某网站的外部导入链接(inbound links)。其他一些引擎也有同样的功能,只不过命令格式稍有区别。你可以用这个命令来查看是谁以及有多少网站与你做了链接。 1、简单查询 在搜索引擎中输入关键词,然后点击“搜索”就行了,系统很快会返回查询结果,这是最简单的查询方法,使用方便,但是查询的结果却不准确,可能包含着许多无用的信息。 2、使用双引号用(" ") 给要查询的关键词加上双引号(半角,以下要加的其它符号同此),可以实现精确的查询,这种方法要求查询结果要精确匹配,不包括演变形式。例如在搜索引擎的文字框中输入“提供电商平台建设的北京方寸无限网络科技有限公司”,它就会返回网页中有“电商平台建设”这个关键字的网址,而不会返回诸如“有限公司”之类网页。 3、使用加号(+) 在关键词的前面使用加号,也就等于告诉搜索引擎该单词必须出现在搜索结果中的网页上,例如,在搜索引擎中输入“+电脑+电话+传真”就表示要查找的内容必须要同时包含“电脑、电话、传真”这三个关键词。 4、使用减号(-) 在关键词的前面使用减号,也就意味着在查询结果中不能出现该关键词,例如,在搜索引擎中输入“电视台-中央电视台”,它就表示最后的查询结果中一定不包含“中央电视台”。5、使用通配符(*和?)

QQ邮箱屏蔽垃圾邮件的方法.doc

QQ邮箱屏蔽垃圾邮件的方法 近年来,广大用户的网购热情与日俱增,人们都想体验足不出户就可收获颇丰的效果。而商家们的广告促销也变得如火如荼,广告垃圾邮件开始泛滥;同时,一些钓鱼网站也借着这个势头开始蠢蠢欲动,欺诈邮件频频出现。下面就为大家介绍下如何设置QQ邮箱屏蔽这些垃圾邮件。 举报垃圾邮件 举报垃圾邮件,敲响反垃圾警钟 我们在查看邮件时经常会看到一下垃圾邮件或一些陌生网站的邮件,这时你不用烦心,只要点击举报,QQ邮箱就会为你处理此类邮件。根据设置,该邮件会自动从收件箱消失,然后直接删除或被移动到垃圾箱。举报过之后,系统会智能记住此类垃圾邮件的特征,下次为你自动拦截,让你免受骚扰。 辨别邮件地址真伪,助你识别欺诈邮件 近年来钓鱼网站的蠢蠢欲动,让防范欺诈邮件势在必行。如何辨别邮件来源是识别欺诈邮件很重要的一步,在这方面QQ邮箱推出了专门的辨别邮件功能,帮你有效防范欺诈邮件的侵袭。当真实发送地址与宣称的发件人地址不一致时,QQ邮箱就会在邮件上添加一个绿色的小问号加以提示,这时,用户就该谨慎处理

这些邮件。 反垃圾设置 反垃圾设置,杜绝垃圾邮件干扰 进行有效地反垃圾设置,是防止垃圾邮件侵扰的行之有效的方法。QQ邮箱的反垃圾,设置黑名单,就不会再收到该地址或域名下各个邮箱发来的信件,有效防止垃圾广告邮件;设置白名单,该地址或域名下各个邮箱发来的信件将不受反垃圾规则的影响,保证你一定能收到来自该地址或域名的邮件。如此设置,即可以有效防止垃圾邮件,又能保证顺利接受信任地址的邮件。设置收信过滤器 完善收信过滤器,天网恢恢疏而不漏 邮件过滤,是对抗垃圾邮件、欺诈邮件的一项非常有效的技术,对于符合过滤条件的邮件进行过滤处理,就如同杀毒软件对病毒的查杀一样。QQ邮箱的收信规则就相当于邮件过滤器,当邮件到达时,你可以根据自己的要求选择相应的条件,并在所选条件的对话框内填入相应的关键字、关键词;这样当条件满足时,QQ 邮箱就会根据设置对这些垃圾邮件进行处理。 在这里提醒大家,如果我们选用直接删除邮件功能,我们一定要慎重,最好在大量收到垃圾邮件的时候才用,以免误删有用的

实验三____串的模式匹配

实验三串的模式匹配 一、实验目的 1.利用顺序结构存储串,并实现串的匹配算法。 2.掌握简单模式匹配思想,熟悉KMP算法。 二、实验要求 1.认真理解简单模式匹配思想,高效实现简单模式匹配; 2.结合参考程序调试KMP算法,努力算法思想; 3.保存程序的运行结果,并结合程序进行分析。 三、实验内容 1、通过键盘初始化目标串和模式串,通过简单模式匹配算法实现串的模式匹配,匹配成功后要求输出模式串在目标串中的位置; 2、参考程序给出了两种不同形式的next数组的计算方法,请完善程序从键盘初始化一目标串并设计匹配算法完整调试KMP算法,并与简单模式匹配算法进行比较。 参考程序: #include "stdio.h" void GetNext1(char *t,int next[])/*求模式t的next值并寸入next数组中*/ { int i=1,j=0; next[1]=0; while(i<=9)//t[0] { if(j==0||t[i]==t[j]) {++i; ++j; next[i]=j; } else j=next[j]; } } void GetNext2(char *t , int next[])/* 求模式t 的next值并放入数组next中 */ { int i=1, j = 0; next[1]= 0; /* 初始化 */ while (i<=9) /* 计算next[i+1] t[0]*/ { while (j>=1 && t[i] != t[j] ) j = next[j]; i++; j++;

if(t[i]==t[j]) next[i] = next[j]; else next[i] = j; } } void main() { char *p="abcaababc"; int i,str[10]; GetNext1(p,str); printf("\n"); for(i=1;i<10;i++) printf("%d",str[i]); GetNext2(p,str); printf("\n"); for(i=1;i<10;i++) printf("%d",str[i]); printf("\n\n"); }

垃圾邮件防护系统分析与应用方法

垃圾邮件防护系统分析与应用方法 【内容提要】: 随着联机上网费用日趋便宜,发送电子邮件广告几近零成本又有利可图,因此造成垃圾邮件如今日混乱猖獗的现况。针对这种问题,许多公司研究出许多垃圾邮件防护和过滤机制产品,本文将对垃圾邮件的有关防护过滤技术和解决方法作一个基本介绍。 【关键词】:垃圾邮件、邮件防护、技术分析、AFS、华硕、过滤、机制 引言---------- 随着互联网的蓬勃发展,E-mail信息的传播达到了前所未有的广度和深度。同时不请自来的电子邮件也以各种形式闯入我们的邮箱- 商品推销、诈骗、政治或宗教抨击、病毒载体以及无法归类的稀奇古怪的形式。有些人每天甚至要收到100 到200 封这样的垃圾电子邮件(甚至更多)。因为更多的人开始使用英特网的关系(自因特网建立以来,人数飞速增长),对于商人、小贩、想入非非者以及蓄意破坏者而言,可以无偿地联系到数目巨大的各类人,诱惑力变得难以抵挡,自此大量的垃圾邮件在世界的各个角落产生,并瞬间传递到世界其他任何地方,这种费时且消耗CPU 的破坏行为迅速对经济产生了极大的负面影响。 现今越来越多的人开始意识到垃圾邮件的传递所带来的严重后果,并不断提出防治的新需求。 一垃圾邮件的定义 一封完整的电子邮件包含以下项目:邮件信封Mail Envelope、邮件标题Mail Header、邮件本文Mail Body 与邮件附檔Mail Attachment。电子邮件传输处理分为两阶段:邮件传输代理Mail Transfer Agent (简称MTA),例如邮件服务器,以及与邮件使用代理Mail User Agent (简称MUA),例如Outlook 或Outlook Express。 如果以邮件內容定义垃圾邮件,容易随个人主观认定而异;对银行业、娛乐业,广告业而言,包含其他银行贷款广告、色情广告的邮件,可能是种具有价值的市场资讯,而非垃圾邮件;因此,必需依邮件行为始能,依众人认知、法律规范与国际法规逐一精确定义何为垃圾邮件。 1. 众人认知:不请自來、来路不明、无法拒绝之邮件。 2. 法律规范:造成骚扰、匿名文书或嫁祸他人之邮件。 3. 国际法规: 2003 年底美国立法明定「Can Spam」垃圾邮件法规「Can Spam」字面表示可以「Spam」,惟有「但书」,寄件者必须表明身分,让收件者可以追溯来源不可以匿名、伪造,或者刻意隐匿或篡改资讯等行为发送电子邮件;发送方式方式不可为垃圾邮件滥发者(Spammer) 慣用之垃圾邮件滥发方式或程式,如借用邮件代替(Open Relay)、出现过多邮件转(Received) 或机器自动发送,以及不断尝试各种进入企业信箱方法等,必须提供收件者「选择权」,具有「取消订阅」机制。 综上所述,垃圾邮件之所以恼人并不是因为內容无趣不吸引人,而在于大量滥发,任意长驱直入收信者电子邮件信箱。 二邮件信息安全的影响

串的模式匹配算法实验报告

竭诚为您提供优质文档/双击可除串的模式匹配算法实验报告 篇一:串的模式匹配算法 串的匹配算法——bruteForce(bF)算法 匹配模式的定义 设有主串s和子串T,子串T的定位就是要在主串s中找到一个与子串T相等的子串。通常把主串s称为目标串,把子串T称为模式串,因此定位也称作模式匹配。模式匹配成功是指在目标串s中找到一个模式串T;不成功则指目标串s中不存在模式串T。bF算法 brute-Force算法简称为bF算法,其基本思路是:从目标串s的第一个字符开始和模式串T中的第一个字符比较,若相等,则继续逐个比较后续的字符;否则从目标串s的第二个字符开始重新与模式串T的第一个字符进行比较。以此类推,若从模式串T的第i个字符开始,每个字符依次和目标串s中的对应字符相等,则匹配成功,该算法返回i;否则,匹配失败,算法返回0。 实现代码如下:

/*返回子串T在主串s中第pos个字符之后的位置。若不存在,则函数返回值为0./*T非空。 intindex(strings,stringT,intpos) { inti=pos;//用于主串s中当前位置下标,若pos不为1则从pos位置开始匹配intj=1;//j用于子串T中当前位置下标值while(i j=1; } if(j>T[0]) returni-T[0]; else return0; } } bF算法的时间复杂度 若n为主串长度,m为子串长度则 最好的情况是:一配就中,只比较了m次。 最坏的情况是:主串前面n-m个位置都部分匹配到子串的最后一位,即这n-m位比较了m次,最后m位也各比较了一次,还要加上m,所以总次数为:(n-m)*m+m=(n-m+1)*m从最好到最坏情况统计总的比较次数,然后取平均,得到一般情况是o(n+m).

随机森林垃圾邮件检测算法分析

随机森林垃圾邮件检测算法分析 摘要:本文应用SMOTE算法以消除邮件数据的不平衡性,并应用随机森林集成学习算法进行垃圾邮件识别。实验结果表明提出的方法在多个指标性能表现良好。 关键词:垃圾邮件、随机森林、合成少数类过采样技术

1引言 电子邮件是使用率最高的网络应用之一,是人们通过网络交流沟通的重要工具。但是,垃圾邮件作为正常邮件的附属产物,已经严重影响到国家、企业和以及个人之间的网络通讯与安全,甚至造成严重的经济损失。现在,越来越多的学者将分类预测技术应用于垃圾邮件识别,如陈龙等提出了一种基于支持向量机的自适应性分类器,并应用于用于检测垃圾邮件[1]。刘洁等提出基于改进互信息的加权朴素贝叶斯算法以提高垃圾邮件识别的精确度和召回率[2]。本文提出了一种结合SMOTE和随机森林的算法,并应用于垃圾邮件检测,以提高垃圾邮件的识别率。 2基于SMOTE和随机森林的垃圾邮件识别算法 垃圾邮件检测数据往往是不平衡数据,即数据集中的正常邮件和垃圾邮件的数量是不均衡的。针对此问题,本文提出了基于合成少数类过采样技术(SMOTE)[3]和随机森林集成学习算法[4]的RF-smote算法。算法主要分两步,首先应用SMOTE算法对少数类别的垃圾邮件样本进行分析和新样本合成,将生成的新样本添加到数据集中,消除正常邮件和垃圾邮件样本数量的不平衡。然后,应用随机森林集成学习算法,进行垃圾邮件识别。SMOTE 算法步骤如下:1.针对训练数据,采取最邻近算法,计算出垃圾邮件样本数据的K个近邻;2.针对每个垃圾邮件样本,与它K近邻中随机选择一个的样本,进行随机线性插值;3.重复第2步,直至生成的新样本个数达到合成比率要求。

高效的多模式匹配算法

东方企业文化·百家论坛 2011年9月 163 高效的多模式匹配算法 马 力 (重庆青年职业技术学院,重庆,400712) 摘 要:本文提出一种新的多模式匹配算法,以提高匹配检测的执行速度和效率。该算法采用了基于集合的多模式匹配思想,重新构造了HASH 函数以便在处理大规模模式集时执行时间能比传统的匹配算法的执行时间要少。经过实验证明,运用该算法不仅具有时间复杂度较低的优点,且与传统算法相比具有更为优越的性能,同时在实际工作状态下的检测能力也更强大。 关键词:多模式匹配 HASH 函数 中图分类号:TP393 文献标识码:A 文章编号:1672—7355(2011)09—0163—01 一、算法描述 通常在自然文本中,经常会发生所谓的坏字符移动。此时会极大提高Boyer-Moore 算法的检测效率。但是当文本与多个模式进行匹配时,文本中的多数字符都可能与某些模式的最后一个字符相匹配(即匹配冲突),这时发生坏字符移动的可能性就非常小了。本文提出的算法解决了如何在上述情况下继续保持Boyer-Moore 算法的实质与效率的问题,采用散列(Hash )技术和高效过滤等方法,减小了匹配冲突对算法执行效率的影响。算法描述如下: 首先,算法需要计算出模式的最小长度,设其值为m ,为简化算法描述,假定所有模式均具有相同的长度,同时保证最小长度合理以免影响匹配效率。 假设P 为模式的集合,P={P 1P 2……P K },K=|P|,P 中所有模式的长度均为m 。T 为网络数据包,T=t 1t 2……t n (n ≧m )。 选取Q 为足够大空间的常数,定义长度为m 的支字符串R=r 1r 2……r m ,则构造出R 的Hash 函数:∑=?=m i i m i S r Q R Hash 1mod )(,其中S 为上文所提的模式的P 集合。 二、算法流程设计 1. 预处理阶段 首先需要对模式进行排序,形成有序模式链表;然后主要完成三张表(SHIFT 表、HASH 表和PREFIX 表)的创建。SHIFT 表主要用于确定扫描文本时可移动的字符数。根据SHIFT 表中的取值分为两种处理情况:SHIFT[i ]≠0:直接根据SHIFT[i ]中的取值,确定移动的字符数。SHIFT[i ]=0:即前面提到的匹配冲突。此时需要根据HASH 表和PREFIX 表确定匹配的候选模式并最终核实该模式。 (1)SHIFT 表的创建在此处起到与Boyer-Moore 算法中相同的移动指示作用,只不过移动字符的数目基于长度为B 的字符块。假设SHIFT 表中包含了每个大小为B 的字符串的入口,那么它的大小为|∑|B 。为了减少表存储空间,采用了散列函数,将每个长度为B 的字符串映像为一个索引SHIFT 表的整数。设X=x 1x 2……x b 为文本中的b 个字符串,并假设X 已经被映像为SHIFT 表中的一个入口,则过程SHIFT Table Set Value ()有以下两种情况: X 不属于substring (P ) :SHIFT[i]=m-B+I ; X 属于substring (P ) :SHIFT[i]=m-q ; (q 为P i 中X 发生匹配的最右端位置)。 SHIFT 表中的所有初始值均为m-B+1,考虑每个模式 P=P 1P 2……P K ,将每个大小为i j B j B j P p p p B )(21"+?+?的子 串映像到SHIFT 表中。 通常情况下,SHIFT 表项的取值总是大于0,因此能够成功地跳过文本块并继续扫描文本。但是当模式数量增多时,情况就完全不同了。当模式数量增多时,SHIFT 表项取值为0的概率也呈线性递增趋势,即发生匹配冲突的可能性越来越大。本文设计的该算法的核心思想就是采用散列技术来最小化需要处理模式的数目,避免与模式链表中的每个模式逐一进行匹配,同时结合PREFIX 表的过滤作用,加速搜索过程。 (2)HASH 表的创建创建HASH 表,并使用前面计算出的用于索引SHIFT 表的B 个字符串映像整数作为该表的索引。设HASH 表的第i 个入口为HASH[i],它包含了一个指向最后B 个字符散列值为i 的模式链表的指针。链表PAT_POINT 用于存储指向模式的指针,每个模式按其最后B 个字符的散列值大小排序。设h 为文本当前后缀的散列值,并假设SHIFT[i ]=0,此时HASH[h]的取值指针p 指向散列值为h 的模式链表首部。为查找链表尾,指针不断递增直至它等于HASH[h+1]。如果SHIFT[i ]≠0,则有HASH[h]= HASH[h+1],因为不存在后缀散列值为h 的模式。 (3)PREFIX 表的创建多模式中肯定会出现相同后缀的情况,导致HASH 表冲突,即所有具有相同后缀的模式将映像到HASH 表中的同一入口。为了加快在相同后缀中查找确切匹配模式的速度,算法还引入了用于区分这些模式的一个称为PREFIX 的表。除了将所有模式的后B 个字符做一映像之外,还须将所有模式的前B 个字符映像到PREFIX 表中。 如果发现SHIFT 值为0,并且要在HASH 表中确定是否存在匹配,那么就在PREFIX 表中检查该值。对每个后缀而言,HASH 表不仅包含具有所有此后缀的模式,而且还包含了他们相应的前缀。可以通过左移m-B 个位置计算出文本中的相应前缀,并用它来过滤那些后缀相同但是前缀不同的模式。 2. 扫描阶段 扫描阶段的流程如下:(1)计算tm-B+1到tm 的基于文本当前B 个字符的散列值h ;(2)检查SHIFT[h]的取值,如大于0,移动文本返回(1),否则转至(3);(3)从当前位置向左m 个字符处开始计算文本中的前缀散列值,称为文本前缀;(4)检查每个p ,SHIFT[h]≦p <HASH[h+1],是否有PREFIX[P]=text-prefix 。如果相等,那么就直接检查与文本相对应的实际模式(由PAT_POINT[p]给出)。 参考文献: [1] Crosbie , Gene Spafford. Defending a Computer System using Autonomous Agent[R].COAST Technical Report No.95-022, March 1994. [2] Aho A , Corasick M. Efficient String Matching an Aid to Bibliographic Search [J]. Communication of the ACM , 1975, 18(6) : 333-340.

计算广告的匹配算法综述

计算广告的匹配算法综述 郭庆涛,郑 滔 (南京大学软件学院,南京 210093) 摘 要:对计算广告研究中的计价模型和匹配算法及模型进行综述,分别从检索词匹配精度、语义情景和用户点击反馈等方面对Cosine 算法、Okapi BM25算法、特征学习算法、分层学习模型和Multinomial 统计语言模型等进行比较分析和优缺点总结,并提出可行的改进 方向。 关键词:赞助搜索;内容匹配;信息检索;机器学习;在线学习 Match Algorithms Survey of Computing Advertising GUO Qing-tao, ZHENG Tao (School of Software, Nanjing University, Nanjing 210093, China) 【Abstract 】This paper conducts a survey of pricing models, relevance match algorithms, and effective statistical models for computing advertising, analyzes and compares these approaches, like Cosine, Okapi BM25, feature learning, hierarchy-learning and Multinomial language model, and conclusively points out the feasible improvement and future of research in this field. 【Key words 】sponsored search; content match; information retrieval; machine learning; online learning DOI : 10.3969/j.issn.1000-3428.2011.07.075 计 算 机 工 程 Computer Engineering 第37卷 第7期 V ol.37 No.7 2011年4月 April 2011 ·人工智能及识别技术· 文章编号:1000—3428(2011)07—0222—03文献标识码:A 中图分类号:TP18 1 概述 随着互联网时代的发展,网络广告已经成为一个市值高达200亿美元的产业。网络信息浩瀚如海,如何在网络中实现精准的广告投放,实现网络广告的高回报率,已经成为信息技术领域的计算难题。计算广告就是在这种条件下兴起的一个分支学科,它所要解决的难题就是,如何在一定的上下文情境下,找出与当前上下文最佳匹配的网络广告。 目前,网络广告主要分为两大类:图像类(display ads)和文本类,其中,文本类广告又因登出场景的不同分为赞助搜索(sponsored search)和内容匹配(content match)。图像类在线广告的具体形式通常是图片、动画以及视频,这一类广告讲求的是品牌印象的传播。赞助搜索是指广告主为搜索引擎的运营提供赞助,作为回报,该搜索引擎在出现与广告主相关度较高的检索词时,登出相应的广告,例如,Google AdWord 便是赞助搜索的一种典型形式。内容匹配则是指将广告在内容与其相关度较高的网页中登出,例如Google AdSense 和百度推广服务等。 迄今为止,网络广告流行的收益计价模型主要是CPM 、CPC 和CPA 这3种。在不同的计价模型之下,计算广告的匹配算法主要源于3个领域:(1)基于关键词匹配的信息检索,如Cosine 算法、Okapi BM25算法和Multinomial 统计语言模型;(2)基于用户点击反馈的机器学习算法,如特征学习模型、分层学习模型等;(3)在线学习算法,如Multi-armed bandit 、UCB1算法等。 另外,有许多学者发现单纯的信息检索缺乏对上下文语义情景的关注,对上述算法做出了不同程度的修正。本文将详细介绍上述算法及其特点比较,并提出可行的改进方向。 2 计价模型 在介绍计算广告的匹配算法前,需要先对网络广告的计 价模型作描述,因为广告的最佳匹配并非单纯是关键词匹配, 而在于是否最终能够吸引潜在用户的注意。针对网络广告的不同类型,流行的计价模型有以下3种: (1) CPM 模型 图像类广告主要采用该计价模型,因为图像广告得到展示,品牌印象就可以传播出去,具体的模型如下: Revenue N CPM =? 其中,N 为图像广告所在页面被加载的总次数;CPM 的价格由广告发布商通过竞价结果得到。 (2)CPC 模型 与图像类广告不同,文本类广告主要是吸引用户实际进行点击的行为。具体的模型如下: Revenue N CTR CPC =?? 其中,CTR 表示用户在该页面上可能对广告进行实际点击的概率。同样,CPC 需要通过如关键词竞价等方式得到最终的价格。文献[1]提出了GFP 、GSP 竞价理论,对CPC 的市场竞价进行了优化。同类的理论还有VCG 等。 (3)CPA 模型 采用该类模型要求用户不仅对广告发生实际点击,而且还需要被导向广告商的页面去。具体的模型如下: .Revenue N CTR Conv Rate CPA =??? 其中,Conv.Rate 表示用户点击与实际广告页面加载的转 换率。 3 广告匹配计算 3.1 基于信息检索 有学者指出,将用户检索信息当作关键字,广告文本作 基金项目:国家“863”计划基金资助项目(2007AA01Z448);国家自然科学基金资助项目(60773171) 作者简介:郭庆涛(1985-),男,硕士研究生,主研方向:数据挖掘,模型验证,机器学习;郑 滔,教授 收稿日期:2010-08-20 E-mail :taylorqt@https://www.wendangku.net/doc/ff2210525.html,

垃圾邮件的识别和过滤方法

垃圾邮件识别和过滤的方法 T大炮 北京理工大学计算机学院,北京100081 (1111111111@https://www.wendangku.net/doc/ff2210525.html,) Methods for Identifying and Filtering Junk Mail or Spam T Biggun (Class 07111301,School of Computer Science, Beijing Institute of Technology, Beijing 100081) Abstract Identifying and Filtering Spam is an important research subject in computer network. In this thesis, I have studied the history of spam filtering technology, which mainly includes the first generation of rule-based filtering technology, the second generation of content-based filtering technology and the third generation of behavior-based filtering technology. 1. Rule-based filtering includes IP address based filtering, mail header based filtering. 2. Content-based filtering includes Bayesian filtering, Memory-based method, decision tree, Boosting method, Support Vector Machine (SVM), etc. 3. Behavior-based filtering includes Email data stream based filtering, mail header based filtering, sender reputation based filtering, mail fingerprint based filtering, behavioral characteristics weighted based filtering, etc. The spammers’ common spurious methods are summarized. Through the reference to large amount of anti-spam documents and data from home and broad, an analysis is made on existing anti-spam techniques and in particular the content-based spam filtering methods. Key words spam filtering; rule; content; text categorization; Na?ve Bayes; behavior 摘要垃圾邮件识别和过滤是计算机网络领域的一个重要研究课题。垃圾邮件识别和过滤目前已经发展出了三代技术,第一代过滤技术是基于规则的,例如:基于IP地址、基于邮件头的过滤技术。第二代过滤技术是基于内容的,例如:贝叶斯分类算法、Memory-Based方法、决策树、Boosting方法、支持向量机等方法。第三代过滤技术是基于行为的,例如:基于邮件数据流、基于邮件头信息、基于发送方信誉、基于邮件指纹、基于行为特征加权的决策树等过滤方法。本文归纳总结了当前垃圾邮件发送者经常采用的欺骗手段和方法,并参阅国内外大量反垃圾邮件文献和数据,对已有的垃圾邮件技术作出分析和总结,尤其是对基于内容的垃圾邮件过滤方法进行了研究。 关键词垃圾邮件过滤;规则;内容;文本分类;简单贝叶斯;行为 随着互联网的发展,垃圾邮件常常让人头痛不已,最新报告称美国为垃圾邮件第一大国,中国排名第三(图1)[1]。垃圾邮件问题如今已经成为一个社会热点,近些年来,研究人员们提出了很多垃圾邮件识别和过滤的方法。这些方法的发展经历了三代,第一代过滤技术是基于规则的,例如:基于IP地址、基于邮件头的过滤技术。第二代过滤技术是基于内容的,例如:贝叶斯分类算法、Memory-Based方法、决策树、Boosting方法、支持向量机等方法。第三代过滤技术是基于行为的,例如:基于邮件数据流、基于邮件头信息、基于发送方信誉、基于邮件指纹、基于行为特征加权的决策树等过滤方法。本文归纳总结了当前垃圾邮件发送者经常采用的欺骗手段和方法,并参阅国内外大量反垃圾邮件文献和数据,对已有的垃圾邮件技术作出分析和总结,尤其是对基于内容的垃圾邮件过滤方法进行了研究。

相关文档