文本正则化方法、装置、电子设备和存储介质与流程

文档序号:26263443发布日期:2021-08-13 19:14阅读:81来源:国知局
文本正则化方法、装置、电子设备和存储介质与流程

本发明涉及自然语言处理技术领域,具体涉及一种文本正则化方法、装置、电子设备和存储介质。



背景技术:

正则表达式(regularexpression,简写为regex、regexp或re),又称规则表达式,通常被用来检索、替换符合某个模式或规则的文本。目前,对于简单的正则表达式编写难度尚可,运行效率较高。但是,对于复杂的正则表达式,编写和验证的过程不易实现,且运行时间较长,导致正则化的效率并不高,在耗时的同时并不清楚运行完成后的是否能产生相应的结果,使得在无法产生相应的正则化结果时,计算资源被白白消耗。



技术实现要素:

为了解决现有技术中存在的上述问题,本申请实施方式提供了一种文本正则化方法、装置、电子设备和存储介质,可以在正则表达式运行前对运行完成后是否能产生相应的结果进行预测,从而决定是否运行该正则表达式,提高了正则化效率,同时,防止了计算资源产生无用的消耗。

第一方面,本申请的实施方式提供了一种文本正则化方法,包括:

对正则表达式中的正则元字符进行替换处理,得到第一字符串;

对第一字符串进行分割,得到至少一个第二字符串;

根据至少一个第二字符串,生成第一字典,并根据第一字典对第一字符串进行替换,得到第三字符串;

根据第一字典和第一文本,生成第二字典,其中,第一文本为待使用正则表达式进行正则化的文本;

根据第二字典将第三字符串转化为位运算式,并获取位运算式的运算结果;

根据运算结果确定是否使用正则表达式对第一文本进行正则化。

第二方面,本申请的实施方式提供了一种文本正则化装置,包括:

字符替换模块,用于对正则表达式中的正则元字符进行替换处理,得到第一字符串;

分割模块,用于对第一字符串进行分割,得到至少一个第二字符串;

字典生成模块,用于根据至少一个第二字符串,生成第一字典,并根据第一字典对第一字符串进行替换,得到第三字符串;以及根据第一字典和第一文本,生成第二字典,其中,第一文本为待使用正则表达式进行正则化的文本;

转化模块,用于根据第二字典将第三字符串转化为位运算式,并获取位运算式的运算结果;

处理模块,用于根据运算结果确定是否使用正则表达式对第一文本进行正则化。

第三方面,本申请实施方式提供一种电子设备,包括:处理器,处理器与存储器相连,存储器用于存储计算机程序,处理器用于执行存储器中存储的计算机程序,以使得电子设备执行如第一方面的方法。

第四方面,本申请实施方式提供一种计算机可读存储介质,计算机可读存储介质存储有计算机程序,计算机程序使得计算机执行如第一方面的方法。

第五方面,本申请实施方式提供一种计算机程序产品,计算机程序产品包括存储了计算机程序的非瞬时性计算机可读存储介质,计算机可操作来使计算机执行如第一方面的方法。

实施本申请实施方式,具有如下有益效果:

在本申请实施方式中,通过对正则表达式中的正则元字符进行替换处理,得到第一字符串,再对第一字符串进行分割,得到至少一个第二字符串。继而,根据至少一个第二字符串,生成第一字典,并通过第一字典对第一字符串进行替换,得到第三字符串。最后,根据第一字典和第一文本,生成第二字典,并通过第二字典将第三字符串转化为位运算式。由此,将复杂的正则表达式转化为简单易懂的位运算式,极大的降低了正则表达式的读取门槛。同时,在本申请实施方式中,还根据位运算式的运算结果确定是否使用正则表达式对第一文本进行正则化。实现了在正则表达式对文本进行正则化前,对正则化后是否能产生相应的正则化结果进行预测,从而决定是否运行该正则表达式,提高了正则化效率,同时,防止了计算资源产生无用的消耗。

附图说明

为了更清楚地说明本申请实施方式中的技术方案,下面将对实施方式描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本申请实施方式提供的一种文本正则化装置的硬件结构示意图;

图2为本申请实施方式提供的一种获取最内层括号内的正则表达式的方法的流程示意图

图3为本申请实施方式提供的一种文本正则化方法的流程示意图;

图4为本申请实施方式提供的一种对正则表达式中的正则元字符进行替换处理,得到第一字符串的方法的流程示意图;

图5为本申请实施方式提供的一种获取最长公共子序列的长度的方法的流程示意图;

图6为本申请实施方式提供的一种根据至少一个第二字符串,生成第一字典的方法的流程示意图;

图7为本申请实施方式提供的一种根据第一字典和第一文本,生成第二字典的方法的流程示意图;

图8为本申请实施方式提供的一种文本正则化装置的功能模块组成框图;

图9为本申请实施方式提供的一种电子设备的结构示意图。

具体实施方式

下面将结合本申请实施方式中的附图,对本申请实施方式中的技术方案进行清楚、完整地描述,显然,所描述的实施方式是本申请一部分实施方式,而不是全部的实施方式。基于本申请中的实施方式,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施方式,都属于本申请保护的范围。

本申请的说明书和权利要求书及所述附图中的术语“第一”、“第二”、“第三”和“第四”等是用于区别不同对象,而不是用于描述特定顺序。此外,术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。

在本文中提及“实施方式”意味着,结合实施方式描述的特定特征、结果或特性可以包含在本申请的至少一个实施方式中。在说明书中的各个位置出现该短语并不一定均是指相同的实施方式,也不是与其它实施方式互斥的独立的或备选的实施方式。本领域技术人员显式地和隐式地理解的是,本文所描述的实施方式可以与其它实施方式相结合。

参阅图1,图1为本申请实施方式提供的一种文本正则化装置的硬件结构示意图。该文本正则化装置100包括至少一个处理器101,通信线路102,存储器103以及至少一个通信接口104。

在本实施方式中,处理器101,可以是一个通用中央处理器(centralprocessingunit,cpu),微处理器,特定应用集成电路(application-specificintegratedcircuit,asic),或一个或多个用于控制本申请方案程序执行的集成电路。

通信线路102,可以包括一通路,在上述组件之间传送信息。

通信接口104,可以是任何收发器一类的装置(如天线等),用于与其他设备或通信网络通信,例如以太网,ran,无线局域网(wirelesslocalareanetworks,wlan)等。

存储器103,可以是只读存储器(read-onlymemory,rom)或可存储静态信息和指令的其他类型的静态存储设备,随机存取存储器(randomaccessmemory,ram)或者可存储信息和指令的其他类型的动态存储设备,也可以是电可擦可编程只读存储器(electricallyerasableprogrammableread-onlymemory,eeprom)、只读光盘(compactdiscread-onlymemory,cd-rom)或其他光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘存储介质或者其他磁存储设备、或者能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。

在本实施方式中,存储器103可以独立存在,通过通信线路102与处理器101相连接。存储器103也可以和处理器101集成在一起。本申请实施方式提供的存储器103通常可以具有非易失性。其中,存储器103用于存储执行本申请方案的计算机执行指令,并由处理器101来控制执行。处理器101用于执行存储器103中存储的计算机执行指令,从而实现本申请下述实施方式中提供的方法。

在可选的实施方式中,计算机执行指令也可以称之为应用程序代码,本申请对此不作具体限定。

在可选的实施方式中,处理器101可以包括一个或多个cpu,例如图1中的cpu0和cpu1。

在可选的实施方式中,文本正则化装置100可以包括多个处理器,例如图1中的处理器101和处理器107。这些处理器中的每一个可以是一个单核(single-cpu)处理器,也可以是一个多核(multi-cpu)处理器。这里的处理器可以指一个或多个设备、电路、和/或用于处理数据(例如计算机程序指令)的处理核。

在可选的实施方式中,若文本正则化装置100为服务器,则文本正则化装置100还可以包括输出设备105和输入设备106。输出设备105和处理器101通信,可以以多种方式来显示信息。例如,输出设备105可以是液晶显示器(liquidcrystaldisplay,lcd),发光二级管(lightemittingdiode,led)显示设备,阴极射线管(cathoderaytube,crt)显示设备,或投影仪(projector)等。输入设备106和处理器101通信,可以以多种方式接收用户的输入。例如,输入设备106可以是鼠标、键盘、触摸屏设备或传感设备等。

上述的文本正则化装置100可以是一个通用设备或者是一个专用设备。本申请实施方式不限定文本正则化装置100的类型。

首先,需要说明的是,在本实施方式中,将以单层结构的正则表达式,即不包含括号的正则表达式,例如“?!c.*?dd\b”为例,对本申请所公开的正则表达式转化为位运算式的方法进行说明。

而对于多层结构的正则表达式,由于运行过程中,会优先处理的位于最内层括号中的字符串,所以在本实施方式中,可以通过依次对最内层括号内的正则表达式进行位运算式转化,依次消除多层结构的正则表达式的括号,实现对多层结构的正则表达式的转化。

示例性的,对于正则表达式“(a.*?(b|((c.*?dd\b).*?e))).*?(f.*?g)”,可以先对最内层的括号内的正则表达式“(c.*?dd\b)”进行转化,例如,转化结果为a。再对次外层的正则表达式“((c.*?dd\b).*?e)”中的“(c.*?dd\b)”进行替换,得到“(a.*?e)”。再对“(a.*?e)”进行转化,从而将多层结构的正则表达式转化为位运算式。

基于此,本申请在此提供了一种获取最内层括号内的正则表达式的方法,如图2所示,该方法包括:

201:按照从左至右的顺序依次读取正则表达式的字符,将遇到的第一个右括号标记为第三字符;

示例性的,对于正则表达式“((?!c.*?dd\b).*?e)”,按照从左至右的顺序依次读取正则表达式的字符,可以得到序列:“(”、“(”、“?”、“!”、“c”、“.”、“*”、“?”、“d”、“d”、“\”、“b”、“)”、“.”、“*”、“?”、“e”和“)”。其中,遇到的第一个右括号“)”为第13个字符,因此,记该字符为第三字符。

202:以第三字符为起始位置,按照从右到左的顺序依次读取正则表达式的字符,将遇到的第一个左括号标记为第四字符;

沿用上述正则表达式“((?!c.*?dd\b).*?e)”的示例,以第13个字符为起点,依次向左读取正则表达式的字符,可以得到序列:“)”、“b”、“\”、“d”、“d”、“?”、“*”、“.”、“c”、“!”、“?”、“(”和“(”。其中,遇到的第一个左括号“(”为原正则表达式中的第2个字符,因此,记该字符为第四字符。

203:以第四字符为起始位置,按照从左至右的顺序依次获取正则表达式的字符,直到获取到第三字符,得到最内层括号内的正则表达式。

沿用上述正则表达式“((?!c.*?dd\b).*?e)”的示例,在确定第2个字符为第四字符,第13个字符为第三字符后,以第2个字符为起始,按照从左至右的顺序依次获取正则表达式的字符,直到获取到第13个字符,得到字符串“(?!c.*?dd\b)”,作为最内层括号内的正则表达式。

以下,将对本申请所公开的文本正则化方法进行说明:

参阅图3,图3为本申请实施方式提供的一种文本正则化方法的流程示意图。该文本正则化方法包括以下步骤:

301:对正则表达式中的正则元字符进行替换处理,得到第一字符串。

在本实施方式中,提供了一种对正则表达式中的正则元字符进行替换处理,得到第一字符串的方法,如图4所示,该方法包括:

401:将正则表达式中的第一正则元字符替换为空字符,得到第四字符串。

在本实施方式中,第一正则元字符为正则表达式中匹配位置或边界位置的正则元字符。通常而言,匹配位置或边界位置的正则元字符可以有如下4种:“^”、“$”、“\b”、“\b”。其中,“^”为匹配输入字符串的开始位置;“$”为匹配输入字符串的结束位置;“\b”为匹配单词边界;“\b”为匹配非单词边界。

因此,在本实施方式中,可以先确定正则表达式中是否包含上述4种正则元字符,若包含,则将相应的正则元字符置空。例如,对于正则表达式“?!c.*?dd\b”,其中包含有匹配单词边界的正则元字符“\b”,因此,将该正则元字符置空后,可以得到第四字符串“?!c.*?dd”。

示例性的,本实施方式提供了一种确定正则表达式中是否包含第一正则元字符的方法,具体如下:

首先,确定正则表达式与第一正则元字符之间的最长公共子序列的长度。

在本实施方式中,最长公共子序列表示两个字符串之间的所有公共子序列中长度最长的一个公共子序列,其中,公共子序列表示两个字符串中连续且相同的字符组成的字符序列。

示例性的,本实施方式提供了一种获取最长公共子序列的长度的方法,如图5所示,该方法包括:

501:获取正则表达式的字符个数,获取第一正则元字符的字符个数。

502:若正则表达式的字符个数和/或第一正则元字符的字符个数为0,则设置最长公共子序列的长度为0。

503:若正则表达式的字符个数和第一正则元字符的字符个数均大于0,则获取正则表达式的尾字符作为第五字符,获取第一正则元字符的尾字符作为第六字符。

504:若第五字符和第六字符相同,则设置最长公共子序列的长度为,除去第五字符的正则表达式和除去第六字符的第一正则元字符的最长公共子序列的长度加一。

505:若第五字符和第六字符不同,则将除去第五字符的正则表达式与第一正则元字符的最长公共子序列的长度作为第一长度,将正则表达式与除去第六字符的第一正则元字符的最长公共子序列的长度作为第二长度,设置最长公共子序列的长度为第一长度和第二长度的最大值。

具体而言,本实施方式所提供的获取最长公共子串的长度的方法可以通过公式①表示:

其中,{x1,x2…xi}表示正则表达式,i表示正则表达式的长度,{y1,y2…yj}表示第一正则元字符,j表示第一正则元字符的长度,c[i,j]表示正则表达式和第一正则元字符的最长公共子串的长度。

在确定正则表达式和第一正则元字符的最长公共子串的长度后,当该最长公共子序列的长度等于第一正则元字符的长度时,则说明第一正则元字符本身属于第一字符串的一个子序列。由此,即可确定该正则表达式中包含该第一正则元字符。

402:确定第四字符串中是否包含第二正则元字符,若包含,跳转至步骤404,否则,跳转至步骤403.

在本实施方式中,第二正则元字符为正则表达式中与位运算“与或非”中的“非”的含义相同的正则元字符。示例性的,在正则表达式中,与位运算“与或非”中的“非”的含义相同的正则元字符可以有如下2种:“?!”和“?<!”。

同时,在本实施方式中,确定第四字符串中是否包含第二正则元字符的方法与步骤401中确定正则表达式中是否包含第一正则元字符的方法类似,在此不再赘述。

403:将第四字符串中的第三正则元字符替换为第一字符,得到第一字符串。

在本实施方式中,第三正则元字符为正则表达式中与位运算“与或非”中的“与”的含义相同的正则元字符。示例性的,在正则表达式中,与位运算“与或非”中的“与”的含义相同的正则元字符可以有如下3种:“.*?”、“\w+”和“\d{1,10}”。第一字符为表征位运算“与或非”中的“与”的字符“&”。

示例性的,以第四字符“c.*?dd”为例,其中包含有第三正则元字符“.*?”,对其进行替换后,可以得到第一字符串“c&dd”。

404:将第四字符串置空。

在本实施方式中,以第四字符“?!c.*?dd\b”为例,其中包含第二正则元字符“?!”,因此,直接将该第四字符串置空。

在可选的实施方式中,对于多层结构的正则表达式,例如:“((?!c.*?dd\b).*?e)”,其最内层括号内的正则表达式为“?!c.*?dd\b”,经过上述步骤处理后,可以得到第四字符串“?!c.*?dd\b”。由于该第四字符“?!c.*?dd\b”包含第二正则元字符“?!”,因此,直接将该第四字符串置空。并用置空后的第四字符串替换原正则表达式“((?!c.*?dd\b).*?e)”中的第一字符串“(?!c.*?dd\b)”,得到新的正则表达式“(.*?e)”后,重新确定最内层括号内的正则表达式后,再从步骤301开始执行。

302:对第一字符串进行分割,得到至少一个第二字符串。

在本实施方式中,可以根据所述第一字符串中的第四字符,对所述第一字符串进行分割,得到所述至少一个第二字符串。其中,第四字符可以为位运算中表征“与或非”中的“与”的含义的字符,例如“&”;位运算中表征“与或非”中的“或”的含义的字符,例如“丨”;位运算中表征“左括号”的含义的字符,例如“(”;以及位运算中表征“右括号”的含义的字符,例如“)”。

示例性的,对于正则表达式“(c.*?dd)”,再经过上述各步骤的处理后得到的第一字符串为“(c&dd)”,通过左括号“(”、右括号“)”和第四字符“&”,将第一字符串分为2个第二字符串“c”和“dd”。

303:根据至少一个第二字符串,生成第一字典。

在本实施方式中,提供了一种根据至少一个第二字符串,生成第一字典的方法,如图6所示,该方法包括:

601:对于至少一个第二字符串中的每个第二字符串,分别获取每个第二字符串对应的md5值,得到与至少一个第二字符串一一对应的至少一个md5值。

示例性的,沿用上述正则表达式“(c.*?dd)”的示例,所得的第二字符串为“c”和“dd”,因此,分别获取第二字符串“c”的md5值【xxxx1】和第二字符串“dd”的md5值【xxxx2】。

602:将所述每个第二字符串和所述每个第二字符串对应的md5值组成第一数据组,得到与至少一个第二字符串一一对应的至少一个第一数据组。

示例性的,沿用上述正则表达式“(c.*?dd)”的示例,得到第二字符串“c”的md5值【xxxx1】和第二字符串“dd”的md5值【xxxx2】。因此,可以得到2个第一数据组[‘xxxx1’,‘c’]和[‘xxxx2’,‘dd’]。

603:将至少一个第一数据组作为第一字典。

示例性的,沿用上述正则表达式“(c.*?dd)”的示例,得到2个第一数据组[‘xxxx1’,‘c’]和[‘xxxx2’,‘dd’]。基于此,第一字典可以为{‘xxxx1’,‘c’;‘xxxx2’,‘dd’}。

304:根据第一字典对第一字符串进行替换,得到第三字符串。

在本实施方式中,可以根据第一字典,将第一字符串中的每个第二字符串,替换为第一字符串中的每个第二字符串在第一字典中对应的md5值,得到第三字符串。

示例性的,沿用上述正则表达式“(c.*?dd)”的示例,其对应的第一字符串为“(c&dd)”,第一字典为{‘xxxx1’,‘c’;‘xxxx2’,‘dd’}。基于此,用【xxxx1】替换第一字符串中的“c”,【xxxx2】替换第一字符串中的“dd”,得到第三字符串“(【xxxx1】&【xxxx2】)”。

在可选的实施方式中,对于多层结构的正则表达式,例如“(a.*?(b|((c.*?dd\b).*?e))).*?(f.*?g)”,在确定其最内层括号中的正则表达式“(c.*?dd\b)”后,对其进行处理,可以得到第三字符串“(【xxxx1】&【xxxx2】)”和第一字典为{‘xxxx1’,‘c’;‘xxxx2’,‘dd’}。然后,可以将原正则表达式中的“(c.*?dd\b)”用第三字符串“(【xxxx1】&【xxxx2】)”进行替换,并将第三字符串作为一个恒定不变的符号,对原正则表达式进行迭代处理。经过迭代,可以得到最终的第三字符串“(【xxxx5】&(【xxxx4】|((【xxxx1】&【xxxx2】)&【xxxx3】)))&(【xxxx6】&【xxxx7】)”,以及最终的第一字典{‘xxxx1’:‘c’;‘xxxx2’:‘dd’;‘xxxx3’:‘e’;‘xxxx4’:‘b’;‘xxxx5’:‘a’;‘xxxx6’:‘f’;‘xxxx7’:‘g’}。

305:根据第一字典和第一文本,生成第二字典。

在本实施方式中,第一文本为待使用正则表达式进行正则化的文本。即,即将用该正则表达式进行正则化,但不清楚正则化后是否能产生相应的正则化结果的文本。

基于此,在本实施方式中,提供了一种根据第一字典和第一文本,生成第二字典的方法,如图7所示,该方法包括:

701:对于第一字典中的至少一个第一数据组中的每个第一数据组,分别确定每个第一数据组中的第二字符串在第一文本中的数量。

702:将每个第一数据组中的第二字符串,替换为每个第一数据组中的第二字符串在所述第一文本中的数量,得到与至少一个第一数据组一一对应的至少一个第二数据组。

703:将至少一个第二数据组作为第二字典。

示例性的,第一文本为“a11b22c33dd44f55g”,第一字典为{‘xxxx1’:‘c’;‘xxxx2’:‘dd’;‘xxxx3’:‘e’;‘xxxx4’:‘b’;‘xxxx5’:‘a’;‘xxxx6’:‘f’;‘xxxx7’:‘g’}。其中,第一文本中第二字符串“c”有1个,第二字符串“dd”有1个,第二字符串“e”有0个,第二字符串“b”有1个,第二字符串“a”有1个,第二字符串“f”有1个,第二字符串“b”有1个。由此,将第一字典中的第二字符串替换为对应的数量,可以得到第二字典{‘xxxx1’:1;‘xxxx2’:1;‘xxxx3’:0;‘xxxx4’:1;‘xxxx5’:1;‘xxxx6’:1;‘xxxx7’:1}。

306:根据第二字典将第三字符串转化为位运算式,并获取位运算式的运算结果。

在本实施方式中,可以根据第二字典,将第三字符串中的每个md5值,替换为第三字符串中的每个md5值在第二字典中对应的数量,得到位运算式。

示例性的,对于第三字符串“(【xxxx5】&(【xxxx4】|((【xxxx1】&【xxxx2】)&【xxxx3】)))&(【xxxx6】&【xxxx7】)”,其对应的第二字典为{‘xxxx1’:1;‘xxxx2’:1;‘xxxx3’:0;‘xxxx4’:1;‘xxxx5’:1;‘xxxx6’:1;‘xxxx7’:1}。由此,将第三字符串中的每个md5值,替换为第三字符串中的每个md5值在第二字典中对应的数量,可以得到位运算式“(1&(1|((1&1)&0)))&(1&1)”,经过运算,其运算结果为1。

307:根据运算结果确定是否使用正则表达式对第一文本进行正则化。

在本实施方式中,若运算结果为1,则说明对第一文本执行该正则表达式可以产生相应的正则化结果,不会白白浪费计算资源。因此,确定使用该正则表达式对第一文本进行正则化。

若运算结果为0,则说明对第一文本执行该正则表达式无法产生相应的正则化结果,会白白浪费计算资源。因此,取消使用该正则表达式对第一文本进行正则化。

综上所述,本发明所提供的文本正则化方法,通过对正则表达式中的正则元字符进行替换处理,得到第一字符串,再对第一字符串进行分割,得到至少一个第二字符串。继而,根据至少一个第二字符串,生成第一字典,并通过第一字典对第一字符串进行替换,得到第三字符串。最后,根据第一字典和第一文本,生成第二字典,并通过第二字典将第三字符串转化为位运算式。由此,将复杂的正则表达式转化为简单易懂的位运算式,极大的降低了正则表达式的读取门槛。同时,在本申请实施方式中,还根据位运算式的运算结果确定是否使用正则表达式对第一文本进行正则化。实现了在正则表达式对文本进行正则化前,对正则化后是否能产生相应的正则化结果进行预测,从而决定是否运行该正则表达式,提高了正则化效率,同时,防止了计算资源产生无用的消耗。

其次,需要说明的是,上述本申请所提供的文本正则化方法可以应用于光学字符识别(opticalcharacterrecognition,ocr)文本校正、各种自动化文本生成中对生成后的文本进行归一化、各类文本审核等场景。以下,将以ocr识别文本校正为例说明该文本正则化方法的过程,其他场景中的文本正则化方法与ocr识别文本校正下的文本正则化方法类似,在此不再叙述。

在本实施方式中,校对方法如下:

1)通过ocr识别模块对待识别的图像进行文本提取,得到第一文本。

2)对所述第一文本进行关键词提取,得到第一关键词。

在本实施方式中,可以对第一文本进行分词处理后,分别计算每个分词的逆文档频率,将逆文档频率最大的分词作为该第一关键词。

3)对待识别的图像进行特征提取,得到第一图像特征。

在本实施方式中,可以通过卷积神经网络(convolutionalneuralnetworks,cnn)对待识别的图像进行特征提取。

4)跟据第一关键词和第一图像特征,确定该待识别的图像的领域信息。

在本实施方式中,可以将第一关键词进行词嵌入,得到第一词向量,再将该第一词向量和第一图像特征进行拼接,得到第一融合向量。最后,根据该第一融合向量在预设的领域库中进行匹配,确定该第一融合向量和各个领域之间的关联度,取关联度最高的领域,作为该待识别的图像的领域信息。

5)根据领域信息匹配正则表达式。

6)根据第一文本,将该正则表达式转化为位运算式,并确定该位运算式的运算结果。

在本实施方式中,该将正则表达式转化为位运算式的方法与上述实施方式中步骤301-306中的转化方法类似,在此不再赘述。

7)根据运算结果确定是否使用该正则表达式对第一文本进行正则化。

由此可见,通过上述方法,可以根据ocr识别的图像的图像特征,以及识别出的文本的关键词,自动确定用于正则化该识别文本的正则表达式。同时,在进行正则化前,基于识别文本将正则表达式转化为位运算式,继而根据位运算式的运算结果预测正则化后是否能产生相应的正则化结果,继而决定是否运行该正则表达式。由此,对于不会产生正则化结果的识别文本,可以节省下进行正则化的时间和计算资源,提高了对整个识别文本的正则化效率,同时,提高了计算资源的利用率,降低了对计算资源的无用消耗。

参阅图8,图8为本申请实施方式提供的一种文本正则化装置的功能模块组成框图。如图8所示,该文本正则化装置800包括:

字符替换模块801,用于对正则表达式中的正则元字符进行替换处理,得到第一字符串;

分割模块802,用于对第一字符串进行分割,得到至少一个第二字符串;

字典生成模块803,用于根据至少一个第二字符串,生成第一字典,并根据第一字典对第一字符串进行替换,得到第三字符串;以及根据第一字典和第一文本,生成第二字典,其中,第一文本为待使用正则表达式进行正则化的文本;

转化模块804,用于根据第二字典将第三字符串转化为位运算式,并获取位运算式的运算结果;

处理模块805,用于根据运算结果确定是否使用正则表达式对第一文本进行正则化。

在本发明的实施方式中,在对正则表达式中的正则元字符进行替换处理,得到第一字符串方面,字符替换模块801,具体用于:

将正则表达式中的第一正则元字符替换为空字符,得到第四字符串,其中,第一正则元字符为正则表达式中匹配位置或边界位置的正则元字符;

当第四字符串中不包含第二正则元字符时,将第四字符串中的第三正则元字符替换为第一字符,得到第一字符串,其中,第二正则元字符为正则表达式中与位运算“与或非”中的“非”的含义相同的正则元字符,第三正则元字符为正则表达式中与位运算“与或非”中的“与”的含义相同的正则元字符;

当第四字符串中包含第二正则元字符时,将第四字符串置空。

在本发明的实施方式中,在根据分割规则对第一字符串进行分割,得到至少一个第二字符串方面,分割模块802,具体用于:

根据第一字符串中的第二字符,对第一字符串进行分割,得到至少一个第二字符串;

其中,第二字符为位运算中表征“与或非”中的“与”的含义的字符;以及

第二字符为位运算中表征“与或非”中的“或”的含义的字符;以及

第二字符为位运算中表征“左括号”的含义的字符;以及

第二字符为位运算中表征“右括号”的含义的字符。

在本发明的实施方式中,在根据至少一个第二字符串生成第一字典方面,字典生成模块803,具体用于:

对于至少一个第二字符串中的每个第二字符串,分别获取每个第二字符串对应的md5值,得到至少一个md5值,其中,至少一个md5值与至少一个第二字符串一一对应;

将每个第二字符串和每个第二字符串对应的md5值组成第一数据组,得到至少一个第一数据组,其中,至少一个第一数据组与至少一个第二字符串一一对应;

将至少一个第一数据组作为第一字典。

在本发明的实施方式中,在根据第一字典对第一字符串进行替换,得到第三字符串方面,字典生成模块803,具体用于:

根据第一字典,将第一字符串中的每个第二字符串,替换为第一字符串中的每个第二字符串在第一字典中对应的md5值,得到第三字符串。

在本发明的实施方式中,在根据第一字典和第一文本,生成第二字典方面,字典生成模块803,具体用于:

对于第一字典中的至少一个第一数据组中的每个第一数据组,分别确定每个第一数据组中的第二字符串在第一文本中的数量;

将每个第一数据组中的第二字符串,替换为每个第一数据组中的第二字符串在第一文本中的数量,得到至少一个第二数据组,其中,至少一个第二数据组与至少一个第一数据组一一对应;

将至少一个第二数据组作为第二字典。

在本发明的实施方式中,在根据第二字典将第三字符串转化为位运算式方面,转化模块804,具体用于:

根据第二字典,将第三字符串中的每个md5值,替换为第三字符串中的每个md5值在第二字典中对应的数量,得到位运算式。

参阅图9,图9为本申请实施方式提供的一种电子设备的结构示意图。如图9所示,电子设备900包括收发器901、处理器902和存储器903。它们之间通过总线904连接。存储器903用于存储计算机程序和数据,并可以将存储器903存储的数据传输给处理器902。

处理器902用于读取存储器903中的计算机程序执行以下操作:

对正则表达式中的正则元字符进行替换处理,得到第一字符串;

对第一字符串进行分割,得到至少一个第二字符串;

根据至少一个第二字符串,生成第一字典,并根据第一字典对第一字符串进行替换,得到第三字符串;

根据第一字典和第一文本,生成第二字典,其中,第一文本为待使用正则表达式进行正则化的文本;

根据第二字典将第三字符串转化为位运算式,并获取位运算式的运算结果;

根据运算结果确定是否使用正则表达式对第一文本进行正则化。

在本发明的实施方式中,在对正则表达式中的正则元字符进行替换处理,得到第一字符串方面,处理器902,还用于执行以下操作:

将正则表达式中的第一正则元字符替换为空字符,得到第四字符串,其中,第一正则元字符为正则表达式中匹配位置或边界位置的正则元字符;

当第四字符串中不包含第二正则元字符时,将第四字符串中的第三正则元字符替换为第一字符,得到第一字符串,其中,第二正则元字符为正则表达式中与位运算“与或非”中的“非”的含义相同的正则元字符,第三正则元字符为正则表达式中与位运算“与或非”中的“与”的含义相同的正则元字符;

当第四字符串中包含第二正则元字符时,将第四字符串置空。

在本发明的实施方式中,在根据分割规则对第一字符串进行分割,得到至少一个第二字符串方面,处理器902,还用于执行以下操作:

根据第一字符串中的第二字符,对第一字符串进行分割,得到至少一个第二字符串;

其中,第二字符为位运算中表征“与或非”中的“与”的含义的字符;以及

第二字符为位运算中表征“与或非”中的“或”的含义的字符;以及

第二字符为位运算中表征“左括号”的含义的字符;以及

第二字符为位运算中表征“右括号”的含义的字符。

在本发明的实施方式中,在根据至少一个第二字符串生成第一字典方面,处理器902,还用于执行以下操作:

对于至少一个第二字符串中的每个第二字符串,分别获取每个第二字符串对应的md5值,得到至少一个md5值,其中,至少一个md5值与至少一个第二字符串一一对应;

将每个第二字符串和每个第二字符串对应的md5值组成第一数据组,得到至少一个第一数据组,其中,至少一个第一数据组与至少一个第二字符串一一对应;

将至少一个第一数据组作为第一字典。

在本发明的实施方式中,在根据第一字典对第一字符串进行替换,得到第三字符串方面,处理器902,还用于执行以下操作:

根据第一字典,将第一字符串中的每个第二字符串,替换为第一字符串中的每个第二字符串在第一字典中对应的md5值,得到第三字符串。

在本发明的实施方式中,在根据第一字典和第一文本,生成第二字典方面,处理器902,还用于执行以下操作:

对于第一字典中的至少一个第一数据组中的每个第一数据组,分别确定每个第一数据组中的第二字符串在第一文本中的数量;

将每个第一数据组中的第二字符串,替换为每个第一数据组中的第二字符串在第一文本中的数量,得到至少一个第二数据组,其中,至少一个第二数据组与至少一个第一数据组一一对应;

将至少一个第二数据组作为第二字典。

在本发明的实施方式中,在根据第二字典将第三字符串转化为位运算式方面,处理器902,还用于执行以下操作:

根据第二字典,将第三字符串中的每个md5值,替换为第三字符串中的每个md5值在第二字典中对应的数量,得到位运算式。

应理解,本申请中的文本正则化装置可以包括智能手机(如android手机、ios手机、windowsphone手机等)、平板电脑、掌上电脑、笔记本电脑、移动互联网设备mid(mobileinternetdevices,简称:mid)、机器人或穿戴式设备等。上述文本正则化装置仅是举例,而非穷举,包含但不限于上述文本正则化装置。在实际应用中,上述文本正则化装置还可以包括:智能车载终端、计算机设备等等。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明可借助软件结合硬件平台的方式来实现。基于这样的理解,本发明的技术方案对背景技术做出贡献的全部或者部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施方式或者实施方式的某些部分所述的方法。

因此,本申请实施方式还提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行以实现如上述方法实施方式中记载的任何一种文本正则化方法的部分或全部步骤。例如,所述存储介质可以包括硬盘、软盘、光盘、磁带、磁盘、优盘、闪存等。

本申请实施方式还提供一种计算机程序产品,所述计算机程序产品包括存储了计算机程序的非瞬时性计算机可读存储介质,所述计算机程序可操作来使计算机执行如上述方法实施方式中记载的任何一种文本正则化方法的部分或全部步骤。

需要说明的是,对于前述的各方法实施方式,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施方式均属于可选的实施方式,所涉及的动作和模块并不一定是本申请所必须的。

在上述实施方式中,对各个实施方式的描述都各有侧重,某个实施方式中没有详述的部分,可以参见其他实施方式的相关描述。

在本申请所提供的几个实施方式中,应该理解到,所揭露的装置,可通过其它的方式实现。例如,以上所描述的装置实施方式仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施方式方案的目的。

另外,在本申请各个实施方式中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件程序模块的形式实现。

所述集成的单元如果以软件程序模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储器中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储器中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本申请各个实施方式所述方法的全部或部分步骤。而前述的存储器包括:u盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。

本领域普通技术人员可以理解上述实施方式的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储器中,存储器可以包括:闪存盘、只读存储器(英文:read-onlymemory,简称:rom)、随机存取器(英文:randomaccessmemory,简称:ram)、磁盘或光盘等。

以上对本申请实施方式进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施方式的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1