一种基于有限确定自动机的海量关键词查找方法与流程

文档序号:33190146发布日期:2023-02-04 08:05阅读:31来源:国知局
一种基于有限确定自动机的海量关键词查找方法与流程

1.本技术涉及数据处理技术领域,特别是涉及一种基于有限确定自动机的海量关键词查找方法。


背景技术:

2.随着互联网技术的发展,各种与外界交流的客户端,例如,通信软件、电子邮箱、短信等,在用户日常生活中的应用越来越普遍。为了避免用户在与使用互联网的过程中,使用一些不利于公共安全的关键词。一般情况下,可以通过关键词库对用户在客户端输入的文本进行筛查,确定文本中是否包含关键词。
3.相关技术中,根据有限确定自动机算法将词库构建一个树状的结构,根据输入的文本在该树状结构中进行高效的查找。但是,词库的量较大,在海量词库的情况下,内存消耗较多。


技术实现要素:

4.基于此,有必要针对上述技术问题,提供了一种基于有限确定自动机的海量关键词查找方法,可以将字符转化为身份标识,并将属于相同父节点的身份标识存入同一链表中,构成有限确定自动机,使用二分查找法提高查找性能,减小内存,提高查询速度。
5.第一方面,本技术提供了一种基于有限确定自动机的海量关键词查找方法。所述方法包括:
6.执行下述单个字符的查询:
7.获取待查找信息中的单个字符,将所述字符转换为身份标识,所述字符与身份标识相互对应;
8.将所述身份标识输入有限确定自动机,所述有限确定自动机包括多层结构,每一层结构包括至少一个链表,所述链表由属于相同父节点的子节点构成,所述子节点由身份标识表示,所述身份标识按照顺序依次排列;
9.根据二分查找算法在链表中查询所述身份标识,所述链表至少包括一个身份标识;
10.获取所述字符在所述有限确定自动机的位置;
11.所述单个字符的查询完成后,取出待查找信息中的下一个字符执行字符查询,所述下一个字符查询的开始位为上一个字符在所述有限确定自动机的位置,直至待查找信息中的最后一个字符测试完成,获得待查找信息中的关键词。
12.在其中一个实施例中,所述将所述字符转换为身份标识,之前还包括:
13.查询所述字符是否有对应的身份标识,如果所述身份标识不存在,创建所述字符的身份标识,所述身份标识按照顺序依次排列。
14.在其中一个实施例中,若所述链表中的节点不是其他子节点的父节点,对所述链表中不是其他子节点的父节点的节点进行标注,得到所述节点的标注信息,所述标注信息
包括所述节点在有限确定自动机的位置。
15.在其中一个实施例中,所述获取所述字符在所述有限确定自动机的位置,之前还包括:
16.判断是否存在新的身份标识,如果存在新的身份标识,查找所述新的身份标识的父节点,根据二分查找法将所述新的身份标识加入到链表中,所述链表中包括所述父节点的子节点。
17.在其中一个实施例中,所述取出待查找信息中的下一个字符执行字符查询,之后还包括:
18.若所述下一个字符不是上一个字符在所述有限确定自动机的位置的子节点,重新对所述下一个字符执行字符查询,获取所述下一个字符在所述有限确定自动机的位置。
19.第二方面,本技术还提供了一种基于有限确定自动机的海量关键词查找装置,所述装置包括:
20.执行下述单个字符的查询:
21.转换模块,用于获取待查找信息中的单个字符,将所述字符转换为身份标识,所述字符与身份标识相互对应;
22.查询模块,用于将所述身份标识输入有限确定自动机,所述有限确定自动机包括多层结构,每一层结构包括至少一个链表,所述链表由属于相同父节点的子节点构成,所述子节点由身份标识表示,所述身份标识按照顺序依次排列;根据二分查找算法在链表中查询所述身份标识,所述链表至少包括一个身份标识;
23.确认模块,用于获取所述字符在所述有限确定自动机的位置;
24.关键词获取模块,用于所述单个字符的查询完成后,取出待查找信息中的下一个字符执行字符查询,所述下一个字符查询的开始位为上一个字符在所述有限确定自动机的位置,直至待查找信息中的最后一个字符测试完成,获得待查找信息中的关键词。
25.在其中一个实施例中,所述将所述字符转换为身份标识,之前还包括:
26.创建模块,用于查询所述字符是否有对应的身份标识,如果所述身份标识不存在,创建所述字符的身份标识,所述身份标识按照顺序依次排列。
27.在其中一个实施例中,若所述链表中的节点不是其他子节点的父节点,对所述链表中不是其他子节点的父节点的节点进行标注,得到所述节点的标注信息,所述标注信息包括所述节点在有限确定自动机的位置。
28.在其中一个实施例中,所述获取所述字符在所述有限确定自动机的位置,之前还包括:
29.判断是否存在新的身份标识,如果存在新的身份标识,查找所述新的身份标识的父节点,根据二分查找法将所述新的身份标识加入到链表中,所述链表中包括所述父节点的子节点。
30.在其中一个实施例中,所述取出待查找信息中的下一个字符执行字符查询,之后还包括:
31.判断模块,用于若所述下一个字符不是上一个字符在所述有限确定自动机的位置的子节点,重新对所述下一个字符执行字符查询,获取所述下一个字符在所述有限确定自动机的位置。
32.第三方面,本公开还提供了一种计算机设备。所述计算机设备包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现基于有限确定自动机的海量关键词查找方法的步骤。
33.第四方面,本公开还提供了一种计算机可读存储介质。所述计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现基于有限确定自动机的海量关键词查找方法的步骤。
34.第五方面,本公开还提供了一种计算机程序产品。所述计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现基于有限确定自动机的海量关键词查找方法的步骤。
35.上述基于有限确定自动机的海量关键词查找方法,至少包括以下有益效果:
36.本公开提供的实施例方案,将词库中的字符转化为身份标识,并将属于相同父节点的身份标识存入同一链表中,构成有限确定自动机,使用二分查找法提高查找性能,减小内存,提高查询速度。
37.应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
38.为了更清楚地说明本公开实施例或传统技术中的技术方案,下面将对实施例或传统技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本公开的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
39.图1为一个实施例中基于有限确定自动机的海量关键词查找方法的应用环境图;
40.图2为一个实施例中基于有限确定自动机的海量关键词查找方法的流程示意图;
41.图3为一个实施例中有限确定自动机的结构图;
42.图4为一个实施例中基于有限确定自动机的海量关键词查找方法的流程示意图;
43.图5为一个实施例中基于有限确定自动机的海量关键词查找方法的流程示意图;
44.图6为一个实施例中基于有限确定自动机的海量关键词查找装置的结构框图;
45.图7为一个实施例中基于有限确定自动机的海量关键词查找装置的结构框图;
46.图8为一个实施例中基于有限确定自动机的海量关键词查找装置的结构框图;
47.图9为一个实施例中计算机设备的内部结构图;
48.图10为一个实施例中一种服务器的内部结构图。
具体实施方式
49.为了使本领域普通人员更好地理解本公开的技术方案,下面将结合附图,对本公开实施例中的技术方案进行清楚、完整地描述。
50.需要说明的是,本公开的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本公开的实施例能够以除了在这里图示或描述的那些以外的顺序实施。以下示例性实施例中所描述的实施方式并不代表与本公开相
一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。术语“包括”、“包含”或者其任何其它变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、产品或者设备不仅包括那些要素,而且还包括没有明确列出的其它要素,或者是还包括为这种过程、方法、产品或者设备所固有的要素。在没有更多限制的情况下,并不排除在包括所述要素的过程、方法、产品或者设备中还存在另外的相同或等同要素。例如若使用到第一,第二等词语用来表示名称,而并不表示任何特定的顺序。
51.本公开实施例提供一种基于有限确定自动机的海量关键词查找方法,可以应用于如图1所示的应用环境中。其中,终端102通过网络与服务器104进行通信。数据存储系统可以存储服务器104需要处理的数据。数据存储系统可以集成在服务器104上,也可以放在云上或其他网络服务器上。其中,终端102可以但不限于是各种个人计算机、笔记本电脑、智能手机、平板电脑、物联网设备和便携式可穿戴设备,物联网设备可为智能音箱、智能电视、智能空调、智能车载设备等。便携式可穿戴设备可为智能手表、智能手环、头戴设备等。服务器104可以用独立的服务器或者是多个服务器组成的服务器集群来实现。
52.在本公开的一些实施例中,如图2所示,提供了一种基于有限确定自动机的海量关键词查找方法,以该方法应用于图1中的服务器对身份标识进行处理为例进行说明。可以理解的是,该方法可以应用于服务器,还可以应用于包括终端和服务器的系统,并通过终端和服务器的交互实现。具体的一个实施例中,所述方法可以包括以下步骤:
53.s20:执行下述单个字符的查询:
54.s202:获取待查找信息中的单个字符,将所述字符转换为身份标识,所述字符与身份标识相互对应。
55.待查找信息至少包括一个字符,在查找字符的过程中可以将待查找信息分为单个字符进行查询,如果其中一个字符未被查询到,可以表示待查找信息中不包括关键词,则其余字符可以不用执行查询操作,提高查询效率。身份标识可以包括编码、数字等,可以将字符转化为身份标识,其中,一个字符对应一个身份标识,可以有效避免产生查询不对应的情况。
56.s204:将所述身份标识输入有限确定自动机,所述有限确定自动机包括多层结构,每一层结构包括至少一个链表,所述链表由属于相同父节点的子节点构成,所述子节点由身份标识表示,所述身份标识按照顺序依次排列。
57.如图3所示,为一个实施例中有限确定自动机的结构图。有限确定自动机(deterministic finite automation,dfa)是一个能实现状态转移的自动机,有限确定自动机可以实现根据事先给定的转移函数转移到下一个状态的功能。有限确定自动机包括多层结构,多层结构可以构建成为树状结构。链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的,使用链表结构可以克服数组链表需要预先知道数据大小的缺点,链表结构可以充分利用计算机内存空间,实现灵活的内存动态管理。父节点可以至少有一个直接下属于它的子节点。在树形结构中,子节点可以表示为当前结点的各个子树的根。
58.在本公开的一些实施例中,可以构建自定义链表,每一个链表中可以包括属于相同父节点的子节点,子节点通过身份标识表示,可以在链表中按照顺序排列,方便后续的查
询工作。多个自定义链表可以构成一个有限确定自动机,由于包括多个身份标识,有限确定自动机可以包括多层结构,每一层结构中可以包括多个链表。
59.s206:根据二分查找算法在链表中查询所述身份标识,所述链表至少包括一个身份标识。
60.一个链表中可以包括多个身份标识,如果单个字符在链表中对应的是最后一个身份标识,在实际的查询工作中,会从第一个身份标识查询到最后一个身份标识。在本公开的一些实施例中,可以使用二分查找算法在链表中查询所述身份标识,首先对中间身份标识进行比对,进而快速找到待查找身份标识所属对区域,可以提高查询效率。
61.s208:获取所述字符在所述有限确定自动机的位置。
62.有限确定自动机可以包括多层结构,确定待查找字符在有限确定自动机中对位置,可以便于下一个待查找字符快速执行查询操作。
63.s210:所述单个字符的查询完成后,取出待查找信息中的下一个字符执行字符查询,所述下一个字符查询的开始位为上一个字符在所述有限确定自动机的位置,直至待查找信息中的最后一个字符测试完成,获得待查找信息中的关键词。
64.在本公开的一些实施例中,链表由属于相同父节点的子节点构成,因此在完成单个字符的查询,确定字符在所述有限确定自动机的位置后,可以不需要从头节点重新进行查询,可以直接以上一个字符在所述有限确定自动机的位置为下一个字符查询的开始位,提高查询速度,如果所有字符均在有限确定自动机找到对应的身份标识,则可以获得待查找信息中的关键词。
65.上述一种基于有限确定自动机的海量关键词查找方法中,可以将字符转化为身份标识,并将属于相同父节点的身份标识存入同一链表中,多个链表可以构成有限确定自动机,使用二分查找法提高查找性能,减小内存,提高查询速度。
66.如图4所示,在本公开的一些实施例中,所述将所述字符转换为身份标识,之前还包括:
67.s402:查询所述字符是否有对应的身份标识,如果所述身份标识不存在,创建所述字符的身份标识,所述身份标识按照顺序依次排列。
68.待查找字符可能没有设置对应的身份标识,在转化前,可以创建一个新的身份标识,将新的身份标识加入到存放身份标识的集合中,可以避免再次出现同样的字符时重新构建身份标识的操作。并且身份标识在集合中按照顺序依次排列,提高查询效率。
69.在本公开的一些实施例中,若所述链表中的节点不是其他子节点的父节点,对所述链表中不是其他子节点的父节点的节点进行标注,得到所述节点的标注信息,所述标注信息包括所述节点在有限确定自动机的位置。
70.有限确定自动机中可以包括多层结构,多层结构中可以包括多个链表,链表可以由属于相同父节点的子节点构成,如果有限确定自动机中的其中一个分支的节点不是其他子节点的父节点,对该类节点进行标注。标注方式可以包括设置标签或设置颜色,例如,有限确定自动机中的其中一个分支对应对字符为“身体健康”,在查询到“康”对应对身份标识后,可以不用再对待查找字符中的下一个字符以“康”在有限确定自动机的位置为查询的开始位,可以直接从头节点进行查询,不用遍历所有的身份标识,节约内存。
71.如图5所示,在本公开的一些实施例中,所述取出待查找信息中的下一个字符执行
字符查询,之后还包括:
72.s502:若所述下一个字符不是上一个字符在所述有限确定自动机的位置的子节点,重新对所述下一个字符执行字符查询,获取所述下一个字符在所述有限确定自动机的位置。
73.在执行查询操作时,可以将下一个字符查询的开始位确定为上一个字符在所述有限确定自动机的位置,如果下一个字符不是上一个字符在所述有限确定自动机的位置的子节点,可以表示下一个字符与上一个字符不是关键词,则重新以下一个字符以查询开始位进行查询,节约内存,不需要遍历所有的身份标识进行查询。
74.应该理解的是,虽然如上所述的各实施例所涉及的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,如上所述的各实施例所涉及的流程图中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
75.基于同样的发明构思,本公开实施例还提供了一种用于实现上述所涉及的针对有限确定自动机的海量关键词查找方法的有限确定自动机的海量关键词查找装置。该装置所提供的解决问题的实现方案与上述方法中所记载的实现方案相似,故下面所提供的有限确定自动机的海量关键词查找装置实施例中的具体限定可以参见上文中对于有限确定自动机的海量关键词查找方法的限定,在此不再赘述。
76.所述装置可以包括使用了本说明书实施例所述方法的系统(包括分布式系统)、软件(应用)、模块、组件、服务器、客户端等并结合必要的实施硬件的装置。基于同一创新构思,本公开实施例提供的一个或多个实施例中的装置如下面的实施例所述。由于装置解决问题的实现方案与方法相似,因此本说明书实施例具体的装置的实施可以参见前述方法的实施,重复之处不再赘述。以下所使用的,术语“单元”或者“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。
77.在一个实施例中,如图6所示,提供了一种有限确定自动机的海量关键词查找装置,所述装置可以为前述服务器,或者集成于所述服务器的模块、组件、器件、单元等。该装置可以包括:
78.执行下述单个字符的查询60:
79.转换模块602,用于获取待查找信息中的单个字符,将所述字符转换为身份标识,所述字符与身份标识相互对应;
80.查询模块604,用于将所述身份标识输入有限确定自动机,所述有限确定自动机包括多层结构,每一层结构包括至少一个链表,所述链表由属于相同父节点的子节点构成,所述子节点由身份标识表示,所述身份标识按照顺序依次排列;根据二分查找算法在链表中查询所述身份标识,所述链表至少包括一个身份标识;
81.确认模块606,用于获取所述字符在所述有限确定自动机的位置;
82.关键词获取模块608,用于所述单个字符的查询完成后,取出待查找信息中的下一
个字符执行字符查询,所述下一个字符查询的开始位为上一个字符在所述有限确定自动机的位置,直至待查找信息中的最后一个字符测试完成,获得待查找信息中的关键词。
83.如图7所示,在一个实施例中,所述将所述字符转换为身份标识,之前还包括:
84.创建模块702,用于查询所述字符是否有对应的身份标识,如果所述身份标识不存在,创建所述字符的身份标识,所述身份标识按照顺序依次排列。
85.在一个实施例中,若所述链表中的节点不是其他子节点的父节点,对所述链表中不是其他子节点的父节点的节点进行标注,得到所述节点的标注信息,所述标注信息包括所述节点在有限确定自动机的位置。
86.在一个实施例中,所述获取所述字符在所述有限确定自动机的位置,之前还包括:
87.判断是否存在新的身份标识,如果存在新的身份标识,查找所述新的身份标识的父节点,根据二分查找法将所述新的身份标识加入到链表中,所述链表中包括所述父节点的子节点。
88.如图8所示,在一个实施例中,所述取出待查找信息中的下一个字符执行字符查询,之后还包括:
89.判断模块802,用于若所述下一个字符不是上一个字符在所述有限确定自动机的位置的子节点,重新对所述下一个字符执行字符查询,获取所述下一个字符在所述有限确定自动机的位置。
90.关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
91.上述针对基于有限确定自动机的海量关键词查找装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
92.在一个实施例中,提供了一种计算机设备,该计算机设备可以是服务器,其内部结构图可以如图9所示。该计算机设备包括通过系统总线连接的处理器、存储器和网络接口。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质和内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储身份标识。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种基于有限确定自动机的海量关键词查找方法。
93.在一个实施例中,提供了一种计算机设备,该计算机设备可以是终端,其内部结构图可以如图10所示。该计算机设备包括通过系统总线连接的处理器、存储器、通信接口、显示屏和输入装置。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统和计算机程序。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的通信接口用于与外部的终端进行有线或无线方式的通信,无线方式可通过wifi、移动蜂窝网络、nfc(近场通信)或其他技术实现。该计算机程序被处理器执行时以实现基于有限确定自动机的海量关键词查找方法。该计算机设备的显示屏可以是液晶显示屏
或者电子墨水显示屏,该计算机设备的输入装置可以是显示屏上覆盖的触摸层,也可以是计算机设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。
94.本领域技术人员可以理解,图9、图10中示出的结构,仅仅是与本公开方案相关的部分结构的框图,并不构成对本公开方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
95.在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现本公开任一实施例所述的方法。
96.在一个实施例中,提供了一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现本公开任一实施例所述的方法。
97.本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本公开所提供的各实施例中所使用的对存储器、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(read-only memory,rom)、磁带、软盘、闪存、光存储器、高密度嵌入式非易失性存储器、阻变存储器(reram)、磁变存储器(magnetoresistive random access memory,mram)、铁电存储器(ferroelectric random access memory,fram)、相变存储器(phase change memory,pcm)、石墨烯存储器等。易失性存储器可包括随机存取存储器(random access memory,ram)或外部高速缓冲存储器等。作为说明而非局限,ram可以是多种形式,比如静态随机存取存储器(static random access memory,sram)或动态随机存取存储器(dynamic random access memory,dram)等。本公开所提供的各实施例中所涉及的数据库可包括关系型数据库和非关系型数据库中至少一种。非关系型数据库可包括基于区块链的分布式数据库等,不限于此。本公开所提供的各实施例中所涉及的处理器可为通用处理器、中央处理器、图形处理器、数字信号处理器、可编程逻辑器、基于量子计算的数据处理逻辑器等,不限于此。
98.以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
99.以上所述实施例仅表达了本公开的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本公开专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本公开构思的前提下,还可以做出若干变形和改进,这些都属于本公开的保护范围。因此,本公开的保护范围应以所附权利要求为准。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1