CN117690153B - 一种基于确定型有限自动机的文本检测方法、装置及设备 - Google Patents
一种基于确定型有限自动机的文本检测方法、装置及设备 Download PDFInfo
- Publication number
- CN117690153B CN117690153B CN202410153901.8A CN202410153901A CN117690153B CN 117690153 B CN117690153 B CN 117690153B CN 202410153901 A CN202410153901 A CN 202410153901A CN 117690153 B CN117690153 B CN 117690153B
- Authority
- CN
- China
- Prior art keywords
- text
- character
- current
- text segment
- target
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000001514 detection method Methods 0.000 title claims abstract description 102
- 230000011218 segmentation Effects 0.000 claims abstract description 134
- 238000000034 method Methods 0.000 claims abstract description 28
- 230000007704 transition Effects 0.000 claims description 56
- 238000012546 transfer Methods 0.000 claims description 4
- 239000011159 matrix material Substances 0.000 description 11
- 238000010586 diagram Methods 0.000 description 8
- 230000014509 gene expression Effects 0.000 description 8
- 230000008569 process Effects 0.000 description 8
- 230000008859 change Effects 0.000 description 3
- 238000004891 communication Methods 0.000 description 3
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 101000955967 Deinagkistrodon acutus Thrombin-like enzyme acutin Proteins 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 230000018109 developmental process Effects 0.000 description 2
- 101150014330 dfa2 gene Proteins 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 238000006467 substitution reaction Methods 0.000 description 2
- 238000013459 approach Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000012790 confirmation Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请提供了一种基于确定型有限自动机的文本检测方法、装置及设备,涉及计算机技术领域,该方法包括:确定待检测文本中当前文本段的字符数量是否符合文本分割要求;若符合要求,选取多个候选字符,确定每个候选字符转移为目标状态的次数;根据次数从多个候选字符中选取当前分割字符,利用当前分割字符对当前文本段进行分割获得新的当前文本段;将当前分割字符作为新的前一分割字符,返回执行确定是否符合文本分割要求的步骤;利用多线程中设置的多个确定型有限自动机同时对所有文本段进行检测,获得文本检测结果。通过采用上述基于确定型有限自动机的文本检测方法、装置及设备,解决了现有技术中,检测效率低及检测效率不稳定的问题。
Description
技术领域
本申请涉及计算机技术领域,具体而言,涉及一种基于确定型有限自动机的文本检测方法、装置及设备。
背景技术
随着计算机技术的快速发展,网络入侵、网络攻击等网络安全事件的发生频率也越来越高,为了防止网络安全事件的发生,进行网络安全检测显得尤为重要。目前,正则表达式通常被编译为有限自动机来执行检测任务,有限自动机分为确定型有限自动机(Deterministic finite automaton,DFA)及非确定型有限自动机(Non-deterministicfinite automaton,NFA)。由于DFA的检测性能更好,因此正则表达式检测匹配引擎通常会将NFA转换为DFA,由DFA对网络数据包(即待检测文本)进行匹配,以实现网络安全检测。
然而,在采用DFA对大型文本进行检测时,通常采用以下两种检测方式:一种是串行检测方式,另一种是基于猜测的并行检测方式,其中,串行检测方式存在检测效率低的问题,而基于猜测的并行检测方式的检测效率取决于猜测的准确性。
发明内容
有鉴于此,本申请的目的在于提供一种基于确定型有限自动机的文本检测方法、装置及设备,以解决现有技术中,检测效率低及检测效率不稳定的问题。
第一方面,本申请实施例提供了一种基于确定型有限自动机的文本检测方法,包括:
确定待检测文本中当前文本段的字符数量是否符合文本分割要求,当前文本段是基于前一分割字符确定的,前一分割字符为当前文本段之前的前一文本段的结束字符;
若符合文本分割要求,则从当前文本段中选取多个候选字符,确定每个候选字符转移为目标状态的次数;
根据次数从多个候选字符中选取当前文本段对应的当前分割字符,利用当前分割字符对当前文本段进行分割获得当前分割字符之后的新的当前文本段;
将当前分割字符作为新的前一分割字符,返回执行确定待检测文本中当前文本段的字符数量是否符合文本分割要求的步骤,直至确定待检测文本中的所有文本段;
利用多线程中设置的多个确定型有限自动机同时对所有文本段进行检测,获得待检测文本的文本检测结果。
可选地,确定每个候选字符转移为目标状态的次数,包括:从多个候选字符中选取目标候选字符;将目标候选字符对应的初始状态设置为目标状态,利用确定型有限自动机遍历目标候选字符之后的每个候选字符,获得该目标候选字符对应的状态组,状态组包括除目标候选字符及目标候选字符之前的候选字符外的每个候选字符对应的状态;将目标候选字符的下一个候选字符作为新的目标候选字符,返回执行将目标候选字符对应的初始状态设置为目标状态的步骤,直至所有候选字符均作为目标候选字符;根据所有目标候选字符对应的状态组,确定每个候选字符转移为目标状态的次数。
可选地,在获得待检测文本的文本检测结果之后,还包括:从多个文本段中选取目标文本段;确定目标文本段的前一文本段中的最后一个字符对应的状态是否为目标状态;若不是目标状态,则确定目标文本段的检测结果为不正确;将目标文本段对应的初始状态设置为前一文本段中的最后一个字符初始的状态,利用确定型有限自动机重新对目标文本段进行检测;将目标文本段的下一文本段作为目标文本段,返回执行确定目标文本段的前一文本段中的最后一个字符对应的状态是否为目标状态的步骤。
可选地,根据次数从多个候选字符中选取当前文本段对应的当前分割字符,包括:将目标状态出现次数最高的候选字符作为当前文本段对应的当前分割字符。
可选地,利用当前分割字符对当前文本段进行分割获得当前分割字符之后的新的当前文本段,包括:将当前文本段中的当前分割字符及处于当前分割字符之前的字符对应的文本作为新的前一文本段;将当前文本段中处于当前分割字符之后的字符对应的文本作为新的当前文本段。
可选地,在确定目标文本段的前一文本段中的最后一个字符对应的状态是否为目标状态之后,还包括:若是目标状态,则确定目标文本段的检测结果为正确。
可选地,若符合文本分割要求,则从当前文本段中选取多个候选字符,包括:选取当前文本段中前第一预设数量的字符之后的多个字符作为候选字符。
可选地,多线程的数量与多个文本段的数量相等。
第二方面,本申请实施例还提供了一种基于确定型有限自动机的文本检测装置,所述装置包括:
分割要求判断模块,用于确定待检测文本中当前文本段的字符数量是否符合文本分割要求,当前文本段是基于前一分割字符确定的,前一分割字符为当前文本段之前的前一文本段的结束字符;
转移次数确定模块,用于若符合文本分割要求,则从当前文本段中选取多个候选字符,确定每个候选字符转移为目标状态的次数;
文本段分割模块,用于根据次数从多个候选字符中选取当前文本段对应的当前分割字符,利用当前分割字符对当前文本段进行分割获得当前分割字符之后的新的当前文本段;
循环执行模块,用于将当前分割字符作为新的前一分割字符,返回执行确定待检测文本中当前文本段的字符数量是否符合文本分割要求的步骤,直至确定待检测文本中的所有文本段;
检测结果确定模块,用于利用多线程中设置的多个确定型有限自动机同时对所有文本段进行检测,获得待检测文本的文本检测结果。
第三方面,本申请实施例还提供一种电子设备,包括:处理器、存储器和总线,所述存储器存储有所述处理器可执行的机器可读指令,当电子设备运行时,所述处理器与所述存储器之间通过总线通信,所述机器可读指令被所述处理器执行时执行如上述的基于确定型有限自动机的文本检测方法的步骤。
本申请实施例带来了以下有益效果:
本申请实施例提供的一种基于确定型有限自动机的文本检测方法、装置及设备,能够根据候选字符转移为目标状态的次数来选取分割字符,利用多个分割字符将待检测文本分割为多个文本段,通过多线程同时对多个文本段进行DFA检测,获得整个待检测文本的文本检测结果,与现有技术中的基于确定型有限自动机的文本检测方法相比,解决了检测效率低及检测效率不稳定的问题。
为使本申请的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1示出了现有技术中的DFA状态转移矩阵的示意图;
图2示出了现有技术中的串行检测方式的流程图;
图3示出了现有技术中的基于猜测的并行检测方式的流程图;
图4示出了本申请实施例所提供的基于确定型有限自动机的文本检测方法的流程图;
图5示出了本申请实施例所提供的文本分割过程的示意图;
图6示出了本申请实施例所提供的基于确定型有限自动机的文本检测装置的结构示意图;
图7示出了本申请实施例所提供的电子设备的结构示意图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本申请实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本申请的实施例的详细描述并非旨在限制要求保护的本申请的范围,而是仅仅表示本申请的选定实施例。基于本申请的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的每个其他实施例,都属于本申请保护的范围。
值得注意的是,在本申请提出之前,随着计算机技术的快速发展,网络入侵、网络攻击等网络安全事件的发生频率也越来越高,为了防止网络安全事件的发生,进行网络安全检测显得尤为重要。目前,正则表达式通常被编译为有限自动机来执行检测任务,有限自动机分为确定型有限自动机(Deterministic finite automaton,DFA)及非确定型有限自动机(Non-deterministic finite automaton,NFA)。由于DFA的检测性能更好,因此正则表达式检测匹配引擎通常会将NFA转换为DFA,由DFA对网络数据包(即待检测文本)进行匹配,以实现网络安全检测。然而,在采用DFA对大型文本进行检测时,通常采用以下两种检测方式:一种是串行检测方式,另一种是基于猜测的并行检测方式。这里,图1示出了现有技术中的DFA状态转移矩阵的示意图。如图1所示的矩阵为正则表达式规则编译后等价转化成的DFA状态转移矩阵,DFA状态转移矩阵中共包括0、1、2、3、4五个状态及输入a、b、c、d四个字符中的每个字符后由原状态转移到的新状态,例如:第四行、第四列中的数值4表示输入字符c后,由状态2变为状态4,该DFA状态转移矩阵是针对待检测文本T进行检测,确定待检测文本T中是否存在与特定模式匹配的字符串。图2示出了现有技术中的串行检测方式的流程图,当采用DFA对待检测文本T进行串行扫描时,检测过程如图2所示,假设初始状态为S0=0,T=“abca”,那么,检测过程的状态变化为(S0,S1,S2,S3,S4)=(0,1,2,4,1),其中,(S0,S1,S2,S3,S4)表示检测过程中的五个状态项,(0,1,2,4,1)表示具体的状态值,当对待检测文本T检测完成之后,DFA状态由初始状态S0=0变为第四状态S4=1。图3示出了现有技术中的基于猜测的并行检测方式的流程图,如图3所示,将待检测文本T分成了T1和T2两段,T1=“ab”和T2=“ca”,然后利用DFA(为方便理解,可认为有两个一模一样的DFA,分别命名为DFA1、DFA2)同时进行扫描,然后再将扫描结果进行连接确认,在对T1进行扫描时,其状态变化为(S0,S1,S2)=(0,1,2),在对T2进行扫描时,如果猜测DFA2的初始状态为2,那么T2的状态变化为(Si,Sj,Sk)=(2,4,1)。由于T1的最终状态为S2=2,与T2的初始状态Si相等,则可将(S0,S1,S2)与(Si,Sj,Sk)直接进行连接,获得T的状态变化为(0,1,2,4,1),这与串行检测的结果一致。虽然基于猜测的并行检测方式在通过对T1、T2的并行扫描提高了检测性能,但是,如果S2≠2,那么T1与T2的检测结果就不能进行连接,DFA1需要继续向下扫描T2。可见,检测效率提高与否取决于猜测DFA2的初始状态是否准确,如果猜测准确,则能够提升检测效率,如果猜测不准确,则仍会造成检测效率低的问题。即,串行检测方式存在检测效率低的问题,而基于猜测的并行检测方式的检测效率取决于猜测的准确性。
基于此,本申请实施例提供了一种基于确定型有限自动机的文本检测方法,以提高文本检测效率及文本检测效率的稳定性。
请参阅图4,图4为本申请实施例所提供的一种基于确定型有限自动机的文本检测方法的流程图。如图4所示,本申请实施例提供的基于确定型有限自动机的文本检测方法,包括:
步骤S101,确定待检测文本中当前文本段的字符数量是否符合文本分割要求。
该步骤中,待检测文本可以理解为检测对象,待检测文本为大型文本,待检测文本中包括多个待检测字符,待检测字符可以是中文,也可以是英文,还可以是其他特殊字符,例如:运算符、标识符等。
当前文本段可指已确定的最后一个分割字符之后的文本,当前文本段是基于前一分割字符确定的,前一分割字符为当前文本段之前的前一文本段的结束字符。
文本分割要求可指文本长度要求,在当前文本段较长时,可以将当前文本段分割为多个文本段,以便于后续同时对这些文本段进行检测,提高检测效率。
示例性的,假设待检测文本为“abcdefghijkmlnopq”,已经确定了两个分割字符,分别是d和h,则h为已确定的最后一个分割字符,此时共有三个文本段,第一个文本段为“abcd”,第二个文本段为“efgh”,则“ijkmlnopq”为当前文本段。
在本申请实施例中,为了确定待检测文本中是否存在与特定模式匹配的字符串,首先建立该特定模式对应的正则表达式,然后将正则表达式转换为DFA,以将正则表达式的匹配过程转换为DFA的状态转移过程。确定了特定模式对应的DFA之后,首先对待检测文本进行分割,获得多个文本段,并同时对多个文本段进行检测,以提高检测效率。示例性的,特定模式可以是a*,还可以是[abcd]。
其中,DFA可以用状态转移矩阵来表示,该状态转移矩阵即如图1的样式,可通过状态转移矩阵来确定在向DFA扫描引擎输入待检测文本中的字符后,状态转移的结果。
下面参照图5来介绍文本分割的具体过程。
图5示出了本申请实施例所提供的文本分割过程的示意图,如图5所示,整个待检测文本M被分为M1、M2两个文本段,M2包括M21和M22两个文本段,β1表示M1中前第一预设数量的字符、β2表示M21中前第一预设数量的字符、β3表示M22中前第一预设数量的字符,λ1表示M1中的候选字符、λ2表示M21中的候选字符、λ3表示M22中的候选字符。
在对待检测文本M进行分割时,先选取M作为当前文本段,如果M的字符数量大于第二预设数量,则确定符合文本分割要求,进而确定第一个分割字符e(第一个分割线之前的字符),然后利用第一个分割字符e将M划分为M1、M2两部分。接下来,将M2作为当前文本块,如果M2的字符数量大于第二预设数量,则确定符合文本分割要求,并确定第二个分割字符j(第二个分割线之前的字符),然后利用第二个分割字符j将M2划分为M21、M22两部分,以此类推。
具体的,以当前文本块为M2为例,如果当前文本段M2的字符数量大于第二预设数量,则确定符合文本分割要求;如果当前文本段M2的字符数量小于或者等于第二预设数量,则确定不符合文本分割要求。
这里,第二预设数量是根据待检测文本中字符的总长度确定的,例如:待检测文本中字符的总长度为100000,并且可用线程数为10,则可以将待检测文本分割为10个文本段,以利用这10个线程同时对10个文本段进行检测,因此,第二预设数量为100000/10=10000。
如果当前文本段M2中的字符数量小于或者等于第二预设数量为10000,则确定当前文本段不符合文本分割要求,表明当前文本段M2无法继续分割。如果当前文本段M2中的字符数量大于第二预设数量10000,则确定当前文本段符合文本分割要求,表明当前文本段M2可以继续分割。
步骤S102,若符合文本分割要求,则从当前文本段中选取多个候选字符,确定每个候选字符转移为目标状态的次数。
该步骤中,候选字符可指可能被选为分割字符的字符集合,候选字符是处于当前文本段末尾的字符。
目标状态可指状态转移矩阵中的某一状态,示例性的,目标状态可以是状态0,也可以是状态1。
在本申请实施例中,状态转移矩阵是基于大量文本得到的,状态转移矩阵最左侧的一列为状态列,示例性的,状态列包括状态0、状态1、状态2、状态3及状态4,状态转移矩阵中除状态列之外的其余列称为字符列,字符列下面的数值表示:在当前状态下输入对应字符后由该当前状态转移至哪个状态,即转移状态,例如:状态0所在行中的a字符列下的数值为1时,表示在状态0下输入字符a后会转移至状态1。其中,本申请将输入相应字符后,出现可能性最高的转移状态放在状态0所在的行中,因此,选取状态0作为目标状态。
如果当前文本段较长,需要对当前文本段继续进行分割,在开始分割前首先需要找到分割字符,以利用分割字符对当前文本段进行分割。为此,首先从当前文本段中选取多个候选字符,再根据候选字符转移为目标状态的次数,从多个候选字符中选取出分割字符。
以上述示例为例,从当前文本段M2中选取λ2作为候选字符,然后针对λ2中的每个候选字符,确定该候选字符转移为状态0的次数。
在一可选实施例中,步骤S102中,若符合文本分割要求,则从当前文本段中选取多个候选字符,包括:步骤a1。
步骤a1,选取当前文本段中前第一预设数量的字符之后的多个字符作为候选字符。
这里,由于第一预设数量的字符是当前文本段中的部分字符,因此,第一预设数量小于第二预设数量。
假设,第一预设数量为1000,当前文本段共有10010个字符,则β1、β2及β3中的字符数量均各自为1000。选取当前文本段M2中排在第1001至第1010位的字符作为候选字符,即选取β2之后的10个字符作为候选字符。其中,每次确定一个分割字符后,都会分割出一个新的当前文本段,所有当前文本段的候选字符均为第三预设数量个字符,例如:都是10个候选字符。
在一可选实施例中,步骤S102中,确定每个候选字符转移为目标状态的次数,包括:步骤b1、步骤b2、步骤b3及步骤b4。
步骤b1,从多个候选字符中选取目标候选字符。
当第一次从多个候选字符中选取目标候选字符时,先选取多个候选字符中位置排在第一位的候选字符作为目标候选字符,并获得该第一个目标候选字符对应的状态组。然后,第二次从多个候选字符中选取目标候选字符,此时选取多个候选字符中位置排在第二位的候选字符作为目标候选字符,并获得该第二个目标候选字符对应的状态组。依次类推,按照字符在当前文本段中的位置,依次选取每个候选字符作为目标候选字符,例如:多个候选字符为“efgh”,则第一次选取e作为目标候选字符,第二次选取f作为目标候选字符。
步骤b2,将目标候选字符对应的初始状态设置为目标状态,利用确定型有限自动机遍历目标候选字符之后的每个候选字符,获得该目标候选字符对应的状态组。
这里,状态组包括除目标候选字符及目标候选字符之前的候选字符外的每个候选字符对应的状态。
以多个候选字符为“efghijk”、第一次选取目标候选字符为e、目标状态为状态0为例,将目标候选字符e对应的初始状态设置为状态0,然后利用DFA遍历e、f、g、h、i、j、k这六个字符,即向DFA依次输入这6个字符,获得输入每个字符后的转移状态,由这6个转移状态得到状态组。例如:遍历e时得到的转移状态为3,遍历f时得到的转移状态为1,遍历g时得到的转移状态为2,遍历h时得到的转移状态为0,遍历i时得到的转移状态为0,遍历j时得到的转移状态为1,遍历k时得到的转移状态为2,则得到目标候选字符e对应的状态组为(3,1,2,0,0,1,2)。
步骤b3,将目标候选字符的下一个候选字符作为新的目标候选字符,返回执行将目标候选字符对应的初始状态设置为目标状态的步骤,直至所有候选字符均作为目标候选字符。
这样,确定第一个目标候选字符e对应的状态组之后,选取新的目标候选字符,此时选取e之后的f作为新的目标候选字符,将目标候选字符f对应的初始状态设置为状态0,然后利用DFA遍历f、g、h、i、j、k这五个字符,即向DFA依次输入这5个字符,获得输入每个字符后的转移状态,由这5个转移状态得到状态组。例如:遍历f时得到的转移状态为2,遍历g时得到的转移状态为1,遍历h时得到的转移状态为3,遍历i时得到的转移状态为0,遍历j时得到的转移状态为4,遍历k时得到的转移状态为1,则得到目标候选字符f对应的状态组为(2,1,3,0,4,1)。
以此类推,直至获得每个目标候选字符对应的状态组。这里,多个候选字符“efghijk”,可以获得7个状态组。
步骤b4,根据所有目标候选字符对应的状态组,确定每个候选字符转移为目标状态的次数。
由于每个目标候选字符都对应一个状态组,则可以将这些状态组放在一起,以获得每个候选字符对应的多个转移状态。以上述示例为例,候选字符e对应的状态组为(3,1,2,0,0,1,2),候选字符f对应的状态组为(2,1,3,0,4,1),则可以确定候选字符e对应的转移状态为3,候选字符f对应的转移状态为1和2,候选字符g对应的转移状态为2和1,候选字符h对应的转移状态为0和3,候选字符i对应的转移状态为0和0,候选字符j对应的转移状态为1和4,候选字符k对应的转移状态为2和1。
假设,目标状态为状态0,则候选字符h转移为状态0的次数为1,候选字符i转移为状态0的次数为2。
步骤S103,根据次数从多个候选字符中选取当前文本段对应的当前分割字符,利用当前分割字符对当前文本段进行分割获得当前分割字符之后的新的当前文本段。
该步骤中,根据每个候选字符转移为状态0的次数,从多个候选字符中选取出当前文本段M2的当前分割字符。
在一可选实施例中,步骤S103中,根据次数从多个候选字符中选取当前文本段对应的当前分割字符,包括:步骤c1。
步骤c1,将目标状态出现次数最高的候选字符作为当前文本段对应的当前分割字符。
这里,选取状态0的出现次数最高的候选字符作为当前文本段M2对应的当前分割字符。以上述示例为例,由于候选字符i转移为状态0的次数为2,出现次数最多,则选取候选字符i作为当前分割字符。
在一可选实施例中,步骤S103中,利用当前分割字符对当前文本段进行分割获得当前分割字符之后的新的当前文本段,包括:步骤d1及步骤d2。
步骤d1,将当前文本段中的当前分割字符及处于当前分割字符之前的字符对应的文本作为新的前一文本段。
如图5所示,当前分割字符为j,则将字符j之前(包括字符j)到前一分割字符之间的文本段作为新的前一文本段,即M21作为新的前一文本段。
步骤d2,将当前文本段中处于当前分割字符之后的字符对应的文本作为新的当前文本段。
如图5所示,当前分割字符为j,则将字符j之后的文本作为新的当前文本段,即M22为新的当前文本段。
步骤S104,将当前分割字符作为新的前一分割字符,返回执行确定待检测文本中当前文本段的字符数量是否符合文本分割要求的步骤,直至确定待检测文本中的所有文本段。
该步骤中,将当前分割字符j作为新的前一分割字符,返回执行步骤S101,以确定新的当前文本段M22是否符合文本分割要求,如果符合则继续对当前文本段M22进行分割。如果不符合文本分割要求,则说明待检测文本M已经被分割完成,结束文本分割流程。
在本申请实施例中,共将待检测文本分为M1、M21、M22三个文本段。
步骤S105,利用多线程中设置的多个确定型有限自动机同时对所有文本段进行检测,获得待检测文本的文本检测结果。
该步骤中,为每个线程预先装载DFA扫描引擎,将分割获得的多个文本段分发至每个线程进行DFA扫描,在每个文本段进行扫描的过程中,初始状态均设置为0,将这一阶段称为多线程扫描阶段,将分割待检测文本的阶段称为文本分割阶段。这样,可以对多个文本段同时进行检测,提高了检测效率。
在一可选实施例中,多线程的数量与多个文本段的数量相等。
如果多个文本段的数量为5个,则可以利用5个线程分别对这5个文本段进行检测,每个线程对一个文本段进行检测。
为了保证结果的正确性,需要对每个文本段的结束字符的状态进行检测,以保证前一个文本段中结束字符的状态与下一个文本段中结束字符的状态是一致的。
在一可选实施例中,在步骤105之后,还包括:步骤e1、步骤e2、步骤e3、步骤e4、步骤e5。
步骤e1,从多个文本段中选取目标文本段。
按照文本段在待检测文本中的先后顺序,将每个文本段依次作为目标文本段。
以上述示例为例,先将M1作为目标文本段,然后将M21作为目标文本段,最后将M22作为目标文本段。
步骤e2,确定目标文本段的前一文本段中的最后一个字符对应的状态是否为目标状态。
以M21作为目标文本段为例,确定多线程扫描阶段中,目标文本段M21的前一文本段M1中的最后一个字符e对应的转移状态是否为状态0。如果M1中最后一个字符e对应的转移状态等于0,则可确定在多线程扫描阶段中M21的DFA扫描结果是正确的,因为在多线程扫描阶段中,我们假设了每个文本段的初始状态为0,这正好等于M1中最后一个字符e对应的转移状态。
步骤e3,若不是目标状态,则确定目标文本段的检测结果为不正确。
如果M1中最后一个字符e对应的转移状态不等于0,则可确定在多线程扫描阶段中M21的DFA扫描结果是不正确的,因为在多线程扫描阶段中,我们假设了每个文本段的初始状态为0,这与M1中最后一个字符e对应的转移状态不相等。
步骤e4,将目标文本段对应的初始状态设置为前一文本段中的最后一个字符对应的状态,利用确定型有限自动机重新对目标文本段进行检测。
在目标文本段的检测结果为不正确的情况下,将M21的初始状态设置为M1中最后一个字符e在多线程扫描阶段所对应的转移状态,并重新对目标文本段M21进行DFA扫描,扫描完成后,将新的扫描结果替换掉原来的M21的扫描结果,即将M21对应的新的转移状态替换掉原来的转移状态。
步骤e5,将目标文本段的下一文本段作为目标文本段,返回执行确定目标文本段的前一文本段中的最后一个字符对应的状态是否为目标状态的步骤。
将M21的下一个文本段M22作为新的目标文本段,返回执行步骤e2,以对M22的检测结果进行正确性验证,直至结束对待检测文本中所有文本段的正确性验证。
在一可选实施例中,在步骤e2之后,还包括:步骤f1。
步骤f1,若是目标状态,则确定目标文本段的检测结果为正确。
如果M1中最后一个字符e对应的转移状态等于0,则可确定在多线程扫描阶段中M21的DFA扫描结果是正确的,因为在多线程扫描阶段中,我们假设了每个文本段的初始状态为0,这与M1中最后一个字符e对应的转移状态相等。
与现有技术中基于确定型有限自动机的文本检测方法相比,本申请能够根据候选字符转移为目标状态的次数来选取分割字符,利用多个分割字符将待检测文本分割为多个文本段,通过多线程同时对多个文本段进行DFA检测,获得整个待检测文本的文本检测结果,解决了检测效率低及检测效率不稳定的问题。
基于同一发明构思,本申请实施例中还提供了与基于确定型有限自动机的文本检测方法对应的基于确定型有限自动机的文本检测装置,由于本申请实施例中的装置解决问题的原理与本申请实施例上述基于确定型有限自动机的文本检测方法相似,因此装置的实施可以参见方法的实施,重复之处不再赘述。
请参阅图6,图6为本申请实施例所提供的一种基于确定型有限自动机的文本检测装置的结构示意图。如图6中所示,所述基于确定型有限自动机的文本检测装置200包括:
分割要求判断模块201,用于确定待检测文本中当前文本段的字符数量是否符合文本分割要求,当前文本段是基于前一分割字符确定的,前一分割字符为当前文本段之前的前一文本段的结束字符;
转移次数确定模块202,用于若符合文本分割要求,则从当前文本段中选取多个候选字符,确定每个候选字符转移为目标状态的次数;
文本段分割模块203,用于根据次数从多个候选字符中选取当前文本段对应的当前分割字符,利用当前分割字符对当前文本段进行分割获得当前分割字符之后的新的当前文本段;
循环执行模块204,用于将当前分割字符作为新的前一分割字符,返回执行确定待检测文本中当前文本段的字符数量是否符合文本分割要求的步骤,直至确定待检测文本中的所有文本段;
检测结果确定模块205,用于利用多线程中设置的多个确定型有限自动机同时对所有文本段进行检测,获得待检测文本的文本检测结果。
请参阅图7,图7为本申请实施例所提供的一种电子设备的结构示意图。如图7中所示,所述电子设备300包括处理器310、存储器320和总线330。
所述存储器320存储有所述处理器310可执行的机器可读指令,当电子设备300运行时,所述处理器310与所述存储器320之间通过总线330通信,所述机器可读指令被所述处理器310执行时,可以执行如上述图1所示方法实施例中的基于确定型有限自动机的文本检测方法的步骤,具体实现方式可参见方法实施例,在此不再赘述。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个处理器可执行的非易失的计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-OnlyMemory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上所述实施例,仅为本申请的具体实施方式,用以说明本申请的技术方案,而非对其限制,本申请的保护范围并不局限于此,尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本申请实施例技术方案的精神和范围,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以权利要求的保护范围为准。
Claims (10)
1.一种基于确定型有限自动机的文本检测方法,其特征在于,包括:
确定待检测文本中当前文本段的字符数量是否符合文本分割要求,所述当前文本段是基于前一分割字符确定的,所述前一分割字符为所述当前文本段之前的前一文本段的结束字符;
若符合文本分割要求,则从当前文本段中选取多个候选字符,确定每个候选字符转移为目标状态的次数;
根据所述次数从所述多个候选字符中选取所述当前文本段对应的当前分割字符,利用所述当前分割字符对所述当前文本段进行分割获得所述当前分割字符之后的新的当前文本段;
将所述当前分割字符作为新的前一分割字符,返回执行所述确定待检测文本中当前文本段的字符数量是否符合文本分割要求的步骤,直至确定所述待检测文本中的所有文本段;
利用多线程中设置的多个确定型有限自动机同时对所有文本段进行检测,获得所述待检测文本的文本检测结果。
2.根据权利要求1所述的方法,其特征在于,所述确定每个候选字符转移为目标状态的次数,包括:
从所述多个候选字符中选取目标候选字符;
将所述目标候选字符对应的初始状态设置为目标状态,利用所述确定型有限自动机遍历所述目标候选字符之后的每个候选字符,获得该目标候选字符对应的状态组,所述状态组包括除所述目标候选字符及所述目标候选字符之前的候选字符外的每个候选字符对应的状态;
将所述目标候选字符的下一个候选字符作为新的目标候选字符,返回执行所述将所述目标候选字符对应的初始状态设置为目标状态的步骤,直至所有候选字符均作为目标候选字符;
根据所有目标候选字符对应的状态组,确定每个候选字符转移为目标状态的次数。
3.根据权利要求1所述的方法,其特征在于,在所述获得所述待检测文本的文本检测结果之后,还包括:
从多个文本段中选取目标文本段;
确定所述目标文本段的前一文本段中的最后一个字符对应的状态是否为目标状态;
若不是目标状态,则确定所述目标文本段的检测结果为不正确;
将所述目标文本段对应的初始状态设置为所述前一文本段中的最后一个字符对应的状态,利用所述确定型有限自动机重新对所述目标文本段进行检测;
将所述目标文本段的下一文本段作为目标文本段,返回执行所述确定所述目标文本段的前一文本段中的最后一个字符对应的状态是否为目标状态的步骤。
4.根据权利要求1所述的方法,其特征在于,所述根据所述次数从所述多个候选字符中选取所述当前文本段对应的当前分割字符,包括:
将目标状态出现次数最高的候选字符作为当前文本段对应的当前分割字符。
5.根据权利要求1所述的方法,其特征在于,所述利用所述当前分割字符对所述当前文本段进行分割获得所述当前分割字符之后的新的当前文本段,包括:
将所述当前文本段中的所述当前分割字符及处于所述当前分割字符之前的字符对应的文本作为新的前一文本段;
将所述当前文本段中处于所述当前分割字符之后的字符对应的文本作为新的当前文本段。
6.根据权利要求3所述的方法,其特征在于,在所述确定所述目标文本段的前一文本段中的最后一个字符对应的状态是否为目标状态之后,还包括:
若是目标状态,则确定所述目标文本段的检测结果为正确。
7.根据权利要求1所述的方法,其特征在于,所述若符合文本分割要求,则从当前文本段中选取多个候选字符,包括:
选取所述当前文本段中前第一预设数量的字符之后的多个字符作为候选字符。
8.根据权利要求1所述的方法,其特征在于,所述多线程的数量与多个文本段的数量相等。
9.一种基于确定型有限自动机的文本检测装置,其特征在于,包括:
分割要求判断模块,用于确定待检测文本中当前文本段的字符数量是否符合文本分割要求,所述当前文本段是基于前一分割字符确定的,所述前一分割字符为所述当前文本段之前的前一文本段的结束字符;
转移次数确定模块,用于若符合文本分割要求,则从当前文本段中选取多个候选字符,确定每个候选字符转移为目标状态的次数;
文本段分割模块,用于根据所述次数从所述多个候选字符中选取所述当前文本段对应的当前分割字符,利用所述当前分割字符对所述当前文本段进行分割获得所述当前分割字符之后的新的当前文本段;
循环执行模块,用于将所述当前分割字符作为新的前一分割字符,返回执行所述确定待检测文本中当前文本段的字符数量是否符合文本分割要求的步骤,直至确定所述待检测文本中的所有文本段;
检测结果确定模块,用于利用多线程中设置的多个确定型有限自动机同时对所有文本段进行检测,获得所述待检测文本的文本检测结果。
10.一种电子设备,其特征在于,包括:处理器、存储介质和总线,所述存储介质存储有所述处理器可执行的机器可读指令,当电子设备运行时,所述处理器与所述存储介质之间通过总线通信,所述处理器执行所述机器可读指令,以执行如权利要求1至8中任一项所述的基于确定型有限自动机的文本检测方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410153901.8A CN117690153B (zh) | 2024-02-04 | 2024-02-04 | 一种基于确定型有限自动机的文本检测方法、装置及设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410153901.8A CN117690153B (zh) | 2024-02-04 | 2024-02-04 | 一种基于确定型有限自动机的文本检测方法、装置及设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117690153A CN117690153A (zh) | 2024-03-12 |
CN117690153B true CN117690153B (zh) | 2024-04-05 |
Family
ID=90132381
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202410153901.8A Active CN117690153B (zh) | 2024-02-04 | 2024-02-04 | 一种基于确定型有限自动机的文本检测方法、装置及设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117690153B (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101645069A (zh) * | 2008-08-04 | 2010-02-10 | 中国科学院计算机网络信息中心 | 一种多模式匹配中正则表达式存储压缩方法 |
CN103685222A (zh) * | 2013-09-05 | 2014-03-26 | 北京科能腾达信息技术股份有限公司 | 基于确定性有穷状态自动机的数据匹配检测方法 |
CN115146633A (zh) * | 2022-06-23 | 2022-10-04 | 中国电信股份有限公司 | 一种关键词识别方法、装置、电子设备及存储介质 |
CN115994535A (zh) * | 2023-01-09 | 2023-04-21 | 珠海金山数字网络科技有限公司 | 文本处理方法及装置 |
CN117493622A (zh) * | 2023-12-28 | 2024-02-02 | 苏州元脑智能科技有限公司 | 基于现场可编程阵列器件的字符串的查询方法和装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111274353B (zh) * | 2020-01-14 | 2023-08-01 | 百度在线网络技术(北京)有限公司 | 文本切词方法、装置、设备和介质 |
-
2024
- 2024-02-04 CN CN202410153901.8A patent/CN117690153B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101645069A (zh) * | 2008-08-04 | 2010-02-10 | 中国科学院计算机网络信息中心 | 一种多模式匹配中正则表达式存储压缩方法 |
CN103685222A (zh) * | 2013-09-05 | 2014-03-26 | 北京科能腾达信息技术股份有限公司 | 基于确定性有穷状态自动机的数据匹配检测方法 |
CN115146633A (zh) * | 2022-06-23 | 2022-10-04 | 中国电信股份有限公司 | 一种关键词识别方法、装置、电子设备及存储介质 |
CN115994535A (zh) * | 2023-01-09 | 2023-04-21 | 珠海金山数字网络科技有限公司 | 文本处理方法及装置 |
CN117493622A (zh) * | 2023-12-28 | 2024-02-02 | 苏州元脑智能科技有限公司 | 基于现场可编程阵列器件的字符串的查询方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN117690153A (zh) | 2024-03-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9983984B2 (en) | Automated modularization of graphical user interface test cases | |
JP7115552B2 (ja) | 解析機能付与装置、解析機能付与方法及び解析機能付与プログラム | |
US20190317879A1 (en) | Deep learning for software defect identification | |
CN105468588A (zh) | 字符串匹配方法和装置 | |
CN117675417B (zh) | 一种文本的快速扫描方法、装置、电子设备及存储介质 | |
WO2018177598A1 (en) | Method for automatic detection of a functional primitive in a model of a hardware system | |
Faro et al. | An efficient skip-search approach to swap matching | |
CN105404635B (zh) | 字符串匹配的方法、设备和异构计算系统 | |
Faro et al. | A multiple sliding windows approach to speed up string matching algorithms | |
CN117690153B (zh) | 一种基于确定型有限自动机的文本检测方法、装置及设备 | |
JP6613019B2 (ja) | パターンを探索する装置 | |
KR102255470B1 (ko) | 인공신경망 모델의 검증 방법 및 장치 | |
CN116009889A (zh) | 深度学习模型的部署方法、装置、电子设备及存储介质 | |
JPS6126112A (ja) | システムの異常診断方式 | |
CN114610751A (zh) | 地理计算语言的结构化参数解析方法、装置、设备及介质 | |
CN118132676A (zh) | 一种文本的检测方法及装置 | |
CN117975485B (zh) | 一种字符串的扫描方法、装置、电子设备及存储介质 | |
Fornasini et al. | Identification problems for Boolean networks and Boolean control networks | |
Kurniawan et al. | A new string matching algorithm based on logical indexing | |
Fogler et al. | Accelerating black box testing with light-weight learning | |
CN113609720B (zh) | 一种有限元分析的主从自由度处理方法、设备及存储介质 | |
CN110826713B (zh) | 一种获取专用卷积核的方法及装置 | |
CN109325496B (zh) | 基于字符去除的弹幕校验方法、装置、终端及存储介质 | |
CN117112644A (zh) | 基于过程挖掘的异常发现方法和装置 | |
Antunes et al. | Building an automaton towards reverse protocol engineering |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |