一种正则表达式的生成方法及系统与流程

文档序号:17723570发布日期:2019-05-22 02:20阅读:295来源:国知局
一种正则表达式的生成方法及系统与流程

本发明属于数据处理技术领域,特别涉及一种正则表达式的生成方法及系统。



背景技术:

随着网络技术的迅速发展,每天有大量的信息数据产生和需要处理,传统的正则表达式一般通过人工进行编写,其需要按照“查看语料→判断语料中关键词→编写词库→编写正则式”的步骤进行编写,即需要人工根据句子的意思推演到的规则进行编写,不仅过程复杂,而且人工查看语料并进行编写的效率较低,并且完全依靠人工编写正则表达式无法及时、准确地处理每天新增的大量信息数据,同时,由人工编写正则表达式对工作人员的要求较高。

因此,当前急需一种能由系统根据语料信息自动撰写语料对应的正则表达式的方法。



技术实现要素:

本发明的目的是提供一种正则表达式的生成方法及系统,实现自动生成正则表达式的目的,不仅节省人工成本,而且效率较高。

本发明提供的技术方案如下:

一方面,提供一种正则表达式的生成方法,包括:

获取当前语料信息;

对所述当前语料信息进行语法分析,提取所述当前语料信息的句式主体;

获取所述句式主体的字词的语义槽;

根据所述句式主体、所述语义槽和所述当前语料信息中剩余的非主体部分生成正则表达式。

进一步优选地,所述对所述当前语料信息进行语法分析,提取所述当前语料信息的句式主体具体包括:

对所述当前语料信息进行分词,得到所述当前语料信息中的字词及对应的词性;

根据语法规则和所述当前语料信息中的字词的词性,对所述当前语料信息进行句式分析,得到对应的句式结构;

根据所述句式结构,提取所述当前语料信息的句式主体。

进一步优选地,所述根据所述句式主体、所述语义槽和所述当前语料信息中剩余的非主体部分生成正则表达式具体包括:

将所述当前语料信息中的句式主体的字词替换为对应的语义槽;

将分词后的所述当前语料信息剩余的非主体部分和所述语义槽按照所述当前语料信息的句式结构进行排序,生成正则表达式。

进一步优选地,所述根据所述句式主体、所述语义槽和所述当前语料信息中剩余的非主体部分生成正则表达式具体包括:

将所述当前语料信息中的句式主体的字词替换为对应的语义槽;

将分词后的所述当前语料信息剩余的非主体部分和所述语义槽按照语法结构进行排序生成排序不同且语义相同的至少一个正则表达式。

进一步优选地,所述根据所述句式主体、所述语义槽和所述当前语料信息中剩余的非主体部分生成正则表达式还包括:

生成所述正则表达式后,在生成的所述正则表达式中加入连接词,生成另一语义相同的正则表达式。

另一方面,还提供一种正则表达式的生成系统,包括:

语料信息获取模块,用于获取当前语料信息;

句式主体抽取模块,用于对所述当前语料信息进行语法分析,提取所述当前语料信息的句式主体;

语义槽获取模块,用于获取所述句式主体的字词的语义槽;

正则表达式生成模块,用于根据所述句式主体、所述语义槽和所述当前语料信息中剩余的非主体部分生成正则表达式。

进一步优选地,所述句式主体抽取模块包括:

分词单元,用于对所述当前语料信息进行分词,得到所述当前语料信息中的字词及对应的词性;

句式分析单元,用于根据语法规则和所述当前语料信息中的字词的词性,对所述当前语料信息进行句式分析,得到对应的句式结构;

句式主体提取单元,用于根据所述句式结构,提取所述当前语料信息的句式主体。

进一步优选地,所述正则表达式生成模块包括:

替换单元,用于将所述当前语料信息中的句式主体的字词替换为对应的语义槽;

正则表达式生成单元,用于将分词后的所述当前语料信息剩余的非主体部分和所述语义槽按照所述当前语料信息的句式结构进行排序,生成正则表达式。

进一步优选地,所述正则表达式生成模块包括:

替换单元,用于将所述当前语料信息中的句式主体的字词替换为对应的语义槽;

正则表达式生成单元,用于将分词后的所述当前语料信息剩余的非主体部分和所述语义槽按照语法结构进行排序生成排序不同且语义相同的至少一个正则表达式。

进一步优选地,所述正则表达式生成单元,还用于生成所述正则表达式后,在生成的所述正则表达式中加入连接词,生成另一语义相同的正则表达式。

与现有技术相比,本发明提供的一种正则表达式的生成方法及系统具有以下有益效果:

1、本发明获取到语料信息后,先对获取的语料信息进行句式分析,提取出语料信息中的句式主体,如主谓宾,然后将句式主体中的字词转换成对应的语义槽,最后根据句式主体中的字词对应的语义槽和语料信息中剩余的非主体部分生成正则表达式,本发明根据句式结构和词语的词性自动生成正则表达式,无需人工根据句子的意思推演到的规则进行编写,不仅节省人工成本,而且效率较高。

2、在本发明一优选实施例中,通过将正则表达式的匹配项进行排列组合可实现根据一个语料信息生成多个语义相同的正则表达式的目的,以提高正则表达式的生成效率。

附图说明

下面将以明确易懂的方式,结合附图说明优选实施方式,对一种正则表达式的生成方法及系统的上述特性、技术特征、优点及其实现方式予以进一步说明。

图1是本发明一种正则表达式的生成方法的第一实施例的流程示意图;

图2是本发明一种正则表达式的生成方法的第二实施例的流程示意图;

图3是本发明一种正则表达式的生成方法的第三实施例的流程示意图;

图4是本发明一种正则表达式的生成方法的第四实施例的流程示意图;

图5是本发明一种正则表达式的生成方法的第五实施例的流程示意图;

图6是本发明一种正则表达式的生成方法的第六实施例的流程示意图;

图7是本发明一种正则表达式的生成系统的结构示意框图。

附图标号说明

100、语料信息获取模块;200、句式主体抽取模块;

210、分词单元;220、句式分析单元;

230、句式主体提取单元;300、语义槽获取模块;

400、正则表达式生成模块;410、替换单元;

420、正则表达式生成单元。

具体实施方式

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对照附图说明本发明的具体实施方式。显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图,并获得其他的实施方式。

为使图面简洁,各图中只示意性地表示出了与本发明相关的部分,它们并不代表其作为产品的实际结构。另外,以使图面简洁便于理解,在有些图中具有相同结构或功能的部件,仅示意性地绘示了其中的一个,或仅标出了其中的一个。在本文中,“一个”不仅表示“仅此一个”,也可以表示“多于一个”的情形。

根据本发明提供的第一实施例,如图1所示,一种正则表达式的生成方法,包括:

s100获取当前语料信息;

s200对所述当前语料信息进行语法分析,提取所述当前语料信息的句式主体;

s300获取所述句式主体的字词的语义槽;

s400根据所述句式主体、所述语义槽和所述当前语料信息中剩余的非主体部分生成正则表达式。

具体地,本发明通过获取大量的语料信息,然后根据获取的大量语料信息生成大量的正则表达式,正则表达式是指用来描述或者匹配一系列符合某个句法规则的字符串。本实施例以一个语料信息为例,具体说明其正则表达式的生成方法。

语料信息可以为文本信息,如用户文字输入的一句话或书本上的一句话,语料信息还可以是用户输入的语音信息或录制的音频信息等。本实施例以获取到的当前语料信息为例进行说明。

获取到当前语料信息后,对当前语料信息进行语法分析,提取当前语料信息的句式主体,如提取当前语料信息中的主语、谓语、宾语、定语等。例如,当前语料信息为“鲸鱼为什么会喷水”,提取出的句式主体为“鲸鱼喷水”,“鲸鱼”为主语,“喷水”为谓语。

提取出句式主体后,根据句式主体的字词的词性,将句式主体的字词转换为对应的语义槽,语义槽可为该字词对应的词性的所有词语,也可以为与该字词语义相同的词语。例如,句式主体为“鲸鱼喷水”,其中,“鲸鱼”为名词,“喷水”为动词,“鲸鱼”对应的语义槽可为名词库,“喷水”对应的语义槽可为动词库。

得到句式主体和句式主体的字词对应的语义槽后,即可根据句式主体、语义槽和当前语料信息中剩余的非主体部分生成当前语料信息对应的正则表达式。

示例性地,当前语料信息为“鲸鱼为什么会喷水”,提取出的句式主体为“鲸鱼喷水”,“鲸鱼”对应的语义槽为名词库,“喷水”对应的语义槽为动词库,剩余的非主体部分为“为什么会”,根据得到的上述信息生成的正则表达式为“##名词库##[为什么][会]##动词库二##”。

本发明获取到语料信息后,先对获取的语料信息进行句式分析,提取出语料信息中的句式主体,如主谓宾,然后将句式主体中的字词转换成对应的语义槽,最后根据句式主体中的字词对应的语义槽和语料信息中剩余的非主体部分生成正则表达式,本发明根据句式结构和词语的词性自动生成正则表达式,无需人工根据句子的意思推演到的规则进行编写,不仅节省人工成本,而且效率较高。

根据本发明提供的第二实施例,如图2所示,一种正则表达式的生成方法,包括:

s100获取当前语料信息;

s210对所述当前语料信息进行分词,得到所述当前语料信息中的字词及对应的词性;

s220根据语法规则和所述当前语料信息中的字词的词性,对所述当前语料信息进行句式分析,得到对应的句式结构;

s230根据所述句式结构,提取所述当前语料信息的句式主体;

s300获取所述句式主体的字词的语义槽;

s400根据所述句式主体、所述语义槽和所述当前语料信息中剩余的非主体部分生成正则表达式。

具体地,在上述实施例一中,提取当前语料信息的句式主体的方法具体可为:先对当前语料信息进行分词,得到当前语料信息中的字词的词性,然后根据语法规则和当前语料信息中的字词的词性,得到当前语料信息的句式结构,最后根据当前语料信息的句式结构,提取当前语料信息的句式主体。

对当前语料信息进行分词是指将当前语料信息分为一个个的字或词,如将“不知道你在说什么”分为“不知道,你,在,说什么”;再如将“鲸鱼为什么会喷水”分为“鲸鱼,为什么,会,喷水”。

对当前语料信息进行分词后,对分词后得到的字词进行分析得到当前语料信息中的字词的词性,如将“鲸鱼为什么会喷水”分词后得到的字词为“鲸鱼”(名词)、“为什么”(代词)、“会”(助动词),“喷水”(动词)。然后根据语料规则和当前语料信息中的字词的词性,对当前语料信息进行句式分析,得到当前语料信息“鲸鱼为什么会喷水”的句式结构为“主+状+谓”,最后根据当前语料信息的句式结构,对当前语料信息进行分析可知“鲸鱼喷水”为主谓结构,“为什么喷水”为状中结构,“会喷水”为状中结构,根据分析后的结果可知当前语料信息“鲸鱼为什么会喷水”的主体结构为主谓结构的“鲸鱼喷水”,因此,从“鲸鱼为什么会喷水”中提取出句式主体即为主谓结构“鲸鱼喷水”。

根据本发明提供的第三实施例,如图3所示,一种正则表达式的生成方法,包括:

s100获取当前语料信息;

s210对所述当前语料信息进行分词,得到所述当前语料信息中的字词及对应的词性;

s220根据语法规则和所述当前语料信息中的字词的词性,对所述当前语料信息进行句式分析,得到对应的句式结构;

s230根据所述句式结构,提取所述当前语料信息的句式主体;

s300获取所述句式主体的字词的语义槽;

s410将所述当前语料信息中的句式主体的字词替换为对应的语义槽;

s420将分词后的所述当前语料信息剩余的非主体部分和所述语义槽按照所述当前语料信息的句式结构进行排序,生成正则表达式。

具体地,根据上述实施例的方法提取出当前语料信息的句式主体,并得到句式主体的字词对应的语义槽后,将分词后的当前语料信息中的非主体部分进行保留,然后将当前语料信息中的句式主体的字词替换为对应的语义槽,最后将语义槽和非主体部分按照当前语料信息自身的句式结构进行排序即可生成当前语料信息对应的正则表达式。

示例性地,当前语料信息为“鲸鱼为什么会喷水”,句式主体为“鲸鱼喷水”,句式主体中的字词“鲸鱼”对应的语义槽为名词库,句式主体中的字词“喷水”对应的语义槽为动词库,分词后的当前语料信息中剩余的非主体部分为“为什么”和“会”,将非主体部分“为什么”、“会”以及句式主体的字词对应的语义槽“名词库”和“动词库”按照当前语料信息的句式结构进行排序即为“名词库”、“为什么”、“会”、“动词库”。“名词库”、“为什么”、“会”、“动词库”为正则表达式的匹配项,通过在匹配项之间加入正则表达式的符号即可生成当前语料信息对应的正则表达式“##名词库##[为什么][会]##动词库二##”。

根据本发明提供的第四实施例,如图4所示,一种正则表达式的生成方法,包括:

s100获取当前语料信息;

s210对所述当前语料信息进行分词,得到所述当前语料信息中的字词及对应的词性;

s220根据语法规则和所述当前语料信息中的字词的词性,对所述当前语料信息进行句式分析,得到对应的句式结构;

s230根据所述句式结构,提取所述当前语料信息的句式主体;

s300获取所述句式主体的字词的语义槽;

s410将所述当前语料信息中的句式主体的字词替换为对应的语义槽;

s430将分词后的所述当前语料信息剩余的非主体部分和所述语义槽按照语法结构进行排序生成排序不同且语义相同的至少一个正则表达式。

具体地,本实施例与上述第三实施例的区别在于,根据实施例一或实施例二的方法提取出当前语料信息的句式主体,并得到句式主体的字词对应的语义槽后,将分词后的当前语料信息中的非主体部分进行保留,然后将当前语料信息中的句式主体的字词替换为对应的语义槽,最后将语义槽和非主体部分按照语法结构进行排序生成排序不同且语义相同的至少一个正则表达式。

示例性地,当前语料信息为“鲸鱼为什么会喷水”,句式主体为“鲸鱼喷水”,句式主体中的字词“鲸鱼”对应的语义槽为名词库,句式主体中的字词“喷水”对应的语义槽为动词库,分词后的当前语料信息中剩余的非主体部分为“为什么”和“会”。在保持语义相同的前提下,将非主体部分“为什么”、“会”以及句式主体的字词对应的语义槽“名词库”和“动词库”按照语法结构排序可得到“名词库”、“为什么”、“会”、“动词库”以及“为什么”、“名词库”、“会”、“动词库”。

根据“名词库”、“为什么”、“会”、“动词库”的排序得到的正则表达式为“##名词库##[为什么][会]##动词库二##”。根据“为什么”、“名词库”、“会”、“动词库”的排序得到的正则表达式为“##[为什么]##名词库##[会]##动词库二##”。本实施例通过将正则表达式的匹配项进行排列组合可实现根据一个语料信息生成多个语义相同的正则表达式的目的,以提高正则表达式的生成效率。

根据本发明提供的第五实施例,如图5所示,一种正则表达式的生成方法,包括:

s100获取当前语料信息;

s210对所述当前语料信息进行分词,得到所述当前语料信息中的字词及对应的词性;

s220根据语法规则和所述当前语料信息中的字词的词性,对所述当前语料信息进行句式分析,得到对应的句式结构;

s230根据所述句式结构,提取所述当前语料信息的句式主体;

s300获取所述句式主体的字词的语义槽;

s410将所述当前语料信息中的句式主体的字词替换为对应的语义槽;

s420将分词后的所述当前语料信息剩余的非主体部分和所述语义槽按照所述当前语料信息的句式结构进行排序,生成正则表达式;

s440生成正则表达式后,在生成的正则表达式中加入连接词,生成另一语义相同的正则表达式。

具体地,在中文语法中,还存在主动句和被动句等句式不同但语义相同的情况,为充分考虑这种情况,在不改变当前语料信息的意图的情况下,在生成的正则表达式中加入连接词(如把、被等),然后将生成的正则表达式中的匹配项重新进行组合排列生成另一语义相同的正则表达式。

示例性地,当前语料信息为“给老师词典”,“给”为动词,对应的语义槽为动词库;“老师”为名词,对应的语义槽为名词库;“词典”为名词,对应的语义槽为名词库,生成的正则表达式为“##动词库##名词库##名词库##”。在当前语料信息“给老师词典”中加入关系词“把”后当前语料信息变为“把词典给老师”,因此,在生成的正则表达式“##动词库##名词库##名词库##”中加入连接词“把”后生成的另一语义相同的正则表达式为“把##名词库##动词库##名词库##”。

根据本发明提供的第六实施例,如图6所示,一种正则表达式的生成方法,包括:

s100获取当前语料信息;

s210对所述当前语料信息进行分词,得到所述当前语料信息中的字词及对应的词性;

s220根据语法规则和所述当前语料信息中的字词的词性,对所述当前语料信息进行句式分析,得到对应的句式结构;

s230根据所述句式结构,提取所述当前语料信息的句式主体;

s300获取所述句式主体的字词的语义槽;

s410将所述当前语料信息中的句式主体的字词替换为对应的语义槽;

s430将分词后的所述当前语料信息剩余的非主体部分和所述语义槽按照语法结构进行排序生成排序不同且语义相同的至少一个正则表达式;

s440生成正则表达式后,在生成的正则表达式中加入连接词,生成另一语义相同的正则表达式。

具体地,在中文语法中,还存在主动句和被动句等句式不同但语义相同的情况,为充分考虑这种情况,在不改变当前语料信息的意图的情况下,在生成的正则表达式中加入连接词(如把、被等),然后将生成的正则表达式中的匹配项重新进行组合排列生成另一语义相同的正则表达式。

示例性地,当前语料信息为“给老师词典”,“给”为动词,对应的语义槽为动词库;“老师”为名词,对应的语义槽为名词库;“词典”为名词,对应的语义槽为名词库,生成的正则表达式为“##动词库##名词库##名词库##”。在当前语料信息“给老师词典”中加入关系词“把”后当前语料信息变为“把词典给老师”,因此,在生成的正则表达式“##动词库##名词库##名词库##”中加入连接词“把”后生成的另一语义相同的正则表达式为“把##名词库##动词库##名词库##”。

根据本发明提供的第七实施例,如图7所示,一种正则表达式的生成系统,包括:

语料信息获取模块100,用于获取当前语料信息;

句式主体抽取模块200,用于对所述当前语料信息进行语法分析,提取所述当前语料信息的句式主体;

语义槽获取模块300,用于获取所述句式主体的字词的语义槽;

正则表达式生成模块400,用于根据所述句式主体、所述语义槽和所述当前语料信息中剩余的非主体部分生成正则表达式。

具体地,本发明通过获取大量的语料信息,然后根据获取的大量语料信息生成大量的正则表达式,正则表达式是指用来描述或者匹配一系列符合某个句法规则的字符串。本实施例以一个语料信息为例,具体说明其正则表达式的生成方法。

语料信息可以为文本信息,如用户文字输入的一句话或书本上的一句话,语料信息还可以是用户输入的语音信息或录制的音频信息等。本实施例以获取到的当前语料信息为例进行说明。

获取到当前语料信息后,对当前语料信息进行语法分析,提取当前语料信息的句式主体,如提取当前语料信息中的主语、谓语、宾语、定语等。例如,当前语料信息为“鲸鱼为什么会喷水”,提取出的句式主体为“鲸鱼喷水”,“鲸鱼”为主语,“喷水”为谓语。

提取出句式主体后,根据句式主体的字词的词性,将句式主体的字词转换为对应的语义槽,语义槽可为该字词对应的词性的所有词语,也可以为与该字词语义相同的词语。例如,句式主体为“鲸鱼喷水”,其中,“鲸鱼”为名词,“喷水”为动词,“鲸鱼”对应的语义槽可为名词库,“喷水”对应的语义槽可为动词库。

得到句式主体和句式主体的字词对应的语义槽后,即可根据句式主体、语义槽和当前语料信息中剩余的非主体部分生成当前语料信息对应的正则表达式。

示例性地,当前语料信息为“鲸鱼为什么会喷水”,提取出的句式主体为“鲸鱼喷水”,“鲸鱼”对应的语义槽为名词库,“喷水”对应的语义槽为动词库,剩余的非主体部分为“为什么会”,根据得到的上述信息生成的正则表达式为“##名词库##[为什么][会]##动词库二##”。

本发明获取到语料信息后,先对获取的语料信息进行句式分析,提取出语料信息中的句式主体,如主谓宾,然后将句式主体中的字词转换成对应的语义槽,最后根据句式主体中的字词对应的语义槽和语料信息中剩余的非主体部分生成正则表达式,本发明根据句式结构和词语的词性自动生成正则表达式,无需人工根据句子的意思推演到的规则进行编写,不仅节省人工成本,而且效率较高。

优选地,所述句式主体抽取模块200包括:

分词单元210,用于对所述当前语料信息进行分词,得到所述当前语料信息中的字词及对应的词性;

句式分析单元220,用于根据语法规则和所述当前语料信息中的字词的词性,对所述当前语料信息进行句式分析,得到对应的句式结构;

句式主体提取单元230,用于根据所述句式结构,提取所述当前语料信息的句式主体。

具体地,在上述实施例一中,提取当前语料信息的句式主体的方法具体可为:先对当前语料信息进行分词,得到当前语料信息中的字词的词性,然后根据语法规则和当前语料信息中的字词的词性,得到当前语料信息的句式结构,最后根据当前语料信息的句式结构,提取当前语料信息的句式主体。

对当前语料信息进行分词是指将当前语料信息分为一个个的字或词,如将“不知道你在说什么”分为“不知道,你,在,说什么”;再如将“鲸鱼为什么会喷水”分为“鲸鱼,为什么,会,喷水”。

对当前语料信息进行分词后,对分词后得到的字词进行分析得到当前语料信息中的字词的词性,如将“鲸鱼为什么会喷水”分词后得到的字词为“鲸鱼”(名词)、“为什么”(代词)、“会”(助动词),“喷水”(动词)。然后根据语料规则和当前语料信息中的字词的词性,对当前语料信息进行句式分析,得到当前语料信息“鲸鱼为什么会喷水”的句式结构为“主+状+谓”,最后根据当前语料信息的句式结构,对当前语料信息进行分析可知“鲸鱼喷水”为主谓结构,“为什么喷水”为状中结构,“会喷水”为状中结构,根据分析后的结果可知当前语料信息“鲸鱼为什么会喷水”的主体结构为主谓结构的“鲸鱼喷水”,因此,从“鲸鱼为什么会喷水”中提取出句式主体即为主谓结构“鲸鱼喷水”。

优选地,所述正则表达式生成模块400包括:

替换单元410,用于将所述当前语料信息中的句式主体的字词替换为对应的语义槽;

正则表达式生成单元420,用于将分词后的所述当前语料信息剩余的非主体部分和所述语义槽按照所述当前语料信息的句式结构进行排序,生成正则表达式。

具体地,根据上述实施例的方法提取出当前语料信息的句式主体,并得到句式主体的字词对应的语义槽后,将分词后的当前语料信息中的非主体部分进行保留,然后将当前语料信息中的句式主体的字词替换为对应的语义槽,最后将语义槽和非主体部分按照当前语料信息自身的句式结构进行排序即可生成当前语料信息对应的正则表达式。

示例性地,当前语料信息为“鲸鱼为什么会喷水”,句式主体为“鲸鱼喷水”,句式主体中的字词“鲸鱼”对应的语义槽为名词库,句式主体中的字词“喷水”对应的语义槽为动词库,分词后的当前语料信息中剩余的非主体部分为“为什么”和“会”,将非主体部分“为什么”、“会”以及句式主体的字词对应的语义槽“名词库”和“动词库”按照当前语料信息的句式结构进行排序即为“名词库”、“为什么”、“会”、“动词库”。“名词库”、“为什么”、“会”、“动词库”为正则表达式的匹配项,通过在匹配项之间加入正则表达式的符号即可生成当前语料信息对应的正则表达式“##名词库##[为什么][会]##动词库二##”。

优选地,所述正则表达式生成单元420,还用于生成所述正则表达式后,在生成的所述正则表达式中加入连接词,生成另一语义相同的正则表达式。

具体地,在中文语法中,还存在主动句和被动句等句式不同但语义相同的情况,为充分考虑这种情况,在不改变当前语料信息的意图的情况下,在生成的正则表达式中加入连接词(如把、被等),然后将生成的正则表达式中的匹配项重新进行组合排列生成另一语义相同的正则表达式。

示例性地,当前语料信息为“给老师词典”,“给”为动词,对应的语义槽为动词库;“老师”为名词,对应的语义槽为名词库;“词典”为名词,对应的语义槽为名词库,生成的正则表达式为“##动词库##名词库##名词库##”。在当前语料信息“给老师词典”中加入关系词“把”后当前语料信息变为“把词典给老师”,因此,在生成的正则表达式“##动词库##名词库##名词库##”中加入连接词“把”后生成的另一语义相同的正则表达式为“把##名词库##动词库##名词库##”。

根据本发明提供的第八实施例,如图7所示,一种正则表达式的生成系统,包括:

语料信息获取模块100,用于获取当前语料信息;

句式主体抽取模块200,用于对所述当前语料信息进行语法分析,提取所述当前语料信息的句式主体;

语义槽获取模块300,用于获取所述句式主体的字词的语义槽;

正则表达式生成模块400,用于根据所述句式主体、所述语义槽和所述当前语料信息中剩余的非主体部分生成正则表达式。

所述句式主体抽取模块200包括:

分词单元210,用于对所述当前语料信息进行分词,得到所述当前语料信息中的字词及对应的词性;

句式分析单元220,用于根据语法规则和所述当前语料信息中的字词的词性,对所述当前语料信息进行句式分析,得到对应的句式结构;

句式主体提取单元230,用于根据所述句式结构,提取所述当前语料信息的句式主体。

所述正则表达式生成模块400包括:

替换单元410,用于将所述当前语料信息中的句式主体的字词替换为对应的语义槽;

正则表达式生成单元420,用于将分词后的所述当前语料信息剩余的非主体部分和所述语义槽按照语法结构进行排序生成排序不同且语义相同的至少一个正则表达式。

具体地,获取到当前语料信息后,先对当前语料信息进行分词,得到当前语料信息中的字词的词性,然后根据语法规则和当前语料信息中的字词的词性,得到当前语料信息的句式结构,最后根据当前语料信息的句式结构,提取当前语料信息的句式主体。

对当前语料信息进行分词是指将当前语料信息分为一个个的字或词,如将“不知道你在说什么”分为“不知道,你,在,说什么”;再如将“鲸鱼为什么会喷水”分为“鲸鱼,为什么,会,喷水”。

对当前语料信息进行分词后,对分词后得到的字词进行分析得到当前语料信息中的字词的词性,如将“鲸鱼为什么会喷水”分词后得到的字词为“鲸鱼”(名词)、“为什么”(代词)、“会”(助动词),“喷水”(动词)。然后根据语料规则和当前语料信息中的字词的词性,对当前语料信息进行句式分析,得到当前语料信息“鲸鱼为什么会喷水”的句式结构为“主+状+谓”,最后根据当前语料信息的句式结构,对当前语料信息进行分析可知“鲸鱼喷水”为主谓结构,“为什么喷水”为状中结构,“会喷水”为状中结构,根据分析后的结果可知当前语料信息“鲸鱼为什么会喷水”的主体结构为主谓结构的“鲸鱼喷水”,因此,从“鲸鱼为什么会喷水”中提取出句式主体即为主谓结构“鲸鱼喷水”。

提取出句式主体后,根据句式主体的字词的词性,将句式主体的字词转换为对应的语义槽,语义槽可为该字词对应的词性的所有词语,也可以为与该字词语义相同的词语。例如,句式主体为“鲸鱼喷水”,其中,“鲸鱼”为名词,“喷水”为动词,“鲸鱼”对应的语义槽可为名词库,“喷水”对应的语义槽可为动词库。

提取出当前语料信息的句式主体,并得到句式主体的字词对应的语义槽后,将分词后的当前语料信息中的非主体部分进行保留,然后将当前语料信息中的句式主体的字词替换为对应的语义槽,最后将语义槽和非主体部分按照语法结构进行排序生成排序不同且语义相同的至少一个正则表达式。

示例性地,当前语料信息为“鲸鱼为什么会喷水”,句式主体为“鲸鱼喷水”,句式主体中的字词“鲸鱼”对应的语义槽为名词库,句式主体中的字词“喷水”对应的语义槽为动词库,分词后的当前语料信息中剩余的非主体部分为“为什么”和“会”。在保持语义相同的前提下,将非主体部分“为什么”、“会”以及句式主体的字词对应的语义槽“名词库”和“动词库”按照语法结构排序可得到“名词库”、“为什么”、“会”、“动词库”以及“为什么”、“名词库”、“会”、“动词库”。

根据“名词库”、“为什么”、“会”、“动词库”的排序得到的正则表达式为“##名词库##[为什么][会]##动词库二##”。根据“为什么”、“名词库”、“会”、“动词库”的排序得到的正则表达式为“##[为什么]##名词库##[会]##动词库二##”。本实施例通过将正则表达式的匹配项进行排列组合可实现根据一个语料信息生成多个语义相同的正则表达式的目的,以提高正则表达式的生成效率。

优选地,所述正则表达式生成单元420,还用于生成所述正则表达式后,在生成的所述正则表达式中加入连接词,生成另一语义相同的正则表达式。

具体地,在中文语法中,还存在主动句和被动句等句式不同但语义相同的情况,为充分考虑这种情况,在不改变当前语料信息的意图的情况下,在生成的正则表达式中加入连接词(如把、被等),然后将生成的正则表达式中的匹配项重新进行组合排列生成另一语义相同的正则表达式。

示例性地,当前语料信息为“给老师词典”,“给”为动词,对应的语义槽为动词库;“老师”为名词,对应的语义槽为名词库;“词典”为名词,对应的语义槽为名词库,生成的正则表达式为“##动词库##名词库##名词库##”。在当前语料信息“给老师词典”中加入关系词“把”后当前语料信息变为“把词典给老师”,因此,在生成的正则表达式“##动词库##名词库##名词库##”中加入连接词“把”后生成的另一语义相同的正则表达式为“把##名词库##动词库##名词库##”。

应当说明的是,上述实施例均可根据需要自由组合。以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

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