一种文本匹配方法、终端设备及存储介质
文献发布时间:2023-06-19 11:44:10
技术领域
本发明涉及文本匹配领域,尤其涉及一种文本匹配方法、终端设备及存储介质。
背景技术
目前基于规则的文本匹配通常使用正则表达式,但是使用正则表达式进行匹配存在两个比较大的问题:1、正则表达式只能定义基于文本字符本身的一些匹配规则,无法引入外部知识。在自然语言处理相关的标注任务中,往往需要在标注规则中引入一些词表、统计信息、外部知识等,才能基于规则达到较好的标注效果。2、如果存在大量的表达式,使用正则表达式需要一个个表达式去匹配文本,效率非常低。在实际的文本标注中往往要定义非常多的表达式对文本进行匹配,这时候在大量表达式中进行高效匹配就很重要了。
发明内容
为了解决上述问题,本发明提出了一种文本匹配方法、终端设备及存储介质。
具体方案如下:
一种文本匹配方法,包括以下步骤:
S1:根据文本匹配所需要的规则构建规则表达式集合,并定义和加载规则表达式集合中的规则表达式匹配时所需的外部资源;
S2:将规则表达式集合解析为树结构,当树结构中的节点中存储的规则表达式需要与外部资源进行匹配时,该节点中还包含对应的外部资源接口,通过外部资源接口在进行规则表达式匹配时读取外部资源;
S3:通过树结构对待匹配文本进行文本匹配。
进一步的,当外部资源的匹配需要通过至少两个规则表达式进行匹配时,将用于该外部资源匹配的规则表达式集合解析为树结构进行存储,解析后的树结构的节点在需要与外部资源进行匹配时包含用于连接外部资源的外部资源接口。
进一步的,树结构为前缀树、AC自动机和有限状态机中的一种。
进一步的,外部资源包括外部统计信息、词表和知识库。
进一步的,当待匹配文本有多个句子组成时,先将待匹配文本切分为句子后,将每个句子与分别与树结构进行匹配,并对匹配后的结果进行去重处理。
一种文本匹配终端设备,包括处理器、存储器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现本发明实施例上述的方法的步骤。
一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现本发明实施例上述的方法的步骤。
本发明采用如上技术方案,定义了类似正则表达式形式的语法规则,采用树结构进行规则存储,并定义可扩展的规则匹配逻辑,从而具有了类似正则表达式语法的灵活便捷、树结构匹配的高效率(尤其是匹配大量规则时)、可灵活进行功能扩展等优点。用于自然语言处理相关任务中进行规则标注,具有很高的实用性,相比传统的采用正则表达式的方式,功能更为强大、效率更高。
附图说明
图1所示为本发明实施例一的流程图。
图2所示为该实施例中姓名标注对应的树结构示意图。
图3所示为该实施例中详细地址标注对应的树结构示意图。
图4所示为该实施例中姓名和详细地址标注对应的树结构示意图。
图5所示为该实施例中切词及依存句法示意图。
图6所示为该实施例中地址模式串解析后的树结构示意图。
具体实施方式
为进一步说明各实施例,本发明提供有附图。这些附图为本发明揭露内容的一部分,其主要用以说明实施例,并可配合说明书的相关描述来解释实施例的运作原理。配合参考这些内容,本领域普通技术人员应能理解其他可能的实施方式以及本发明的优点。
现结合附图和具体实施方式对本发明进一步说明。
实施例一:
本发明实施例提供了一种文本匹配方法,如图1所示,其为本发明实施例所述的文本匹配方法的流程图,所述方法包括以下步骤:
S1:根据文本匹配所需要的规则构建规则表达式集合,并定义和加载规则表达式集合中的规则表达式匹配时所需的外部资源。
S2:将规则表达式集合解析为树结构,当树结构中的节点中存储的规则表达式需要与外部资源进行匹配时,该节点中还包含对应的外部资源接口,通过外部资源接口在进行规则表达式匹配时读取外部资源。
外部资源包括外部统计信息、词表、知识库等。
S3:通过树结构对待匹配文本进行文本匹配。
进一步的,当外部资源的匹配需要通过至少两个规则表达式进行匹配时,将用于该外部资源匹配的规则表达式集合解析为树结构进行存储,解析后的树结构的节点中扔能够包含用于连接外部资源的外部资源接口。
该实施例中优选采用的前缀树作为树结构,在其他实施例中,也可以采用其他的树结构,如AC自动机、有限状态机等,在此不做限制。
该实施例中通过树结构进行文本匹配的伪代码如下:
为了更清楚地说明本实施例的具体实现方式,下面将以从文本中标注姓名及详细地址作为例进行说明。
一、定义的外部资源包括:姓氏列表、省市区行政区划列表和从大量已知详细地址文本中挖掘得到的地址模式串列表和地址常见词列表。
二、在树结构中加载姓名和详细地址匹配的规则表达式和规则表达式对应的外部资源接口。
用于匹配姓名和详细地址的规则表达式集合包括多个规则表达式,如一条单独用于姓名标注的规则表达式集合构成的树结构如图2所示,一条单独用于详细地址标注的规则表达式集合构成的树结构如图3所示,两者合并组成的用于标注姓名和详细地址的表达式集合构成的树结构如图4所示。
图4中,姓名标注对应的规则表达式[1]需要匹配姓氏列表,因此需要将在规则表达式[1]对应的节点[1]中存储的外部资源接口为姓氏列表接口;规则表达式[2]、[3]、[4]并不需要匹配外部资源,因此在其对应的节点中并不需要存储外部资源接口。
图5中,规则表达式[5]需要匹配地址模式串列表,因此需要将在规则表达式[5]对应的节点[5]中存储的外部资源接口为地址模式串列表接口。
由于地址模式串是从大量已知详细地址文本中挖掘得到的,下面说明其挖掘过程:
(1)收集大量的地址语料,地址语料是大量地址字符串的集合,如:{“思明南路195号”,“厦门市万寿路81-16号附近”,“莲前西路29-101号明发商业广场3层”}。
(2)使用预定义的地址模式串去匹配地址文本,并将匹配到的子串替换为对应的地址模式串文本。如:
A、定义模式串:匹配1至6位数字加下划线+“号”或者“层”或者“栋”等,并声明模式串允许不匹配,替换上述地址语料中的如“195号”、“81-16号”、“29-101号”、“3层”等子串,替换后的模式串能匹配对应位置的任意数字与下划线的组合,而不止是原有文本中特定的数字。
B、定义模式串:与行政区划列表匹配,并将其删除,然后在所有地址字符串首部加上行政区划的模式串,并声明允许不匹配。例如:匹配上述例子中的“厦门市万寿路81-16号附近”,删除其中的“厦门市”并在首部加上行政区划匹配的模式串。
三、将待匹配文本切分为句子后,将每个句子与树结构分别进行匹配,如句子为“张三反映思明南路195号4楼拆迁问题”,则:
姓名匹配过程如下:
(1)从句子起始位置的“张”开始匹配,因为“张”在外部资源中的姓氏列表中,所以节点[1]的匹配通过,跳转到节点[2]。
(2)节点[2]根据规则将取跳过1至5个字,并将它们作为候选,具体合法的结果由后面的节点来决定,然后最终会选取其中跳过字数最少的合法候选项作为结果。例如此处将{“张三”,“张三反”,“张三反映”,“张三反映思”,“张三反映思明”}这五个作为候选项。跳转到节点[3]。
(3)节点[3]声明最终匹配结果不包含后续节点所匹配的部分。跳转到节点[4]。
(4)在节点[4]中,由于该句的切词及依存句法如图5所示,因此在候选项中,紧接着的非名词的词有“反映”和”南路”,对应的合法的候选词有{”张三”,“张三反映思明”}两个,由于节点[2]声明了尽量少匹配,因此节点[2]最终的匹配为“张三”;“反映”由于节点[3]的声明而不包含在匹配结果中。由于节点[4]中标注了能够匹配到“姓名”,因此得到了类型为“姓名”的词“张三”。
详细地址匹配过程如下:
(1)由于地址模式串的组成成分复杂,其内可能包含省市区行政区划、具体路段和地址常见词,因此匹配时需通过至少两个规则表达式进行匹配,因此将地址模式串解析成树结构存储,以文本“思明南路195号4楼”为例,解析后的树结构如图6所示。以待匹配文本“思明南路7号”为例,图6中的节点[1]匹配了0次行政区划,跳转到节点[2];在节点[2]匹配到了子串“思明南路”,跳转到节点[3];在节点[3]匹配到了“7号”,所以最终能匹配到“思明南路”和“思明南路7号”两个地址。
(2)以待匹配文本“张三反映思明南路195号4楼拆迁问题”为例,待匹配文本在匹配到“思明南路”时,图4中的节点[5]如上所述能匹配出“思明南路”和“思明南路7号”两个地址,由于这两个地址是重叠的,且节点[5]中的规则表达式声明了以更长的匹配结果优先,因此节点[5]匹配到的文本是“思明南路7号”,然后跳转到节点[6]。
(3)节点[6]的规则是指定以“定中关系”对匹配结果进行扩展,待匹配文本的依存句法结构如图5所示。节点[6]的规则还声明了只扩展地址词表中常见的词,地址词表常见词是从大量地址词中挖掘出来的常见词。在上述例子中,数字+“楼”组成的词是地址词中常见的词,而“拆迁”和“问题”则不是,因此通过定中关系,能扩展出“4楼”,而“拆迁问题”则不会被扩展。因此,在节点[6]匹配结果变成了“思明南路195号4楼”,将“思明南路195号4楼”作为最终标注的详细地址。
本实施例方法还可以应用于以下应用场景:
1、将待匹配文本前缀与指定的词列表进行匹配,具体的词列表,比如:姓氏列表、行政区划列表、敏感词列表等。
2、将待匹配文本前缀与已有带词性、词频的词典匹配,可指定词频阈值、词性等条件,匹配词典中所有可匹配的前缀词进行匹配。
3、统计语料中相邻字或词的点间互信息(PMI),得到字或词的邻接关系统计信息。将待匹配文本前缀以及已匹配部分的后缀,与邻接关系统计信息进行匹配。
4、使用nlp工具对整个待匹配文本进行依存句法分析,并通过指定的句法关系(如:定中关系)对已匹配文本进行向后扩展。
5、将待匹配文本前缀与外部知识库进行匹配,可指定匹配的类型(实体、属性、关系)及匹配的最大长度等。
本发明实施例定义了类似正则表达式形式的语法规则,采用树结构进行规则存储,并定义可扩展的规则匹配逻辑,从而具有了类似正则表达式语法的灵活便捷、树结构匹配的高效率(尤其是匹配大量规则时)、可灵活进行功能扩展等优点。用于自然语言处理相关任务中进行规则标注,具有很高的实用性,相比传统的采用正则表达式的方式,功能更为强大、效率更高。
实施例二:
本发明还提供一种文本匹配终端设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现本发明实施例一的上述方法实施例中的步骤。
进一步地,作为一个可执行方案,所述文本匹配终端设备可以是桌上型计算机、笔记本、掌上电脑及云端服务器等计算设备。所述文本匹配终端设备可包括,但不仅限于,处理器、存储器。本领域技术人员可以理解,上述文本匹配终端设备的组成结构仅仅是文本匹配终端设备的示例,并不构成对文本匹配终端设备的限定,可以包括比上述更多或更少的部件,或者组合某些部件,或者不同的部件,例如所述文本匹配终端设备还可以包括输入输出设备、网络接入设备、总线等,本发明实施例对此不做限定。
进一步地,作为一个可执行方案,所称处理器可以是中央处理单元(CentralProcessing Unit,CPU),还可以是其他通用处理器、数字信号处理器(Digital SignalProcessor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等,所述处理器是所述文本匹配终端设备的控制中心,利用各种接口和线路连接整个文本匹配终端设备的各个部分。
所述存储器可用于存储所述计算机程序和/或模块,所述处理器通过运行或执行存储在所述存储器内的计算机程序和/或模块,以及调用存储在存储器内的数据,实现所述文本匹配终端设备的各种功能。所述存储器可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序;存储数据区可存储根据手机的使用所创建的数据等。此外,存储器可以包括高速随机存取存储器,还可以包括非易失性存储器,例如硬盘、内存、插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)、至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
本发明还提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现本发明实施例上述方法的步骤。
所述文本匹配终端设备集成的模块/单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实现上述实施例方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)以及软件分发介质等。
尽管结合优选实施方案具体展示和介绍了本发明,但所属领域的技术人员应该明白,在不脱离所附权利要求书所限定的本发明的精神和范围内,在形式上和细节上可以对本发明做出各种变化,均为本发明的保护范围。
- 一种文本匹配方法、终端设备及存储介质
- 文本识别匹配方法和装置、终端设备