一种基于关键词字典树构造的中文ac自动机工作方法

文档序号:9506163阅读:1333来源:国知局
一种基于关键词字典树构造的中文ac自动机工作方法
【技术领域】
[0001]本发明涉及信息技术领域,特别地,涉及一种基于关键词字典树构造的中文AC自动机工作方法。
【背景技术】
[0002]AC自动机(Aho-Corasick automaton)是一种著名的多模匹配方法,用于在文章当中检索多个关键词出现的次数。传统的AC自动机只能识别26个英文字母,现有技术则将传统的AC自动机工作原理套用到了中文文章中,但这种方案下中文AC自动机工作的空间复杂度过高,缺乏实际应用价值。
[0003]针对现有技术中中文AC自动机工作的空间复杂度过高的问题,目前尚未有有效的解决方案。

【发明内容】

[0004]针对现有技术中系统结构识别与优化方法抑或主观片面、计算能力差,抑或耗时费力、仿真精度低的问题,本发明的目的在于提出一种基于关键词字典树构造的中文AC自动机工作方法,能够用降低中文AC自动机工作时需要的空间复杂度,压缩了中文AC自动机的工作占用空间。
[0005]基于上述目的,本发明提供的技术方案如下:
[0006]根据本发明的一个方面,提供了一种基于关键词字典树构造的中文AC自动机工作方法,包括:
[0007]获取所有关键词,将所有关键词编码,并将所有关键词按其关键词编码的字符顺序排列;
[0008]建立字典树,并将所有关键词按字符排列顺序加入字典树中;
[0009]为字典树中的每个非虚根节点加入前缀指针;
[0010]为字典树中的每个非虚根节点加入失败指针;
[0011]获取待检测文章,根据包括前缀指针与错误指针的字典树在待检测文章中查询并记录下所有的关键词。
[0012]其中,将所有关键词编码,为将所有关键词按照指定的汉字编码方式以数字组合的形式表示;将所有关键词按其关键词编码的字符顺序排列,为将所有关键词按其编码后每个字符所对应数字的大小顺序对所有关键词进行排列。
[0013]并且,数字组合为十六进制数字的数字组合;指定的汉字编码方式为GB2312、GBK、BIG5、UTF-8 中的一种。
[0014]同时,建立字典树为指定一虚根,并根据虚根建立字典树。
[0015]并且,将所有关键词按字符排列顺序加入字典树中包括:
[0016]根据字符排列顺序依次指定每个关键词;
[0017]为被指定的关键词建立一个树枝,并为被指定的关键词编码的每一位在树枝上建立一个节点,每一位都是其前一位的子节点,每一位都是其后一位的父节点,父子节点在树枝上相邻;
[0018]从虚根开始,将指定的关键词的树枝与现有字典树上字符相同的节点合并,直到出现不同的节点为止;
[0019]依次指定每个关键词直到所有关键词均加入字典树中。
[0020]并且,包括:
[0021]为被指定的关键词编码的每一位在树枝上建立一个节点,为最后一位建立一个终止节点,为最后一位之外的每一个其他位建立一个内部节点;
[0022]将指定的关键词的树枝与现有字典树上字符相同的节点合并,为将内部节点与内部节点合并为内部节点,将终止节点与内部节点合并为终止节点,将终止节点与终止节点合并为终止节点。
[0023]同时,为被指定的关键词编码的每一位在树枝上建立一个节点时,按照编码从首位到末位的顺序建立节点,先建立父节点后建立子节点,且为每个节点赋予编号,其中,每个非虚根节点的编号为关键词加入字典树的过程中该节点被创建的顺序数字,虚根编号为零。
[0024]并且,为字典树中的每个非虚根节点加入前缀指针包括:
[0025]根据节点编号顺序依次指定每个非虚根节点;
[0026]若被指定的非虚根节点为虚根的子节点,则为被指定的非虚根节点加入一根指向虚根的如缀指针;
[0027]若被指定的非虚根节点不是虚根的子节点,则记录下被指定的非虚根节点的父节点连接到非虚根节点的树枝方向,并为被指定的非虚根节点加入一根指向非虚根节点的父节点的父节点的与树枝方向相同的子节点的前缀指针;
[0028]依次指定每个非虚根节点直到所有非虚根节点均具有前缀指针。
[0029]同时,为字典树中的每个非虚根节点加入失败指针包括:
[0030]根据节点编号顺序依次指定每个非虚根节点;
[0031 ] 分别对于每一个被指定的节点,根据节点编号的数字进位制依次指定可能出现的每个数字;
[0032]检查被指定的非虚根节点是否为一个具有指定子节点的父节点,其中,该非虚根父节点到该子节点的树枝方向数字与被指定的数字相同,若否,则给被指定的非虚根节点建立一个收到被指定的数字后的错误指针;
[0033]分别对于每一个被指定的节点,依次指定每个数字直到进位制中的所有数字均被指定过;
[0034]依次指定每个非虚根节点直到所有非虚根节点均具有失败指针。
[0035]并且,给被指定的非虚根节点建立一个收到被指定的数字后的错误指针,非虚根节点在收到被指定的数字后会按照错误指针的指向方向确定后续状态。
[0036]从上面所述可以看出,本发明提供的技术方案通过将关键词按顺序排列加入字典树中的技术方案,有效地将具有相同前缀的关键词排布在字典树中相邻的位置,使得节点对查询其子节点所在位置的信息量被大幅度压缩,避免使用占用大量空间复杂度的哈希表,因此降低了中文AC自动机工作时需要的空间复杂度,压缩了中文AC自动机的工作占用空间。
【附图说明】
[0037]为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0038]图1为根据本发明实施例的一种基于关键词字典树构造的中文AC自动机工作方法的流程图;
[0039]图2为根据本发明实施例的一种基于关键词字典树构造的中文AC自动机工作方法中,字典树各节点生成过程示意图;
[0040]图3为根据本发明实施例的一种基于关键词字典树构造的中文AC自动机工作方法中,字典树各节点的前缀指针生成过程示意图;
[0041]图4为根据本发明实施例的一种基于关键词字典树构造的中文AC自动机工作方法中,字典树各节点的失败指针生成过程示意图。
【具体实施方式】
[0042]为使本发明的目的、技术方案和优点更加清楚明白,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进一步进行清楚、完整、详细地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员所获得的所有其他实施例,都属于本发明保护的范围。
[0043]根据本发明的实施例,提供了一种基于关键词字典树构造的中文AC自动机工作方法。
[0044]如图1所示,根据本发明的实施例提供了一种基于关键词字典树构造的中文AC自动机工作方法包括:
[0045]步骤S101,获取所有关键词,将所有关键词编码,并将所有关键词按其关键词编码的字符顺序排列;
[
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1