业务文档的公式信息提取方法及装置
技术领域
本发明涉及信息处理与文本挖掘技术领域,具体涉及一种业务文档的公式信息提取方法,此外,还涉及一种业务文档的公式信息提取装置。
背景技术
数据挖掘是在特定业务场景下的大量文本数据中,提取出有价值的信息,再通过分析所提取的信息,实现对业务文档内容的智能解析。在众多有价值的信息中,公式信息作为数据计算工具,对文档内容的解析具有直接影响。在公式信息中,最主要的内容即公式本身。
一般地,提取业务文档内的公式本身主要通过分析出现在文档中的数学符号,并结合数学符号临近的上下文内容,以确定包含数学符号的文本,作为提取出的公式。例如,业务文档中出现“每年的利息=本金×利率”,通过分析文档内容可知,文档中具有表示运算关系的数学符号“=”和“×”,因此可以直接提取数学符号以及临近的上下文内容,即“利息=本金×利率”。
现有的提取业务文档中公式的方法,主要依赖于对文档中数学符号的识别,和对数学符号临近上下文内容的提取。但在很多业务场景中,公式不会直接以纯数学符号的形式表现出来,而是以文本描述计算方法或文字符号表示。对于这种业务文档,现有的提取方法就无法准确地提取出公式信息。
发明内容
为解决上述技术问题,本申请提出一种业务文档的公式信息提取方法,以准确的提取出业务文档中的公式信息,特别是以文字形式表述的隐含的公式信息。
第一方面,提供一种业务文档的公式信息提取方法,包括:
获取第一序列,所述第一序列由业务文档生成,包括至少两个变量;
获取第一标注序列,所述第一标注序列包括至少两个预设变量,所述第一标注序列对应第一标注表达式,所述第一标注表达式包括所述至少两个预设变量和所述至少两个预设变量之间的运算关系;
如果所述第一序列与所述第一标注序列相匹配,则根据所述第一标注表达式及所述至少两个变量提取第一表达式,所述第一表达式包括所述至少两个变量和所述至少两个变量之间的运算关系,其中,所述至少两个变量之间的运算关系与所述第一标注表达式中的所述至少两个预设变量之间的运算关系相同。
结合第一方面,在第一方面的第一种实现方式中,所述第一序列还包括至少一个关键词,所述关键词为在所述第一序列中影响所述至少两个变量之间的运算关系的字词;所述第一标注序列还包括至少一个预设关键词,所述预设关键词为在所述第一标注序列中影响所述至少两个预设变量之间的运算关系的字词。
结合第一方面及第一方面的第一种实现方式,在第一方面的第二种实现方式中,获取第一序列的步骤,包括:
获取第一文本,所述第一文本为包含公式表达式的文本;
获取抽取模型,所述抽取模型包括至少一个变量节点;
如果所述第一文本与所述抽取模型中的变量节点匹配,则抽取匹配的变量;
将抽取出的变量按照其在所述第一文本中匹配位置的顺序进行组合,得到第一序列。
结合第一方面的第二种实现方式,在第一方面的第三种实现方式中,所述获取第一文本的步骤,包括:
获取业务文档;
识别所述业务文档中包含公式表达式的第一单句文本;
识别所述第一单句文本中的约束条件,所述约束条件为在业务文档中公式生效的前提条件;
根据识别出的约束条件,对所述第一文本内容进行删减,生成第一文本。
结合第一方面的第三种实现方式,在第一方面的第四种实现方式中,识别所述第一单句文本中的约束条件的步骤,包括:
将所述第一单句文本按照标点符号划分为至少两个第一小句文本;
获取识别模型,所述识别模型包括至少一个约束节点;
逐个将第一小句文本与约束节点进行比对,如果二者匹配,则抽取匹配的约束节点所对应的内容;
将抽取出的约束节点所对应的内容按照其在第一小句文本中匹配位置的顺序进行组合,得到第二序列;
获取第二标注序列,所述第二标注序列包括至少一个预设约束词,所述至少一个预设约束词单独或组合以表征约束条件;
如果所述第二序列与所述第二标注序列相匹配,则将所述第二序列对应的第一小句文本识别为所述第一单句文本中的约束条件。
结合第一方面及第一方面的第一至第四种实现方式,在第一方面的第五种实现方式中,所述第一序列还包括结果量;所述第一标注序列还包括预设结果量;
该提取方法还包括:
确定所述第一序列中的结果量为与所述第一表达式对应的结果量。
结合第一方面的第四至第五种实现方式,在第一方面第六种可能的实现方式中,该提取方法还包括:
如果所述第二序列与所述第二标注序列相匹配,则确定所述第二序列对应的第一小句文本为与所述第一表达式对应的公式约束信息。
结合第一方面的第四至第五种实现方式,在第一方面的第七种实现方式中,所述识别模型还包括至少一个延续约束节点,该提取方法还包括:
逐个将除所述约束条件之外的第一小句文本与识别模型中的延续约束节点进行比对;
如果第一小句文本与任一个延续约束节点匹配,并且所述第一小句文本在所述第一单句文本中紧随于所述约束条件之后,则确定所述约束条件与所述第一小句文本为与所述第一表达式对应的公式约束信息。
结合第一方面的第三种实现方式,在第一方面的第八种实现方式中,在识别所述业务文档中包含公式表达式的第一单句文本的步骤之后,还包括:
如果所述第一单句文本包括多项词,则获取包含公式表达式的第二文本,其中,所述多项词为表征后续内容存在超过一个组成项或超过一个选项的语义的字词;
获取第三序列,所述第三序列由所述第二文本生成,包括至少两个变量、至少两个序号和多项词;
获取第三标注序列,所述第三标注序列包括至少两个预设变量、至少两个预设序号和预设多项词,所述第三标注序列对应第二标注表达式,所述第二标注表达式包括所述至少两个预设变量和所述至少两个预设变量之间的运算关系;
如果所述第三序列与所述第三标注序列相匹配,则根据所述第三标注序列和所述第三序列中的至少两个变量提取第二表达式,所述第二表达式包括所述第三序列中的至少两个变量和所述至少两个变量之间的运算关系,其中,所述第三序列中的至少两个变量之间的运算关系与所述第二标注表达式中的所述至少两个预设变量之间的运算关系相同。
第二方面,提供一种业务文档的公式信息提取装置,包括:
获取单元,用于获取第一序列和第一标注序列,其中,所述第一序列由业务文档生成,包括至少两个变量,所述第一标注序列包括至少两个预设变量,所述第一标注序列对应第一标注表达式,所述第一标注表达式包括所述至少两个预设变量和所述至少两个预设变量之间的运算关系;
处理单元,用于在所述第一序列与所述第一标注序列相匹配的情况下根据所述第一标注表达式及所述至少两个变量提取第一表达式,其中,所述第一表达式包括所述至少两个变量和所述至少两个变量之间的运算关系,所述至少两个变量之间的运算关系与所述第一标注表达式中的所述至少两个预设变量之间的运算关系相同。
上述技术方案中的方法,首先获取由业务文档生成的第一序列,获取第一标注序列及其对应的第一标注表达式。然后将第一序列与第一标注序列进行比对,如果二者匹配,则将第一序列中变量之间的运算关系设置成与第一标注表达式中预设变量之间的运算关系相同,从而生成包括第一序列中的变量以及变量之间的运算关系的第一表达式,方便、准确地提取出了变量之间的运算关系。即便在业务文档中公式表达式是以文字描述的方式来表示,也可以有效地被提取出来。该方法能够应用于处理不同的业务文档,以提取业务文档中的公式信息,适用性广。
附图说明
为了更清楚地说明本申请的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本申请的业务文档的公式信息提取方法的第一个实施例的流程图;
图2为本申请的业务文档的公式信息提取方法的第一个实施例中,获取第一序列的步骤的一种实现方式的流程图;
图3为本申请的业务文档的公式信息提取方法的第一个实施例中,获取第一文本的步骤的一种实现方式的流程图;
图4为本申请的业务文档的公式信息提取方法的第二个实施例的流程图;
图5为本申请的业务文档的公式信息提取方法的第二个实施例中,提取第一表达式和提取结果量的一种实现方式的流程图;
图6为本申请的业务文档的公式信息提取方法的第三个实施例中,识别第一单句文本中的约束条件一种实现方式的流程图;
图7为本申请的业务文档的公式信息提取方法的第三个实施例中,识别出公式表达式所对应的公式约束信息一种实现方式的流程图;
图8为本申请的业务文档的公式信息提取方法的第四个实施例中,提取第二表达式的一种实现方式的流程图;
图9为本申请的业务文档的公式信息提取装置的一种实现方式的结构示意图。
具体实施方式
下面对本申请的实施例作详细说明。
公式是指用数学符号表示、各个量之间具有一定关系的式子。一般地,公式主要包括结果量、变量和运算关系三个部分。其中,结果量是由变量通过运算关系确定的,即:结果量=运算关系(变量)。在上述公式中,等号右边的变量和变量之间的运算关系也被称为表达式。
在本申请中,变量包括取值能够变化的量,也包括常量,我们将常量看成是一种特殊的取值不变的量,并将取值能够变化的量和取值不变的量这二者统称为“变量”。运算关系可以是数值计算的关系,例如:“+”、“-”、“×”、“÷”等;也可以是逻辑关系,例如“与”、“或”、“非”、“取最大”等。一个公式的可能包括多个变量,例如:“结果量=变量1+变量2+变量3”、“结果量=变量4×变量5”。公式中也可能只含有一个变量,例如:“结果量=变量6”,这种情况下,公式的右边原本并不包含运算关系,可以将其看成结果量=变量6×变量7,其中,变量7的值为1。如此,可以将公式中只包含一个变量的情况看成是包含两个或超过两个变量的情况的特例。
本申请中的公式信息,包括公式本身,也就是公式的结果量和公式的表达式。在本申请中,公式信息还可以包括公式约束信息,即在业务文档中公式生效的前提条件。
本申请中的业务文档是在特定的业务场景中进行业务活动所使用的文本资料,例如:合同、宣传文本、业务说明书、法律文书等,这些文本资料可以是来源于业务平台收集保存的资料,也可以是人工录入或者直接从大数据中获取的资料。
与普通文本相比,业务文档通常具有约定俗成的结构框架。例如,保险合同通常具有“保险责任”、“责任免除”、“受益人”、“释义”等章节。还例如,宣传文本通常具有“公司简介”、“产品介绍”、“成功案例”等章节。尽管业务文档通常具有一定的约定俗成的结构框架,但其具体的文本内容和文字描述存在较大区别。例如,不同的保险公司都有重大疾病相关的保险产品以及相应的保险合同,但是不同的保险公司所制定的保险合同的具体内容和文字描述上存在很多区别。比如,对于保险合同中的“保险责任”,有的保险合同将其描述为“本公司提供的保障”,也有的保险合同将其描述为”您获得的保障”等。因此,业务文档虽然具有一定的结构框架,但仍然属于非结构化文本,即,无法直接被计算机识别的文本。
为此,就需要从非结构化存储的业务文档中挖掘出公式信息,以便于后续对挖掘出的信息进行分析。
本申请的第一个实施例提供一种业务文档的公式信息提取方法,包括以下S100-S300的步骤。
S100:获取第一序列,所述第一序列由业务文档生成,包括至少两个变量。
在S100的步骤中,第一序列包括至少两个变量。以保险合同作为用于提取公式信息的业务文档来举例,例如,第一序列具体可以是第一序列a:[每日给付津贴][实际住院天数];也可以是第一序列b:[账户价值][风险保额][200%];还可以是第一序列c:[账户价值]。其中,第一序列b中的变量[200%]可以看成是一种取值不变的变量;第一序列c可以视为第一序列包括至少两个变量的一种特殊情况,即第一序列c中仅包含[账户价值]这一个变量时,可以视为[账户价值]×[100%],此时第一序列c表示为[账户价值][100%]。
第一序列由业务文档生成,在一种实现方式中,其生成的过程可以包括业务文档生成第一文本、第一文本生成第一序列的过程。
具体地,在一种实现方式中,获取第一序列的步骤包括:
S110:获取第一文本,所述第一文本为包含公式表达式的文本;
S120:获取抽取模型,所述抽取模型包括至少一个变量节点;
S130:如果所述第一文本与所述抽取模型中的变量节点匹配,则抽取匹配的变量;
S140:将所述抽取出的变量按照其在所述第一文本中匹配位置的顺序进行组合,得到第一序列。
这里,S110-S140的步骤也就是由第一文本生成第一序列的过程。
在S110的步骤中,第一文本为包含公式表达式的文本。如前所述,公式表达式包括变量以及变量之间的关系。
在一种实现方式中,获取第一文本的步骤具体可以包括:
S111:获取业务文档;
S112:识别所述业务文档中包含公式表达式的第一单句文本;
S113:识别所述第一单句文本中的约束条件,所述约束条件为在业务文档中公式生效的前提条件;
S114:根据识别出的约束条件,对所述第一文本的内容进行删减,生成第一文本。
这里,S111-S114的步骤也就是业务文档生成第一文本的过程。
在S111的步骤中,如前所述,业务文档是在特定的业务场景中进行业务活动所使用的文本资料,通常具有约定俗成的结构框架,但仍然属于非结构化文本。故而就需要采用信息挖掘技术从业务文档中提取出公式信息,以便于结构化存储公式信息,以及后续对公式信息进行进一步分析。
在S112的步骤中,将业务文档按照句号、感叹号和/或问号进行划分,就得到了至少一个单句。第一单句文本为包含公式表达式的单句。具体地,识别第一单句文本的步骤,可以将业务文档中划分出的至少一个单句,将单句逐句与预设的第一识别词进行匹配,如果能够匹配上,则认为该单句包含公式表达式,即为第一单句文本。此处,第一识别词为表征文本中包含公式信息的语义的字词。例如,以业务文档为保险合同来举例,当一个句子中包含“给付”、“金额为”、“返还保险费”等词时,通常这个句子中包括了公式表达式。故而,将“给付”、“金额为”、“返还保险费”等预设为第一识别词。当某个单句匹配上“给付”时,则可以识别该单句为保险合同中的第一单句文本。
更具体地,第一识别词可以由表征该词的语义的正则来表示,例如,表示第一识别词“给付”的正则可以是“给付|支付|赔付”。也就是说,当某个单句中包括“给付”、“赔付”和“支付”中的任意一个词,就认为该单句和第一识别词能够匹配上,从而识别该单句为包含公示表达式的第一单句文本。
在S113的步骤中,这里的约束条件为业务文档中公式生效的前提条件,是公式信息的其中一种。
举例来说,从业务文档1(某个保险合同)中识别出的第一单句文本1为:
如果被保险人因疾病身故,我们将按本合同所有已交保险费的200%给付身故保险金,同时本合同终止。
第一单句文本1中存在公式“身故保险金(结果量)=已交保险费(变量1)×200%(变量2)”。但是在第一单句文本1中,该公式生效存在前提条件,也就是约束条件“如果被保险人因疾病身故”。
在一种实现方式中,识别第一单句文本中的约束条件,可以采用匹配识别的方法,例如,当第一单句文本中包括“如果”、“若”等词,就认为包括这些词的文本为约束条件。以第一单句文本1为例,首先将第一单句文本1按照逗号划分为3个小句,然后逐个小句进行匹配,如果某个小句中包括“如果”或“若”,则将该小句确定为约束条件。经过匹配可以知道,第一单句文本1划分出的3个小句中,第一个小句“如果被保险人因疾病身故”可以确定为约束条件。
在另一个种实现方式中,识别第一单句文本中的约束条件还可以采用序列比对的方法,具体地,序列比对的识别方法将在第三个实施例中详述。
可选地,在识别第一单句文本中的约束条件的步骤之前,还可以获取业务文档中该第一单句文本的前一句文本,即第二单句文本。然后将第二单句文本按照标点符号划分为第二小句文本,将所有第二小句文本和所有第一小句文本一起,逐个地确认其是否为从第一单句文本中提取出的第一表达式所对应的约束条件。具体确认第二小句文本是否为约束条件的方法与确认第一小句文本是否为约束条件的方法类似,可以相互参考,此处不再赘述。
在某些业务文档中,由于公式的约束条件过长,可能会将约束条件放在包含公式的文本的前一句来单独表述,而不与包含公式的文本放在一个单句中。例如,“若被保险人在我们开始支付养老年金前身故,且身故时未满十八周岁,本合同终止。我们按下列两项较大者向身故保险金受益人给付身故保险金:(1)该保险单年度末的现金价值;(2)您累计已缴纳的保险费”。通过上述的方法,可以有效地避免提取公式信息的过程中遗漏公式的约束条件的情况。
在S114的步骤中,第一文本为第一单句文本删减去约束条件之后剩余的文本。
沿用前述的第一单句文本1的例子,通过S113的步骤可以知道,第一单句文本1中约束条件为“如果被保险人因疾病身故”,因此,第一文本1即为“我们将按本合同所有已交保险费的200%给付身故保险金,同时本合同终止”。
根据用途的不同,模型可以分为多种类型,例如,在本申请的技术方案中用于识别业务文档中的变量、关键词、序号和/或多项词的抽取模型,用于识别第一单句文本中的约束条件的识别模型等。本申请中的抽取模型、识别模型均是树状结构存储的模型,其中包括至少一个父节点,每个父节点下可以包括至少一个子节点,也可以不包括子节点。最底层的节点上具有正则表达式,该正则表达式涵盖了表示这一节点对应的概念的尽可能多的表述形式,用于与文本进行匹配,以达到抽取或者识别文本中这一概念的目的。
在一种实现方式中,本申请中的抽取模型和识别模型都可以采用现有的DINFO-OEC平台来构建。抽取模型、识别模型一般通过归纳整理业务场景下的样本数据,在提取样本数据中的各个节点以及节点之间的逻辑关系的基础上来构建,每个节点上具有正则表达式,用于抽取或者识别业务文档中的这一概念。
在S120的步骤中,变量节点是抽取模型中的一个节点,用于表征一个变量的概念。这一概念是从某个业务场景下的样本数据中提取出来的,具有一个正则表达式。该正则表达式可以与业务文档进行匹配,从而抽取业务文档中的这一变量。
例如,以提取保险合同中的公式信息为业务场景,构建的抽取模型局部可以如表1所示。
表1 抽取模型局部示例
在表1中,“|”表示逻辑或,“()”表示多元取整。“所交.{0,6}保险费”表示在匹配文本时,只要“所交”和“保险费”之间包含0~6个字符的文本,都会被“所交.{0,6}保险费”匹配上。例如,当文本中有“所交的本主险合同保险费”时,就认为能够匹配上“所交.{0,6}保险费”。“[0-9]+%”中的“[]+”表示匹配方括号内的字符串至少一次。“[0-9]+%”表示在匹配文本时,只要文本中出现0-9的任一个数字至少一次,并且数字后具有“%”,就会被“[0-9]+%”匹配上。例如,当文本中有“25%”、“9%”、“500%”等时,就会认为能够匹配上“[0-9]+%”。类似地,“百分之[一二三四五六七八九十零点百]+”表示在匹配文本时,只要文本中出现“百分之”,并且其后出现中文的零至九或者“点”或者“百”至少一次,就会认为能够匹配上“百分之[一二三四五六七八九十零点百]+”。例如,当文本中包括“百分之五十”、“百分之二百”或“百分之十五点六”等,就会认为能够匹配上“百分之[一二三四五六七八九十零点百]+”。本申请中其他类似的表示方法含义与此相同,不再一一说明。
在S130的步骤中,第一文本与抽取模型中的变量节点匹配,指的是用变量节点上的正则表达式一一与第一文本进行匹配,如果能够匹配上,则认为第一文本与该变量节点匹配,然后再抽取该变量。同一个第一文本可以与多个变量节点匹配,因此,同一个第一文本中可以抽取出多个变量。
需要注意的是,在一种实现方式中,将第一文本与变量节点进行匹配时采用长串优先的匹配原则。例如,第一文本中存在“每日住院津贴基本保险金额”,在用变量节点1与第一文本匹配时,匹配到“基本保险金额”6个字符;在用变量节点3与第一文本匹配时,匹配到“每日住院津贴基本保险金额”12个字符。虽然两个变量节点都与该第一文本中的“每日住院津贴基本保险金额”匹配,但根据长串优先原则,此时认为变量节点3与第一文本中的“每日住院津贴基本保险金额”匹配,从而抽取出变量节点3的名称[每日给付津贴],将其作为一个抽取出的变量,而不抽取变量节点1的名称[基本保险金额]。如果第一文本中除“每日住院津贴基本保险金额”之外,其他位置还存在“基本保险金额”的字符串,则还可以提取出变量节点1的名称[基本保险金额],将其作为另一个抽取出的变量。
除了利用抽取模型来抽取变量时可以遵守长串优先的匹配原则之外,后续实施例中用于抽取关键词、序号和多项词,以及利用识别模型识别约束节点等都可以遵守长串优先的匹配原则。
在S140的步骤中,将S130的步骤中抽取出的变量按照其在第一文本中的词序组合,得到第一序列。也就是说,第一序列实际上包含了至少两个变量,并隐含了这多个变量之间的顺序关系。
沿用前述步骤S114中的例子,第一文本1为:
我们将按本合同所有已交保险费的200%给付身故保险金,同时本合同终止。
将每个节点的正则表达式逐个与第一文本1进行匹配,正则2与第一文本1匹配,因此抽取出变量节点2的名称和具体匹配的字符——[倍数:200%],将其作为一个抽取出的变量;正则5与第一文本1匹配,因此抽取出变量节点5的名称[已交保险费],将其作为另一个抽取出的变量。然后将抽取出的两个变量按照其在第一文本1中匹配位置的先后顺序进行组合,得到第一序列1:[已交保险费][倍数:200%]。
S200:获取第一标注序列,所述第一标注序列包括至少两个预设变量,所述第一标注序列对应第一标注表达式,所述第一标注表达式包括所述至少两个预设变量和所述至少两个预设变量之间的运算关系。
在S200的步骤中,第一标注序列可以通过人工对样本数据进行标注提取得到。在对于样本数据进行归纳整理以构建抽取模型的时候,可以一并完成人工标注提取第一标注序列和与之对应的第一标注表达式的工作。
例如,样本数据1:
若被保险人在本合同有效至期满时仍然生存,我们按所交保险费的100%给付满期保险金,本合同效力终止。
经过人工标注可以得到:
第一标注序列1:[已交保险费][倍数:100%]。
第一标注表达式1:[已交保险费]×[倍数:100%]。
其中,[已交保险费]、[倍数:100%]分别是两个预设变量,“×”(乘以)是两个预设变量之间的运算关系。
类似地,还可以通过标注其他样本数据得到其他第一标注序列和与之对应的第一标注表达式。
S300:如果所述第一序列与所述第一标注序列相匹配,则根据所述第一标注表达式及所述至少两个变量提取第一表达式,所述第一表达式包括所述至少两个变量和所述至少两个变量之间的运算关系,其中,所述至少两个变量之间的运算关系与所述第一标注表达式中的所述至少两个预设变量之间的运算关系相同。
在S300的步骤中,第一序列和第一标注序列相匹配,指的是第一序列中的多个变量与第一标注序列中的多个预设变量分别相同,并且多个变量在第一序列中的先后顺序与多个预设变量在第一标注序列中的先后顺序相同。这里,第一序列中的某个变量与第一标注序列中某个预设变量相同,可以是二者完全相同,也可以是二者的某个特定的属性相同。例如,第一序列中的变量[已交保险费],与第一标注序列中的预设变量[已交保险费],二者完全相同,故而认为二者相同。又例如,第一序列中的变量[倍数:200%],与第一标注序列中的预设变量[倍数:100%],二者虽然具体的数值不同,但是都是倍数,故而认为二者相同。
如果第一序列和第一标注序列相匹配,则将第一序列中多个变量之间的运算关系设置成与第一标注表达式中多个预设变量之间的运算关系相同,生成第一表达式。
沿用前述步骤中的例子,
第一序列1为:[已交保险费][倍数:200%];
第一标注序列1为:[已交保险费][倍数:100%];
第一标注表达式1为:[已交保险费]×[倍数:100%]。
由于第一序列1和第一标注序列1匹配,故而可以提取第一表达式1:[已交保险费]×[倍数:200%]。第一表达式1就是从保险合同中提取出来的其中一类公式信息。更加简便地,第一表达式1也可以输出为:已交保险费×200%。
上述技术方案中的方法,首先获取由业务文档生成的第一序列,获取从业务文档的样本数据中标注出的第一标注序列及其对应的第一标注表达式。然后将第一序列与第一标注序列进行比对,如果二者匹配,则将第一序列中变量之间的运算关系设置成与第一标注表达式中预设变量之间的运算关系相同,从而生成包括第一序列中的变量以及变量之间的运算关系的第一表达式,方便准确地提取出了变量之间的运算关系。即便在业务文档中公式表达式以文字描述的方式来表示,也可以有效地被提取出来。该方法能够应用于处理不同的业务文档,以提取出业务文档中的公式信息,适用性广。
以保险合同作为用于提取公式信息的业务文档来举例,
业务文档2包括以下文本:
被保险人在本合同生效日起因疾病导致身故,本公司按主险已交保险费和附加险已交保险费数额之和的200%给付疾病身故保险金,本合同终止。
业务文档3包括以下文本:
被保险人在本合同生效日起因疾病导致身故,本公司按主险已交保险费以及附加险已交保险费数额的200%给付疾病身故保险金,本合同终止。
利用表1所示的抽取模型,业务文档2可以生成第一序列2:[主险已交保险费][附加险已交保险费][倍数:200%]。
业务文档3可以生成第一序列3:[主险已交保险费][附加险已交保险费][倍数:200%]。
业务文档2和业务文档3中的公式表达式实际上是不同的,但获取到的第一序列2和第一序列3却完全一样,这就容易导致最终从两个业务文档中提取出来的公式表达式也相同,进而造成提取出的公式信息错误。
为了避免发生这样的错误,进一步提高从业务文档中提取公式信息的准确率,在本申请的第二个实施例中,提供一种业务文档的公式信息提取方法,包括以下S400、S500和S300的步骤。
S400:获取第一序列,所述第一序列由业务文档生成,包括至少两个变量和至少一个关键词,所述关键词为在所述第一序列中影响所述至少两个变量之间的运算关系的字词。
在S400的步骤中,关键词为在所述第一序列中影响所述变量之间的运算关系的字词。在一种实现方式中,关键词可以从某个业务场景下的样本数据中提取出来,在抽取模型中构建关键词节点,每个关键词节点具有一个正则表达式。该正则表达式可以与业务文档进行匹配,以从业务文档中抽取出关键词。例如,部分关键词节点如表2所示。
表2 抽取模型局部示例
沿用前述业务文档2和业务文档3的例子,利用表1和表2所示的抽取模型,可以由业务文档2生成第一序列2’:[主险已交保险费][附加险已交保险费][之和][倍数:200%];
可以由业务文档3生成第一序列3’:[主险已交保险费][附加险已交保险费][倍数:200%]。
如此,第一序列2’和第一序列3’不一样,从而在获取到的第一标注序列进行比对的时候,其各自能够匹配的第一标注序列也不相同。进而可以根据其各自匹配的第一标注序列所对应的第一标注表达式来分别提取出第一表达式。
S500:获取第一标注序列,所述第一标注序列包括至少两个预设变量和至少一个预设关键词,所述预设关键词为在所述第一标注序列中影响所述至少两个预设变量之间的运算关系的字词,所述第一标注序列对应第一标注表达式,所述第一标注表达式包括所述至少两个预设变量和所述至少两个预设变量之间的运算关系。
在S500的步骤中,包括预设关键词的第一标注序列也可以通过人工对样本数据进行标注抽取得到。例如,对于样本数据2:
在观察期结束的次日,本公司按已交的本合同的保险费和附加意外险合同的保险费数额之和的120%给付长期护理保险金,本合同效力终止。
经过人工标注,可以得到第一标注序列2:[主险已交保险费][附加险已交保险费][之和][倍数:120%];
与之对应的第一标注表达式2:([主险已交保险费]+[附加险已交保险费])×[倍数:120%]。
其中,[主险已交保险费]、[附加险已交保险费]和[倍数:120%]分别为三个预设变量,[之和]为预设关键词。
类似地,还可以标注其他样本数据得到其他第一标注序列和与之对应的第一标注表达式,例如,第一标注序列3:[主险已交保险费][附加险已交保险费][倍数:105%];
第一标注表达式3:[主险已交保险费]+[附加险已交保险费]×[倍数:105%]。
S300:如果所述第一序列与所述第一标注序列相匹配,则根据所述第一标注表达式及所述至少两个变量提取第一表达式,所述第一表达式包括所述至少两个变量和所述至少两个变量之间的运算关系,其中,所述至少两个变量之间的运算关系与所述第一标注表达式中的所述至少两个预设变量之间的运算关系相同。
在本实施例的S300的步骤中,如果所述第一序列与所述第一标注序列相匹配的步骤,具体包括:
如果所述第一序列中所有的变量和关键词与所述第一标注序列中所有的预设变量和预设关键词分别相同,并且变量和关键词在第一序列中的先后顺序与预设变量和预设关键词在第一标注序列中的先后顺序相同,则所述第一序列与所述第一标注序列相匹配。
此处,与第一个实施例类似地,第一序列中的某个变量与第一标注序列中某个预设变量相同,可以是二者完全相同,也可以是二者的某个特定的属性相同。第一序列中的某个关键词与第一标注序列中某个预设关键词相同,可以是二者完全相同,也可以是二者的某个特定的属性相同。
沿用S400和S500的步骤中的例子,
第一序列2’:[主险已交保险费][附加险已交保险费][之和][倍数:200%];
第一序列3’:[主险已交保险费][附加险已交保险费][倍数:200%]。
第一标注序列2:[主险已交保险费][附加险已交保险费][之和][倍数:120%];
第一标注表达式2:([主险已交保险费]+[附加险已交保险费])×[倍数:120%]。
第一标注序列3:[主险已交保险费][附加险已交保险费][倍数:105%];
第一标注表达式3:[主险已交保险费]+[附加险已交保险费]×[倍数:105%]。
将第一序列2’分别与第一标注序列2和第一标注序列3进行比对,发现第一序列2’与第一标注序列2匹配,与第一标注序列3不匹配,则提取第一表达式2:([主险已交保险费]+[附加险已交保险费])×[倍数:200%]。该第一表达式2就是从业务文档2中提取出的公式表达式。更加简便地,第一表达式2也可以输出为:(主险已交保险费+附加险已交保险费)×200%。
类似地,将将第一序列3’分别与第一标注序列2和第一标注序列3进行比对,发现第一序列3’与第一标注序列3匹配,与第一标注序列2不匹配,则提取第一表达式3:[主险已交保险费]+[附加险已交保险费]×[倍数:200%]。该第一表达式3就是从业务文档3中提取出的公式表达式。更加简便地,第一表达式3也可以输出为:主险已交保险费+附加险已交保险费×200%。
可选地,第一序列中除了变量以外,还可以包括结果量;相应地,第一标注序列还包括预设结果量,以此来提取出业务文档中公式的结果量,从而提取出更加全面的公式信息。第一序列中可以包括结果量和变量,也可以同时包括结果量、变量和关键词。以下仅以第一序列中同时包括变量和关键词的情况为例来说明。
具体地,该业务文档的公式信息提取方法包括以下S401、S501、S300和S600的步骤。
S401:获取第一序列,所述第一序列由业务文档生成,包括至少两个变量、至少一个关键词和结果量,所述关键词为在所述第一序列中影响所述至少两个变量之间的运算关系的字词。
在一种实现方式中,与构建变量节点的方法类似地,可以通过对样本数据进行归纳整理,在抽取模型中构建结果量节点,以便从业务文档中抽取出结果量。例如,部分结果量节点如表3所示。
表3 抽取模型局部示例
仍然以业务文档2为例,业务文档2为:
被保险人在本合同生效日起因疾病导致身故,本公司按主险已交保险费和附加险已交保险费数额之和的200%给付疾病身故保险金,本合同终止。
利用表1、表2和表3的抽取模型进行抽取,可以得到第一序列4:[主险已交保险费][附加险已交保险费][之和][倍数:200%][保险责任名称:疾病身故保险金]。此处,在抽取结果量时,除了抽取结果量节点的名称,还可以抽取业务文档中与该结果量节点上的正则匹配的字符串,以便抽取出更加具体的结果量供后续数据处理与分析使用。例如,在上述例子中,抽取结果量时可以抽取出[保险责任名称:疾病身故保险金]。
S501:获取第一标注序列,所述第一标注序列包括至少两个预设变量、至少一个预设关键词和预设结果量,所述预设关键词为在所述第一标注序列中影响所述至少两个预设变量之间的运算关系的字词,所述第一标注序列对应第一标注表达式,所述第一标注表达式包括所述至少两个预设变量和所述至少两个预设变量之间的运算关系。
在S501的步骤中,第一标注序列可以通过人工对样本数据进行标注提取得到。例如,对于样本数据2:
在观察期结束的次日,本公司按已交的本合同的保险费和附加意外险合同的保险费数额之和的120%给付长期护理保险金,本合同效力终止。
经过人工标注,可以得到第一标注序列4:[主险已交保险费][附加险已交保险费][之和][倍数:120%][保险责任名称:长期护理保险金];
与之对应的第一标注表达式4:([主险已交保险费]+[附加险已交保险费])×[倍数:120%]。
其中,[主险已交保险费]、[附加险已交保险费]和[倍数:120%]为三个预设变量,[保险责任名称:长期护理保险金]为预设结果量,[之和]为预设关键词。
S300:如果所述第一序列与所述第一标注序列相匹配,则根据所述第一标注表达式及所述至少两个变量提取第一表达式,所述第一表达式包括所述至少两个变量和所述至少两个变量之间的运算关系,其中,所述至少两个变量之间的运算关系与所述第一标注表达式中的所述至少两个预设变量之间的运算关系相同。
在此方案S300的步骤中,如果所述第一序列与所述第一标注序列相匹配的步骤,具体包括:
如果所述第一序列中所有的变量、关键词和结果量与所述第一标注序列中所有的预设变量、预设关键词和预设结果量分别相同,并且变量、关键词和结果量在第一序列中的先后顺序与预设变量、预设关键词和预设结果量在第一标注序列中的先后顺序相同,则所述第一序列与所述第一标注序列相匹配。
此处,判断变量和预设变量、关键词和预设关键词以及结果量和预设结果量是否相同的标准可以参考本实施例和第一个实施例中的相关描述。第一序列中的结果量与第一标注序列中预设结果量相同,可以是二者完全相同,也可以是二者的某个特定的属性相同,可以根据实际情况来选择。
S600:确定所述第一序列中的结果量为与所述第一表达式对应的结果量。
此时,可以从业务文档中提取出至少两个公式信息——第一表达式和与之对应的结果量。这两个公式信息就可以构成一个完整的公式,即“结果量=第一表达式”。
沿用S401和S501的例子,
第一序列4:[主险已交保险费][附加险已交保险费][之和][倍数:200%][保险责任名称:疾病身故保险金]。
第一标注序列4:[主险已交保险费][附加险已交保险费][之和][倍数:120%][保险责任名称:长期护理保险金];
与之对应的第一标注表达式4:([主险已交保险费]+[附加险已交保险费])×[倍数:120%]。
将第一序列4和第一标准序列4比对,发现二者匹配,则提取第一表达式4:([主险已交保险费]+[附加险已交保险费])×[倍数:200%]。从而可以确定结果量1[保险责任名称:疾病身故保险金]为与第一表达式4对应的公式信息,进而得到了从业务文档2中提取出的公式——[保险责任名称:疾病身故保险金]=([主险已交保险费]+[附加险已交保险费])×[倍数:120%]。更加简便地,结果量1和第一表达式4也可以输出为:疾病身故保险金=(主险已交保险费+附加险已交保险费)×120%。
请参考图6,在本申请的第三个实施例中,提供过一种业务文档的公式信息提取方法,包括第一个实施例中的S100-S300的步骤,此处不再赘述。其中,在步骤S113中,识别第一单句文本中的约束条件还可以另一种实现方式,即采用序列比对的方法,具体包括:
S1131:将所述第一单句文本按照标点符号划分为至少两个第一小句文本;
S1132:获取识别模型,所述识别模型包括至少一个约束节点;
S1133:逐个将第一小句文本与约束节点进行比对,如果二者匹配,则抽取匹配的约束节点所对应的内容;
S1134:将所述抽取出的约束节点所对应的内容按照其在第一小句文本中匹配位置的顺序进行组合,得到第二序列;
S1135:获取第二标注序列,所述第二标注序列包括至少一个预设约束词,所述至少一个预设约束词单独或组合以表征约束条件;
S1136:如果所述第二序列与所述第二标注序列相匹配,则将所述第二序列对应的第一小句文本识别为所述第一单句文本中的约束条件。
在S1131的步骤中,由于第一单句文本原本就是从业务文档中按照句号、感叹号和/或问号划分后识别出来的包含公式信息的单句,因此,一般来说,第一单句文本中不再包含句号、感叹号或问号等此前已经用于将业务文档切分成单句时使用过的标点符号。在此步骤中,将第一单句文本划分为第一小句文本所使用的标点符号通常是逗号、分号和/或冒号等标点符号,以此将第一单句文本划分为至少两个第一小句文本。
仍然以第一个实施例中的第一单句文本1为例。第一单句文本1:
如果被保险人因疾病身故,我们将按本合同所有已交保险费的200%给付身故保险金,同时本合同终止。
可以根据“逗号”将该第一单句文本1划分为3个第一小句文本:
第一小句文本1:如果被保险人因疾病身故;
第一小句文本2:我们将按本合同所有已交保险费的200%给付身故保险金;
第一小句文本3:同时本合同终止。
在S1132的步骤中,约束节点是识别模型中的一个节点,在某些应用场景中,一个约束节点可以表征一个约束条件;在另一些应用场景中,多个约束条件的组合可以表征一个约束条件。这些约束节点是从某个业务场景下的样本数据中提取出来的,每个约束节点具有一个正则表达式。该正则表达式可以与文本进行匹配,从而识别文本中的这一约束节点。
例如,以提取保险合同中的公式信息为业务场景,构建的识别模型局部可以如表4所示。
表4 识别模型局部示例
在S1133的步骤中,第一小句文本与识别模型中的约束节点比对,具体地,用约束节点上的正则表达式逐一地与第一小句文本进行比对;如果能够匹配上,则认为该第一小句文本与该约束节点匹配,然后再抽取该约束节点所对应的内容。这里,约束节点所对应的内容可以是约束节点的名称,还可以是第一小句文本中与该约束节点上的正则匹配的字符串,可以根据实际情况来选择。同一个第一小句文本可以与多个约束节点匹配,因此,同一个第一小句文本中可以抽取出多个约束节点所对应的内容。
在S1134的步骤中,与第一序列相似地,将抽取出的约束节点所对应的内容组合,得到的第二序列实际上包含至少一个约束节点所对应的内容。当抽取出的约束节点所对应的内容≥2项时,该第二序列隐含了各个约束节点对应的内容之间的顺序关系。此处,对于一个约束节点而言,抽取出其对应的内容,无论抽取出名称或与正则匹配的字符串中的任一者还是二者均抽取出来,都仅计为1项。
沿用S1132的步骤中的例子,首先将约束节点上的正则表达式逐一地与第一小句文本1进行匹配,抽取出3个约束节点所对应的内容。此处抽取出这3个约束节点的名称:[如果]、[被保险人]、[生存状态]。将3个约束节点的名称按照其在第一小句文本1中匹配位置的顺序进行组合,得到第二序列1:[如果][被保险人][生存状态]。
然后将约束节点上的正则表达式逐一地与第一小句文本2进行匹配,抽取到1个约束节点的名称:[生存状态],得到第二序列2:[生存状态]。
最后将约束节点上的正则表达式逐一地与第一小句文本3进行匹配,未匹配到约束节点。
在S1135的步骤中,第二标注序列中的约束词可以通过人工对样本数据进行标注提取得到。在对于样本数据进行归纳整理以构建识别模型的时候,可以一并完成人工标注提取第二标注序列的工作。
例如,仍然沿用第一个实施例中的样本数据1:
若被保险人在本合同有效至期满时仍然生存,我们按所交保险费的100%给付满期保险金,本合同效力终止。
经过人工标注可以得到:
第二标注序列1:[如果][被保险人][生存状态]。
其中,[如果]、[被保险人]、[生存状态]分别为3个预设约束词,三者可以组合来表征“若被保险人在本合同有效至期满时仍然生存”这一个小句是样本数据1中的一个约束条件。
又例如,以样本数据3为例,样本数据3:
若被保险人在住院前后各30日内因与该次住院相同原因在卫生行政部门认定的二级甲等以上医院进行门急诊治疗,本公司就被保险人门急诊治疗发生的医疗费用,在扣除被保险人从其他途径取得的医疗费用补偿或赔偿后,给付门急诊费用补偿保险金。
经过人工标注可以得到:
第二标注序列2:[如果][被保险人][治疗]。
其中,[如果]、[被保险人]、[治疗]分别为3个预设约束词,三者可以组合来表征“若被保险人在住院前后各30日内因与该次住院相同原因在卫生行政部门认定的二级甲等以上医院进行门急诊治疗”是样本数据3中的一个约束条件。
在S1136的步骤中,当第二序列中的约束节点所对应的内容的项数为1项时,第二序列和第二标注序列相匹配,指的是第二序列中的约束节点所对应的内容与第二标注序列中的预设约束词相同。当第二序列中的约束节点所对应的内容的项数≥2项时,第二序列和第二标注序列相匹配,指的是第二序列中两项或两项以上的约束节点所对应的内容与第二标注序列中预设约束词均相同,并且,各个约束节点所对应的内容在第二序列中的先后顺序与各个预设约束词在第二标注序列中的先后顺序相同。
这里,与第一序列和第一标注序列比对的方法类似地,第二序列中的某个约束节点所对应的内容与第二标注序列中某个预设约束词相同,可以是二者完全相同,也可以是二者的某个特定的属性相同。
如果第二序列与第二标注序列相匹配,则将该该第二序列对应的第一小句文本识别为该第一单句文本中的约束条件。
沿用本实施例中上述的例子,
第二序列1为:[如果][被保险人][生存状态];
第二序列2为:[生存状态];
第二标注序列1为:[如果][被保险人][生存状态];
第二标注序列2为:[如果][被保险人][治疗]。
首先,将第二序列1分别与两个第二标注序列分别进行比对,结果第二序列1和第二标注序列1相匹配,故将第二序列1中对应的第一小句文本1识别为第一单句文本1中的约束条件。也就是说,对于第一单句文本1中提取出的公式“身故保险金=已交保险费×200%”而言,“如果被保险人因疾病身故”是该公式在保险合同中能够生效的前提条件,是与第一表达式1“已交保险费×200%”对应的公式约束信息。
然后将第二序列2分别与两个第二标注序列分别进行比对,结果第二序列2与所有第二标注序列均不匹配,故认为第二序列2所对应的第一小句文本2不是第一单句文本1中的约束条件。
通过以上序列比对的方法识别出第一单句文本中的约束条件后,再从第一单句文本删减去约束条件,即得到第一文本。具体可以参考第一个实施例中的S114步骤中的相关描述,此处不再赘述。
可选地,识别模型中还可以包括至少一个延续约束节点,以便更加完整准确地识别出公式表达式所对应的公式约束信息。
具体地,S113的步骤还包括:
S1131:将所述第一单句文本按照标点符号划分为至少两个第一小句文本;
S1137:获取识别模型,所述识别模型包括至少一个约束节点和至少一个延续约束节点;
S1133:逐个将第一小句文本与约束节点进行比对,如果二者匹配,则抽取匹配的约束节点所对应的内容;
S1134:将抽取出的约束节点所对应的内容按照其在第一小句文本中匹配位置的顺序进行组合,得到第二序列;
S1135:获取第二标注序列,所述第二标注序列包括至少一个预设约束词,所述至少一个预设约束词单独或组合以表征所述约束条件;
S1136:如果所述第二序列与所述第二标注序列相匹配,则将所述第一小句文本识别为所述第一单句文本中的约束条件;
S1138:逐个将除所述约束条件之外的第一小句文本与识别模型中的延续约束节点进行比对;
S1139:如果第一小句文本与任一个延续约束节点匹配,并且所述第一小句文本在所述第一单句文本中紧随于所述约束条件之后,则确定所述约束条件与所述第一小句文本为与所述第一表达式对应的公式约束信息。
S1131、S1133、S1134、S1135、S1136的步骤可以参考本实施例前述的相关描述,此处不再赘述。
在S1137的步骤中,延续约束节点是识别模型中的一个节点,可以表示在第一单句文本中的约束条件之后还具有延续约束条件。延续约束节点是从某个业务场景下的样本数据中提取出来的,每个延续约束节点也具有一个正则表达式,该正则表达式可以与文本进行匹配,从而识别文本中的这一延续约束节点。
例如,仍然以提取保险合同中的公式信息为业务场景,前述构建的表4所示的识别模型,还可以包括表5的延续约束节点。
表5 识别模型局部示例
在S1138至S1139的步骤中,第一小句文本与任一个延续约束节点匹配,具体地,用延续约束节点上的正则表达式一一与第一小句文本进行比对,如果能够匹配上,则认为该第一小句文本与该延续约束节点匹配。如果该第一小句文本与任一个延续约束节点匹配,并且所述第一小句文本在所述第一单句文本中紧随于所述约束条件之后,则确定所述约束条件与所述第一小句文本为与所述第一表达式对应的公式约束信息。这里,第一小句文本紧随于约束条件之后,指的是在同一个第一单句文本中,前面S1136的步骤所识别的约束条件的位置,与第一小句文本的位置相邻,并且第一小句文本的位置在约束条件的位置之后。
举例来说,第一单句文本2:
若被保险人以乘客身份搭乘航空交通工具时遭受意外事故,并自事故发生之日起一百八十日内因该事故为直接且单独原因导致身故,且身故时年满十八周岁的,我们在给付意外身故保险金后,额外向身故保险金受益人给付七倍个人投资连结账户价值,本附加合同终止。
首先,可以根据第一单句文本2中的“逗号”将该第一单句文本2划分为6个第一小句文本。
第一小句文本4:若被保险人以乘客身份搭乘航空交通工具时遭受意外事故;
第一小句文本5:并自事故发生之日起一百八十日内因该事故为直接且单独原因导致身故;
第一小句文本6:且身故时年满十八周岁的;
第一小句文本7:我们在给付意外身故保险金后;
第一小句文本8:额外向身故保险金受益人给付七倍个人投资连结账户价值;
第一小句文本9:本附加合同终止。
其次,第一小句文本4与识别模型中的约束节点比对,抽取出3个约束节点的名称:[如果]、[被保险人]、[生存状态]。将3个约束节点的名称按照其在第一小句文本4中匹配位置的顺序进行组合,得到第二序列3:[如果][被保险人][生存状态]。
类似的,将第一小句文本5至9逐个与识别模型中的约束节点比对,最后得到与第一小句文本7对应的第二序列4:[生存状态]。
获取第二标注序列1:[如果][被保险人][生存状态];
第二标注序列2:[如果][被保险人][治疗]。
第二序列3与第二标注序列1匹配,故识别第一小句文本4为第一单句文本2中的约束条件。而第二序列4则与第二标注序列1和第二标注序列2均不匹配。
然后,第一小句文本5与识别模型中的延续约束节点比对,第一小句文本5包括“并”,能与正则15匹配,故而第一小句文本5与延续结束节点匹配。检测第一小句文本5和作为约束条件的第一小句文本4在第一单句文本2中的位置,第一小句文本5在第一小句文本4之后,并且二者仅隔一个标点符号,位置相邻。故而将第一小句文本5和第一小句文本4一起作为与从第一单句文本2中提取出的第一表达式所对应的公式约束信息。也就是说,将“若被保险人以乘客身份搭乘航空交通工具时遭受意外事故,并自事故发生之日起一百八十日内因该事故为直接且单独原因导致身故”确定为约束条件。
类似地,将第一小句文本6与识别模型中的延续约束节点比对,第一小句文本6包括“且”,能与正则15匹配,故而第一小句文本6与延续结束节点匹配。同时,第一小句文本6紧随于在新的约束条件之后,故而可以确定第一小句文本4、第一小句文本5和第一小句文本6一起作为与从第一单句文本2中提取出的第一表达式所对应的公式约束信息。
类似地,分别将第一小句文本7至9与识别模型中的延续约束节点比对,结果三者均不能与其匹配。
至此,可以确定从第一单句文本2中识别出的约束条件为“若被保险人以乘客身份搭乘航空交通工具时遭受意外事故,并自事故发生之日起一百八十日内因该事故为直接且单独原因导致身故,且身故时年满十八周岁的”。
通过以上序列比对的方法识别出第一单句文本中的约束条件后,再从第一单句文本中删减去约束条件,即得到第一文本。具体可以参考第一个实施例中的S114步骤中的相关描述,此处不再赘述。
保险合同在生效的指定时期内,即使发生保险事故,受益人也不能获得保险赔偿,或仅能获得微小额度的保险赔偿,这段时期称为等待期。对于保险合同而言,其公式约束信息除了文字描述的约束条件之外,还可能单独提取出等待期天数,以便于后续进行数据分析。
可选地,所述识别模型中还包括等待期节点,在S1139的步骤之后,还包括:
将第一表达式所对应的约束条件与识别模型中的等待期节点进行比对;
如果所述约束条件与等待期节点匹配,则提取从所述约束条件中提取等待期天数。
这里,等待期节点是识别模型中的一个节点,用于表征等待期的概念,这一概念是从保险合同的样本数据中提取出来的,具有一个正则表达式。该正则表达式可以与保险合同进行匹配,从而识别保险合同中的这一概念。例如,当在约束条件的文本中匹配到字符串“等待期”,则可以认为该约束条件与等待期节点匹配,也就是说,约束条件中包含了表征等待期的概念。又例如,当在约束条件的文本中匹配到“(180|30|60|90)(天|日)内”,并且匹配到“(退回|返还|退还)保险费”,则也可以认为该约束条件与等待期节点匹配,也就是说,约束条件中包含了表征等待期的概念。
从约束条件中提取等待期天数,可以通过正则匹配抽取的方法,例如,约束条件的文本中匹配到“(180|30|60|90)(天|日)内”,则将匹配到的字符串提取出来。此外,还可以将提取出来的等待期天数用同一的表示方式来输出。例如,匹配到“60日内”最后可以输出为“60天”。
以下通过一个具体的例子来说明,对于第一单句文本3:
被保险人在本主险合同生效(或最后复效)之日起180日内因疾病身故或全残,本公司将返还您所交的本主险合同保险费的105%,本主险合同终止。
采用第一个实施例中的方法,在第一单句文本3中提取出第一表达式5:[已交保险费]×[倍数:105%],更简单地,也可以表示为:已交保险费×105%。采用本实施例中的方法,提取出第一表达式5的约束条件为“被保险人在本主险合同生效(或最后复效)之日起180日内因疾病身故或全残”。然后通过正则匹配的方式从该约束条件中提取出等待期天数:180天。
对于保险合同而言,除了可以提取出等待期天数这一公式约束信息以外,还可以提取出关于给付限制的公式约束信息。例如,对于“若被保险人因遭受意外伤害事故而正式办理住院手续入院治疗,本公司将按照实际住院的日数乘以2倍住院津贴日额给付意外伤害津贴保险金,每一保单年度累积给付日数最高以30日为限”,其中,“每一保单年度累积给付日数最高以30日为限”即保险合同中的关于给付限制的公式约束信息。其提取方法与等待期的提取方法类似,也可以采用正则匹配的方式从业务文档中将关于给付限制的公式约束信息提取出来,此处不再赘述。
当某些业务文档中的部分公式信息存在一些特殊情况时,采用前述的第一个实施例和第二个实施例中的方法可能无法准确全面地提取出所有公式信息。为此,针对这些特殊情况,在本申请的第四个实施例中,提供一种业务文档的公式信息提取方法,包括:
S111:获取业务文档;
S112:识别所述业务文档中包含公式表达式的第一单句文本;
S115:如果所述第一单句文本包括多项词,则获取包含公式表达式的第二文本,其中,所述多项词为表征后续内容存在超过一个组成项或超过一个选项的语义的字词;
S116:获取第三序列,所述第三序列由所述第二文本生成,包括至少两个变量、至少两个序号和多项词;
S117:获取第三标注序列,所述第三标注序列包括至少两个预设变量、至少两个预设序号和预设多项词,所述第三标注序列对应第二标注表达式,所述第二标注表达式包括所述至少两个预设变量和所述至少两个预设变量之间的运算关系;
S118:如果所述第三序列与所述第三标注序列相匹配,则根据所述第三标注序列和所述第三序列中的至少两个变量提取第二表达式,所述第二表达式包括所述第三序列中的至少两个变量和所述至少两个变量之间的运算关系,其中,所述第三序列中的至少两个变量之间的运算关系与所述第二标注表达式中的所述至少两个预设变量之间的运算关系相同。
S111和S112的步骤可以参考第一个实施例中的相关描述,此处不再赘述。
在S115的步骤中,所述多项词为表征后续内容存在超过一个组成项或超过一个选项的语义的字词,例如“下列较大者”、“下列几者之乘积”、“以下几部分组成”等。如果第一单句文本包括了多项词,则获取包含公式表达式的第二文本。这里,包含公式表达式的第二文本,可以是当前的第一单句文本,也可以将第一单句文本与其后一句文本共同作为第二文本,以用于后续提取第二表达式。在某些业务文档中,由于包含公式表达式的文字内容过长,可能会将其单独放在一个单句中来描述。通过将第一单句文本与其后一句文本共同作为第二文本的方法,可以有效地避免提取公式信息的过程中遗漏或提取错误的情况。
如果第一单句文本不包括多项词,则再分别获取第一序列和第一标注序列,来提取第一单句文本中的公式表达式。
在S116的步骤中,第二文本生成第三序列,可以通过抽取模型来实现。具体地,在一种实现方式中,首先获取抽取模型,所述抽取模型包括至少一个变量节点、至少一个序号节点和多项词节点。如果第二文本与抽取模型中的变量节点匹配,则抽取所述变量;如果第二文本与抽取模型中的序号节点匹配,则抽取所述序号;如果第二文本与抽取模型中的多项词节点匹配,则抽取所述多项词。然后,将所述变量、序号和多项词按照其在第二文本中匹配位置的顺序组合,得到第三序列。
这里,变量节点相关描述可以参考第一个实施例,此处不再赘述。序号节点是抽取模型中的一个节点,用以表征序号,例如表征“1”、“第一”、“(1)”等序号。序号节点是从某个业务场景下的样本数据中提取出来的,每个序号节点具有一个正则表达式。该正则表达式可以与文本进行匹配,从而抽取文本中的这一序号。多项词节点也是抽取模型中的一个节点,用以表述多项词的概念。多项词节点是从某个业务场景下的样本数据中提取出来的,每个多项词节点具有一个正则表达式。该正则表达式可以与文本进行匹配,从而抽取文本中的这一多项词。在抽取变量、序号和/或多项词时,除了抽取其节点的名称,还可以抽取业务文档中与节点的正则匹配的字符串,以便抽取出更加具体的变量、序号和/或多项词供后续数据处理与分析使用。本申请对此不做限定,可以根据不同的应用场景来选择。
例如,部分序号节点、多项词节点如表6所示。
表6 抽取模型局部示例
例如,针对第一单句文本4:
在养老年金保证领取期间以后,身故保险金等于下列两者中的较大值:(1)基本保险金额;(2)被保险人身故当时本主险合同的现金价值。
采用表1、2、3和6的抽取模型来抽取概念,然后组合,可以得到第三序列1:[下列较大者][保险责任名称:身故保险金][序号][基本保险金额][序号][现金价值]。
在S117的步骤中,第三标注序列可以通过人工对样本数据进行标注提取得到。在对于样本数据进行归纳整理以构建抽取模型的时候,可以一并完成人工标注提取第三标注序列和与之对应的第二标注表达式的工作。此外,在第三标注序列中,还可以包括预设结果量、预设关键词等。
例如,样本数据4:
若被保险人在我们开始支付养老年金前身故,且身故时未满十八周岁,本合同终止。我们按下列两项较大者向身故保险金受益人给付身故保险金:(一)该保险单年度末的现金价值;(二)您累计已缴纳的保险费。
经过人工标注可以得到:
第三标注序列1:[下列较大者][保险责任名称:身故保险金][序号][现金价值][序号][已交保险费]。
第二标注表达式1:max([现金价值],[已交保险费])。
其中,[下列较大者]是预设多项词,[保险责任名称:身故保险金]是预设结果量,[序号]是预设序号,[现金价值]和[已交保险费]分别为两个预设变量,“max”是两个预设变量之间的运算关系。
类似地,还可以通过标注其他样本数据得到其他第三标注序列和与之对应的第二标注表达式。
在S118的步骤中,如果所述第三序列中所有的变量、序号和多项词,与所述第三标注序列中所有的预设变量、预设序号和预设多项词分别相同,并且变量、序号和多项词在第三序列中的先后顺序与预设变量、预设序号和预设多项词在第三标注序列中的先后顺序相同,则所述第三序列与所述第三标注序列相匹配。
这里,第三序列中的某个变量与第三标注序列中某个预设变量相同,可以是二者完全相同,也可以是二者的某个特定的属性相同;第三序列中的某个序号与第三标注序列中某个预设序号相同,可以是二者完全相同,也可以是二者的某个特定的属性相同;第三序列中的某个多项词与第三标注序列中某个预设多项词相同,可以是二者完全相同,也可以是二者的某个特定的属性相同。本申请对此不做限制,可以根据实际应用场景的不同来具体选择确定。
如果第三序列和第三标注序列相匹配,则将第三序列中多个变量之间的运算关系设置成与第三标注表达式中多个预设变量之间的运算关系相同,生成第二表达式。
沿用前述S116和S117步骤中的例子,
第三序列1:[下列较大者][保险责任名称:身故保险金][序号][基本保险金额][序号][现金价值];
第三标注序列1:[下列较大者][保险责任名称:身故保险金][序号][现金价值][序号][已交保险费]。
第二标注表达式1:max([现金价值],[已交保险费])。
第三序列1中的多项词[下列较大者]与第三标注序列1中预设多项词[下列较大者]相同;第三序列1中的结果量与第三标注序列1中预设结果量的属性相同;第三序列1中两个序号分别与第三标注序列1中的两个预设多项词属性相同;第三序列1中第一个变量[基本保险金额]与第三标注序列1中的第一个预设变量[现金价值]都表示公式中的变量,属性相同;第三序列1中第二个变量[现金价值]与第三标注序列1中的第二个预设变量[已交保险费]都表示公式中的变量,属性相同。并且,第三序列1中各个组成部分与第三标注序列1中各个组成部分的顺序一致,故第三序列1与第三标注序列1相匹配。
最后,将第三序列中多个变量之间的运算关系设置成与第二标注表达式1中多个变量之间的运算关系一致,得到第二表达式1:max([基本保险金额],[现金价值])。更加简便地,第二表达式1也可以输出为:max(基本保险金额,现金价值)。
在本申请的第五个实施例中,提供一种业务文档的公式信息提取装置,包括:
获取单元1,用于获取第一序列和第一标注序列,其中,所述第一序列由业务文档生成,包括至少两个变量,所述第一标注序列包括至少两个预设变量,所述第一标注序列对应第一标注表达式,所述第一标注表达式包括所述至少两个预设变量和所述至少两个预设变量之间的运算关系;
处理单元2,用于在所述第一序列与所述第一标注序列相匹配的情况下根据所述第一标注表达式及所述至少两个变量提取第一表达式,其中,所述第一表达式包括所述至少两个变量和所述至少两个变量之间的运算关系,所述至少两个变量之间的运算关系与所述第一标注表达式中的所述至少两个预设变量之间的运算关系相同。
可选地,所述第一序列还包括至少一个关键词,所述关键词为在所述第一序列中影响所述至少两个变量之间的运算关系的字词;所述第一标注序列还包括至少一个预设关键词,所述预设关键词为在所述第一标注序列中影响所述至少两个预设变量之间的运算关系的字词。
可选地,所述获取单元1用于获取第一文本,以及获取抽取模型;
所述处理单元2还用于在所述第一文本与所述抽取模型中的变量节点匹配的情况下抽取匹配的变量,以及将抽取出的变量按照其在所述第一文本中匹配位置的顺序进行组合,得到第一序列。其中,所述第一文本为包含公式表达式的文本,所述抽取模型包括至少一个变量节点。
可选地,所述获取单元1用于获取业务文档;
所述处理单元2还用于识别所述业务文档中包含公式表达式的第一单句文本;识别所述第一单句文本中的约束条件;以及,根据识别出的约束条件,对所述第一文本内容进行删减,生成第一文本。其中,所述约束条件为在业务文档中公式生效的前提条件。
可选地,所述获取单元1还用于获取识别模型,以及获取第二标注序列;其中,所述识别模型包括至少一个约束节点;
所述处理单元2还用于将所述第一单句文本按照标点符号划分为至少两个第一小句文本;逐个将第一小句文本与约束节点进行比对,在二者匹配的情况下抽取匹配的约束节点所对应的内容;将抽取出的约束节点所对应的内容按照其在第一小句文本中匹配位置的顺序进行组合,得到第二序列;在所述第二序列与所述第二标注序列相匹配的情况下将所述第二序列对应的第一小句文本识别为所述第一单句文本中的约束条件。其中,所述第二标注序列包括至少一个预设约束词,所述至少一个预设约束词单独或组合以表征约束条件。
可选地,所述第一序列还包括结果量;所述第一标注序列还包括预设结果量;所述处理单元2还用于确定所述第一序列中的结果量为与所述第一表达式对应的结果量。
可选地,所述处理单元2还用于在所述第二序列与所述第二标注序列相匹配的情况下确定所述第二序列对应的第一小句文本为与所述第一表达式对应的公式约束信息。
可选地,所述识别模型还包括至少一个延续约束节点,所述处理单元2还用于逐个将除所述约束条件之外的第一小句文本与识别模型中的延续约束节点进行比对;在第一小句文本与任一个延续约束节点匹配,并且所述第一小句文本在所述第一单句文本中紧随于所述约束条件之后的情况下确定所述约束条件与所述第一小句文本为与所述第一表达式对应的公式约束信息。
可选地,所述处理单元2还用于在所述第一单句文本包括多项词的情况下获取包含公式表达式的第二文本,获取第三序列,获取第三标注序列,在所述第三序列与所述第三标注序列相匹配的情况下根据所述第三标注序列和所述第三序列中的至少两个变量提取第二表达式。其中,所述多项词为表征后续内容存在超过一个组成项或超过一个选项的语义的字词;所述第三序列由所述第二文本生成,包括至少两个变量、至少两个序号和多项词;所述第三标注序列包括至少两个预设变量、至少两个预设序号和预设多项词,所述第三标注序列对应第二标注表达式,所述第二标注表达式包括所述至少两个预设变量和所述至少两个预设变量之间的运算关系;所述第二表达式包括所述第三序列中的至少两个变量和所述至少两个变量之间的运算关系,所述第三序列中的至少两个变量之间的运算关系与所述第二标注表达式中的所述至少两个预设变量之间的运算关系相同。
该提取装置能够实现前述的公式信息的提取方法,从而方便、准确地提取出业务文档中的公式信息,适用性广。其有益效果可以参考前述对应的方法的有益效果,此处不再一一赘述。
本说明书中各个实施例之间相同相似的部分互相参见即可。以上所述的本发明实施方式并不构成对本发明保护范围的限定。