一种基于后缀索引的敏感词检索方法及系统

文档序号:32443335发布日期:2022-12-06 23:02阅读:69来源:国知局
一种基于后缀索引的敏感词检索方法及系统

1.本发明涉及敏感词检索领域,尤其涉及一种基于后缀索引的敏感词检索方法及系统。


背景技术:

2.当前通过网络传播的信息规模越来越大,网络信息的质量监控需求也相应地快速增长。为了营造文明和谐的互联网环境,现有的网络文本信息监控通常采用“敏感词”的检索与过滤来实现。其中,敏感词包括新华社公布的禁用词、不文明用语等。然而,目前的敏感词检索方法存在以下问题:基于机器学习、人工智能的方法需要大量时间训练模型;基于文本内容的方法需要进行分词、特征提取等额外处理;基于树或者图结构的方法空间开销较大。


技术实现要素:

3.本发明提供了一种基于后缀索引的敏感词检索方法及系统,提高检索速度,降低空间开销。
4.为了实现上述目的,本发明提供了一种基于后缀索引的敏感词检索方法,包括:
5.通过循环遍历目标文本的每一个文本字符,将所述遍历的文本字符添加至所述目标文本的公共前缀数组中的每一个公共前缀的后面;
6.根据预设的后缀索引检索算法,通过预设的检索方式,根据预构建的敏感词库中的多级后缀索引检索所述目标文本的每一个公共前缀;所述多级后缀索引为通过预设的划分算法将所述敏感词库进行划分获得的若干个敏感词子库对应的若干个后缀索引;所述后缀索引保存所述每一个敏感词的后缀按照字符顺序从小到大排列后的索引号码;
7.若根据所述多级后缀索引检索不到所述目标文本的对应的公共前缀,则将所述公共前缀从所述目标文本的公共前缀数组中进行删除;
8.若根据所述多级后缀索引检索到对应的公共前缀,则根据所述后缀索引中保存的索引号码,获得所述目标文本的敏感词。
9.本发明提供了一种基于后缀索引的敏感词检索方法,首先通过循环遍历输入的目标文本的每一个文本字符,将所述文本字符添加至所述目标文本的公共前缀数组中的每一个公共前缀中,避免检测过程中的数据丢失,造成检索不全面,同时通过循环遍历的形式不断新增公共前缀,避免了空间资源的浪费,然后通过预构建的敏感词库中的多级后缀索引对所述公共前缀进行搜索,根据构建的多级后缀索引进行搜索减少了检索的时间,同时所述多级后缀索引为划分的多个敏感词子库的多个后缀索引,减少了空间开销,然后基于所述构建的多级后缀索引对所述公共前缀进行检索,若是检测不到对应的公共前缀,则将其进行删除,避免重复检查,若是检测到对应的公共前缀,则根据所述后缀索引中保存的索引号码获取敏感词的检索结果,提高了检索的精确度。
10.作为优选例子,在所述将所述遍历的文本字符添加至所述目标文本的公共前缀数
组中的每一个公共前缀的后面,具体包括:
11.通过在所述公共前缀数组中新增字长为0的公共前缀,根据遍历到的所述目标文本的每一个文本字符,将相同的文本字符添加至所述公共前缀数组中对应的公共前缀中;
12.所述公共前缀为长度小于或等于敏感词字长的字符串,保存在初始为空的所述公共前缀数组中。
13.本发明通过循环遍历所述输入目标文本的每一个字符,避免了数据的流失,同时,根据所述循环将所述遍历的每一个字符新增到对应的公共前缀中,避免了空间资源的浪费,减少了空间开销,同时为后续检索提供了简单的检索依据,减少检索时间。
14.作为优选例子,在所述敏感词库的多级后缀索引的构建过程,具体包括:
15.通过遍历所述敏感词库并在每一个敏感词后面添加一个结束符,获得所述敏感词库中每一种字长的敏感词数量的统计结果;
16.根据所述统计结果,通过预设的划分算法划分所述敏感词库,获得若干个敏感词子库;
17.通过使用预设的后缀索引构造算法,根据所述若干个敏感词子库,获得与之一一对应的若干个后缀索引;
18.通过预设的数据保存方式保存所述若干个后缀索引的元数据,获得所述敏感词库的多级后缀索引,所述元数据包括敏感词的最小字长、最大字长和字符桶的偏移量。
19.本发明通过对敏感词库进行划分,获得若干个敏感词子库,能够支持后续根据所述划分规则进行检索,减少了检索时间,然后根据预设的后缀索引算法对所述敏感词子库构建后缀索引,所述后缀索引对应所述敏感词包括的各种元数据,以使检索的标准变得更为丰富,提高检索的准确性。
20.作为优选例子,在所述述根据预设的后缀索引检索算法,通过预设的检索方式,根据预构建的敏感词库中的多级后缀索引检索所述目标文本的每一个公共前缀,具体包括:
21.所述预设的后缀索引检索算法包括顺序法、二分法和lf-mapping;
22.所述预设的检索方式包括逐级串行检索、各级并行检索和分布式检索;
23.通过所述预构建的敏感词库中的所述多级后缀索引中的每一个后缀索引对所述目标文本的每一个公共前缀,根据预设的后缀索引检索算法和检索方式进行敏感词检索。
24.本发明提供了若干种后缀索引检索算法和检索方式,提供了多种选择,然后通过所述预构建的敏感词库中的所述多级后缀索引中的每一个后缀索引对所述每一个公共前缀进行检索,提高检索速度。
25.作为优选例子,在所述根据所述多级后缀索引检索到对应的公共前缀,具体包括:
26.通过所述后缀索引保存各个敏感词根据字符顺序从小到大排列的后缀的索引号码过程中,具有相同首字符的后缀在所述后缀索引中形成聚集,获得连续的字符桶。
27.本发明在形成所述后缀索引中时,具有相同字符的后缀会聚集在一起,形成字符桶,在检索过程中,所述字符桶的存在能够减少检索的时间,提高检索的速度。
28.作为优选例子,在所述获得所述目标文本的敏感词,具体包括:
29.若根据所述多级后缀索引检索到所述目标文本的对应的公共前缀,并且在所述公共前缀对应的所述某一个后缀索引中包含的字符桶中检测到下一字符为结束符,则在检索结果中保存所述敏感词,并将所述敏感词对应的公共前缀从公共前缀数组中删除;
30.若根据所述多级后缀索引检索到所述目标文本中对应的公共前缀,但是在所述公共前缀对应的所述某一个后缀索引中包含的字符桶中没有检测到下一字符为结束符,则不在检索结果中保存所述敏感词,并不将所述敏感词对应的公共前缀从公共前缀数组中删除。
31.本发明在检索过程中,需要先检测到对应的公共前缀,然后判断其对应的字符桶里是否存在结束符,提高了检索标准,进而提高了检索的精确度,同时若检索到对应的公共前缀的同时又检测到对应的结束符,则将其进行删除,一方面避免重复检查,一方面避免其占用空间资源,减低空间开销。
32.作为优选例子,在所述保存所述敏感词,具体包括:
33.通过预设的保存方式将所述敏感词保存到检索结果;
34.所述保存方式包括数组、链表和队列。
35.本发明提供了多种保存数据的方式,以使将检索到的敏感词保存到检索结果中。
36.另一方面,本发明提供了一种基于后缀索引的敏感词检索系统,包括循环模块、检索模块、删除模块和保存模块;
37.所述循环模块用于通过循环遍历目标文本的每一个文本字符,将所述遍历的文本字符添加至所述目标文本的公共前缀数组中的每一个公共前缀的后面;
38.所述检索模块用于根据预设的后缀索引检索算法,通过预设的检索方式,根据预构建的敏感词库中的多级后缀索引检索所述目标文本的每一个公共前缀;所述多级后缀索引为通过预设的划分算法将所述敏感词库进行划分获得的若干个敏感词子库对应的若干个后缀索引;所述后缀索引保存所述每一个敏感词的后缀按照字符顺序从小到大排列后的索引号码;
39.所述删除模块用于若根据所述多级后缀索引检索不到所述目标文本的对应的公共前缀,则将所述公共前缀从所述目标文本的公共前缀数组中进行删除;
40.所述保存模块用于若根据所述多级后缀索引检索到对应的公共前缀,则根据所述后缀索引中保存的索引号码,获得所述目标文本的敏感词。
41.本发明提供了一种基于后缀索引的敏感词检索系统,首先通过循环模块循环遍历输入的目标文本的每一个文本字符,将所述文本字符添加至所述目标文本的公共前缀数组中的每一个公共前缀中,避免检测过程中的数据丢失,造成检索不全面,同时通过循环遍历的形式不断新增公共前缀,避免了空间资源的浪费,然后通过检索模块根据预先构建的敏感词库中的多级后缀索引对所述公共前缀进行搜索,根据构建的多级后缀索引进行搜索减少了检索的时间,同时所述多级后缀索引为划分的多个敏感词子库的多个后缀索引,减少了空间开销,然后基于所述构建的多级后缀索引对所述公共前缀进行检索,通过删除模块判断若是检测不到对应的公共前缀,则将其进行删除,避免重复检查,通过保存模块判断若是检测到对应的公共前缀,根据所述多级后缀索引中保存的索引号码,然后获取敏感词的检索结果,提高了检索的精确度。
42.作为优选例子,在所述检索模块包括构建单元和检索单元;
43.所述构建单元包括通过遍历所述敏感词库并在每一个敏感词后面添加一个结束符,获得所述敏感词库中每一种字长的敏感词数量的统计结果;根据所述统计结果,通过预设的划分算法划分所述敏感词库,获得若干个敏感词子库;通过使用预设的后缀索引构造
算法,根据所述若干个敏感词子库,获得与之一一对应的若干个后缀索引;通过预设的数据保存方式保存所述若干个后缀索引的元数据,获得所述敏感词库的多级后缀索引,所述元数据包括敏感词的最小字长、最大字长和字符桶的偏移量;
44.所述检索单元用于通过所述预构建的敏感词库中的所述多级后缀索引中的每一个后缀索引对所述目标文本的每一个公共前缀,根据预设的后缀索引检索算法和检索方式进行敏感词检索;所述预设的后缀索引检索算法包括顺序法、二分法和lf-mapping;所述预设的检索方式包括逐级串行检索、各级并行检索和分布式检索。
45.本发明通过构建单元对敏感词库进行划分,获得若干个敏感词子库,能够支持后续根据所述划分规则进行检索,减少了检索时间,然后根据预设的后缀索引算法对所述敏感词子库构建后缀索引,所述后缀索引对应所述敏感词包括的各种元数据,以使检索的标准变得更为丰富,提高检索的准确性,通过检索单元所述预构建的敏感词库中的所述多级后缀索引中的每一个后缀索引对所述每一个公共前缀进行检索,提高检索速度。
46.作为优选例子,在所述保存模块包括保存单元和忽视单元;
47.所述保存单元用于若根据所述多级后缀索引检索到所述目标文本中对应的公共前缀,并且在所述公共前缀对应的所述某一个后缀索引中包含的字符桶中检测到下一字符为结束符,则在检索结果中保存所述敏感词,并将所述敏感词对应的公共前缀从公共前缀数组中删除;
48.所述忽视单元用于若根据所述多级后缀索引检索到所述目标文本中对应的公共前缀,但是在所述公共前缀对应的所述某一个后缀索引中包含的字符桶中没有检测到下一字符为结束符,则不在检索结果中保存所述敏感词,并不将所述敏感词对应的公共前缀从公共前缀数组中删除。
49.本发明通过保存单元保存检索到敏感词并将其保存到检索结果中,同时将所述述敏感词对应的公共前缀从公共前缀数组中删除,避免了空间资源的浪费,同时通过所述忽视单元将没有检索到对应的结束符的公共前缀既不删除也不保存,在循环的过程中可以重复对此检索,提高了检索的精确度。
附图说明
50.图1:为本发明实施例提供的一种基于后缀索引的敏感词检索方法的流程示意图;
51.图2:为本发明实施例提供的一种基于后缀索引的敏感词检索系统的结构示意图;
52.图3:为本发明另一实施例提供的一种基于后缀索引的敏感词检索系统的结构示意图;
53.图4:为本发明另一实施例提供的一种多级后缀索引构造流程示意图;
54.图5:为本发明另一实施例提供的一种敏感词检索流程示意图;
55.图6:为本发明另一实施例提供的一种敏感词检索结果示意图。
具体实施方式
56.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他
实施例,都属于本发明保护的范围。
57.实施例一
58.请参照图1,为本发明实施例提供的一种基于后缀索引的敏感词检索方法的流程示意图,主要包括步骤101至步骤104,具体包括:
59.步骤101:通过循环遍历目标文本的每一个文本字符,将所述遍历的文本字符添加至所述目标文本的公共前缀数组中的每一个公共前缀的后面。
60.在本实施例中,该步骤具体为:通过在所述公共前缀数组中新增字长为0的公共前缀,根据遍历到的所述目标文本的每一个文本字符,将相同的文本字符添加至所述公共前缀数组中对应的公共前缀中;所述公共前缀为长度小于或等于敏感词字长的字符串,保存在初始为空的所述公共前缀数组中。
61.步骤102:根据预设的后缀索引检索算法,通过预设的检索方式,根据预构建的敏感词库中的多级后缀索引检索所述目标文本的每一个公共前缀。
62.在本实施例中,该步骤具体为:通过遍历所述敏感词库并在每一个敏感词后面添加一个结束符,获得所述敏感词库中每一种字长的敏感词数量的统计结果;根据所述统计结果,通过预设的划分算法划分所述敏感词库,获得若干个敏感词子库;通过使用预设的后缀索引构造算法,根据所述若干个敏感词子库,获得与之一一对应的若干个后缀索引;通过预设的数据保存方式保存所述若干个后缀索引的元数据,获得所述敏感词库的多级后缀索引,所述元数据包括敏感词的最小字长、最大字长和字符桶的偏移量。
63.在本实施例中,所述预设的后缀索引检索算法包括顺序法、二分法和lf-mapping;所述预设的检索方式包括逐级串行检索、各级并行检索和分布式检索;通过所述预构建的敏感词库中的所述多级后缀索引中的每一个后缀索引对所述目标文本的每一个公共前缀,根据预设的后缀索引检索算法和检索方式进行敏感词检索。
64.步骤103:若根据所述多级后缀索引检索不到所述目标文本的对应的公共前缀,则将所述公共前缀从所述目标文本的公共前缀数组中进行删除。
65.步骤104:若根据所述多级后缀索引检索到对应的公共前缀,则根据所述后缀索引中保存的索引号码,获得所述目标文本的敏感词。
66.在本实施例中,该步骤具体为:若根据所述多级后缀索引检索到所述目标文本的对应的公共前缀,并且在所述公共前缀对应的所述某一个后缀索引中包含的字符桶中检测到下一字符为结束符,则在检索结果中保存所述敏感词,并将所述敏感词对应的公共前缀从公共前缀数组中删除;若根据所述多级后缀索引检索到所述目标文本中对应的公共前缀,但是在所述公共前缀对应的所述某一个后缀索引中包含的字符桶中没有检测到下一字符为结束符,则不在检索结果中保存所述敏感词,并不将所述敏感词对应的公共前缀从公共前缀数组中删除。
67.在本实施例中,通过所述后缀索引保存各个敏感词根据字符顺序从小到大排列的后缀的索引号码过程中,具有相同首字符的后缀在所述后缀索引中形成聚集,获得连续的字符桶。通过预设的保存方式将所述敏感词保存到检索结果所述保存方式包括数组、链表和队列。
68.请参照图2,为本实施例提供的一种基于后缀索引的敏感词检索系统,其主要包括循环模块201、检索模块202、删除模块203和保存模块204。
69.所述循环模块201用于通过循环遍历目标文本的每一个文本字符,将所述遍历的文本字符添加至所述目标文本的公共前缀数组中的每一个公共前缀的后面。
70.所述检索模块202用于根据预设的后缀索引检索算法,通过预设的检索方式,根据预构建的敏感词库中的多级后缀索引检索所述目标文本的每一个公共前缀;所述多级后缀索引为通过预设的划分算法将所述敏感词库进行划分获得的若干个敏感词子库对应的若干个后缀索引;所述后缀索引保存所述每一个敏感词的后缀按照字符顺序从小到大排列后的索引号码;
71.所述删除模块203用于若根据所述多级后缀索引检索不到所述目标文本的对应的公共前缀,则将所述公共前缀从所述目标文本的公共前缀数组中进行删除。
72.所述保存模块204用于若根据所述多级后缀索引检索到对应的公共前缀,则根据所述后缀索引中保存的索引号码,获得所述目标文本的敏感词。
73.在本实施例中,所述检索模块202包括构建单元和检索单元。
74.所述构建单元包括通过遍历所述敏感词库并在每一个敏感词后面添加一个结束符,获得所述敏感词库中每一种字长的敏感词数量的统计结果;根据所述统计结果,通过预设的划分算法划分所述敏感词库,获得若干个敏感词子库;通过使用预设的后缀索引构造算法,根据所述若干个敏感词子库,获得与之一一对应的若干个后缀索引;通过预设的数据保存方式保存所述若干个后缀索引的元数据,获得所述敏感词库的多级后缀索引,所述元数据包括敏感词的最小字长、最大字长和字符桶的偏移量。
75.所述检索单元用于通过所述预构建的敏感词库中的所述多级后缀索引中的每一个后缀索引对所述目标文本的每一个公共前缀,根据预设的后缀索引检索算法和检索方式进行敏感词检索;所述预设的后缀索引检索算法包括顺序法、二分法和lf-mapping;所述预设的检索方式包括逐级串行检索、各级并行检索和分布式检索。
76.在本实施例中,所述保存模块204包括保存单元和忽视单元。
77.所述保存单元用于若根据所述多级后缀索引检索到所述目标文本中对应的公共前缀,并且在所述公共前缀对应的所述某一个后缀索引中包含的字符桶中检测到下一字符为结束符,则在检索结果中保存所述敏感词,并将所述敏感词对应的公共前缀从公共前缀数组中删除。
78.所述忽视单元用于若根据所述多级后缀索引检索到所述目标文本中对应的公共前缀,但是在所述公共前缀对应的所述某一个后缀索引中包含的字符桶中没有检测到下一字符为结束符,则不在检索结果中保存所述敏感词,并不将所述敏感词对应的公共前缀从公共前缀数组中删除。
79.实施例二
80.请参照图3,为本发明另一实施例提供的一种基于后缀索引的敏感词检索系统的结构示意图。
81.在本实施例提供的一种基于后缀索引的敏感词检索系统中,包括一个后缀索引构造模块、一个敏感词检索模块。其中,系统输入包括敏感词库、目标文本;系统输出包括后缀索引、检索结果。
82.请参照图4,为本发明另一实施例提供的一种多级后缀索引构造流程示意图,其主要包括步骤401至步骤404,具体包括:
83.步骤401:遍历敏感词库,在每个敏感词的后面加上一个结束符

$’,并统计各种字长的敏感词数量。
84.在本实施例中,该步骤具体为:遍历敏感词库,在每个敏感词的后面加上一个结束符

$’,并统计得到敏感词库中字长为2、3、4的敏感词数量均为1个。
85.步骤402:根据各种字长的敏感词数量统计结果,把敏感词库按照敏感词字长划分为2个规模相当的敏感词子库。
86.在本实施例中,该步骤具体为:根据敏感词的数量统计结果,把敏感词库按照敏感词字长划分为2个规模相当的敏感词子库,划分得到敏感词子库1:“ab$aab$”;敏感词子库2:“bcca$”。
87.步骤403:以串行方式使用归纳复制(排序)后缀索引构造算法为每个敏感词子库构造后缀索引。
88.在本实施例中,该步骤具体为:以串行方式使用归纳复制(排序)后缀索引构造算法,构造得到1级后缀索引:{6,2,3,4,0,5,1};2级后缀索引:{4,3,0,2,1}。
89.步骤404:以数组方式保存每个敏感词子库的后缀索引元数据,得到敏感词库的多级后缀索引。
90.在本实施例中,该步骤具体为:通过数组的形式保存每个敏感词子库的后缀索引元数据,所述元数据的格式为:{最小字长,最大字长,{字符桶的偏移量}}。1级后缀索引元数据为:{2,3,{$:0,a:2,b:5}};2级后缀索引元数据为:{4,4,{$:0,a:1,b:2,c:3}}。
91.请参照图5,为本发明另一实施例提供的一种敏感词检索流程图,其主要包括步骤501至步骤507,具体包括:
92.步骤501:从目标文本中的首字符起,遍历每一个文本字符。
93.在本实施例中,该步骤具体为:通过循环遍历目标文本的每一个文本字符,从目标文本的首字符

c’起,逐一遍历每个文本字符。
94.步骤502:在公共前缀数组中新增一个字长为0的公共前缀,并把当前遍历到的文本字符添加至公共前缀数组中每个公共前缀的后面。
95.在本实施例中,该步骤具体为:在将所述遍历的文本字符添加至所述目标文本的公共前缀数组中的每一个公共前缀的后面,得到当前的公共前缀数组:{c}。
96.步骤503:以逐级串行方式在敏感词库的多级后缀索引中使用lf-mapping后缀索引检索算法检索公共前缀数组中的每个公共前缀。
97.在本实施例中,该步骤具体为:根据预设的后缀索引检索算法,通过预设的检索方式,对公共前缀数组中当前的公共前缀

c’在1级后缀索引元数据中无匹配的字符桶,因而无需使用lf-mapping后缀索引检索算法检索1级后缀索引;在2级后缀索引元数据中有匹配的字符桶,因而从字符桶的偏移量
‘3’
开始使用lf-mapping后缀索引检索算法检索2级后缀索引。
98.步骤504:若在多级后缀索引中检索不到当前的公共前缀,则将其从公共前缀数组中删除。
99.在本实施例中,该步骤具体为:当前的公共前缀

c’在2级后缀索引中可以检索到,因而无需将其从公共前缀数组中删除。
100.步骤505:若在多级后缀索引中检索到了当前的公共前缀,并且在匹配的字符桶里
存在下一字符为结束符的项目,则在检索结果中记录找到该敏感词,并将其从公共前缀数组中删除。
101.在本实施例中,该步骤具体为:当前的公共前缀

c’在2级后缀索引中可以检索到,但是在匹配的字符桶里不存在下一字符为结束符的项目,因而无需在检索结果中记录找到该敏感词,并且无需将其从公共前缀数组中删除。
102.步骤506:检查是否完成所有公共前缀的检索,否则跳转至步骤503检索下一公共前缀。
103.步骤507:检查是否完成目标文本的遍历,否则跳转至步骤502遍历下一文本字符。
104.在本实施例中,该步骤具体为:未完成目标文本“caabc”的遍历,因而跳转至步骤502遍历下一文本字符

a’,获得本实施例的敏感词检索结果,如图6,图6为本发明实施例提供的敏感词检索结果示意图。
105.在本实施例中,分别提供了一种基于后缀索引的敏感词检索系统,根据所述敏感词检索系统进行检索,,然后提供了一种多级后缀索引构造流程,在构造所述多级后缀索引中,本实施例根据敏感词库中的敏感词信息,完成多级后缀索引的构造,并记录各级后缀索引的元数据,以待敏感词检索模块调用,与基于树或者图结构的方法相比空间开销较小。然后在本实施例提供的一种敏感词检索方法中,本实施例利用多级后缀索引及其元数据,在敏感词库中快速准确地检索目标文本中的敏感词,与基于机器学习、人工智能的方法相比无需大量时间训练模型;与基于文本内容的方法相比无需进行分词、特征提取等额外处理。
106.以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步的详细说明,应当理解,以上所述仅为本发明的具体实施例而已,并不用于限定本发明的保护范围。特别指出,对于本领域技术人员来说,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1