一种对检索结果的知识演进算法制造技术

技术编号:24353747 阅读:17 留言:0更新日期:2020-06-03 02:07
本发明专利技术公开了一种对检索结果的知识演进算法,包括如下步骤:建立转向函数;建立失效函数;建立输出函数,通过使用哈希方法对压缩节点组织查找表,可以在恒定时间内确定下一个状态,若在压缩节点处失配,不再直接进行状态转移,而是将模式串回退两个字符,从root节点处重新开始匹配。本发明专利技术针对现有技术中检索知识算法处理效率较低的问题作出了改进,通过使用哈希方法对压缩节点组织查找表,可以在恒定时间内确定下一个状态,若在压缩节点处失配,不再直接进行状态转移,而是将模式串回退两个字符,从root节点处重新开始匹配,提高了检索效率。

A knowledge evolution algorithm for retrieval results

【技术实现步骤摘要】
一种对检索结果的知识演进算法
本专利技术涉及信息检索
,特别涉及一种对检索结果的知识演进算法。
技术介绍
模式匹配一般是指在文本数据中搜索预定义的关键字。模式匹配问题是计算机科学中的一个基本问题,其研究内容在信息检索、模式识别等众多领域均有重要价值,在拼写检查、语言翻译、数据压缩、搜索引擎、入侵检测、内容过滤、计算机病毒特征码匹配以及基因序列比较等应用中起着重要的作用。比如,在一些信息获取、文本编辑应用中,用户会指定些关键字,需要在文本中快速定位关键字的位置。Aho-Corasick算法(阿霍一克若思克算法,简称AC算法)描述了一种简单有效的算法,能够在任意的文本中定位有限数目的关键字的所有位置。其原理是:首先根据这一系列关键字定义一个有限状态模式匹配机,然后把文本作为模式匹配机的输入。只要匹配到关键字,就会通报本关键字匹配成功。AC算法在本文中有2个版本称为AC-basic和AC-expanded。AC-basic由3个函数实现相关功能组成,具体包括GOTO函数,和输出功能。GOTO函数用于根据给定模式集的基础字符Trie跟踪正向转换。如果没有为输入字符找到GOTO函数中的有效转换,则自动机转换到由失败函数指定的状态而不消耗输入字符。故障功能和输出功能使用线性阵列实现,而GOTO功能使用链接列表实现。通过将GOTO和失败函数扩展为由当前状态ID和输入字符索引的全尺寸2D转换规则表,可以提高匹配算法的处理速度。AC-basic和AC-expanded算法代表了时空频谱中的两个极端。AC扩展具有最快的处理速度,但需要大量的存储空间。AC-basic的数据结构允许使用最小内存量来表示底层DFA,但其处理速度要慢得多。因此本专利技术针对现有技术中检索知识算法处理效率较低的问题作出了改进。
技术实现思路
本专利技术要解决的技术问题是克服现有技术的缺陷,提供一种对检索结果的知识演进算法,针对现有技术中检索知识算法处理效率较低的问题作出了改进。为了解决上述技术问题,本专利技术提供了如下的技术方案:本专利技术提供一种对检索结果的知识演进算法,包括如下步骤:步骤一:构建有限状态自动机M,所述有限状态自动机M包含转向函数g,失败函数f和输出函数output,以及compress_states数组;步骤二:建立转向函数;步骤三:建立失效函数;步骤四:建立输出函数。进一步的,所述转向函数的建立包括以下步骤:A)定义有关键字集P={p1,p2,p3,···,pn}和函数enter(y),创建第一状态0、状态s和字符a,根据i个模式串,建立字典树,对在字典树第一层不存在的字符,状态0在这些字符上的跳转依然指向状态0,进行状态s与字符a的匹配,并输出函数enter(a1,a2,a3,···,am);B)设定初始状态为0,模式串的索引为1,判断循环在字典树中是否找到已存在的模式串的相同前缀,是,得到这个前缀的最后一个状态state,否,state=0,前缀后面的第一个字符索引j;C)将前缀后面的字符加入到字典树中,并进行匹配;D)若匹配过程跳转到模式串的最后一个状态,说明该模式串匹配成功,输出转向函数g和部分输出函数output。进一步的,所述失效函数建立包括以下步骤:S1:输入来自步骤二的转向函数g和输出函数output,初始化队列为空,使字典树的第一层跳转的字符入队,第一层状态的失败函数跳转到状态0;S2:从第一层开始,广度优先搜索树;S3:设置状态r的失败跳转和初始化状态s的失败跳转,使状态s的输出一定包含s的失败跳转状态的输出;S4:得到层L1和L2所有状态L12_states和压缩状态compress_states,删除压缩状态的失效函数f(compress_states);S5:遍历第一层状态,入队并加入到L12_states,遍历第二层状态,加入到L12_states;S6:如果某个状态的失败跳转指向层L1或L2状态,将它加入到compress_states,并删除它的失败跳转存储。与现有技术相比,本专利技术的有益效果如下:本专利技术通过使用哈希方法对压缩节点组织查找表,可以在恒定时间内确定下一个状态,若在压缩节点处失配,不再直接进行状态转移,而是将模式串回退两个字符,从root节点处重新开始匹配,仅比AC拓展算法多了一次状态转移,检索结果精确,且提高了检索效率。附图说明附图用来提供对本专利技术的进一步理解,并且构成说明书的一部分,与本专利技术的实施例一起用于解释本专利技术,并不构成对本专利技术的限制。在附图中:图1是同一实施例下现有算法流程图;图2为同一实施例下本专利技术流程图。具体实施方式以下结合附图对本专利技术的优选实施例进行说明,应当理解,此处所描述的优选实施例仅用于说明和解释本专利技术,并不用于限定本专利技术。实施例1本专利技术所述关键字快速检索的总体思路为:在有限状态自动机M中令字符串a1,a2,···ai···an,ai表示字符串中的第i个字符,有限状态自动机M还包括转向函数g、失败函数f和输出函数output,以及compress_states数组。设置初始状态为0,输入i为遍历字符串的索引;若当前状态的跳转函数中没有值为ai的跳转;进行下一步,若当前状态为0,依然从状态0开始匹配下个字符,若为压缩状态节点,回退2个字符,从0状态匹配,否则由失败函数跳转,当前状态的跳转函数中有值为ai的跳转,由跳转函数跳转;如果当前状态是已经是某模式串的最后一个状态,匹配成功,输出这个模式串即关键词在x中出现的位置。如下具体进行相关描述。一种对检索结果的知识演进算法,包括如下步骤:步骤一:构建有限状态自动机M,所述有限状态自动机M包含转向函数g,失败函数f和输出函数output,以及compress_states数组;步骤二:建立转向函数;步骤三:建立失效函数;步骤四:建立输出函数。其中,转向函数的建立包括以下步骤:A)定义有关键字集P={p1,p2,p3,···,pn}和函数enter(y),创建第一状态0、状态s和字符a,根据i个模式串,建立字典树,对在字典树第一层不存在的字符,状态0在这些字符上的跳转依然指向状态0,进行状态s与字符a的匹配,并输出函数enter(a1,a2,a3,···,am);B)设定初始状态为0,模式串的索引为1,判断循环在字典树中是否找到已存在的模式串的相同前缀,是,得到这个前缀的最后一个状态state,否,state=0,前缀后面的第一个字符索引j;C)将前缀后面的字符加入到字典树中,并进行匹配;D)若匹配过程跳转到模式串的最后一个状态,说明该模式串匹配成功,输出转向函数g和部分输出函数output。上述步骤中,约定当状态s首次创建时,output(s)=null,此时若a或g(s,a)未定义,那么g(s,a)=fail,函本文档来自技高网
...

【技术保护点】
1.一种对检索结果的知识演进算法,其特征在于,包括如下步骤:/n步骤一:构建有限状态自动机M,所述有限状态自动机M包含转向函数g,失败函数f和输出函数output,以及compress_states数组;/n步骤二:建立转向函数;/n(1)定义有关键字集P={p1,p2,p3,···pi···,pn}和函数enter(y),创建第一状态0、状态s和字符a,根据i个模式串,建立字典树,对在字典树第一层不存在的字符,状态0在这些字符上的跳转依然指向状态0,进行状态s与字符a的匹配,并输出函数enter(a1,a2,a3,···ai···,am);/n(2)设定初始状态为0,模式串的索引为1,判断循环在字典树中是否找到已存在的模式串的相同前缀,如果为是,得到这个前缀的最后一个状态state,如果为否,state=0,前缀后面的第一个字符索引j;/n(3)将前缀后面的字符加入到字典树中,并进行匹配;/n(4)若匹配过程跳转到模式串的最后一个状态,说明该模式串匹配成功,输出转向函数g和输出函数output;/n步骤三:建立失效函数;/n(1)输入来自步骤二的转向函数g和输出函数output,初始化队列为空,使字典树的第一层跳转的字符入队,第一层状态的失败函数跳转到状态0;/n(2)从第一层开始,广度优先搜索树;/n(3)设置状态r的失败跳转和初始化状态s的失败跳转,使状态s的输出一定包含s的失败跳转状态的输出;/n(4)得到层L1和L2所有状态L12_states和压缩状态compress_states,删除压缩状态的失效函数f(compress_states);/n(5)遍历第一层状态,入队并加入到L12_states,遍历第二层状态,加入到L12_states;/n(6)如果某个状态的失败跳转指向层L1或L2状态,将它加入到compress_states,并删除它的失败跳转存储;/n步骤四:建立输出函数并输出所述。/n...

【技术特征摘要】
1.一种对检索结果的知识演进算法,其特征在于,包括如下步骤:
步骤一:构建有限状态自动机M,所述有限状态自动机M包含转向函数g,失败函数f和输出函数output,以及compress_states数组;
步骤二:建立转向函数;
(1)定义有关键字集P={p1,p2,p3,···pi···,pn}和函数enter(y),创建第一状态0、状态s和字符a,根据i个模式串,建立字典树,对在字典树第一层不存在的字符,状态0在这些字符上的跳转依然指向状态0,进行状态s与字符a的匹配,并输出函数enter(a1,a2,a3,···ai···,am);
(2)设定初始状态为0,模式串的索引为1,判断循环在字典树中是否找到已存在的模式串的相同前缀,如果为是,得到这个前缀的最后一个状态state,如果为否,state=0,前缀后面的第一个字符索引j;
(3)将前缀后面的字符加入到字典树中,并进行匹配;
(4)若匹配过程...

【专利技术属性】
技术研发人员:贾新志
申请(专利权)人:上海骥灏网络股份有限公司
类型:发明
国别省市:上海;31

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1