一种开放式自然语言模板的解析方法

文档序号:6605243阅读:226来源:国知局
专利名称:一种开放式自然语言模板的解析方法
技术领域
本发明涉及对自然语言的处理技术,特别涉及一种开放式自然语言模板的解析方法。
背景技术
目前,随着计算机的普及,人们对智能化人机交互系统、机器翻译系统及其他特定信息处理系统的需求不断增多,对系统相关信息进行处理并加以智能化和人性化的呈现成为一个被广泛关注的领域,而作为人类最基本的信息交流手段之一自然语言的智能化呈现,则是该领域中的一个热点。
现有的智能化人机交互系统中,往往是一对一的方式。一般的情况是用计算机的程序语言实现各种约定好的语言逻辑,这需要完全按照约定好的语言逻辑来编写程序语言,同时要求在人机交互过程中,必须按照约定好的语言逻辑来输入自然语言,这种方法实现过程繁琐且无法适应灵活多变的交互引导需求。
现有的机器翻译系统中,大多只能按照程序中所描述的语法、语义对翻译后的词汇进行重新组合,并形成最终的目标语言。
虽然有少数系统在形成目标语言过程中还引入了一定的语言模板概念,给出了固定的语言模板,以填空为基本方式进行解析,形成目标语言。这样的固定语言模板的解析方法,对于简单的特定业务或专业翻译的固定语言有一定的成效。但是,目前的解析方法只能针对某些特定的业务或特定的翻译专业的固定语言模板进行解析,不能对不同的语言模板进行解析,这就需要对每个语言模板分别进行程序开发,从而造成大量的人力、物力的资源浪费。
目前出现了一种开放式自然语言模板创建方法,这种方法可以由用户根据业务需求自主创建和修改自然语言模板,它的基本过程是将从自然语言原形中提取的信息变量作为语义槽,和根据不同业务信息提取的自然语言原形组合,将可能重复出现的语义槽和自然语言原形组合组合成语义块,或将不同的语义块和自然语言原形进行嵌套组合等方式来创建自然语言模板。由于这种方法具有应用简单、灵活、自然度高等优点,具有广阔的应用前景,然而目前固定语言模板的解析方法,无法实现由该方法创建的开放式语言模板的解析。

发明内容
有鉴于此,本发明的目的在于提供一种开放式自然语言模板的解析方法,能够解析采用开放式自然语言模板创建方法创建的自然语言模板。
为达到上述目的,本发明的技术方案具体是这样实现的一种开放式自然语言模板的解析方法,该方法包括以下步骤1)根据预先设定的开放式自然语言模板编写格式,提取出自然语言模板中的语义槽信息;2)逐层将每层语义块中的每个语义槽用系统提供的具体信息值替换,直到当前自然语言模板的所有语义槽被全部替换,生成自然语言。
其中,该方法步骤2)可以按从内层到外层的顺序进行语义槽替换,也可以按从外层到内层的顺序进行语义槽替换。
该方法步骤1)可以进一步包括统计开放式自然语言模板的组成要素,并保存各语义槽信息。
该方法步骤2)可以进一步包括为该语义块设置循环解析计数,并读取当前解析的语义块中的块循环次数,该语义块中与块循环次数相关的语义槽用系统中的具体信息值每替换一次,循环解析计数加一,直到循环解析计数与块循环次数相等步骤2)还可以进一步包括对当前解析的语义块中与块循环次数无关的语义槽,保留该语义槽到下一层进行解析。步骤2)还可以进一步包括将读取的语义块同层的语义块中的语义槽用系统中的具体信息值替换。
该方法步骤2)可以进一步包括将开放式自然语言模板中位于语义块外的语义槽用系统中的具体信息值替换。
该方法可以进一步将用户输入的语言模板解析后生成的自然语言,以列表的形式输出给用户。
由上述的技术方案可见,本发明的这种开放式自然语言模板的解析方法,能够解析采用开放式自然语言模板创建方法创建的自然语言模板,无论其语法如何复杂、灵活,不需要用户进行任何编码都能智能化的将语言模板转化为与之对应的人性化自然语言。


图1为本发明的开放式自然语言模板的解析方法流程图;图2为图1中对基本语义块解析处理的具体过程流程图。
具体实施例方式
为使本发明的目的、技术方案和优点更加清楚明白,下面结合实施例和附图,对本发明进一步详细说明。
图1为本发明的开放式自然语言模板的解析方法流程图,如图1所示,本发明的开放式自然语言模板的解析方法的过程为步骤101,首先,统计开放式自然语言模板的组成要素,包括语义槽、语义块以及各种控制槽的信息,对可以直接用系统中相应信息值替换的语义槽可称为静态语义槽,在语义块内部的语义槽可称为动态语义槽。
步骤102~105,对开放式自然语言模板进行编写格式和规则检测,判断其是否有误,如果有误显示错误信息,终止解析过程。如果没有错误,则提取自然语言模板中的语义槽,提取语义槽的名称、位置、以及各语义块之间的嵌套关系等信息并保存。
步骤106,对于嵌套的语义块,查找并读取当前最外层语义块语义块中的最内层语义块,本实施例是按从内层到外层的顺序进行解析,也可以按从外层到内层的顺序进行解析。
步骤107,根据每个语义块中的嵌套关系,对读取的语义块,也就是基本语义块进行解析处理。这里,没有嵌套的语义块被称为基本语义块。解析的方法就是将基本语义块中的动态语义槽用系统中相应的动态信息值替换。
步骤108~109,判断是否有与当前语义块同层的其他语义块,如果有则重复执行步骤107,直到同层语义块都解析完毕,执行步骤109结束同层语义块的处理;否则直接执行步骤109结束同层语义块的处理。
步骤110,判断解析后是否构成新的语义块,如果是,则返回步骤107;否则执行步骤111。
步骤111,判断该自然语言模板中是否还有没有解析的语义块,如果有则返回执行步骤106,如果不再有未处理的语义块,即所有语义块都解析完毕,则执行步骤112。
步骤112,将该自然语言模板中位于语义块外的所有静态语义槽用系统中的具体信息值进行替换,生成人性化自然语言,完成自然语言模板的解析。
图2为图1中对基本语义块解析处理的具体过程流程图,如图2所示,对基本语义块进行处理的过程为步骤201,首先为当前语义块设置循环解析计数LoopCount。
步骤202,读取当前解析的语义块中的块循环次数。
步骤203~204,判断块循环次数是否有效,即对语义块指定的循环次数的合法性进行检验,其主要检验两个方面,一是语义块中是否有与循环次数相匹配的语义槽,二是判断循环次数是否大于1,对小于1的语义槽直接用系统中相应的自然语言原形替换。例如语义槽循环次数为0,可以用自然语言原形“没有”来替换。如果上述两点有一点不满足,系统显示出错语义块的位置及原因,并停止解析过程。否则,块循环次数信息有效,则执行步骤205。
步骤205,读取语义块中首个语义槽。
步骤206~208,判断该语义槽是否与循环次数相关,如果不相关,则保留语义槽原形,进入步骤209;否则执行步骤207,根据循环解析计数LoopCount,用系统中的具体信息值进行替换,进入步骤209。
步骤209~211,判断是否还有未处理的语义槽,如果有则读取新的语义槽,返回步骤206,直到没有新的语义槽;否则执行步骤211,循环解析计数LoopCount加一。
步骤212,判断循环解析计数LoopCount是否与块循环次数相等,如果不等,则跳转执行步骤205直到相等。否则,基本语义块解析完毕。
由图2可以看出,在进行基本语义块解析之前首先需要设置当前语义块默认的块循环记数“LoopCount”,对于与循环次数相关的动态语义槽需要根据当前循环解析次数的标记“LoopCount”来确定当前应在系统中选取的替换信息变量值;而对于与循环不相关的动态语义槽则可以在当前语义块解析过程中不做任何处理,保留原来的信息,到上一层或上几层进行解析。
由图2还可以看出,在进行基本语义块解析时,除了上述对语义槽的替换方法之外,在解析过程中还遵循一种循环过程。对语义块每循环解析一次均需要对语义块中所有的语义槽按照上述替换方法处理一次,直至循环解析次数标记“LoopCount”与当前语义块对应的循环次数相等时为止。
综合运用上述替换方法、循环方法最终将基本语义块解析为仅含有自然语言文字及与当前语义块循环不相关语义槽组成的文本信息,甚至仅含有自然语言的文本信息。
若该语义块为语言模板中唯一的语义块则只需对所有剩余的语义槽进行简单的替换便形成了最终的人性化自然语言信息,否则其将作为新生成语义块中的一部分按照图1所示语义块解析方法进行解析。
由上述的步骤可见,无论是对复杂的、包含多组嵌套组合的,还是不含有语义块或仅含有一个单层的简单语义块的开放式自然语言模板,都能够采用上述解析方法进行解析,并最终生成人性化的自然语言。其基本方法就是以语义块为单位,分别对语义块进行解析,最后解析语义块外的语义槽;也可以先解析语义块外的语义槽,再解析语义块。对于嵌套语义块的解析,按照由内至外的顺序,依次对处于内层的语义块进行解析,对于同层语义块则参照出现顺序依次进行,最后解析最外层语义块。当然,也可以由外层至内层解析。在对每层语义块解析之后均可能形成一个新的语义块,新形成的语义块的解析过程与其他语义块完全一致。
按照上述纵、横交织的解析方法,对复杂的语言模板实现了由内到外的层层解析,并环环相扣,将整个解析过程有机的构成一个整体,直至形成最终完全由文本信息组成的自然语言。
以下结合开放式自然语言模板在语音邮件系统中的应用实例,有针对性的对开放式自然语言模板解析的具体过程进行说明。这里的语音邮件系统是指通过电话与系统的语音交互来进行邮件读和写的系统。
要实现通过电话与系统的语音交互,需要在语音邮件系统投入使用之前,在系统中建立自然语言模板,在语音邮件系统使用时,将自然语言模板解析生成自然语言播放给用户。将自然语言模板解析生成自然语言播放给用户,是语音邮件系统实现通过电话与系统对话的一个重要环节。
例如,语音邮件系统需要将用户邮箱中邮件的情况播放给用户,其所利用的自然语言模板可以为“您现在有[AllMailNum]封邮件,{[UserMailNum]封来自[UserName],{第[@loopcount]封主题为[title],是一封[importencevalue]邮件。[@UserMailNum]},[@UserNum]}”。各语义槽的定义参见表一。

表一其中[]为语义槽,{}为语义块。[@loopcount]为循环计数槽、[@UserMailNum]和[@UserNum]为循环次数槽。
这是一个含有嵌套语义块的复杂语言模板,对其进行解析的过程可参见图1、图2。
首先,统计该语言模板的模板要素,其中[和]、{和}都是成对出现,符合开放式自然语言模板的编写规则。
然后,将其中所有的语义槽提取出来,提取槽的名称、位置、各语义块中的嵌套关系等信息并保存。
接着,查找并读取当前最内层语义块,在该模板中即{第[@loopcount]封主题为[title],是一封[importencevalue]邮件。[@UserMailNum]}这个语义块。对于这个语义块,根据上述步骤提取槽的语义块中的嵌套关系和用户邮件的实际情况可以有以下两种方法来解析。
第一种如果用户在创建该开放式自然语言模板时将其中语义槽设置为与每封邮件相关,则直接解析为“第一封主题为开会,是一封重要邮件。第二封主题为旅游,是一封重要邮件。第一封主题为测试,是一封不重要邮件”。
第二种如果用户在创建该开放式自然语言模板时将其中语义槽设置为与发信人相关,则可分为两步解析,先解析为“第一封主题为开会,是一封[importencevalue]邮件。第二封主题为旅游,是一封[importencevalue]邮件”。第一封主题为测试,是一封[importencevalue]邮件。这时,[importencevalue]是与块循环次数不相关语义槽。然后再解析为“第一封主题为开会,是一封私人重要邮件。第二封主题为旅游,是一封私人重要邮件。第一封主题为测试,是一封普通办公邮件”。
该语义块同层没有其他语义块,所以接下来对外层语义块进行解析,即{[UserMailNum]封来自[UserName],[@UserNum]}这一层进行解析,解析方法同上,解析结果可以为“2封来自张三,1封来自李四”。
这时,该语言模板的语义块就解析完毕,系统查到还有“您现在有[AllMailNum]封邮件”中的[AllMailNum]语义槽还没有解析,此时将系统中该用户邮件的总数替换[AllMailNum]语义槽,这样整个语言模板解析完毕。该模板根据不同用户的设置最终可以解析为“您有3封邮件,2封来自张三,第一封主题为开会,是一封重要邮件。第二封主题为旅游,是一封重要邮件。1封来自李四,主题为测试,是一封不重要邮件”。或“您有3封邮件,2封来自张三,第一封主题为开会,是一封私人重要邮件。第二封主题为旅游,是一封私人重要邮件。1封来自李四,第一封主题为测试,是一封普通办公邮件”。
由上述的实施例可见,本发明的这种开放式自然语言模板的解析方法,能够解析采用开放式自然语言模板创建方法创建的自然语言模板,无论其语法如何复杂、灵活,不需要用户进行任何编码都能智能化的将语言模板转化为与之对应的人性化自然语言。
权利要求
1.一种开放式自然语言模板的解析方法,其特征在于,该方法包括以下步骤1)根据预先设定的开放式自然语言模板编写格式,提取出自然语言模板中的语义槽信息;2)逐层将每层语义块中的每个语义槽用系统提供的具体信息值替换,直到当前自然语言模板的所有语义槽被全部替换,生成自然语言。
2.如权利要求1所述的解析方法,其特征在于,该方法步骤2)按从内层到外层的顺序进行语义槽替换。
3.如权利要求1所述的解析方法,其特征在于,该方法步骤2)按从外层到内层的顺序进行语义槽替换。
4.如权利要求1所述的解析方法,其特征在于,该方法步骤1)进一步包括统计开放式自然语言模板的组成要素,并保存各语义槽的信息。
5.如权利要求1所述的解析方法,其特征在于,该方法步骤2)进一步包括为该语义块设置循环解析计数,并读取当前解析的语义块中的块循环次数,该语义块中与块循环次数相关的语义槽用系统中的具体信息值每替换一次,循环解析计数加一,直到循环解析计数与块循环次数相等。
6.如权利要求5所述的解析方法,其特征在于,该方法步骤2)进一步包括对当前解析的语义块中与块循环次数无关的语义槽,保留语义槽到下一层进行解析。
7.如权利要求1所述的解析方法,其特征在于,该方法步骤2)进一步包括将读取的语义块同层的语义块中的语义槽用系统中的具体信息值替换。
8.如权利要求1所述的解析方法,其特征在于,该方法步骤2)进一步包括将开放式自然语言模板中位于语义块外的语义槽用系统中的具体信息值替换。
9.如权利要求1所述的解析方法,其特征在于,该方法进一步包括将用户输入的语言模板解析后生成的自然语言,以列表的形式输出给用户。
全文摘要
本发明公开了一种开放式自然语言模板的解析方法,该方法包括以下步骤1)根据预先设定的开放式自然语言模板编写格式,提取出自然语言模板中的语义槽信息;2)逐层将每层语义块中的每个语义槽用系统提供的具体信息值替换,直到当前自然语言模板的所有语义槽被全部替换,生成自然语言。本发明的这种开放式自然语言模板的解析方法,能够解析采用开放式自然语言模板创建方法创建的自然语言模板,无论其语法如何复杂、灵活,不需要用户进行任何编码都能智能化的将语言模板转化为与之对应的人性化自然语言。
文档编号G06F17/27GK1512396SQ0215924
公开日2004年7月14日 申请日期2002年12月27日 优先权日2002年12月27日
发明者孙久文, 任文捷, 刘武, 诸光, 孙文彦, 王楠, 高建忠, 王江, 申江涛, 王建新 申请人:联想(北京)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1