语句解析方法及语句解析装置与流程

文档序号:11323045阅读:234来源:国知局
语句解析方法及语句解析装置与流程
本发明涉及领域特定语言领域,具体而言,涉及一种语句解析方法及语句解析装置。
背景技术
:领域特定语言(domain-specificlanguage,简称为dsl)是针对特定应用领域而设计的计算机语言,它使用约定的文法,表达专业人员的意图,辅助其在该领域中高效地解决问题。在相关技术中,描述一种计算机语言,一般使用扩展巴科斯范式(extendedbackus-naurforms,简称为ebnf)。传统的领域特定语言描述工具,如(anothertooloflanguagerecognition,简称为antlr),能够在一定程度上简化领域特定语言的设计。然而,传统的基于扩展巴科斯范式的计算机语言描述方法,以及现有的语言描述和解析工具(如antlr)还是存在问题的:例如,在一般的领域特定语言描述方法中,要求以英文作为基本词法要素和关键字。但是,由于难以正确处理复杂的中文断句逻辑,即使允许使用中文作为关键字,也必须像英文一样,在词与词之间增加空格,因此,这种方法并不符合中文的语言习惯。因此,在相关技术中,基于英文的领域特定语言,处理复杂,不符合中文的语言习惯。技术实现要素:本发明实施例提供了一种语句解析方法及语句解析装置,以至少解决在相关技术中,基于英文的领域特定语言,处理复杂,不符合中文的语言习惯的技术问题。根据本发明实施例的一个方面,提供了一种语句解析方法,包括:获取待解析语句;根据中文领域特定语言的语法,对待解析语句进行解析,其中,待解析语句和中文领域特定语言均是基于中文进行描述的。可选地,语法采用动态可变数据进行描述;语法包括:用于描述中文领域特定语言的词素的类型的符号,以及,除符号之外的用于对符号进行补充的字典。可选地,根据中文领域特定语言的语法,对待解析语句进行解析包括:将待解析语句分解为基本词素;对分解的基本词素标注词性;根据中文领域特定语言的语法,将标注了词性的基本词素解析为语法树。可选地,在将待解析语句分解为基本词素之前,还包括:采用预定歧义判断算法判断待解析语句是否存在歧义;在判断结果为是的情况下,采用预定规避措施对待解析语句存在的歧义进行规避。可选地,将待解析语句分解为基本词素包括:采用最长匹配原则,将待解析语句分解为基本词素,其中,最长匹配原则为匹配尽可能长的语句。可选地,根据中文领域特定语言的语法,将标注了词性的基本词素解析为语法树包括以下之一:采用下降式语法树解析算法,将标注了词性的基本词素解析为语法树,其中,下降式语法树解析算法为:在预定的词素位置,依次向前搜索匹配,当匹配的词素引用了除词素所引用的符号之外的其他符号时,匹配其他符号;采用上升式语法树解析算法,将标注了词性的基本词素解析为语法树,其中,上升式语法树解析算法为:构建从待解析语句分解产生的基本词素的父节点,之后采用相同的方式构建父节点的父节点,直至产生唯一的根节点;采用下降式语法树解析算法和上升式语法树解析算法结合的方式,将标注了词性的基本词素解析为语法树。可选地,在将待解析语句分解为基本词素之前,还包括:采用预定的省略语推断算法,对待解析语句进行推断,将待解析语句还原为完全信息的语句,其中,预定的省略语推断算法包括以下至少之一:根据前文的基本词素,对省略语进行补充的上文推断算法;根据指代时间的基本词素对时间进行推算的时间推断算法;对未指定完整信息的基本词素进行定位的业务对象推断算法。可选地,在根据中文领域特定语言的语法,将标注了词性的基本词素解析为语法树之后,还包括:语法树上的叶子节点将叶子节点的内容传递给叶子节点的父节点;父节点对所包括的所有叶子节点传递的内容进行处理,得到父节点的内容;依次执行:上述内容传递以及处理操作,直至根节点,以根节点的内容作为语法树的最终值,其中,所述最终值用于执行应用程序接口。根据本发明实施例的另一个方面,还提供了一种语句解析装置,其特征在于,包括:获取模块,用于获取待解析语句;解析模块,用于根据中文领域特定语言的语法,对待解析语句进行解析,其中,待解析语句和中文领域特定语言均是基于中文进行描述的。可选地,解析模块包括:分词单元,用于将待解析语句分解为基本词素;标注单元,用于对分解的基本词素标注词性;解析单元,用于根据中文领域特定语言的语法,将标注了词性的基本词素解析为语法树。可选地,解析模块还包括:判断单元,用于采用预定歧义判断算法判断待解析语句是否存在歧义;规避单元,用于在判断结果为是的情况下,采用预定规避措施对待解析语句存在的歧义进行规避。可选地,分词单元包括:分解子单元,用于采用最长匹配原则,将待解析语句分解为基本词素,其中,最长匹配原则为匹配尽可能长的语句。可选地,解析单元包括以下之一:第一解析子单元,用于采用下降式语法树解析算法,将标注了词性的基本词素解析为语法树,其中,下降式语法树解析算法为:在预定的词素位置,依次向前搜索匹配,当匹配的词素引用了除词素所引用的符号之外的其他符号时,匹配其他符号;第二解析子单元,用于采用上升式语法树解析算法,将标注了词性的基本词素解析为语法树,其中,上升式语法树解析算法为:构建从待解析语句分解产生的基本词素的父节点,之后采用相同的方式构建父节点的父节点,直至产生唯一的根节点;第三解析子单元,用于采用下降式语法树解析算法和上升式语法树解析算法结合的方式,将标注了词性的基本词素解析为语法树。可选地,解析模块还包括:推断单元,用于采用预定的省略语推断算法,对待解析语句进行推断,将待解析语句还原为完全信息的语句,其中,预定的省略语推断算法包括以下至少之一:根据前文的基本词素,对省略语进行补充的上文推断算法;根据指代时间的基本词素对时间进行推算的时间推断算法;对未指定完整信息的基本词素进行定位的业务对象推断算法。可选地,解析模块还包括:传递单元,用于语法树上的叶子节点将叶子节点的内容传递给叶子节点的父节点;处理单元,用于父节点对所包括的所有叶子节点传递的内容进行处理,得到父节点的内容;执行模块,用于依次执行:上述内容传递以及处理操作,直至根节点,以根节点的内容作为语法树的最终值。根据本发明实施例的另一个方面,还提供了一种存储介质,其特征在于,存储介质包括存储的程序,其中,程序运行时控制存储介质所在设备执行以下操作:获取待解析语句;根据中文领域特定语言的语法,对待解析语句进行解析,其中,待解析语句和中文领域特定语言均是基于中文进行描述的。根据本发明实施例的另一个方面,还提供了一种处理器,其特征在于,处理器用于运行程序,其中,程序运行时执行以下操作:获取待解析语句;根据中文领域特定语言的语法,对待解析语句进行解析,其中,待解析语句和中文领域特定语言均是基于中文进行描述的。在本发明实施例中,通过采用获取待解析语句,然后根据中文领域特定语言的语法,对待解析语句进行解析,其中,待解析语句和中文领域特定语言均是基于中文进行描述的,由于上述待解析语句和中文领域特定语言均是基于中文进行描述的,提升了待解析语句和中文领域特定语言的可阅读性,进而解决了在相关技术中,基于英文的领域特定语言,处理复杂,不符合中文的语言习惯的技术问题,进而提高了用户体验。附图说明此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:图1是根据本发明实施例的语句解析方法的流程图;图2是根据本发明实施例的符号的逻辑模型图;图3是根据本发明实施例的字典的逻辑模型图;图4是根据本发明实施例的语法树节点的逻辑模型图;图5是根据本发明实施例的分词结果示例图;图6是根据本发明实施例的语法树解析的下降式前向匹配算法的流程图;图7是根据本发明实施例的中文领域特定语言的定义和解析的框架图;图8是根据本发明实施例的中文领域特定语言的解析过程的流程图;以及图9是根据本发明实施例的语句解析装置的示意图。具体实施方式为了使本
技术领域
的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。根据本发明实施例,提供了一种语句解析方法的方法实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。在本实施例中,提供了一种语句解析方法,图1是根据本发明实施例的语句解析方法的流程图,如图1所示,该方法包括如下步骤:步骤s102,获取待解析语句。步骤s104,根据中文领域特定语言的语法,对待解析语句进行解析,其中,待解析语句和中文领域特定语言均是基于中文进行描述的。通过上述步骤,采用获取待解析语句,然后根据中文领域特定语言的语法,对待解析语句进行解析,其中,待解析语句和中文领域特定语言均是基于中文进行描述的,由于上述待解析语句和中文领域特定语言均是基于中文进行描述的,解决了在相关技术中,基于英文的领域特定语言,处理复杂,不符合中文的语言习惯的问题,基于中文描述,符合中文的语言习惯,提升了对领域特定语言的便利性,进而提高了用户体验。需要说明的是,在相关技术中,扩展巴科斯范式也只能描述静态的词法,无法针对持续变化的词元素对象进行词法扩充。因此,一般的领域特定语言(如windows下的cmd命令行)的语法定义脱离自然语言的习惯,该领域的人员需要经过必要的培训才能掌握一种领域特定语言。比如,应用软件平台根据业务需求动态创建一个新的事件,命名为“事件x37”,应为“事件”类的词素,但由于该词法无法在语言描述中预先定义,因此无法正确识别。而在本发明实施例的中文领域特定语言中,可以采用中文对语法进行预先定义。另外,为了增加灵活性,与采用扩展巴科斯表达式的antlr等工具不同,本发明实施例采用动态可变数据进行语法的描述。当符号表和词典的数据发生变化时,将会立即对解析逻辑产生影响。对于antlr等领域特定语言描述工具,需要将所描述的语法进行预先解释,生成相关的java解释代码,再经过编译后,才能部署到应用业务系统中,进行最终的语言执行。因此在业务系统发布后,领域特定语言的维护、扩展和更新较为不便。而采用本发明实施例的采用动态可变数据进行语法的描述,此过程不需要任何解析器代码的生成、编译和重新发布。下面对本发明实施例的语法采用动态可变数据进行描述进行说明。语法可以包括:用于描述中文领域特定语言的词素的类型的符号,其中,符号指一个语法体系中的词元素的基本类型。描述语法体系内的符号,使用代号、名称、模式、终结符以及优先级属性,图2是根据本发明实施例的符号的逻辑模型图,其逻辑模型如图2所示。例如,表1示出了符号定义中代号,名称,模式,终结符以及优先级之间的对应关系,使用该逻辑模型描述的一组语法符号示例如下表1所示:表1上表中“日期”和“时间”为两个分别独立定义的符号,其模式使用正则表达式定义。而符号“日期时间”的模式使用“日期”和“时间”两种符号的引用(用方括号标记所引用的符号代号)进行定义。对于某些符号,无法用简单的模式组合定义,如“地面站”符号,使用了内置函数isstation()进行定义。该函数是向应用业务数据的一个查询,含义是判断是否为一个航天测控地面站。给定目标文本,如果在业务数据中查询到有该地面站的记录,则返回真,说明目标文本代表了一个地面站。这种使用函数进行判断的方法,适合于动态计算过程中不断发生变化,而无法用简单的正则表达式描述的词法要素。函数不仅支持数据查询操作,还支持复杂的逻辑运算,综合判断目标文本是否为特定的词法类型。作为一个基本约定,终结符号只能由纯正则表达式或内置函数进行定义。而非终结符可以由其他符号(使用方括号括起的符号代号或符号名称)的组合进行定义。“优先级”是数字型的属性,用来指定尝试匹配的顺序,数字较小的优先尝试匹配。对于每个符号,解析框架将会定义一个默认的内部处理函数,名为“scode”。其中s为通用前缀,而code为所对应的符号的代号。比如函数sday()为处理“天指代”符号的默认内部函数,用来确定所分析的目标文本中所指代的具体天为哪一天。另外,除符号之外的用于对符号进行补充的还包括字典。字典是在符号表之外的附加的词法描述方式,可以通过标注实际文本的方式提供更多的符号识别和匹配依据,成为符号表的补充。通常符号表是面向语言开发人员和系统开发人员的,而字典是面向普通用户的。图3是根据本发明实施例的字典的逻辑模型图,如图3所示包括:词,符号以及参数。表2是一个词典的示例,其中,表2示出了词,符号代号以及参数之间的关系:表2词符号代号参数明天day现在,1后天day现在,2在上表中,为“day”(天指代)符号定义了两个新词:“明天”、“后天”,并且给定了参数。这些参数将传送给day符号的默认处理函数sday(),计算两个符号所具体代表的天。对于“明天”,当给定“现在,1”两个参数时,将被计算为当前日期+1天;而“后天”将被计算为当前日期+2天。通过这种方式,day符号由语言用户以轻量级的方式得到了扩充,而不需要给出正则表达式。在获取到待解析语句之后,还需要对待解析语句进行解析,其中,对待解析语句进行解析包括:将待解析语句分解为基本词素;对分解的基本词素标注词性;根据中文领域特定语言的语法,将标注了词性的基本词素解析为语法树。作为语法定义和解析体系最重要的数据结构,本发明实施例使用以语法树节点为主(而不是语法子树)的逻辑模型。树节点的数据结构能够描述各种不同的节点,容纳各种数据,图4是根据本发明实施例的语法树节点的逻辑模型图,其主要属性如下图4所示:在语法树节点的逻辑模型中,属性“原始文本”为生成该节点的输入文字;“符号代号”指当前节点的符号类型,通过该属性可以访问相应的符号对象以及相关处理函数;“内容”属性是指向该节点的实际数据的引用,既可能是简单的数值,也可能是一个类实例,以及任何用来为节点提供计算信息的数据结构;“父节点”指向当前节点的上一级节点;而“子节点”为不定长的列表,指向当前节点的各个下一级节点;“显示文字”通常为内容的一个子集,在本发明实施例的“领域特定语言管理器”绘制语法树时,提供在树节点上的显示的文字信息,通常用于测试和验证用户所输入的领域特定语言文本以及相关解析算法。不同的节点相互连接,即可构成一棵语法树。树中唯一的根节点没有父节点,而其他每个节点有且仅有一个父节点。最下层的节点为叶节点,每个叶节点都代表了语句中的元素。而每个节点都代表了一种运算。另外,词性标注算法与分词同步进行。每个词素被分离出来后,都需要进行词性标注。不但需要为词元素标注其所对应的符号类型,还要记录其原始内容,并从中提取关键的参数值。词性标注是由符号的默认处理函数完成的。例如,“2016年11月13日”的符号类型为日期(date),将该文本传递给对应符号的默认处理函数sdate,该函数简化伪码如下:在上述词性标注算法中,取出了具体的年、月、日的数值,并且根据这些值建立了日期类型的变量。经符号的默认函数处理后,建立了一个语法树节点对象,该节点的符号为分词时所确定的符号,原始文本以及显示文本为“2016年11月13日”;符号代号为date;内容为一个日期类型的对象,其值为2016年11月13日;其父节点、子节点均为空,代表当前还没有进行语法树的构建。在将待解析语句分解为基本词素之前,还需要采用预定歧义判断算法判断待解析语句是否存在歧义;在判断结果为是的情况下,采用预定规避措施对待解析语句存在的歧义进行规避。传统上中文自然语言的识别处理是计算机语言学里面的难题。本发明实施例针对中文领域特定语言的描述和解析,设计和实现了解析器的框架结构和功能,具体采用如下关键算法:歧义判断算法和规避措施。应注意的是,对于中文自然语言来说,由于语法中仅存在较少的词性(名词、动词、形容词、数词、量词、代词、副词、介词、连词、助词、叹词、拟声词共12个),却要涵盖大量的实际词汇(根据《现代汉语常用词表(草案)》,中文常用词汇为56008个),因此在进行语法树解析会产生大量的歧义。歧义在中文领域特定语言中应尽力避免。在本发明的实施例中采用预定歧义判断算法判断待解析语句是否存在歧义,具体地,一个输入语句是否存在歧义,可以使用如下判定方法:⑴分词过程中,从目标语句左端开始,不限定最大匹配长度,前向搜索所有可以匹配的符号模式,对于每一种匹配均构成一种初始分词方案。对于每一种初始分词方案,向右侧逐渐扫描,每匹配一种新的符号,都与其对应的原分词方案构成排列组合关系。依此类推,直至所有的文本被匹配完毕,形成x种分词方案。若x>1,则可判定输入语句存在词法歧义。⑵对一种分词方案分别使用下降式的语法树解析算法,并且不限定匹配的位置,即在任意位置均可以匹配符号,构建上一级节点,直至构建出唯一根节点。对于所有的分词方案,共形成y种树结构(完全相同的结构计为1种),若y>1,则可判定输入语句存在句法歧义。在判断结果为是的情况下,为了规避歧义,本发明除了使用分词算法中的最大匹配原则以及使用下降式语法树解析算法外,还应当尽量从语法体系的定义上保证,由此,本发明实施例采用预定规避措施对待解析语句存在的歧义进行规避,提出以下原则:⑴针对语言所面向的专业领域,尽量细分词素,定义较为丰富的符号类型,提升“符号数量/词数量”的比值。⑵若符号a的模式包含符号b的模式,则应将a的优先级调至比b小,即优先使用a进行匹配,这个原则即最大匹配长度原则。⑶若符号a的模式中存在可替换部分,则应将较长的模式前置,以实现优先匹配较长的模式。比如表示或者关系的or符号,应尽量使用“或者|或”定义其模式,而避免用“或|或者”,防止将“或”识别为or符号而将“者”单独分离出来。该原则也同最大匹配长度原则吻合。为了更好地对待解析语句进行解析,本发明实施例选择采用将待解析语句分解为基本词素,具体包括:采用最长匹配原则,将待解析语句分解为基本词素,其中,最长匹配原则为匹配尽可能长的语句。分词算法将一段中文语句分解为基本词素,并确定词素所对应的终结符号。该过程也称为词法分析。在此过程中,只有终结符的模式会参与前向搜索与匹配,因为只有终结符会直接出现在语句中。经过简化的分词算法的伪码如下。其中,“最长匹配原则”是一种本发明使用的基本分词准则。在语句每个搜索位置上,上述算法匹配尽可能长的语句。lexer()函数在当前目标文本phrase中向前搜索tsymbol(一个终结符号)的模式。经过对所有终结符号的尝试匹配,获得最长匹配长度的符号将作为最终的符号。如果该原则未能成功匹配语句中所有的文本,则尝试随机性的词法搜索,搜寻具有最高可能的分词方式。如果两种方式都没有获得可行分词结果,则会报告“输入语句有误”,表明其不符合当前定义的语法。图5是根据本发明实施例的分词结果示例图,其分词结果如图5所示。本发明实施例针对中文领域语言的特点,还考虑使用一种调和式的语法树解析算法,具体包括下降式和上升式两个子算法。根据中文领域特定语言的语法,将标注了词性的基本词素解析为语法树包括以下内容:采用下降式语法树解析算法,将标注了词性的基本词素解析为语法树,其中,下降式语法树解析算法为:在预定的词素位置,依次向前搜索匹配,当匹配的词素引用了除词素所引用的符号之外的其他符号时,匹配其他符号。具体地,理论上对于一个语法体系来说,如果其词法、句法以及其符号体系是完备、合理的(即符号不存在直接或间接对自身的无限次引用),可以使用一个下降式解析过程,对正确的语句总能实现的语法树的构建。图6是根据本发明实施例的语法树解析的下降式前向匹配算法的流程图,图6中的“前向匹配()”函数,给定在当前词素中的位置,依次向前搜索。这是一个递归过程,当正在尝试匹配的模式中引用了其他符号时,该函数调用自身,去匹配所引用的符号。在一定程度上,下降式算法虽然有效并且完整,但并不总能获得最佳性能。当符号系统中存在大量符号,并且它们的模式相互引用时,搜寻的复杂度趋于o(nd),其中n是符号的数量,d是最大的引用深度。因此,对于符号数量众多的大型的领域特定语言,应考虑使用上升式的解析算法,以获得更佳的性能。采用上升式语法树解析算法,将标注了词性的基本词素解析为语法树,其中,上升式语法树解析算法为:构建从待解析语句分解产生的基本词素的父节点,之后采用相同的方式构建父节点的父节点,直至产生唯一的根节点;采用下降式语法树解析算法和上升式语法树解析算法结合的方式,将标注了词性的基本词素解析为语法树。对于确定的领域特定语言来说,上升式的语法树解析算法从分词产生的词素开始,尝试构建它们的父节点。这种算法通过应用断言规则,显著缩小搜索空间。根据符号的优先级(或者历史数据的频率统计),最常见的终结符组合将优先被分离出来,他们的父节点将被建立起来。作为一个可选项的实施例,上升式语法树解析可以不局限在当前位置上,目标语句中任何位置只要匹配当前尝试的模式,可以立即被分离出来进行上级节点构建。目标语句的未匹配词素将会继续尝试匹配,直到所有叶节点被匹配,形成完整的第二级(比叶节点高一级)节点。对第二级节点进行相同方法的上升式匹配,直到最终形成一个唯一的根节点。如果最终不能形成唯一根节点,报告输入语句有误。将上述下降式和上升式算法结合起来,就构成了调和式解析算法,其过程如下:⑴在输入语句中,针对部分优先级高、出现频率高的符号模式优先进行上升式搜索。每次匹配成功后立即进行局部的语法树构建,形成子树。⑵每当有新的子树构建成功,将其根节点连同语句的其他部分继续进行上升式语法解析,直至语句中的高频模式均被处理。⑶对于语句的剩余部分,连同已经构建的子树的根节点进行下降式的语法树解析,直至构建出整个语句的语法树。调和式语法树解析算法综合了上升式算法和下降式算法的特点,在兼顾完整性的同时保证了解析的高效率。调和式算法的性能改良,以语言的自身语法特性为前提,其常用的高频符号种类越少、占文字的比例越大,越容易获得性能提升。在将待解析语句分解为基本词素之前,还可以考虑利用:采用预定的省略语推断算法,对待解析语句进行推断,将待解析语句还原为完全信息的语句,其中,预定的省略语推断算法包括以下至少之一:根据前文的基本词素,对省略语进行补充的上文推断算法;根据指代时间的基本词素对时间进行推算的时间推断算法;对未指定完整信息的基本词素进行定位的业务对象推断算法。在中文领域特定语言中,还允许省略语的使用。本发明实施例使用简单推断算法处理省略语句,将其还原为具有完全信息的语句。省略语推断分为上文推断、时间推断和业务对象推断三种。上文推断:根据前文提到的词素,对省略语进行补充。比如语句“2017年3月执行工作一。4月执行工作二。”其中4月为省略语,缺少年份信息,无法用于业务计算。以省略语向前寻找带有年份的语句,获得2017年,因此将“4月”补充为“2017年4月”。时间推断:针对“明天”“下个月”“1日”“3月份”等指代时间的词素,通过当前时间进行推算。如“明天”代表当前日期+1天。“1日”,在没有上下文信息的情况下,一般指离当前最近的1日。以此类推。业务对象推断:通过搜寻应用平台的业务数据,对未指定完整信息的词素进行定位。推断方法为遍历数据表及各条记录,找到目标词素在业务数据中的路径。如在教学业务宿主系统中,“提交《健身行业现状调查》给张三”语句,通过检索各业务数据表,发现《健身行业现状调查》在论文数据表中有记录,为学生李四的论文名称,而张三为教师信息表中的教师,因此可以补充语句为“提交李四的论文《健身行业现状调查》给教师张三”。这样,对缺少信息的词素补充了必要修饰语,实现了省略语的推断。在根据中文领域特定语言的语法,将标注了词性的基本词素解析为语法树之后,还包括:语法树上的叶子节点将叶子节点的内容传递给叶子节点的父节点;父节点对所包括的所有叶子节点传递的内容进行处理(计算),得到父节点的内容;依次执行:上述内容传递以及处理操作,直至根节点,将根节点的内容作为语法树的最终值,其中,所述最终值用于执行应用程序接口(applicationprocessorinterface,简称为api),实现用户意图。上述过程也即是语法树的执行操作,具体如下所示:1)将各叶节点的内容(在词性标注中计算获得)作为参数,传递给其父节点。2)父节点接受所有子节点所传递的内容作为默认函数的参数,执行该函数进行计算,以该函数返回值更新父节点的内容。3)以此类推,直至根节点计算完毕,根节点的内容即为该语法树的最终值。一般来说,各叶节点的计算与应用业务数据之间具有交互关系,每一次计算都可能影响业务数据。因此应选取适当的执行顺序。可根据父节点的性质采用左优先(即由左至右进行节点的计算)或右优先原则。由于现代中文的修饰语(定语和状语)一般前置,左优先原则符合大多数中文领域特定语言的习惯,因此作为本发明算法的首选选项。为了便于显示,其中语法树在数据表中以前置表达式的文本形式表示。当选定具体测试语句,如“27圈厦门站tin后3分钟:安排实验3-008”(其中圈指航天器绕地飞行的圈次;tin为一个航天专业术语,含义为测站对一个航天器开始跟踪的时刻),软件解析该语句后生成语法树,然后绘制了“中文领域特定语言管理器”软件绘制的中文语句语法树解析结果。本发明实施例将编程语言编译器(解释器)技术与自然语言处理技术进行结合,构建了一种通用中文领域特定语言描述和解析的混合式技术框架,允许通过正则表达式、内置函数等灵活方式进行语法定义,并能够根据该语法进行目标语句的自动识别、解析和执行,从而配合业务应用系统的内置功能,完成业务数据的定制性操作,实现对业务按需灵活扩展。具体地,图7是根据本发明实施例的中文领域特定语言的定义和解析的框架图,如图7所示包括:中文领域特定语言的定义和解析技术框架以及应用业务系统,其中,中文领域特定语言的定义和解析技术框架中通过获取目标语句,在语法描述的基础上对中文领域语言解析,然后进行语句执行操作;中文领域特定语言的定义和解析技术框架通过语句执行与应用业务系统连接,具体地,与业务数据以及业务逻辑进行业务处理操作。其中,图8是根据本发明实施例的中文领域特定语言的解析过程的流程图,具体的,中文领域语言解析按如图8所示过程进行,对目标语句经过预处理、分词、词性标注、语法树解析的步骤,生成语法树。具体地,还需要利用语法体系中的分词训练结果进行分词操作,语法解析训练结果对语法树进行解析。另外,在分词以及词性标注的过程中,还需要词典以及符号表。本发明上述实施例可以完美支持中文(以及任何其他语种)领域特定语言的定义与解析。辅以合理的语法设计,甚至能够自动识别处理具有一定规律的自然语言文字,如财经新闻、体育新闻等。基于正则表达式与判断函数的词法和文法的混合式描述方法,相对于扩展巴科斯范式具有更高的灵活性。使用本发明设计的领域特定语言可动态修改和扩充文法并且立即生效,无需进行语言解释器的代码生成、编译与发布。根据本发明实施例的另一个方面,还提供了一种语句解析装置,图9是根据本发明实施例的语句解析装置的示意图,如图9所示包括:获取模块91以及解析模块93。下面对该装置进行说明。获取模块91,用于获取待解析语句。解析模块93,用于根据中文领域特定语言的语法,对待解析语句进行解析,其中,待解析语句和中文领域特定语言均是基于中文进行描述的。可选地,解析模块包括:分词单元,用于将待解析语句分解为基本词素;标注单元,用于对分解的基本词素标注词性;解析单元,用于根据中文领域特定语言的语法,将标注了词性的基本词素解析为语法树。可选地,解析模块还包括:判断单元,用于采用预定歧义判断算法判断待解析语句是否存在歧义;规避单元,用于在判断结果为是的情况下,采用预定规避措施对待解析语句存在的歧义进行规避。可选地,分词单元包括:分解子单元,用于采用最长匹配原则,将待解析语句分解为基本词素,其中,最长匹配原则为匹配尽可能长的语句。可选地,解析单元包括以下之一:第一解析子单元,用于采用下降式语法树解析算法,将标注了词性的基本词素解析为语法树,其中,下降式语法树解析算法为:在预定的词素位置,依次向前搜索匹配,当匹配的词素引用了除词素所引用的符号之外的其他符号时,匹配其他符号;第二解析子单元,用于采用上升式语法树解析算法,将标注了词性的基本词素解析为语法树,其中,上升式语法树解析算法为:构建从待解析语句分解产生的基本词素的父节点,之后采用相同的方式构建父节点的父节点,直至产生唯一的根节点;第三解析子单元,用于采用下降式语法树解析算法和上升式语法树解析算法结合的方式,将标注了词性的基本词素解析为语法树。可选地,解析模块还包括:推断单元,用于采用预定的省略语推断算法,对待解析语句进行推断,将待解析语句还原为完全信息的语句,其中,预定的省略语推断算法包括以下至少之一:根据前文的基本词素,对省略语进行补充的上文推断算法;根据指代时间的基本词素对时间进行推算的时间推断算法;对未指定完整信息的基本词素进行定位的业务对象推断算法。可选地,解析模块还包括:传递单元,用于语法树上的叶子节点将叶子节点的内容传递给叶子节点的父节点;处理单元,用于父节点对所包括的所有叶子节点传递的内容进行处理,得到父节点的内容;执行模块,用于依次执行:上述内容传递以及处理操作,直至根节点,以根节点的内容作为语法树的最终值。根据本发明实施例的另一个方面,还提供了一种存储介质,其特征在于,存储介质包括存储的程序,其中,程序运行时控制存储介质所在设备执行以下操作:获取待解析语句;根据中文领域特定语言的语法,对待解析语句进行解析,其中,待解析语句和中文领域特定语言均是基于中文进行描述的。根据本发明实施例的另一个方面,还提供了一种处理器,其特征在于,处理器用于运行程序,其中,程序运行时执行以下操作:获取待解析语句;根据中文领域特定语言的语法,对待解析语句进行解析,其中,待解析语句和中文领域特定语言均是基于中文进行描述的。上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。在本发明的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。在本申请所提供的几个实施例中,应该理解到,所揭露的技术内容,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,可以为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。以上所述仅是本发明的优选实施方式,应当指出,对于本
技术领域
的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1