实验报告自动批阅中关键字匹配算法分析.docVIP

实验报告自动批阅中关键字匹配算法分析.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
实验报告自动批阅中关键字匹配算法分析

实验报告自动批阅中关键字匹配算法分析   【摘 要】实验报告自动批阅实现方案需用到关键字搜索、匹配技术。实验报告中多为多关键字,主要解决多关键字匹配问题,把单关键字作为多关键字特殊情况处理,本文就关键字匹配问题分析其算法。   【关键词】实验报告自动批阅;关键字匹配;算法   一、关键字匹配技术   多关键字匹配任务即在文本Y中发现所有包含于X中的关键字,并记录相关信息进行存储和处理。经查阅,得到一种较合适的算法,即将单关键字匹配Qs的思想应用到多关键字匹配算法中,对多关键字Sun Wu算法改进,使用更精确的跳跃距离计算法,使得最大跳跃距离达到m+1且平均跳跃距离更大;使用不同的部分匹配判断条件,提高空间利用率和算法效率。把该算法记为QMS(quick multi―pattern search)算法。   二、Sun Wu算法   Sun Wu算法以单关键字匹配的Boyer-Moore算法为基础。与BM不同是Sun Wu算法使用长度为B字符块代替坏字符,B实际取值为2或3,其匹配阶段主要步骤:   1、使用当前窗口最后B个字符(Ym-b+1,……,Ym)计算散列值h。   2、检查SHIFT[h]取值:如果SHIFT[h]0,跳跃相应距离并转1继续;否则转3。   3、计算当前窗口前缀的散列值text_prefix。   4、对于HASH[h]指向列表中的指针,检查是否有等式PREFIX[P]=text_prefix成立。如成立,直接将真实关键字和文本作匹配,发现匹配则报告。   5、将当前窗口向后跳跃一个字符,转1继续。   三、QMS算法分析   获得高匹配率,克服Sun Wu算法不足,增大跳跃距离,将QS算法与Sun Wu算法结合实现。直接将QS算法用于多关键字匹配,其困难是随着被处理的关键字数量增大,正文中越多的字符出现在某些关键字中,导致跳跃距离快速减小和算法效率快速降低。QMS继承Sun Wu算法的字符块思想,并继承使用散列技术和前缀表减少需要实际进行匹配的关键字数量。   1、预处理过程   首先计算全部关键字最短距离m,并且在预处理阶段只考虑每个关键字前m个字符,即假设所有关键字长度都为m。在匹配阶段尝试窗口大小为m。描述SHIFT表初始化,HASH表和PREFIX表的初始化参见Sun Wu算法预处理过程。   由于每次跳跃距离至少为1,在计算跳跃距离时考虑当前窗口的紧邻后一个字符带来的信息。将该字符和当前窗口的最后B-1个字符一起考虑,作为获得跳跃距离的根据。设该字符块为Kb=k1,……,kb,该Kb通过一个散列函数映射为一整数,即访问SHIFT表的索引值。SHIFT表中对应项的值确定此时可以安全跳过的字符数。设Kb的散列值为i,针对Kb在关键字集合中的出现情况,按照如下规则计算跳跃距离:   (1)Kb作为子串出现在某些关键字中。设Kb在所有关键字中最右的出现位置为q,此时可以安全的跳跃字符数为m-q+1,即SHIFT[i]=m-q+1。   (2)Kb不出现在任何关键字中,但是其某一长度的后缀出现在某些关键字的前缀中。设该后缀的长度为L(0LB),此时可以安全的跳跃m-L+1个字符,即SHIFT[i]=m-L+1。   (3)既不属于情况(1),也不属于情况(2)。此时可以安全地跳跃m+1个字符,即SHIFT[i]=m+1。   为生成SHIFT表,将其所有项的初始值设为m+1,然后逐一使用X中的每一个关键字来修改SHIFT表。设Xi∈X为X中的第i个关键字,对Xi的处理分为2步:   (1)对Xi的每一个长度为B的子串Aj-b+1,……,Aj,使用散列函数计算其散列值h,并将SHIFT[h]项设为其当前值与m+1-j中的较小者。   (2)处理Xi长度为I到B-1的前缀:当B取值为2时,对于任何字符块Kb=Vc+Xi[1],Vc∈∑,计算其散列值,并将SHIFT中相应项设为当前值与m的较小者,当B的取值为3时,对于任何字符块Kb=Vc+Xi[1]+Xi[2],Vc∈∑,计算其散列值,并将SHIFT中相应项设为当前值与m-1的较小者;对于任何字符块Kb=Vc1+Vc2+Xi[1],(Vc1,Vc2∈∑)计算其散列值,并将SHIFT中相应项设为当前值与m的较小者。   经过预处理,SHIFT表比Sun Wu算法中的更准确,具有更大跳跃距离,作用更加单一。   2、匹配过程   每次尝试之后,不管成功与否,使用Kb计算散列值并查找SHIFT表获得跳跃距离。匹配阶段的主循环主要包括如下步骤:   (1)使用当前窗口的最后B个字符(Ym-b+1,……,Ym)计算散列值h;   (2)检查HASH[h]的取值:如果HASH[h]非空,转3,否则转5;   (

文档评论(0)

erterye + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档