CN117971357B - 有限状态自动机验证方法、装置、电子设备及存储介质 - Google Patents

有限状态自动机验证方法、装置、电子设备及存储介质 Download PDF

Info

Publication number
CN117971357B
CN117971357B CN202410376355.4A CN202410376355A CN117971357B CN 117971357 B CN117971357 B CN 117971357B CN 202410376355 A CN202410376355 A CN 202410376355A CN 117971357 B CN117971357 B CN 117971357B
Authority
CN
China
Prior art keywords
character
index
vector
characters
finite state
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
Application number
CN202410376355.4A
Other languages
English (en)
Other versions
CN117971357A (zh
Inventor
童浩南
任智新
张闯
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Suzhou Metabrain Intelligent Technology Co Ltd
Original Assignee
Suzhou Metabrain Intelligent Technology Co Ltd
Filing date
Publication date
Application filed by Suzhou Metabrain Intelligent Technology Co Ltd filed Critical Suzhou Metabrain Intelligent Technology Co Ltd
Priority to CN202410376355.4A priority Critical patent/CN117971357B/zh
Publication of CN117971357A publication Critical patent/CN117971357A/zh
Application granted granted Critical
Publication of CN117971357B publication Critical patent/CN117971357B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Abstract

本发明涉及计算机技术领域,提供一种有限状态自动机验证方法、装置、电子设备及存储介质,该方法包括:基于符合待验证的正则表达式的多个字符串,生成正则表达式对应的索引数据集;对每个字符串,以任一字符为中心字符,预设滑动窗口大小内的字符为背景字符,生成中心字符索引列表和每个中心字符对应的背景字符索引列表;构建以中心字符生成背景字符的概率图模型,采用符合正则表达式的多个字符串中字符索引为样本,对概率图模型进行训练,得到字符作为中心字符时的向量参数,通过有限状态自动机中连接到同一状态的两字符的第一向量的第一相似度验证有限状态自动机的准确性和合理性,从而实现了自动且高效地验证自动机的准确性或合理性的目的。

Description

有限状态自动机验证方法、装置、电子设备及存储介质
技术领域
本发明涉及计算机技术领域,尤其涉及一种有限状态自动机验证方法、装置、电子设备及存储介质。
背景技术
现场可编程门阵列(Field Programmable Gate Array,FPGA)是一种硬件芯片,以其独特的多次重新编程能力而闻名,一旦编程,其表现出类似于专用集成电路(ASIC)的性能及行为。现有相关技术中,这些芯片使用Verilog或VHDL等硬件描述语言进行编程,然而,最近的技术进步可以引入了高级语言和合成工具,有助于将C/C++或OpenCL代码翻译成逻辑门,从而实现采用高级程序语言对FPGA编程。由于FPGA上的片上静态随机存取存储器(通常称为块RAM或BRAM)的容量有限,通常只有几兆字节大小,独立板(被设计为独立运行的电路板,具体是指完全配备一个或多个 FPGA以及必要的硬件组件的印刷电路板PCB,以使FPGA正常运行,而无需来自其它板或系统的额外处理或计算资源)经常被用作流处理的“线中凸块(bump in the wire)”加速器,这种策略有助于避免对大量数据或计算状态存储的需要。然而,当代FPGA板通常集成有几GB范围内的DDR存储器,尽管其访问延迟稍高于片上静态随机存取存储器,但是也能满足大量数据或计算状态存储的需求。
正则表达式匹配(REM)是流行的入侵检测系统(如Snort和Bro)使用的一种重要机制。由于要扫描的模式数量众多,网络流量的带宽不断增加,正则表达式匹配不仅成为瓶颈,而且成为使用它的网络安全系统的一个漏洞。目前,对于CPU上的软件解决方案以及GPU上的各种解决方案,随着表达式复杂性的增加,很快就会受到计算限制。因此,采用专用的FPGA来代替CPU或GPU用于加速网络中的正则表达式,而且FPGA中的DDR存储器也能支持处理器(CPU)将正则表达式对应的有限自动机的图结构存储为配置信息,并将配置信息传输至FPGA中的DDR存储器,使得FPGA根据该配置信息执行相应的硬件加速。
现有相关技术的正则加速方案中,CPU可将正则表达式转换为单字符的非确定的有限自动机(Nondeterministic Finite Automaton,NFA)或确定的有限自动机(Deterministic Finite Automaton,DFA)。对于NFA,具体可使用经典的Thompson构造法即可,以正则表达式p(ab)(r|n)为例进行说明,转换得到的NFA如图1所示,其中,Si为初始状态,Sf为最终的接受状态,ε代表任意的字符。构造NFA由CPU上的构造程序自动生成,构造程序的输入是正则表达式,输出是NFA堆栈。由于正则表达式往往很长,而且数量很多,经常需要修改,即便使用程序来自动实现自动机的生成,能够提高自动机构造方案的效率,但是在程序开发和部署过程中仍然需要大量的开发案例对自动生成的自动机的准确性或合理性进行验证。然而考虑联机分析处理(On-line Analytical Processing,OLAP)业务数据业务大量灵活的案例,有限的开发人力和资源,遍历所有可能的正则查询难以实现。因此,如何高效率地验证自动生成的自动机的准确性或合理性是目前亟待解决的技术问题。
发明内容
本发明提供一种有限状态自动机验证方法、装置、电子设备及存储介质,用以解决现有技术中无法高效率地验证自动生成的自动机的准确性或合理性。
本发明提供一种有限状态自动机验证方法,包括:
基于符合待验证的正则表达式的多个字符串,生成所述正则表达式对应的索引数据集,所述索引数据集包含多个所述字符串中字符的索引,所述待验证的正则表达式中的相同字符对应相同的索引;
对每个所述字符串,以任一字符为中心字符,预设滑动窗口大小内的字符为背景字符,生成中心字符索引列表和每个中心字符对应的背景字符索引列表;
构建以所述中心字符生成背景字符的概率图模型,所述概率图模型的参数包括:以所述任一字符作为中心字符的第一向量及作为背景字符的第二向量;
基于中心字符索引列表中字符的第一向量和背景字符索引列表中字符的第二向量为参数训练所述概率图模型,更新所述第一向量和第二向量,在所述概率图模型的损失函数收敛时,得到所述第一向量和第二向量;
对每个字符串,计算所述待验证的正则表达式生成的有限状态自动机中,连接到同一状态的两字符的第一向量的第一相似度,在所述第一相似度大于第一预设相似度阈值的情况下,确定所述有限状态自动机达到第一合格等级。
根据本发明提供的一种有限状态自动机验证方法,基于符合待验证的正则表达式的多个字符串,生成所述正则表达式对应的索引数据集,包括:
读取符合待验证的正则表达式的多个字符串;
对每个所述字符串进行字符分割,生成包括所述字符串对应的字符列表的字符数据集;
按所述待验证的正则表达式中字符预设的索引,替换所述字符数据集中对应的字符,以生成所述索引数据集。
根据本发明提供的一种有限状态自动机验证方法,对每个所述字符串进行字符分割,生成包括所述字符串对应的字符列表的字符数据集,包括:
对每个所述字符串进行字符分割,生成包括所述字符串对应的字符列表的初始数据集;
统计所述初始数据集中每个字符的出现次数;
删除所述初始数据集中出现次数小于预设次数阈值的字符,以得到所述字符数据集。
根据本发明提供的一种有限状态自动机验证方法,在对每个所述字符串,以任一字符为中心字符,预设滑动窗口大小内的字符为背景字符,生成中心字符索引列表和每个中心字符对应的背景字符索引列表之前,还包括:
统计所述索引数据集中的各索引的出现频次,按预设策略删除部分出现频次高于预设频次阈值的高频索引,以降低所述高频索引的频次。
根据本发明提供的一种有限状态自动机验证方法,统计所述索引数据集中的各索引的出现频次,按预设策略删除部分出现频次高于预设频次阈值的高频索引,以降低所述高频索引的频次,包括:
统计所述索引数据集中所有索引的索引总数和每个索引的出现频次;
遍历所述索引数据集中的每个索引,针对遍历的当前索引,基于所述索引总数和当前索引的出现频次,确定当前索引的删除概率,在所述删除概率大于预设的随机概率的情况下,从所述索引数据集中删除所述当前索引,并更新所述索引数据集的索引总数及被删除索引的出现频次。
根据本发明提供的一种有限状态自动机验证方法,基于所述索引总数和当前索引的出现频次,确定当前索引的删除概率,在所述删除概率大于预设的随机概率的情况下,从所述索引数据集中删除所述当前索引,包括:满足如下公式的情况下,从所述索引数据集中删除所述当前索引:
random.uniform(0, 1)<1 - math.sqrt((a × num) / counter(idx))
其中,random.uniform(0, 1)表示取0到1之间的随机数,math.sqrt( )表示取平方根函数,counter(idx)表示统计当前索引idx的出现频次的函数,num表示所述索引数据集中所有索引的索引总数,a为常数。
根据本发明提供的一种有限状态自动机验证方法,所述a的取值为[1e-5, 1e-3]。
根据本发明提供的一种有限状态自动机验证方法,对每个所述字符串,以任一字符为中心字符,预设滑动窗口大小内的字符为背景字符,生成中心字符索引列表和每个中心字符对应的背景字符索引列表,包括:
基于所述索引数据集中每个字符串中的每一索引对应字符为中心字符,生成所述中心字符索引列表;
对于任一中心字符,按预设滑动窗口大小从所述任一中心字符一侧获取第一字符索引子列表,且按预设滑动窗口大小从所述任一中心字符另一侧获取第二字符索引子列表,基于所述第一字符索引子列表和所述第二字符索引子列表生成任一中心字符对应的所述背景字符索引列表。
根据本发明提供的一种有限状态自动机验证方法,对于任一中心字符,所述预设滑动窗口大小是通过随机函数在[1, max_window_size]范围内随机选择确定的,其中,max_window_size表示最大滑动窗口。
根据本发明提供的一种有限状态自动机验证方法,对于符合所述待验证的正则表达式的任一字符串,所述概率图模型为最大似然函数,按如下公式表示:
(1)
(2)
其中,表示索引为j的中心字符/>在对应的背景窗口大小范围内存在索引为i的背景字符/>的概率,/>为所述任一字符串的中心字符索引列表,/>为中心字符/>对应的背景字符索引列表,/>表示/>为中心字符时对应的第一向量,/>表示/>为背景字符时对应的第二向量,exp( )表示自然常数e为底的指数函数,/>表示/>的转置向量。
根据本发明提供的一种有限状态自动机验证方法,基于中心字符索引列表中字符的第一向量和背景字符索引列表中字符的第二向量为参数训练所述概率图模型,更新所述第一向量和第二向量,在所述概率图模型的损失函数收敛时,得到所述第一向量和第二向量,包括:
对公式(1)表示的概率图模型进行取对数优化操作得到:
(3)
其中,为:
(4)
以公式(3)为概率图模型的损失函数训练所述概率图模型,在损失函数收敛时,得到所述第一向量和第二向量。
根据本发明提供的一种有限状态自动机验证方法,以公式(3)为概率图模型的损失函数训练所述概率图模型,在损失函数收敛时,得到所述第一向量和第二向量,包括:
按以下公式对公式(4)计算随机梯度;
(5)
(6)
将公式(5)和(6)代入公式(3)的损失函数,在梯度下降到所述损失函数的值不再减小时,概率图模型训练完成,获取此时的第一向量和第二向量/>
根据本发明提供的一种有限状态自动机验证方法,采用负采样理论对上述公式(2)变换,得到:
(7)
(8)
其中,表示大小为K的索引子集,对于字符/>,表示/>不属于中心字符/>的背景字符,K为超参数,/>为二焦点曲线函数;
将公式(7)代入公式(3)的损失函数,训练所述概率图模型,在损失函数收敛时,得到所述第一向量和第二向量。
根据本发明提供的一种有限状态自动机验证方法,计算所述待验证的正则表达式生成的有限状态自动机中,连接到同一状态的两字符的第一向量的第一相似度,包括:
基于余弦相似度函数或者二焦点曲线函数,计算所述待验证的正则表达式生成的有限状态自动机中,连接到同一状态的两字符的第一向量的第一相似度。
根据本发明提供的一种有限状态自动机验证方法,所述余弦相似度函数为:
其中,和/>分别表示所述待验证的正则表达式中,连接到有限状态自动机同一状态的两字符各自作为中心字符的第一向量。
根据本发明提供的一种有限状态自动机验证方法,在对每个字符串,计算所述待验证的正则表达式生成的有限状态自动机中,连接到同一状态的两字符的第一向量的第一相似度,在所述第一相似度大于第一预设相似度阈值的情况下,确定所述有限状态自动机达到第一合格等级之后,还包括:
对每个字符串,计算所述待验证的正则表达式生成的有限状态自动机中,连接到不同状态的两字符的第一向量的第二相似度,在所述第二相似度小于第二预设相似度阈值的情况下,确定所述有限状态自动机达到第二合格等级,其中,所述第一预设相似度阈值大于所述第二预设相似度阈值,所述第二合格等级高于第一合格等级。
根据本发明提供的一种有限状态自动机验证方法,所述第一相似度为90%~95%,所述第二相似度为30%~40%。
本发明还提供一种有限状态自动机验证装置,包括:
索引数据集生成模块,用于基于符合待验证的正则表达式的多个字符串,生成所述正则表达式对应的索引数据集,所述索引数据集包含多个所述字符串中字符的索引,所述待验证的正则表达式中的相同字符对应相同的索引;
索引列表生成模块,用于对每个所述字符串,以任一字符为中心字符,预设滑动窗口大小内的字符为背景字符,生成中心字符索引列表和每个中心字符对应的背景字符索引列表;
概率图模型构建模块,用于构建以所述中心字符生成背景字符的概率图模型,所述概率图模型的参数包括:以所述任一字符作为中心字符的第一向量及作为背景字符的第二向量;
概率图模型训练模块,用于基于中心字符索引列表中字符的第一向量和背景字符索引列表中字符的第二向量为参数训练所述概率图模型,更新所述第一向量和第二向量,在所述概率图模型的损失函数收敛时,得到所述第一向量和第二向量;
自动机验证模块,用于对每个字符串,计算所述待验证的正则表达式生成的有限状态自动机中,连接到同一状态的两字符的第一向量的第一相似度,在所述第一相似度大于第一预设相似度阈值的情况下,确定所述有限状态自动机达到第一合格等级。
本发明还提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如上述任一种所述的有限状态自动机验证方法。
本发明还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如上述任一种所述的有限状态自动机验证方法。
本发明提供的有限状态自动机验证方法、装置、电子设备及存储介质,通过基于符合待验证的正则表达式的多个字符串,生成所述正则表达式对应的索引数据集,所述索引数据集包含多个所述字符串中字符的索引,所述待验证的正则表达式中的相同字符对应相同的索引;对每个所述字符串,以任一字符为中心字符,预设滑动窗口大小内的字符为背景字符,生成中心字符索引列表和每个中心字符对应的背景字符索引列表;构建以所述中心字符生成背景字符的概率图模型,所述概率图模型的参数包括:以所述任一字符作为中心字符的第一向量及作为背景字符的第二向量;基于中心字符索引列表中字符的第一向量和背景字符索引列表中字符的第二向量为参数训练所述概率图模型,更新所述第一向量和第二向量,在所述概率图模型的损失函数收敛时,得到所述第一向量和第二向量;对每个字符串,计算所述待验证的正则表达式生成的有限状态自动机中,连接到同一状态的两字符的第一向量的第一相似度,在所述第一相似度大于第一预设相似度阈值的情况下,确定所述有限状态自动机达到第一合格等级。即采用符合待验证的正则表达式的多个字符串中字符索引为样本,对中心字符生成背景字符的概率图模型进行训练,得到字符作为中心字符时的向量参数(即第一向量),通过有限状态自动机中连接到同一状态的两字符的第一向量的第一相似度来验证有限状态自动机的准确性和合理性,从而实现了自动且高效率地验证自动生成的自动机的准确性或合理性的目的。
附图说明
为了更清楚地说明本发明或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是根据正则表达式p(ab) (r|n)自动生成的有限状态自动机的示意图;
图2是本发明提供的有限状态自动机验证方法的流程示意图之一;
图3是本发明提供的有限状态自动机验证方法的流程示意图之二;
图4是本发明提供的有限状态自动机验证方法的流程示意图之三;
图5是本发明提供的有限状态自动机验证方法的流程示意图之四;
图6是本发明提供的有限状态自动机验证方法的流程示意图之五;
图7是本发明提供的有限状态自动机验证方法中正则表达式p(ab) (r|n)的字符b为中心字符生成背景字符p、a和r的示意图;
图8是本发明提供的有限状态自动机验证方法应用场景示意图;
图9是本发明提供的有限状态自动机验证装置的结构示意图;
图10是本发明提供的电子设备的结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明中的附图,对本发明中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例的有限状态自动机验证方法,如图2所示,包括:
步骤S210:基于符合待验证的正则表达式的多个字符串,生成所述正则表达式对应的索引数据集,所述索引数据集包含多个所述字符串中字符的索引,所述待验证的正则表达式中的相同字符对应相同的索引。其中,符合待验证的正则表达式的字符串即为与待验证的正则表达式的正则规则相匹配的字符串,有限状态自动机为根据待验证的正则表达式生成的有限状态自动机,因此,需要通过符合待验证的正则表达式的多个字符串作为样本数据来验证有限状态自动机的准确性和合理性。本步骤中,对符合待验证的正则表达式的多个字符串中的每个字符匹配索引,相同字符索引相同,从而生成正则表达式对应的索引数据集。具体地,不同的字符串包含正则表达式中的字符及数量(字符串长度)不同,因此,索引数据集的数据结构可以是包括:多个字符串的列表,每个字符串对应一个该字符串中字符的索引列表,即索引列表中包含对应字符串中每个字符的索引。
步骤S220:对每个所述字符串,以任一字符为中心字符,预设滑动窗口大小内的字符为背景字符,生成中心字符索引列表和每个中心字符对应的背景字符索引列表。本步骤中,对于每个字符串,每个字符都作为中心字符,生成中心字符索引列表,即中心字符索引列表中包含字符串中的每个字符的索引。对于任一个中心字符,按预设滑动窗口大小获取该中心字符两侧的字符为背景字符,具体地,基于步骤S210中生成的索引数据集中的对应字符串的索引列表,以中心字符对应的索引为中心,获取位于预设滑动窗口大小范围内的索引为背景字符对应的索引,从而生成任一中心字符对应的背景字符索引列表。
需要说明的是:对于长度小于2的字符串,即只有一个字符的字符串,其索引数据集中索引列表只有该字符的一个索引,无法形成中心字符和背景字符的概念,因此,对于长度小于2的字符串不做步骤S220的操作。
步骤S230:构建以所述中心字符生成背景字符的概率图模型,该概率图模型的含义表示以任一字符为中心字符时,其两侧存在相应的背景字符的概率。所述概率图模型的参数包括:以所述任一字符作为中心字符的第一向量及作为背景字符的第二向量。本步骤中,对于符合待验证的正则表达式的每个字符串中的每个字符都定义两个向量,即该字符作为中心字符的第一向量,以及该字符作为背景字符的第二向量,为了便于后续模型计算,第一向量和第二向量均为数值向量。例如:第一向量为(1, 2),第二向量为(3, 4),对于每个字符的两个向量的初始值均可随机确定。
步骤S240:基于中心字符索引列表中字符的第一向量和背景字符索引列表中字符的第二向量为参数训练所述概率图模型,更新所述第一向量和第二向量,在所述概率图模型的损失函数收敛时,得到所述第一向量和第二向量。对于符合待验证的正则表达式的每个字符串,其中具有中心字符和背景字符关系的多个目标字符的相应向量(中心字符的第一向量,背景字符的第二向量)作为参数代入概率图模型,模型训练的过程即为更新参数(即更新第一向量和第二向量)使得概率图模型的损失函数收敛。由于事先确定多个目标字符具有中心字符和背景字符关系,损失函数收敛时,模型训练完成,概率图模型的概率值应该最大,接近于1,此时,会得到各个字符作为中心字符的第一向量和作为背景字符时的第二向量。
步骤S250:对每个字符串,计算所述待验证的正则表达式生成的有限状态自动机中,连接到同一状态的两字符的第一向量的第一相似度,在所述第一相似度大于第一预设相似度阈值(例如:95%)的情况下,确定所述有限状态自动机达到第一合格等级。假设由待验证的正则表达式生成的有限状态自动机具有较高的准确性和合理性,那么连接到同一状态的两目标字符在同一满足正则表达式的字符串中分别作为中心字符时,两者具有相似背景字符,因此,模型训练完成后,两个目标字符的第一向量也具有较高的相似度。基于上述原理,本步骤中,可通过连接到有限状态自动机同一状态的两字符的第一向量的第一相似度来判断有限状态自动机是否准确和合理。具体地,计算所述待验证的正则表达式生成的有限状态自动机中,连接到同一状态的两字符的第一向量的第一相似度,在所述第一相似度大于第一预设相似度阈值的情况下,确定所述有限状态自动机达到第一合格等级。第一合格等级表示根据待验证的正则表达式自动生成的有限状态自动机具有较高的准确性和合理性。其中,连接到有限状态自动机同一状态的两目标字符可从处理器发送给FPGA的该有限状态自动机的配置信息中获取。
本实施例的有限状态自动机验证方法中,采用符合待验证的正则表达式的多个字符串中字符索引为样本,对中心字符生成背景字符的概率图模型进行训练,得到字符作为中心字符时的向量参数(即第一向量),通过有限状态自动机中连接到同一状态的两字符的第一向量的第一相似度来验证有限状态自动机的准确性和合理性,从而实现了自动且高效率地验证自动生成的自动机的准确性或合理性的目的。
在一些实施例中,步骤S210的具体流程如图3所示,包括:
步骤S310:读取符合待验证的正则表达式的多个字符串。具体地,符合待验证的正则表达式的多个字符串可以预先写入一个数据文件中,该数据文件中,每行为一个字符串,按行读取该数据文件即可读取到符合待验证的正则表达式的多个字符串。例如:正则表达式:p(ab) (r|n),根据该正则表达式生成的有限状态自动机如图1所示,满足该正则表达式的字符串包括:pabr、pababr、pabn、pr、pn以及pabababn等。
步骤S320:对每个所述字符串进行字符分割,生成包括所述字符串对应的字符列表的字符数据集。具体地,对字符串按字符进行分割,分成单个字符,字符数据集包括一个字符串列表,每个字符串对应一个由相应字符串中单个字符组成的字符列表,字符列表中,每个字符为一个元素。例如:字符串列表的元素包括上述字符串pabr、pababr、pabn、pr、pn以及pabababn,对于字符串pabr的字符列表的元素包括:字符p、a、b和r。
步骤S330:按所述待验证的正则表达式中字符预设的索引,替换所述字符数据集中对应的字符,以生成所述索引数据集。其中,字符的索引是预先设定好的,例如:正则表达式:p(ab) (r|n),字符p、a、b、r和n的索引分别是1、2、3、4和5。本步骤中,采用1、2、3、4和5替换步骤S320中的字符列表中的字符p、a、b、r和n,即得到索引数据集。
进一步地,步骤S320的具体流程如图4所示,包括:
步骤S410:对每个所述字符串进行字符分割,生成包括所述字符串对应的字符列表的初始数据集。此时,初始数据集包含所有字符串中所有的字符。
步骤S420:统计所述初始数据集中每个字符的出现次数,即对初始数据集中相同字符进行数量统计。例如:对于上述字符串pabr、pababr、pabn、pr、pn以及pabababn,最终统计结果为:字符p、a、b、r和n各自出现次数为:6次、7次、7次、3次和3次。本步骤中,还可以得到初始数据集中的字符总量。
步骤S430:删除所述初始数据集中出现次数小于预设次数阈值的字符,以得到所述字符数据集。其中,预设次数阈值可根据实际情况设定,在有大量字符串样本的情况下,例如:设置为5次。本步骤中,还可以得到字符数据集中的字符总量,例如:从较大数据量的字符串数据文件中获取字符,并删除现次数小于5次的字符,得到有效字符887100个。
本实施例中,过滤掉出现次数少于预设次数阈值的字符,以减少噪声数据或不常见的字符(正则表达式中在实际字符串中出现较少的字符)对后续概率图模型的影响,提高验证效率和准确性。
在一些实施例中,在步骤S220之前还包括:统计所述索引数据集中的各索引的出现频次,按预设策略删除部分出现频次高于预设频次阈值的高频索引,以降低所述高频索引的频次,也即降低高频字符的频次。
本实施例中,通过减少高频字符的出现频次,帮助概率图模型更加平衡地学习索引数据集中索引及索引对应的字符。这样,在执行后续的步骤,即提取中心字符及其背景字符时,概率图模型不会过度偏向于高频字符,从而能够更加有效地学习字符之间的关系。而且通过减少一些高频字符的出现,可以使得背景字符的选择更加丰富多样,减少因高频字符过多导致的背景字符信息冗余。通过减少高频字符,在提取中心字符及其背景字符时,有助于构建更具信息量的训练样本,从而提高正则表达式字符表示的学习效率和质量。
通过减高频字符,使高频字符和较低频字符几乎同比例出现的好处有如下三个方面:
1、语义丰富性:较低频字符往往包含更具体的信息和更丰富的语义。在模型训练时,同时考虑高频字符和较低频字符可以帮助模型学习到字符之间更加细致的语义关系,提高模型对语言的理解能力。
2、模型鲁棒性:将高频字符和较低频字符同时纳入训练,可以增加模型处理不同类型文本的鲁棒性。模型不仅能够处理常见的字符组合,也能够有效处理含有较少见字符的文本,这对于自然语言处理任务尤为重要。
3、避免过拟合:仅依赖高频字符进行训练可能会导致模型对这些字符过度拟合,忽略了语料库中的其他重要信息。通过确保较低频字符也出现在训练数据中,模型可以更全面地学习语料库的特性,避免过拟合于特定的字符或表达方式。
在一些实施例中,统计所述索引数据集中的各索引的出现频次,按预设策略删除部分出现频次高于预设频次阈值的高频索引,以降低所述高频索引的频次的具体流程如图5所示,包括:
步骤S510:统计所述索引数据集中所有索引的索引总数和每个索引的出现频次。
步骤S520:遍历所述索引数据集中的每个索引,针对遍历的当前索引,基于所述索引总数和当前索引的出现频次,确定当前索引的删除概率,在所述删除概率大于预设的随机概率的情况下,从所述索引数据集中删除所述当前索引,并更新所述索引数据集的索引总数及被删除索引的出现频次。本实施例中,通过索引总数、当前索引的出现频次、删除概率以及随机概率来随机删除部分高频索引,能够自动且高效地删除部分高频索引,使得对应索引的频次降低,而且删除索引后,更新索引数据集的索引总数,在遍历下一个索引时能够准确地计算该索引对应的删除概率。
本实施例中,基于所述索引总数和当前索引的出现频次,确定当前索引的删除概率,在所述删除概率大于预设的随机概率的情况下,从所述索引数据集中删除所述当前索引,包括:满足如下公式的情况下,从所述索引数据集中删除所述当前索引:
random.uniform(0, 1)<1 - math.sqrt((a × num) / counter(idx))
其中,random.uniform(0, 1)表示取0到1之间的随机数,math.sqrt( )表示取平方根函数,counter(idx)表示统计当前索引idx的出现频次的函数,num表示所述索引数据集中所有索引的索引总数,a为常数,表示删除高频索引的激进程度,a越小,表示删除高频索引的激进程度越激进。本实施例中,所述a的取值可根据实际情况设定,优选地,a的取值设为:[1e-5, 1e-3],如:1e-4。采用上述公式使得高频索引被丢弃的概率增加,而低频索引被保留的概率也相对增加,从而达到样本数据的平衡。
在一些实施例中,步骤S220的具体流程如图6所示,包括:
步骤S610:基于所述索引数据集中每个字符串中的每一索引对应字符为中心字符,生成所述中心字符索引列表。对于符合待验证的正则表达式的每个字符串,其中的每个字符都可以作为中心字符,因此,中心字符索引列表中的元素即为字符串中每个字符的索引。
步骤S620:对于任一中心字符,按预设滑动窗口大小从所述任一中心字符一侧获取第一字符索引子列表,且按预设滑动窗口大小从所述任一中心字符另一侧获取第二字符索引子列表,基于所述第一字符索引子列表和所述第二字符索引子列表生成任一中心字符对应的所述背景字符索引列表。例如:上述字符串pabababn,以中间的字符‘b’为中心字符,若滑动窗口大小为3,那么中心字符‘b’对应的背景字符为:a、b、a、a、b和n,背景字符索引列表中的元素包括:2、3、2、2、3和5。
进一步地,对于任一中心字符,所述预设滑动窗口大小是通过随机函数在[1,max_window_size]范围内随机选择确定的,其中,max_window_size表示最大滑动窗口。最大滑动窗口max_window_size的具体值根据实际情况设定,例如:max_window_size = 10,那么滑动窗口大小可以随机取1~10的任意整数。对于符合待验证的正则表达式的每个字符串,其任一中心字符的滑动窗口大小随机选取,而且不一定相同,在后续概率图模型训练时,每个中心字符的背景字符数量不一定相同,增加了模型训练时数据的多样性,从而提高模型训练参数(第一向量和第二向量)的准确性。
在一些实施例中,对于符合所述待验证的正则表达式的任一字符串,所述概率图模型为最大似然函数,按如下公式表示:
(1)
(2)
其中,表示索引为j的中心字符/>在对应的背景窗口大小范围内存在索引为i的背景字符/>的概率,/>为所述任一字符串的中心字符索引列表,/>为中心字符/>对应的背景字符索引列表,/>表示/>为中心字符时对应的第一向量,/>表示/>为背景字符时对应的第二向量,exp( )表示自然常数e为底的指数函数,/>表示/>的转置向量。
例如:对于满足正则表达式p(ab) (r|n)的字符串‘pabr’,如图7所示,为以字符‘b’为中心字符,背景窗口大小为2时,生成背景字符p、a和r的示意图,其中对于该图模型,向量s表示箭头的来源字符向量,向量t对应的是箭头指向的字符的向量。那么以字符‘b’为中心字符在背景窗口大小为2的范围内存在字符p、a和r的概率,也即按正则表达式的规则,字符‘b’为中心字符生成字符串pabr的概率为:/>,表示为上述公式(1)的形式为:/>
基于上述公式(1)的概率图模型在训练时不方便求解,需要对其进行优化,因此,在一些实施例中,步骤S240包括:
对公式(1)表示的概率图模型进行取对数优化操作得到:
(3)
对公式(1)求最大积等同于对公式(3)求最小和,其中,将上述公式(2)代入,得到/>为:
(4)
以公式(3)为概率图模型的损失函数训练所述概率图模型,在损失函数收敛时,得到所述第一向量和第二向量。
具体地,以公式(3)为概率图模型的损失函数训练所述概率图模型,在损失函数收敛时,得到所述第一向量和第二向量,包括:
按以下公式对公式(4)计算随机梯度;
(5)
(6)
将公式(5)和(6)代入公式(3)的损失函数,在梯度下降到所述损失函数的值(loss值)不再减小时,概率图模型训练完成,获取此时的第一向量和第二向量/>。可以理解的是:损失函数的值(loss值)不再减小指loss值的变化值不超过1%。
上述实施例中,在计算随机梯度过程中需要基于中心字符索引列表和每个中心字符对应的背景字符索引列表中的索引求和运行,公式(5)和(6)中分别一次求和,再代入公式(3)后又分别有两次求和,计算复杂,且计算成本正则数据规模呈线性变化。因此,为了降低计算成本,在一些实施例中,采用负采样理论对上述公式(2)变换,得到:
(7)
(8)
其中,表示大小为K的索引子集,对于字符/>,表示/>不属于中心字符/>的背景字符,K为超参数,/>为二焦点曲线函数。
将公式(7)代入公式(3)的损失函数,训练所述概率图模型,在损失函数收敛时,得到所述第一向量和第二向量。
负采样公式(7)基于以下简化原理:
正样本识别:表示给定上下文词(即中心字符)/>时,词(即背景字符)被正确识别为正样本(即正确上下文词)的概率。这里,/>是sigmoid函数,将/>和/>的点积映射到(0, 1)区间,代表概率。
负样本排除:对于每个负样本,/>表示给定上下文词/>时,负样本词/>被正确排除(即识别为不是正确上下文词)的概率。
联合概率:通过将正样本识别概率与所有选定负样本正确排除的概率相乘,公式计算了在给定上下文词的情况下,同时正确识别正样本/>并排除所有负样本的联合概率。这反映了模型在区分特定上下文中的正样本和非上下文(负样本)的能力。/>
接下来计算负采样概率表达式的对数:
(9)
根据对数的性质,可以将乘法转换为加法:
(10)
然后,利用sigmoid函数的特性来简化上述公式(10):
(11)
利用sigmoid函数的对称性质有:
(12)
最终的对数概率公式,即公式(10)应简化为:
(13)
基于链式法则,可以获得对应的偏导数:
(14)
(15)
在基于公式(2)的模型中,每个训练步骤需要更新词汇表中所有词的向量(即本实施例中字符的第一向量和第二向量),而负采样只更新正样本和少量负样本的向量,因此显著减少了每次训练迭代的计算负担。
在一些实施例中,步骤S250中计算所述待验证的正则表达式生成的有限状态自动机中,连接到同一状态的两字符的第一向量的第一相似度,具体包括:基于余弦相似度函数或者二焦点曲线函数,计算所述待验证的正则表达式生成的有限状态自动机中,连接到同一状态的两字符的第一向量的第一相似度。
本实施例中,采用余弦相似度函数计算第一相似度,余弦相似度函数为:
(16)/>
其中,和/>分别表示所述待验证的正则表达式中,连接到有限状态自动机同一状态的两字符各自作为中心字符的第一向量。
例如:如图1中,按上述公式(16)计算正则表达式p(ab)(r|n)中字符b和字符n作为中心字符的第一向量的第一相似度,得到第一相似度为95%,而且字符b和字符n在有限自动状态机中通过状态S4连接,即连接到同一状态。若对于每个字符串,有限自动状态机中连接到同一状态的两个字符各自作为中心字符的第一向量的相似度都大于第一预设相似度阈值的情况下,则说明自动生成的有限自动状态机较准确且合理,否则,有限自动状态机的推理存在问题,即推理不准确。
在一些实施例中,在对每个字符串,计算所述待验证的正则表达式生成的有限状态自动机中,连接到同一状态的两字符的第一向量的第一相似度,在所述第一相似度大于第一预设相似度阈值的情况下,确定所述有限状态自动机达到第一合格等级之后,还包括:
对每个字符串,计算所述待验证的正则表达式生成的有限状态自动机中,连接到不同状态的两字符的第一向量的第二相似度,在所述第二相似度小于第二预设相似度阈值的情况下,确定所述有限状态自动机达到第二合格等级,其中,所述第一预设相似度阈值大于所述第二预设相似度阈值,所述第二合格等级高于第一合格等级。其中,相似度计算公式可以是上述公式(16),由于两个字符未连接有限状态自动机中同一状态,因此,该两个字符作为中心字符时的第一向量的第二相似度比较低,才认为自动生成的有限状态自动机是准确且合理的。在满足第一合格等级基础上,进一步判断是否达到第二合格等级,若达到第二合格等级,则自动生成的有限状态自动机具有较高的准确性和合理性,若未达到第二合格等级,可直接判断自动生成的有限状态自动机不合格,即推理有问题。
在一些实施例中,所述第一相似度为90%~95%,所述第二相似度为30%~40%。第一相似度和第二相似度的具体值根据实际情况设定。
如图8所示,为本发明实施例的有限状态自动机验证方法应用场景示意图,处理器810根据待检测的正则表达式生成相应的有限状态自动机,之后处理器810读取预先准备的数据文件,该数据文件中包括符合待检测的正则表达式的多个字符串,处理器810根据数据文件中的多个字符串按上述实施例的有限状态自动机验证方法对于有限状态自动机进行验证,验证合格后,将有限状态自动机的图结构存储为配置信息,并将该配置信息发送给FPGA 820。FPGA 820有限状态自动机的配置信息对待监测字符串进行正则加速检测。由于在处理器中采用了上述实施例的方法对自动生成的有限状态自动机的准确性和合理性进行了验证,FPGA 820采用验证后的有限状态自动机对待监测字符串进行正则加速检测,使得检测结果更准确,例如:能够更准确地检测出具有网络入侵行为的字符串。
下面对本发明提供的有限状态自动机验证装置进行描述,下文描述的本发明提供的有限状态自动机验证装置与上文描述的本发明提供的有限状态自动机验证方法可相互对应参照。
本发明还提供一种有限状态自动机验证装置,如图9所示,包括:
索引数据集生成模块910,用于基于符合待验证的正则表达式的多个字符串,生成所述正则表达式对应的索引数据集,所述索引数据集包含多个所述字符串中字符的索引,所述待验证的正则表达式中的相同字符对应相同的索引。
索引列表生成模块920,用于对每个所述字符串,以任一字符为中心字符,预设滑动窗口大小内的字符为背景字符,生成中心字符索引列表和每个中心字符对应的背景字符索引列表。
概率图模型构建模块930,用于构建以所述中心字符生成背景字符的概率图模型,所述概率图模型的参数包括:以所述任一字符作为中心字符的第一向量及作为背景字符的第二向量。
概率图模型训练模块940,用于基于中心字符索引列表中字符的第一向量和背景字符索引列表中字符的第二向量为参数训练所述概率图模型,更新所述第一向量和第二向量,在所述概率图模型的损失函数收敛时,得到所述第一向量和第二向量。
自动机验证模块950,用于对每个字符串,计算所述待验证的正则表达式生成的有限状态自动机中,连接到同一状态的两字符的第一向量的第一相似度,在所述第一相似度大于第一预设相似度阈值的情况下,确定所述有限状态自动机达到第一合格等级。
本发明的有限状态自动机验证装置中,采用符合待验证的正则表达式的多个字符串中字符索引为样本,对中心字符生成背景字符的概率图模型进行训练,得到字符作为中心字符时的向量参数(即第一向量),通过有限状态自动机中连接到同一状态的两字符的第一向量的第一相似度来验证有限状态自动机的准确性和合理性,从而实现了自动且高效率地验证自动生成的自动机的准确性或合理性的目的。
可选地,索引数据集生成模块910包括:
字符串读取模块,用于读取符合待验证的正则表达式的多个字符串。
字符串分割模块,用于对每个所述字符串进行字符分割,生成包括所述字符串对应的字符列表的字符数据集。
索引替换模块,用于按所述待验证的正则表达式中字符预设的索引,替换所述字符数据集中对应的字符,以生成所述索引数据集。
可选地,字符串分割模块包括:
初始数据集生成模块,用于对每个所述字符串进行字符分割,生成包括所述字符串对应的字符列表的初始数据集。
字符次数统计模块,用于统计所述初始数据集中每个字符的出现次数。
字符数据集生成模块,用于删除所述初始数据集中出现次数小于预设次数阈值的字符,以得到所述字符数据集。
可选地,本发明的有限状态自动机验证装置还包括:索引频次调整模块,用于在对每个所述字符串,以任一字符为中心字符,预设滑动窗口大小内的字符为背景字符,生成中心字符索引列表和每个中心字符对应的背景字符索引列表之前,统计所述索引数据集中的各索引的出现频次,按预设策略删除部分出现频次高于预设频次阈值的高频索引,以降低所述高频索引的频次。
可选地,所述索引频次调整模块包括:
索引频次统计模块,用于统计所述索引数据集中所有索引的索引总数和每个索引的出现频次。
索引随机删除模块,用于遍历所述索引数据集中的每个索引,针对遍历的当前索引,基于所述索引总数和当前索引的出现频次,确定当前索引的删除概率,在所述删除概率大于预设的随机概率的情况下,从所述索引数据集中删除所述当前索引,并更新所述索引数据集的索引总数及被删除索引的出现频次。
可选地,所述索引随机删除模块具体用于满足如下公式的情况下,从所述索引数据集中删除所述当前索引:
random.uniform(0, 1)<1 - math.sqrt((a × num) / counter(idx))
其中,random.uniform(0, 1)表示取0到1之间的随机数,math.sqrt( )表示取平方根函数,counter(idx)表示统计当前索引idx的出现频次的函数,num表示所述索引数据集中所有索引的索引总数,a为常数。
可选地,所述a的取值为[1e-5, 1e-3]。
可选地,索引列表生成模块920包括:
中心字符索引列表生成模块,用于基于所述索引数据集中每个字符串中的每一索引对应字符为中心字符,生成所述中心字符索引列表。
背景字符索引列表生成模块,用于对于任一中心字符,按预设滑动窗口大小从所述任一中心字符一侧获取第一字符索引子列表,且按预设滑动窗口大小从所述任一中心字符另一侧获取第二字符索引子列表,基于所述第一字符索引子列表和所述第二字符索引子列表生成任一中心字符对应的所述背景字符索引列表。
可选地,对于任一中心字符,所述预设滑动窗口大小是通过随机函数在[1, max_window_size]范围内随机选择确定的,其中,max_window_size表示最大滑动窗口。
可选地,对于符合所述待验证的正则表达式的任一字符串,所述概率图模型为最大似然函数,按如下公式表示:
(1)
(2)
其中,表示索引为j的中心字符/>在对应的背景窗口大小范围内存在索引为i的背景字符/>的概率,/>为所述任一字符串的中心字符索引列表,/>为中心字符/>对应的背景字符索引列表,/>表示/>为中心字符时对应的第一向量,/>表示/>为背景字符时对应的第二向量,exp( )表示自然常数e为底的指数函数,/>表示/>的转置向量。
可选地,概率图模型训练模块940具体用于:
对公式(1)表示的概率图模型进行取对数优化操作得到:
(3)
其中,为:
(4)
以公式(3)为概率图模型的损失函数训练所述概率图模型,在损失函数收敛时,得到所述第一向量和第二向量。
可选地,概率图模型训练模块940还具体用于:
按以下公式对公式(4)计算随机梯度;
(5)
(6)
将公式(5)和(6)代入公式(3)的损失函数,在梯度下降到所述损失函数的值不再减小时,概率图模型训练完成,获取此时的第一向量和第二向量/>
可选地,概率图模型训练模块940还具体用于采用负采样理论对上述公式(2)变换,得到:
(7)
(8)
其中,表示大小为K的索引子集,对于字符/>,表示/>不属于中心字符/>的背景字符,K为超参数,/>为二焦点曲线函数;
将公式(7)代入公式(3)的损失函数,训练所述概率图模型,在损失函数收敛时,得到所述第一向量和第二向量。
可选地,自动机验证模块950具体用于基于余弦相似度函数或者二焦点曲线函数,计算所述待验证的正则表达式生成的有限状态自动机中,连接到同一状态的两字符的第一向量的第一相似度。
可选地,所述余弦相似度函数为:
其中,和/>分别表示所述待验证的正则表达式中,连接到有限状态自动机同一状态的两字符各自作为中心字符的第一向量。
可选地,自动机验证模块950还具体用于在对每个字符串,计算所述待验证的正则表达式生成的有限状态自动机中,连接到同一状态的两字符的第一向量的第一相似度,在所述第一相似度大于第一预设相似度阈值的情况下,确定所述有限状态自动机达到第一合格等级之后,对每个字符串,计算所述待验证的正则表达式生成的有限状态自动机中,连接到不同状态的两字符的第一向量的第二相似度,在所述第二相似度小于第二预设相似度阈值的情况下,确定所述有限状态自动机达到第二合格等级,其中,所述第一预设相似度阈值大于所述第二预设相似度阈值,所述第二合格等级高于第一合格等级。
可选地,所述第一相似度为90%~95%,所述第二相似度为30%~40%。
图10示例了一种电子设备的实体结构示意图,如图10所示,该电子设备可以包括:处理器(processor)1010、通信接口(Communications Interface) 1020、存储器(memory)1030和通信总线1040,其中,处理器1010,通信接口1020,存储器1030通过通信总线1040完成相互间的通信。处理器1010可以调用存储器1030中的逻辑指令,以执行有限状态自动机验证方法,该方法包括:
基于符合待验证的正则表达式的多个字符串,生成所述正则表达式对应的索引数据集,所述索引数据集包含多个所述字符串中字符的索引,所述待验证的正则表达式中的相同字符对应相同的索引。
对每个所述字符串,以任一字符为中心字符,预设滑动窗口大小内的字符为背景字符,生成中心字符索引列表和每个中心字符对应的背景字符索引列表。
构建以所述中心字符生成背景字符的概率图模型,所述概率图模型的参数包括:以所述任一字符作为中心字符的第一向量及作为背景字符的第二向量。
基于中心字符索引列表中字符的第一向量和背景字符索引列表中字符的第二向量为参数训练所述概率图模型,更新所述第一向量和第二向量,在所述概率图模型的损失函数收敛时,得到所述第一向量和第二向量。
对每个字符串,计算所述待验证的正则表达式生成的有限状态自动机中,连接到同一状态的两字符的第一向量的第一相似度,在所述第一相似度大于第一预设相似度阈值的情况下,确定所述有限状态自动机达到第一合格等级。
此外,上述的存储器1030中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
另一方面,本发明还提供一种计算机程序产品,所述计算机程序产品包括计算机程序,计算机程序可存储在非暂态计算机可读存储介质上,所述计算机程序被处理器执行时,计算机能够执行上述各方法所提供的有限状态自动机验证方法,该方法包括:
基于符合待验证的正则表达式的多个字符串,生成所述正则表达式对应的索引数据集,所述索引数据集包含多个所述字符串中字符的索引,所述待验证的正则表达式中的相同字符对应相同的索引。
对每个所述字符串,以任一字符为中心字符,预设滑动窗口大小内的字符为背景字符,生成中心字符索引列表和每个中心字符对应的背景字符索引列表。
构建以所述中心字符生成背景字符的概率图模型,所述概率图模型的参数包括:以所述任一字符作为中心字符的第一向量及作为背景字符的第二向量。
基于中心字符索引列表中字符的第一向量和背景字符索引列表中字符的第二向量为参数训练所述概率图模型,更新所述第一向量和第二向量,在所述概率图模型的损失函数收敛时,得到所述第一向量和第二向量。
对每个字符串,计算所述待验证的正则表达式生成的有限状态自动机中,连接到同一状态的两字符的第一向量的第一相似度,在所述第一相似度大于第一预设相似度阈值的情况下,确定所述有限状态自动机达到第一合格等级。
又一方面,本发明还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现以执行上述各方法提供的有限状态自动机验证方法,该方法包括:
基于符合待验证的正则表达式的多个字符串,生成所述正则表达式对应的索引数据集,所述索引数据集包含多个所述字符串中字符的索引,所述待验证的正则表达式中的相同字符对应相同的索引。
对每个所述字符串,以任一字符为中心字符,预设滑动窗口大小内的字符为背景字符,生成中心字符索引列表和每个中心字符对应的背景字符索引列表。
构建以所述中心字符生成背景字符的概率图模型,所述概率图模型的参数包括:以所述任一字符作为中心字符的第一向量及作为背景字符的第二向量。
基于中心字符索引列表中字符的第一向量和背景字符索引列表中字符的第二向量为参数训练所述概率图模型,更新所述第一向量和第二向量,在所述概率图模型的损失函数收敛时,得到所述第一向量和第二向量。
对每个字符串,计算所述待验证的正则表达式生成的有限状态自动机中,连接到同一状态的两字符的第一向量的第一相似度,在所述第一相似度大于第一预设相似度阈值的情况下,确定所述有限状态自动机达到第一合格等级。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

Claims (19)

1.一种有限状态自动机验证方法,其特征在于,包括:
基于符合待验证的正则表达式的多个字符串,生成所述正则表达式对应的索引数据集,所述索引数据集包含多个所述字符串中字符的索引,所述待验证的正则表达式中的相同字符对应相同的索引;
对每个所述字符串,以任一字符为中心字符,预设滑动窗口大小内的字符为背景字符,生成中心字符索引列表和每个中心字符对应的背景字符索引列表;
构建以所述中心字符生成背景字符的概率图模型,所述概率图模型的参数包括:以所述任一字符作为中心字符的第一向量及作为背景字符的第二向量;
基于中心字符索引列表中字符的第一向量和背景字符索引列表中字符的第二向量为参数训练所述概率图模型,更新所述第一向量和第二向量,在所述概率图模型的损失函数收敛时,得到所述第一向量和第二向量;
对每个字符串,计算所述待验证的正则表达式生成的有限状态自动机中,连接到同一状态的两字符的第一向量的第一相似度,在所述第一相似度大于第一预设相似度阈值的情况下,确定所述有限状态自动机达到第一合格等级,
对于符合所述待验证的正则表达式的任一字符串,所述概率图模型为最大似然函数,按如下公式表示:
(1)
(2)
其中,表示索引为/>的中心字符/>在对应的背景窗口大小范围内存在索引为/>的背景字符/>的概率,/>为所述任一字符串的中心字符索引列表,/>为中心字符/>对应的背景字符索引列表,/>表示/>为中心字符时对应的第一向量,/>表示/>为背景字符时对应的第二向量,exp( )表示自然常数e为底的指数函数,/>表示/>的转置向量。
2.根据权利要求1所述的有限状态自动机验证方法,其特征在于,基于符合待验证的正则表达式的多个字符串,生成所述正则表达式对应的索引数据集,包括:
读取符合待验证的正则表达式的多个字符串;
对每个所述字符串进行字符分割,生成包括所述字符串对应的字符列表的字符数据集;
按所述待验证的正则表达式中字符预设的索引,替换所述字符数据集中对应的字符,以生成所述索引数据集。
3.根据权利要求2所述的有限状态自动机验证方法,其特征在于,对每个所述字符串进行字符分割,生成包括所述字符串对应的字符列表的字符数据集,包括:
对每个所述字符串进行字符分割,生成包括所述字符串对应的字符列表的初始数据集;
统计所述初始数据集中每个字符的出现次数;
删除所述初始数据集中出现次数小于预设次数阈值的字符,以得到所述字符数据集。
4.根据权利要求1所述的有限状态自动机验证方法,其特征在于,在对每个所述字符串,以任一字符为中心字符,预设滑动窗口大小内的字符为背景字符,生成中心字符索引列表和每个中心字符对应的背景字符索引列表之前,还包括:
统计所述索引数据集中的各索引的出现频次,按预设策略删除部分出现频次高于预设频次阈值的高频索引,以降低所述高频索引的频次。
5.根据权利要求4所述的有限状态自动机验证方法,其特征在于,统计所述索引数据集中的各索引的出现频次,按预设策略删除部分出现频次高于预设频次阈值的高频索引,以降低所述高频索引的频次,包括:
统计所述索引数据集中所有索引的索引总数和每个索引的出现频次;
遍历所述索引数据集中的每个索引,针对遍历的当前索引,基于所述索引总数和当前索引的出现频次,确定当前索引的删除概率,在所述删除概率大于预设的随机概率的情况下,从所述索引数据集中删除所述当前索引,并更新所述索引数据集的索引总数及被删除索引的出现频次。
6.根据权利要求5所述的有限状态自动机验证方法,其特征在于,基于所述索引总数和当前索引的出现频次,确定当前索引的删除概率,在所述删除概率大于预设的随机概率的情况下,从所述索引数据集中删除所述当前索引,包括:满足如下公式的情况下,从所述索引数据集中删除所述当前索引:
random.uniform(0, 1) < 1 - math.sqrt((a × num) / counter(idx))
其中,random.uniform(0, 1)表示取0到1之间的随机数,math.sqrt( )表示取平方根函数,counter(idx)表示统计当前索引idx的出现频次的函数,num表示所述索引数据集中所有索引的索引总数,a为常数。
7.根据权利要求6所述的有限状态自动机验证方法,其特征在于,所述a的取值为[1e-5, 1e-3]。
8.根据权利要求1所述的有限状态自动机验证方法,其特征在于,对每个所述字符串,以任一字符为中心字符,预设滑动窗口大小内的字符为背景字符,生成中心字符索引列表和每个中心字符对应的背景字符索引列表,包括:
基于所述索引数据集中每个字符串中的每一索引对应字符为中心字符,生成所述中心字符索引列表;
对于任一中心字符,按预设滑动窗口大小从所述任一中心字符一侧获取第一字符索引子列表,且按预设滑动窗口大小从所述任一中心字符另一侧获取第二字符索引子列表,基于所述第一字符索引子列表和所述第二字符索引子列表生成任一中心字符对应的所述背景字符索引列表。
9.根据权利要求8所述的有限状态自动机验证方法,其特征在于,对于任一中心字符,所述预设滑动窗口大小是通过随机函数在[1, max_window_size]范围内随机选择确定的,其中,max_window_size表示最大滑动窗口。
10.根据权利要求1所述的有限状态自动机验证方法,其特征在于,基于中心字符索引列表中字符的第一向量和背景字符索引列表中字符的第二向量为参数训练所述概率图模型,更新所述第一向量和第二向量,在所述概率图模型的损失函数收敛时,得到所述第一向量和第二向量,包括:
对公式(1)表示的概率图模型进行取对数优化操作得到:
(3)
其中,为:
(4)
以公式(3)为概率图模型的损失函数训练所述概率图模型,在损失函数收敛时,得到所述第一向量和第二向量。
11.根据权利要求10所述的有限状态自动机验证方法,其特征在于,以公式(3)为概率图模型的损失函数训练所述概率图模型,在损失函数收敛时,得到所述第一向量和第二向量,包括:
按以下公式对公式(4)计算随机梯度;
(5)
(6)
将公式(5)和(6)代入公式(3)的损失函数,在梯度下降到所述损失函数的值不再减小时,概率图模型训练完成,获取此时的第一向量和第二向量/>
12.根据权利要求10所述的有限状态自动机验证方法,其特征在于,采用负采样理论对上述公式(2)变换,得到:
(7)
(8)
其中,表示大小为K的索引子集,对于字符/>,表示/>不属于中心字符/>的背景字符,K为超参数,/>为二焦点曲线函数;
将公式(7)代入公式(3)的损失函数,训练所述概率图模型,在损失函数收敛时,得到所述第一向量和第二向量。
13.根据权利要求1所述的有限状态自动机验证方法,其特征在于,计算所述待验证的正则表达式生成的有限状态自动机中,连接到同一状态的两字符的第一向量的第一相似度,包括:
基于余弦相似度函数或者二焦点曲线函数,计算所述待验证的正则表达式生成的有限状态自动机中,连接到同一状态的两字符的第一向量的第一相似度。
14.根据权利要求13所述的有限状态自动机验证方法,其特征在于,所述余弦相似度函数为:
其中,和/>分别表示所述待验证的正则表达式中,连接到有限状态自动机同一状态的两字符各自作为中心字符的第一向量。
15.根据权利要求1至14中任一项所述的有限状态自动机验证方法,其特征在于,在对每个字符串,计算所述待验证的正则表达式生成的有限状态自动机中,连接到同一状态的两字符的第一向量的第一相似度,在所述第一相似度大于第一预设相似度阈值的情况下,确定所述有限状态自动机达到第一合格等级之后,还包括:
对每个字符串,计算所述待验证的正则表达式生成的有限状态自动机中,连接到不同状态的两字符的第一向量的第二相似度,在所述第二相似度小于第二预设相似度阈值的情况下,确定所述有限状态自动机达到第二合格等级,其中,所述第一预设相似度阈值大于所述第二预设相似度阈值,所述第二合格等级高于第一合格等级。
16.根据权利要求15所述的有限状态自动机验证方法,其特征在于,所述第一相似度为90%~95%,所述第二相似度为30%~40%。
17.一种有限状态自动机验证装置,其特征在于,包括:
索引数据集生成模块,用于基于符合待验证的正则表达式的多个字符串,生成所述正则表达式对应的索引数据集,所述索引数据集包含多个所述字符串中字符的索引,所述待验证的正则表达式中的相同字符对应相同的索引;
索引列表生成模块,用于对每个所述字符串,以任一字符为中心字符,预设滑动窗口大小内的字符为背景字符,生成中心字符索引列表和每个中心字符对应的背景字符索引列表;
概率图模型构建模块,用于构建以所述中心字符生成背景字符的概率图模型,所述概率图模型的参数包括:以所述任一字符作为中心字符的第一向量及作为背景字符的第二向量;
概率图模型训练模块,用于基于中心字符索引列表中字符的第一向量和背景字符索引列表中字符的第二向量为参数训练所述概率图模型,更新所述第一向量和第二向量,在所述概率图模型的损失函数收敛时,得到所述第一向量和第二向量;
自动机验证模块,用于对每个字符串,计算所述待验证的正则表达式生成的有限状态自动机中,连接到同一状态的两字符的第一向量的第一相似度,在所述第一相似度大于第一预设相似度阈值的情况下,确定所述有限状态自动机达到第一合格等级,
对于符合所述待验证的正则表达式的任一字符串,所述概率图模型为最大似然函数,按如下公式表示:
(1)
(2)
其中,表示索引为/>的中心字符/>在对应的背景窗口大小范围内存在索引为/>的背景字符/>的概率,/>为所述任一字符串的中心字符索引列表,/>为中心字符/>对应的背景字符索引列表,/>表示/>为中心字符时对应的第一向量,/>表示/>为背景字符时对应的第二向量,exp( )表示自然常数e为底的指数函数,/>表示/>的转置向量。
18.一种电子设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1 ~ 16中任一项所述的有限状态自动机验证方法。
19.一种非暂态计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1 ~ 16中任一项所述的有限状态自动机验证方法。
CN202410376355.4A 2024-03-29 有限状态自动机验证方法、装置、电子设备及存储介质 Active CN117971357B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202410376355.4A CN117971357B (zh) 2024-03-29 有限状态自动机验证方法、装置、电子设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202410376355.4A CN117971357B (zh) 2024-03-29 有限状态自动机验证方法、装置、电子设备及存储介质

Publications (2)

Publication Number Publication Date
CN117971357A CN117971357A (zh) 2024-05-03
CN117971357B true CN117971357B (zh) 2024-06-07

Family

ID=

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20200094977A (ko) * 2019-01-31 2020-08-10 연세대학교 산학협력단 오토마타 기반 증분적 중위 확률 계산 장치 및 방법
CN115147849A (zh) * 2022-06-17 2022-10-04 支付宝(杭州)信息技术有限公司 字符编码模型的训练方法、字符匹配方法和装置
CN115952175A (zh) * 2023-03-14 2023-04-11 乐山师范学院 一种数据库索引构建方法、装置、计算机设备及存储介质
CN116579327A (zh) * 2023-07-14 2023-08-11 匀熵智能科技(无锡)有限公司 文本纠错模型训练方法、文本纠错方法、设备及存储介质

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20200094977A (ko) * 2019-01-31 2020-08-10 연세대학교 산학협력단 오토마타 기반 증분적 중위 확률 계산 장치 및 방법
CN115147849A (zh) * 2022-06-17 2022-10-04 支付宝(杭州)信息技术有限公司 字符编码模型的训练方法、字符匹配方法和装置
CN115952175A (zh) * 2023-03-14 2023-04-11 乐山师范学院 一种数据库索引构建方法、装置、计算机设备及存储介质
CN116579327A (zh) * 2023-07-14 2023-08-11 匀熵智能科技(无锡)有限公司 文本纠错模型训练方法、文本纠错方法、设备及存储介质

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
基于划分的增量式字符串相似性连接方法;燕彩蓉;朱斌;王健;黄永锋;;计算机应用;20160110(01);全文 *

Similar Documents

Publication Publication Date Title
CN112287670A (zh) 文本纠错方法、系统、计算机设备及可读存储介质
CN111444320A (zh) 文本检索方法、装置、计算机设备和存储介质
CN109299280B (zh) 短文本聚类分析方法、装置和终端设备
CN110442516B (zh) 信息处理方法、设备及计算机可读存储介质
WO2020140073A1 (en) Neural architecture search through a graph search space
CN111966812B (zh) 一种基于动态词向量的自动问答方法和存储介质
CN111814822B (zh) 一种敏感图片检测方法、装置及电子设备
US11636308B2 (en) Differentiable set to increase the memory capacity of recurrent neural net works
WO2020199595A1 (zh) 基于词袋模型的长文本分类方法、装置、计算机设备及存储介质
CN112307048B (zh) 语义匹配模型训练方法、匹配方法、装置、设备及存储介质
CN112784582A (zh) 纠错方法、装置和计算设备
CN116542297A (zh) 基于文本数据训练生成对抗网络的方法及装置
CN111753546B (zh) 文书信息抽取方法、装置、计算机设备及存储介质
CN117971357B (zh) 有限状态自动机验证方法、装置、电子设备及存储介质
CN116578700A (zh) 日志分类方法、日志分类装置、设备及介质
CN117971358B (zh) 有限状态自动机验证方法及装置
US11755671B2 (en) Projecting queries into a content item embedding space
CN115630136A (zh) 用于长文本的语义检索及问答处理方法、装置及电子设备
JP5542732B2 (ja) データ抽出装置、データ抽出方法、及びそのプログラム
CN117971357A (zh) 有限状态自动机验证方法、装置、电子设备及存储介质
CN115080748A (zh) 一种基于带噪标签学习的弱监督文本分类方法和装置
KR20240034804A (ko) 자동 회귀 언어 모델 신경망을 사용하여 출력 시퀀스 평가
CN115759254A (zh) 基于知识增强生成式语言模型的问答方法、系统及介质
CN115017987A (zh) 语言模型微调方法、文本分类方法、装置及设备
CN117971358A (zh) 有限状态自动机验证方法及装置

Legal Events

Date Code Title Description
PB01 Publication
SE01 Entry into force of request for substantive examination
GR01 Patent grant