一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种人机交互系统及其实现方法和应用与流程

2022-11-16 06:24:01 来源:中国专利 TAG:
1.本发明涉及人工智能领域,具体提供了一种人机交互系统及其实现方法和应用,包括训练、编程与控制方法,可应用于编程学习与编程、操作人员操作培训与现场标准化作业辅助、交互式机器动作控制等应用场景。
背景技术
::2.第三次人工智能ai热潮来袭,ai在语音识别、机器视觉、数据挖掘等多个领域走进了业界的真实应用场景。在现代和未来的社会里,只要有人利用通信、计算机等信息处理技术,为社会、经济、环境和资源进行活动时,人机交互都是永恒的主题。鉴于它对科技发展的重要性,研究如何实现自然、便利和无所不在的人机交互成为现代信息技术,人工智能技术研究的至高目标。技术实现要素:3.为了解决以上问题,本发明提供了一种,可应用于编程学习与编程、操作人员操作培训与现场标准化作业辅助、交互式机器动作控制等应用场景人机交互系统。4.一种人机交互系统,包括输入模块、画布,和对象与动作;用户通过输入模块输入语音或文本表达哪些对象与动作放置到画布上、画布上的对象与动作的属性会如何变化以及发生哪些动作等意图;系统理解用户的意图并在画布上实现。5.优选的,还包括目标,系统将画布上实现的结果与目标进行对比,并且把对比结果反馈给用户;如果对比的结果达不到目标的效果,用户可以继续输入语音或文本来让系统理解用户的意图并在画布上实现,直至系统或用户认为达到目标的效果为止。6.其中,7.(1)对象与动作可以有属性,也可以没有属性;8.(2)属性通常都有一个或多个属性值;9.(3)动作有施事者;根据施事者动作主要划分为两类:系统动作与对象动作。其中系统动作的施事者是系统,也称全局动作;对象动作的施事者则为具体一个或多个对象;10.(4)动作可以有受事者,也可以没有;受事者可以是系统,也可以是具体一个或多个对象。如果存在受事者,则表示该动作是在施事者与受事者之间发生。11.(5)对象可能由其它对象组成;属性也可能由其它属性组成;动作也可能由其它动作组成。12.所述画布是一个容器,也是一个特殊的对象;系统可以放置上述对象放置画布上,并且这些对象可以在画布上完成一系列属性变化或动作;同时系统可以预先放置一个或多个现成的对象在画布上,或者还显示这些对象正在画布上发生一系列属性变化或动作。13.所述目标是由上述对象中的一个或多个完成一系列属性变化或动作所达到的效果;系统可以逐步显示哪些对象被放置在目标上,或者还显示这些对象正在目标上发生一系列属性变化或动作。14.所述的对象与动作或目标可以被隐藏,即表示对用户也不可视。15.本发明还提供了人机交互系统的实现方法,包括如下过程:16.(1)用户输入语音或文本。17.(2)系统将输入的语音经语音识别后进行自然语言理解,或系统将用户输入的文本进行自然语言理解;18.(3)系统将经自然语言理解后生成的指令串在画布上执行;19.(4)系统将在画布上执行后的结果与目标效果进行对比;20.(5)系统将对比结果反馈给用户;21.(6)如果对比的结果达不到目标的效果,用户可以继续输入语音或文本来让系统进一步生成新的指令串并在画布上执行,直至系统或用户认为达到目标效果为止。22.(7)如果上述过程中需要用户确认或补充理解所需的信息时,系统可通过语音或文本询问用户,用户可以通过输入语音或文本来应答。如果上述过程中需要提示用户时,系统可通过语音或文本提示用户。上述过程中对比结果的反馈,系统可通过语音或文本提示用户。23.其中,24.过程(1)中系统可以在用户输入语音或文本前预先提示或询问用户。25.过程(2)中的语音识别,现阶段技术为将输入的语音转换为文本,然后再将文本进行自然语言理解,其过程与系统将用户输入的文本进行自然语言理解的过程一致;自然语言理解,采用一种基于概念网络的自然语言理解方法来实现,实现过程如下:26.[1]生成概念网络;包括基础定义、转换生成、扩展定义或动态形成中的一种或多种方法来生成;[0027]a.基础定义为定义基础的概念及概念连接,主要选用xml、json格式的配置文件来定义这些概念及概念连接,然后再通过对这些配置文件解析生成概念及概念连接;[0028]b.生成的方法为将数据结构、程序设计语言、语义网络/词典/知识库等转换生成为概念及概念连接;实现该转换生成的主程序,即为概念生成引擎;生成方法如下:[0029]a)概念生成引擎将系统第一部分中的每个对象、属性、具体类属性值、动作分别作为一个词概念,每个的名称或指代它的词作为该概念的词;将系统第一部分中的每个抽象类分别作为一个无词概念,其通过配置的概念识别器来识别自然语言词与该概念间接相对应;[0030]b)对象对应的概念与该对象具有的每个属性所对应的概念之间分别形成attribute属性关系;[0031]c)属性对应的概念与该属性具有的每个属性值所对应的概念之间分别形成value属性值关系;[0032]d)系统动作对应的概念与该动作具有的每个受事者所对应的概念之间分别形成vo谓宾关系;[0033]e)对象动作具有的每个施事者所对应的概念与该动作对应的概念之间分别形成sv主谓关系;[0034]f)对象动作对应的概念与该动作具有的每个受事者所对应的概念之间分别形成vo谓宾关系;[0035]c.扩展定义为采用基础定义的方法进一步扩展定义概念及概念连接;[0036]d.动态形成为动态的形成概念及概念连接,包括在自然语言理解过程中动态为概念之间形成连接,或者人为操作为概念添加词、增加概念连接。[0037][2]基于上述概念网络实现自然语言理解[0038]a.过程依次是:切分句、切分概念词、概念定义依存分析、概念定义运行;目的是:生成可执行的程序设计语言代码,这些可执行的程序代码即为指令串,因此指令串可在画布上执行;[0039]b.上下文会话贯穿整个分析、运行过程。[0040]过程(4)中的对比,对比方法通过对象一致性原则、属性变化或动作一致性原则来判断;[0041][1]对象一致性原则如下:[0042]a)目标效果中的所有对象是否都已经被放置在画布上;[0043]b)画布上的对象属性值是否与目标效果中的一致;[0044][2]属性变化或动作一致性原则如下:[0045]a)目标效果中的所有属性变化或动作是否都已经在画布上发生;[0046]b)画布上发生的属性变化或动作是否与目标上的一致,以及顺序是否一致。[0047]过程(7)中系统生成的语音,现阶段技术为系统先生成文本,然后生成的文本再通过语音合成来实现;系统生成的文本,可以使用模板方法来实现,也可以使用一种基于概念网络的自然语言生成方法来实现;“基于概念网络的自然语言生成方法”技术实现过程如下:[0048][1]同“基于概念网络的自然语言理解方法”技术实现过程中第一步生成概念网络的方法来生成概念网络;或者直接使用“基于概念网络的自然语言理解方法”技术实现过程中已生成的概念网络;[0049][2]基于上述概念网络实现自然语言生成[0050]a)过程依次经过def生成、句法分析环节,使得能够生成文本;[0051]b)上下文会话贯穿整个生成过程。[0052]本发明还提供了人机交互系统的应用。[0053]人机交互系统在现场标准化作业辅助系统、交互式智能玩具、智力训练、智力答题中的应用。[0054]对于现场标准化作业辅助系统,画布就是辅助系统的人机交互界面;对于交互式智能玩具,画布就是玩具硬件系统;目标是系统后台隐藏的,即对用户不可视。[0055]对象与动作系统也可以选择不显示,系统可以通过语音或文本告诉用户有哪些对象、这些对象有哪些属性及属性值、有哪些动作等;画布上系统可以预先放置一个或多个现成的对象,或者还显示这些对象正在画布上发生一系列属性变化或动作。[0056]本发明人机交互系统的实现方法,过程:(1)系统首先通过语音或文本提示或询问用户;(2)用户根据系统的提示或询问通过输入语音或文本表达意图;(3)系统理解用户的意图并在画布上实现;(3)系统将画布上实现的结果与后台隐藏的目标效果进行对比,并且把对比结果反馈给用户;(4)如果对比的结果达不到目标的效果,用户可以继续输入语音或文本来让系统理解用户的意图并在画布上实现,直至系统认为达到目标效果为止。[0057]本技术人机交互系统可以通过语音、文本、触屏操作、操纵杆操作、手势或脑波等方式进行交互,进而进行编程或控制,使用更加方便,也更加适合不认识字的小朋友使用。[0058]本人机交互系统率先提出了基于概念网络及其自然语言理解、生成方法的技术实现过程,同时在人机交互过程中动态生成指令串的方式将会提升机器的认知能力和理解能力,为人机交互训练、编程与控制提供了一种方法论,更是提供了一种全新的解决方案。附图说明[0059]图1本系统提出的技术实现过程图[0060]图2本系统实现通过语音或文本进行编程的过程图[0061]图3本系统扩展支持用户通过触屏操作、操纵杆操作、手势、脑波等方式的过程图[0062]图4本系统可以应用在实际的工作场合上的过程图具体实施方式[0063]下面结合附图对本发明的实施例进行进一步详细说明:[0064]本文提出一种基于人工智能技术的人机交互训练、编程与控制的系统与方法,可应用于编程学习与编程、操作人员操作培训与现场标准化作业辅助、交互式机器动作控制等应用场景。[0065]一、人机交互训练、编程[0066]1.1.系统[0067]本系统包含三部分。[0068]第一部分:对象与动作。[0069](1)对象与动作可以有属性,也可以没有属性;[0070]举例:对象例如“框”、“按钮”、“表格”,例如“人”、“苹果”、“蝴蝶”,等等。在计算机语言领域,对象解释为“客观世界中存在的人、事、物体等实体在计算机逻辑中的映射”,其可以通过用计算机所创造的图形来表达。[0071](2)属性通常都有一个或多个属性值。属性值分具体与抽象两类属性值。具体类属性值表示有明确的值,而抽象类属性值表示一类值,没有明确具体到哪个值。[0072]举例:属性例如“颜色”、“宽度”、“高度”,等等。“宽度”有“红色”、“白色”等等属性值。[0073](3)动作有施事者。根据施事者动作主要划分为两类:系统动作与对象动作。其中系统动作的施事者是系统,也称全局动作;对象动作的施事者则为具体一个或多个对象;[0074]举例:系统动作例如“创建”、“移动”,等等。对象动作例如“人”的动作“跑”、“行走”,动作“吃”,等等。[0075](4)动作可以有受事者,也可以没有。受事者可以是系统,也可以是具体一个或多个对象。如果存在受事者,则表示该动作是在施事者与受事者之间发生。[0076]举例:上述举例中的系统动作“创建”、“移动”受事者可以是上述举例中提及的对象。上述举例中“人”的动作“跑”、“行走”没有受事者,而动作“吃”的受事者可以是上述举例中提及的对象“苹果”。[0077](5)对象可能由其它对象组成。属性也可能由其它属性组成。动作也可能由其它动作组成。举例:例如“表格”可以由“表头”、“表体”、“表尾”组成。属性“边框”是对象“框”的属性,其可以由“上边框”、“下边框”、“左边框”、“右边框”属性组成。[0078]系统可以隐藏这部分对象与动作,即表示对用户不可视。系统可以通过语音或文本告诉用户有哪些对象、这些对象有哪些属性及属性值、有哪些动作等。[0079]第二部分:画布。[0080]画布是一个容器,也是一个特殊的对象。系统可以放置上述对象放置画布上,并且这些对象可以在画布上完成一系列属性变化或动作。同时系统可以预先放置一个或多个现成的对象在画布上,或者还显示这些对象正在画布上发生一系列属性变化或动作。[0081]第三部分:目标。[0082]由上述对象中的一个或多个完成一系列属性变化或动作所达到的效果。系统可以逐步显示哪些对象被放置在目标上,或者还显示这些对象正在目标上发生一系列属性变化或动作。目标也可以被隐藏,即表示对用户也不可视。[0083]1.2.方法及技术实现[0084]本系统提出的方法是:(1)用户通过输入语音或文本表达哪些对象放置到画布上、画布上的对象的属性会如何变化以及发生哪些动作等意图;(2)系统理解用户的意图并在画布上实现;(3)系统将画布上实现的结果与目标效果进行对比,并且把对比结果反馈给用户;(4)如果对比的结果达不到目标的效果,用户可以继续输入语音或文本来让系统理解用户的意图并在画布上实现,直至系统或用户认为达到目标效果为止。[0085]本系统提出的技术实现,如图1:[0086](1)用户输入语音或文本。[0087](2)系统将输入的语音经语音识别后进行自然语言理解,或系统将用户输入的文本进行自然语言理解;[0088](3)系统将经自然语言理解后生成的指令串在画布上执行;[0089](4)系统将在画布上执行后的结果与目标效果进行对比;[0090](5)系统将对比结果反馈给用户;[0091](6)如果对比的结果达不到目标的效果,用户可以继续输入语音或文本来让系统进一步生成新的指令串并在画布上执行,直至系统或用户认为达到目标效果为止。[0092](7)如果上述过程中需要用户确认或补充理解所需的信息时,系统可通过语音或文本询问用户,用户可以通过输入语音或文本来应答。如果上述过程中需要提示用户时,系统可通过语音或文本提示用户。上述过程中对比结果的反馈,系统可通过语音或文本提示用户。[0093]√上述实现过程(1),系统可以在用户输入语音或文本前预先提示或询问用户;[0094]√上述实现过程(2)中的语音识别,现阶段技术为将输入的语音转换为文本,然后再将文本进行自然语言理解,其过程与系统将用户输入的文本进行自然语言理解的过程一致;[0095]√上述实现过程(2)中的自然语言理解,采用一种基于概念网络的自然语言理解方法来实现。[0096]√上述实现过程(4)中的对比,对比方法通过对象一致性原则、属性变化或动作一致性原则来判断。[0097]◆对象一致性原则如下:[0098]●目标效果中的所有对象是否都已经被放置在画布上;[0099]●画布上的对象属性值是否与目标效果中的一致;[0100]◆属性变化或动作一致性原则如下:[0101]●目标效果中的所有属性变化或动作是否都已经在画布上发生;[0102]●画布上发生的属性变化或动作是否与目标上的一致,以及顺序是否一致;[0103]√上述实现过程(2)中的“基于概念网络的自然语言理解方法”技术实现过程如下:[0104][1]生成概念网络。包括基础定义、转换生成、扩展定义或动态形成中的一种或多种方法。[0105]a.基础定义为定义基础的概念及概念连接,主要选用xml、json格式的配置文件来定义这些概念及概念连接,然后再通过对这些配置文件解析生成概念及概念连接。[0106]b.生成的方法为将数据结构、程序设计语言、语义网络/词典/知识库等转换生成为概念及概念连接;实现该转换生成的主程序,即为概念生成引擎。生成方法如下:[0107]◆概念生成引擎将系统第一部分中的每个对象、属性、具体类属性值、动作分别作为一个词概念,每个的名称或指代它的词作为该概念的词;将系统第一部分中的每个抽象类分别作为一个无词概念,其通过配置的概念识别器来识别自然语言词与该概念间接相对应。[0108]◆对象对应的概念与该对象具有的每个属性所对应的概念之间分别形成attribute属性关系;[0109]◆属性对应的概念与该属性具有的每个属性值所对应的概念之间分别形成value属性值关系;[0110]◆系统动作对应的概念与该动作具有的每个受事者所对应的概念之间分别形成vo谓宾关系;[0111]◆对象动作具有的每个施事者所对应的概念与该动作对应的概念之间分别形成sv主谓关系;[0112]◆对象动作对应的概念与该动作具有的每个受事者所对应的概念之间分别形成vo谓宾关系;[0113]c.扩展定义为采用基础定义的方法进一步扩展定义概念及概念连接;[0114]d.动态形成为动态的形成概念及概念连接,包括在自然语言理解过程中动态为概念之间形成连接,或者人为操作为概念添加词、增加概念连接。[0115][2]基于上述概念网络实现自然语言理解[0116]◆过程依次是:切分句、切分概念词、概念定义(def)依存分析、概念定义(def)运行。目的是:生成可执行的程序设计语言代码,这些可执行的程序代码即为指令串,因此指令串可在画布上执行。[0117]◆上下文会话贯穿整个分析、运行过程。[0118]√上述实现过程(7)中系统生成的语音,现阶段技术为系统先生成文本,然后生成的文本再通过语音合成来实现。[0119]√上述实现过程(7)中系统生成的文本,可以使用模板方法来实现,也可以使用一种基于概念网络的自然语言生成方法来实现。[0120]√上述实现过程(7)中的“基于概念网络的自然语言生成方法”技术实现过程如下:[0121][1]同“基于概念网络的自然语言理解方法”技术实现过程中第一步生成概念网络的方法来生成概念网络。或者直接使用“基于概念网络的自然语言理解方法”技术实现过程中已生成的概念网络。[0122][2]基于上述概念网络实现自然语言生成[0123]◆过程依次经过def生成、句法分析环节,使得能够生成文本。[0124]◆上下文会话贯穿整个生成过程;[0125]1.3.语音或文本编程[0126]根据上述所述的“基于概念网络的自然语言理解方法”技术实现过程,系统将用户输入的语音或文本生成可执行的程序设计语言代码,而这些可执行的程序代码就是指令串。因此系统将用户连续输入的语音或文本生成一系列可执行的程序设计语言代码。该过程实现了通过语音或文本进行编程,如图2。这些代码可以进一步进行图形化展示,或转换为主流的图形化编程语言例如scratch,将有助于小孩图形化编程学习。[0127]1.4.扩展方式[0128]系统还可以扩展支持用户通过触屏操作、操纵杆操作、手势、脑波等其它方式来表达意图,见图3所示。[0129](1)触屏操作。即用户触屏拖拉对象到画布上,并单击画布或对象来选择(或输入)系统动作或对象动作或对象属性值,从而使得在画布上放置一个或多个对象并完成一系列属性变化或动作。同时系统将在画布上的结果与目标效果进行对比,并将对比结果反馈给用户。如果对比的结果达不到目标的效果,用户可以继续触屏操作,直至系统或用户认为达到目标效果为止。如果过程中需要提示用户时,系统可通过语音或文本提示用户。另外,系统记录用户的每一步触屏操作,也可以将这些操作转换为指令串并生成程序代码,从而实现通过触屏操作进行编程。[0130](2)操纵杆操作。即用户通过控制操纵杆点击选中对象,然后通过上下左右方向控制将对象移动到画布上,并点击画布或对象来选择(或输入)系统动作或对象动作或对象属性值,从而使得在画布上放置一个或多个对象并完成一系列属性变化或动作。同时系统将在画布上的结果与目标效果进行对比,并将对比结果反馈给用户。如果对比的结果达不到目标的效果,用户可以继续操作操纵杆,直至系统或用户认为达到目标效果为止。如果过程中需要提示用户时,系统可通过语音或文本提示用户。另外,系统记录用户的每一步操纵杆操作,也可以将这些操作转换为指令串并生成程序代码,从而实现通过操纵杆操作进行编程。[0131](3)手势。系统先通过摄像头获取用户手势图像,然后经过手势检测与分隔、手势分析、静态手势识别、动态手势识别来理解用户的意图并在画布上实现。另外,系统也可以将这些转换为指令串并生成程序代码,从而实现通过手势进行编程。[0132](4)脑波。系统先通过采集脑波信号,然后通过脑波信号识别来理解用户的意图并在画布上实现。另外系统也可以将这些转换为指令串并生成程序代码,从而实现通过脑波进行编程。[0133]二、人机交互控制[0134]上述系统也可以应用在实际的工作场合。第二部分画布就是工作对象,例如对于现场标准化作业辅助系统,画布就是辅助系统的人机交互界面;对于交互式智能玩具,画布就是玩具硬件系统。而第三部分目标就是用户想要的效果,比对方法则用户主观判断工作区上执行后的结果是否达到想要的效果。见图4所示。[0135]上述系统还可以应用在智力训练、智力答题等场合。第三部分目标是系统后台隐藏的,即对用户不可视。第一部分对象系统也可以选择不显示,系统可以通过语音或文本告诉用户有哪些对象、这些对象有哪些属性及属性值、有哪些动作等。第二部分画布上系统可以预先放置一个或多个现成的对象,或者还显示这些对象正在画布上发生一系列属性变化或动作。过程:(1)系统首先通过语音或文本提示或询问用户;(2)用户根据系统的提示或询问通过输入语音或文本表达意图;(3)系统理解用户的意图并在画布上实现;(3)系统将画布上实现的结果与后台隐藏的目标效果进行对比,并且把对比结果反馈给用户;(4)如果对比的结果达不到目标的效果,用户可以继续输入语音或文本来让系统理解用户的意图并在画布上实现,直至系统认为达到目标效果为止。[0136]本发明基于概念网络,具体如下:[0137]概念网络(conceptnetwork)是定义事物概念及概念间语义关系的系统,其本质上是一种语义网络,它为本文所述的自然语言理解与生成提供语义基础。下述文中的“自然语言词”(或“词”)泛指自然语言的字(符)、词、短语(词组)。[0138]1.1.定义[0139]概念网络包含两个部分,一是概念,二是概念连接。[0140]1.1.1.概念[0141]概念都有一个唯一的编号id,以标识概念网络中概念的唯一性。概念id可以是任何一种形式,例如字符串、数字、词向量等。概念分为三类:词概念(word),无词概念(non_word),未知概念(unknown)。[0142]1.1.1.1.词概念[0143]表示存在自然语言词与此概念直接相对应,同时也存在实现该概念定义def的转换器。此概念也称为直接概念。[0144]概念定义def是指概念的具体定义或实现,也可称为概念实例。它不同于知网hownet所述知识词典中的def,两者不应混淆。一个自然语言词可以与一个或多个概念相对应。有些词存在多个词性,因此也可以设定特定词性的词与一个或多个概念相对应。[0145]√例如概念id=unit,其可有词“单位”与之对应。语句“数量的单位是?”,“单位”即为该概念。[0146]上述示例中的词概念不带有任何关系成分,称为一般词概念。[0147]词概念还包括:[0148]◆带有关系成分的词概念[0149]这类概念带有关系成分,即词的两侧或一侧作为该概念的关系成分。[0150]√例如概念id=selt,可有带有成分的词“{0}或者{1}”,语句“苹果或者西瓜”,“或者”的两侧“苹果”、“西瓜”为该概念的关系成分,表示选择;[0151]同时通过关系成分可以间接实现自然语言中所要表达的语义关系。示例如下:[0152][0153][0154]◆组合词概念[0155]这类概念是由多个词联合组成的,至少这些词之间的是该概念的关系成分。[0156]√例如概念id=eban,可有组合词“宁可{1}也不{2}”,语句“我宁可累死也不劳烦你”,“宁可”的右侧与“也不”的右侧都为该概念的关系成分,表示取舍或选取,先取后舍、先舍后取。[0157]◆词集合概念[0158]这类概念,表示有多个词、或者带有成分的词、或者组合词与该概念相对应。[0159]√例如概念id=caru,其可有"因为{1}所以{2}"、"之所以{2}是因为{1}"、"既然{1}就{2}"、"因{1}"、"因为{1}"、"由于{1}"、"为{1}"、"为了{1}"、"为着{1}"、"因此{2}"、"以致{2}"、"所以{2}"、"之所以{2}"、"为了{1}起见"、"以便{1}"等词相对应,表示因果,前提出原因、目的,后说明结果;例如概念id=create,其可有"定义"、"创建"、"新建"、"建立"、"构建"、"搭建"、"构造"、"初始"、"建造"、"建"、"造"等词相对应,表示创建动作。[0160]1.1.1.2.无词概念[0161]表示不存在自然语言词与此概念直接相对应,但通常存在概念识别器,使得自然语言词能与概念之间间接相对应。此概念也称为间接概念。[0162]√例如概念id=@time,用于指时间、日期,例如词“20150712”、“明天”、“前些天”、“某一天”。需要借助概念识别器来识别词是否为时间概念。[0163]有些无词概念表达了某一类概念,这一类概念就称为本体概念。因此无词概念分为不带本体概念的无词概念与带有本体概念的无词概念。例如:[0164]◆带有本体概念的无词概念[0165]这类概念,通常用于描述一类概念的词,它有具体词概念与之相对应。[0166]√例如概念id=*action,用于描述概念关系角色——动作,该概念本体概念是词概念id=&action,词概念id=&action对应词则可以是“动作”、“行为”、“操作”;例如概念id=*attribute,用于描述概念关系角色——属性,该概念本体概念是词概念id=&attribute,词概念id=&attribute对应词则可以是“属性”;例如概念id=*part,用于描述概念关系角色——部件,该概念本体概念是词概念id=&part,词概念id=&part对应词则可以是“部件”;例如概念id=*value,用于描述概念关系角色——值,该概念本体概念是词概念id=&value,词概念id=&value对应词则可以是“值”;例如概念id=@string,用于描述字符串一类的词,该概念本体概念是词概念id=string,词概念id=string对应词则可以是“字符串”;例如概念id=@number,用于描述数字一类的词,该概念本体概念是词概念id=number,词概念id=number对应词则可以是“数字”;例如概念id=@time,用于描述时间一类的词,该概念本体概念是词概念id=time,词概念id=time对应词则可以是“时间”、“日期”。[0167]1.1.1.3.未知概念unknown[0168]表示无法为该概念生成概念定义def,在自然语言处理过程中将被忽略。[0169]这类未知概念还包括:[0170]◆未知词概念[0171]这类概念有单个自然语言词与之相对应。[0172]◆未知词集合概念[0173]这类概念存在多个自然语言词与之相对应。[0174]1.1.2.概念连接[0175]1.1.2.1.基本[0176]即概念间的语义关系链,用来描述概念间的多层语义关系。例如以下几种语义关系:[0177]■种属(species)[0178]类属-属种的关系,也包含上下位关系。特定性较强的词叫做概括性较强的词的下位词,概括性较强的词叫做特定性较强的词的上位词。动作之间也存在此关系。[0179]√例如事物thing——事件event|物体object;例如对象object——新闻news|用户user|部门department;例如红色red——猩红色vermilion|胭脂红carmine|绯红色crimson。[0180]■部件(part)[0181]整体-部件的关系。[0182]√例如数量quantity——数字number|单位unit;例如时间time——年year|月month|日day|时hour|分minute|秒second|毫秒millisecond;例如人human——头head|身体body。[0183]■属性(attribute)[0184]宿主-属性、宿主-领属、宿主-特征、材料-成品等的关系。宿主也包含动作。[0185]√例如变量var——名称name|值value;例如新闻news——标题title|正文content|附件attachments|作者author;例如人品personality——好坏goodbad;例如格式化format——模式pattern。[0186]■值(value)[0187]属性-值、实体-值的关系。[0188]√例如数量quantity——@quantity;例如标题title——@string;例如颜色color——@color。[0189]■主谓(sv)[0190]动作来源-动作的关系。[0191]√例如我me——创建create|修改modify|删除delete|查询query|发布publish;例如@number——加add|减sub。[0192]■谓宾(vo)[0193]动作-动作目标的关系。[0194]√例如创建create——变量var;例如发布publish——新闻news。[0195]■相关(r)[0196]相关关系,其有同义、反义、下义、不相容、有关五类子关系。其中,下义指一个概念的语义在另一个概念的语义之中,不相容为从一个概念的语义中排除另一个概念的语义,有关指两个概念有关联但不清楚两者之间具体的关系。[0197]√例如冷cold——热hot;例如好good——坏bad。[0198]一个概念可以跟多个概念形成固有的一种或多种的语义关系,同时概念间的语义关系可以是多层的。[0199]1.1.2.2.动态形成[0200]一个概念可以跟多个概念在自然语言的理解过程中可以逐步形成新的概念连接。[0201]√例如语句“我有个一个包”表达了我me跟包bag之间形成了attribute(属性宿主与领属)的连接,然而在表述该语句之前我me跟包bag之间可能还没有形成这种连接[0202]1.1.2.3.特征[0203]表示概念连接中反映关系的肯定、否定、可能、范围、概率、程度、频率、时间、语气等。[0204]√例如语句“我没有包”表达了我me跟包bag之间形成了attribute(属性宿主与领属)的连接,但此连接的特征是否定;例如语句“我可能没有包”其表达的连接特征除了否定外还有可能;例如语句“我百分之80可能没有包”其表达的连接特征除了否定、可能外还有概率。[0205]1.2.建设方法[0206]概念网络的建设可通过基础定义、生成、扩展定义以及动态形成等几个方面来实现。[0207]1.2.1.基础定义[0208]定义基础的概念及概念连接。在实现的技术手段上主要选用xml、json格式的配置文件来定义这些概念及概念连接,然后再通过对这些配置文件解析生成概念及概念连接。但也不排除使用其它格式的配置文件来实现。[0209]√例如概念配置文件concepts/base1.json、concepts/action1.json,概念连接配置文件connectivities/base1.json、connectivities/action1.json。[0210]1.2.2.生成[0211]将数据结构、程序设计语言、语义网络/词典/知识库等转换生成为概念及概念连接。实现该转换生成的主程序,即为概念生成引擎。[0212]1.2.2.1.数据结构[0213]■结构化数据[0214]结构化数据,行列形式,是指可以使用excel、关系型数据库等来表示和存储,表现为二维形式的数据,有行有列,有预定义的数据模型。在结构化数据存储定义过程中,使用表来表示处理数据和建立excel、关系型数据库及应用程序等的基本单元。表的“列”常称为“字段”。每个字段由若干按照某种界限划分的相同数据类型的数据项组成。就像“通讯录”数据库中,“姓名”、“联系电话”等这些都是表中所有行共有的属性,所以把这些列称为“姓名”字段和“联系电话”字段。而存放在表行列交叉处的数据叫做“值”,它是最基本的存储单元。字段类型定义了可存储值的数据类型。[0215]√例如excel字段类型(在单元格格式中定义)有:数值、货币、日期、时间、文本等;例如microsoftaccess字段类型有:text、byte、integer、long、single、double、date/time等;例如mysql字段类型有:char、varchar、tinytext、text、mediumtext、int、bigint、float、double、date、datetime等;[0216]在关系型数据库,对于一个表定义了一个主键,则表示可以为通过该键唯一地表示表中每一记录。外键则表示了两个关系之间的联系。以另一个关系的外键作主关键字的表被称为主表,具有此外键的表被称为主表的从表。[0217]●关系模型指的是二维表格模型,而一个关系型数据库就是由二维表及其之间的联系所组成的一个数据组织。关系模型中常用的概念:关系——可理解为一张二维表,每个关系都具有一个关系名,即表名;元组——可理解为二维表中的一行,在数据库中常被称为记录;属性——可理解为二维表中的一列,在数据库中常被称为字段;域——属性的取值范围,即数据库中某一列的取值限制;关键字——一组唯一标识元组的属性,数据库中常称为主键,由一个或多个列组成;关系模式——指对关系的描述,其格式为:关系名(属性1,属性2,......,属性n),在数据库中成为表结构;[0218]■非关系型数据库[0219]非关系型数据库,键值对形式,也是一种数据结构化存储方法的集合。它不需要预定义结构,以键值对形式存储数据,因此很容易适应数据类型和结构的变化。常用的非关系型数据库主要有:[0220]√bigtable——bigtable是一个键值映射,但沿用了很多关系型数据库的术语,像表、行、列等;[0221]√hbase——hbase以表的形式存储数据。表有行和列组成。列划分为若干个列族。列族是列的集合,一个列族中包含多个列。rowkey是行键,每一行的id,这个字段是自动创建的。表中每个列都归属于某个列族。列族是表chema的一部分,必须在使用表之前定义。列名都以列族作为前缀。hbase中通过row和columns确定的为一个存贮单元称为cell。每个cell都保存着同一份数据的多个版本。版本通过64位整型的时间戳来索引。cell中的数据是没有类型的,全部是字节码形式存贮。[0222]√mongodb——文档是mongodb中数据的基本单元,类似关系型数据库中的行。文档以键值对方式,其值可以是字符串、整数、数组以及文档等类型,文档的键是用双引号标识的字符串,相当于列名。集合在mongodb中是一组文档,类似关系型数据库中的数据表。集合是由唯一的命名来标识。不同键值对形式的文档可以在同一个集合中存储。mongodb中多个文档构成集合,多个集合构成数据库。[0223]1.2.2.1.1.生成方法[0224]概念生成引擎将每个表分别作为一个概念,该表的表名、或指代该表的词作为该概念的词。[0225]√例如表user,生成概念id=user,可有词“user”、“用户”等;例如表news,生成概念id=news,可有词“news”、“新闻”、“资讯”等。[0226]同时,基础定义的概念id=object与由这些表生成的概念构成species种属关系。[0227]√例如概念id=object与上述例子中的概念id=user、id=news构成species种属关系。[0228]引擎将表每个字段分别作为一个概念,该字段的字段名、或指代该字段的词作为该概念的词。[0229]√例如表user的字段name,生成概念id=user.name,可有词“name”、“名称”、“名字”、“名”、“姓名”等;表user的字段sex,生成概念id=user.sex,可有词“sex”、“性别”等;例如表news的字段title,生成概念id=news.title,可有词“title”、“标题”、“正标题”等;表news的字段creator,生成概念id=news.creator,可有词“creator”、“创建者”等;[0230]同时,所属表生成的概念与由这些字段生成的概念构成attribute属性关系。[0231]√例如上述例子中的概念id=user与概念id=user.name、id=user.sex构成attribute属性关系;例如上述例子中的概念id=news与概念id=news.title构成attribute属性关系;[0232]引擎可将每个字段类型分别作为一个概念。这些概念通常都是无词概念,通过各自的概念识别器来识别词是否为与之匹配的概念。[0233]√例如文本字段类型,生成带有本体概念的无词概念id=@string,本体概念为id=string;例如数字字段类型,生成带有本体概念的无词概念id=@number,本体概念为id=number;例如时间日期字段类型,生成带有本体概念的无词概念id=@time,本体概念为id=time;[0234]同时,具有对应字段类型的字段所生成的概念与由这些字段类型生成的概念构成value值关系。[0235]√例如表user的字段name、表news的字段title类型都为文本字段类型,则概念id=user.name、id=news.title与概念id=@string构成value值关系;[0236]当然,对于一些字段它们的值带有一定的约束性或特殊性,例如字典数据,可以自定义无词概念。[0237]√例如表user的字段sex,其值是字典数据:男、女,自定义无词概念id=@sex,可以自定义该概念的概念识别器识别“男”、“女”、“男性”、“女性”等词。同时概念id=user.name与概念id=@sex构成value值关系;[0238]另外,有些字段与其它表构成的外键关系,那么由这些字段类型生成的概念与其关联的主表所生成的概念构成value值关系。[0239]√例如表news的字段创建者creator,其与表user构成外键关系,那么概念id=news.creator与概念id=user构成value值关系;[0240]1.2.2.1.2.对象数据管理技术[0241]现有主流的对象关系映射框架,例如hibernate,为面向对象的领域模型到传统关系型数据库的映射提供了一个使用方便的框架。这样的框架根据上述的生成方法将非常容易扩展实现概念生成引擎。[0242]本节讲述的对象数据管理技术也是一种java语言下的对象关系映射框架,它对jdbc进行了非常轻量级的对象封装。它把表看作对象,把表的字段看作对象的属性,通过值类型来表达属性部件、表之间的主外键以及主表-子表等关系。它使用xml格式的对象模板文件来定义对象结构,并与数据库表建立映射关系。[0243]√常用的非关系型数据库如hbase、mongodb已实现了jdbc驱动,使用jdbc就可访问这些数据库。该技术对这些非关系型数据库访问api进行了对象封装,同时针对mongodb进行了归一化处理,即集合里的文档、内嵌文档使用一致的键值对形式;[0244]对象模板文件支持中文、英文等多语言。它定义了指代该表的词,定义了属性字段名、指代该属性的词,也定义了属性的数据类型。对象模板文件可以在运行时动态被管理,例如用户可以通过数据管理界面新定义对象模板、创建或修改属性等。[0245]√例如对象模板文件department.xml。[0246]对象数据管理技术中定义的数据类型分为简单类型simple、复合类型complex、结构类型structure三种。[0247]■简单类型simple[0248]包含有字符串型string、整型integer、短整型short、双浮点数double、单浮点数float、长整型long、布尔型boolean、文本htext:string、html文本htext:html、bbcode文本htext:bbcode、xml文本htext:xml、json文本htext:json、日期型htime:date、时间型htime:timestamp、对象模板类型thing:base、整型编号类型hidentity:integer、长整型编号类型hidentity:long、字符串编号类型hidentity:string、对象类型等。其中,对象类型表示被定义的属性(字段)与当前表或其它表形成外键关系。[0249]√例如上述对象模板文件department.xml中属性上级parent为对象类型,指向当前对象表。[0250]■复合类型complex[0251]该类型表示某个属性是由多个子属性组成,例如价格可由数值和单位组成。也就是说,属性与子属性之间构成了part部件关系。[0252]√mongodb可以使用内嵌文档类型实现;[0253]√属性(字段)价格price定义,表示价格由数值和单位组成;[0254]■结构类型structure[0255]该类型表示某个属性存在多行记录,即主表-子表的关系。例如一个角色拥有多个授权的功能,那么这个授权功能functions是角色role的一个属性,且为结构类型。这类属性也由多个子属性组成,属性与子属性之间也构成attribute属性关系。[0256]√mongodb可以使用数组类型以及其元素为内嵌文档类型实现,表现为文档-内嵌文档的关系;[0257]√属性(字段)授权功能functions定义[0258]对象数据管理技术不仅实现了对象/属性定义与数据库表的映射(还包括对象属性数据类型与sql/nosql数据库数据类型的映射),还提供了面向对象的数据查询/管理机制,使得java程序员可以随心所欲的使用对象编程思维来操纵数据库。[0259]概念生成引擎可根据对象模板xml生成概念及概念连接。[0260]概念生成引擎可将每个对象模板(或称对象)分别作为一个概念,该对象的名称、或指代该对象的词作为该概念的词。同时,基础定义的概念id=object与由这些对象生成的概念构成species种属关系。[0261]引擎可将模板定义的每个属性分别作为一个概念,该属性的字段名、或指代该属性的词作为该概念的词。同时,所属对象生成的概念与由这些属性生成的概念构成attribute属性关系。[0262]引擎可将每个属性数据类型分别作为一个概念。这些概念通常都是无词概念,通过各自的概念识别器来识别词是否为与之匹配的概念。同时,具有对应数据类型的属性所生成的概念与由这些属性类型生成的概念构成value值关系。当然也可以通过配置对属性值自定义概念。针对对象类型的属性,该属性与类型中指定的对象关联,构成value值关系。针对复合类型的属性,该属性与类型中指定的成员(子属性)构成part部件关系。针对结构类型的属性,该属性与类型中指定的成员(子属性)构成attribute属性关系。[0263]√例如数据类型与概念。[0264][0265]上述示例对象模板文件department.xml生成的概念及概念。概念id=@phone、id=@fax为自定义的无词概念,它们分别用来识别电话号码、传真。[0266]1.2.2.2.程序设计语言[0267]程序设计语言(programminglanguage),是一组用来定义计算机程序的语法规则。它是一种被标准化的交流技巧,用来向计算机发出指令。一种计算机语言让程序员能够准确地定义计算机所需要使用的数据,并精确地定义在不同情况下所应当采取的行动。[0268]程序设计语言一般都可以通过语法分析器将代码转成语法树以及将语法树转成代码,如下表:[0269][0270][0271]另外,模板语言也是一种程序设计语言,它们有自己的语法规则以及模板引擎,能让计算机编译执行,甚至还可以生成其它语言。例如freemarker、velocity,它可以从模板生成html、sql、postscript、xml、rtf、java源代码等等。[0272]本文将讲述的格式化脚本语言gscript同样也是一种程序设计语言,目前版本使用java语言编写。它有双引擎,支持解释执行和编译执行。编译执行时可以将代码编译成java字节码,快速提升代码运行的效率。它也可以作为模板引擎,如同freemarker、velocity基于模板来生成文本输出。gscript语言也有语法分析器,可以将代码转换成语法树,同时也可以将语法树转成代码。gscript语言还有一个很重要的特点,就是它可以调用不同的指令函数库解析或编译执行代码生成其它程序设计语言。[0273]1.2.2.2.1.生成方法[0274]程序设计语言的实质是语法规则,那么概念生成引擎的生成方法就在于对语法规则进行分析并转换生成概念及概念连接。[0275]本文在下节着重讲述有关gscript语言的生成方法。而其它多数程序设计语言例如java、html、js、css、html、json、xml等其方法与此基本一致,不再一一详述。[0276]1.2.2.2.2.gscript语言[0277]1.2.2.2.2.1.gscript语法规则[0278]gscript语言语法由指令函数、操作符与运算函数三部分组成。[0279]■指令函数[0280]指令函数的形式为:[0281]《函数名》(《函数参数1》,《函数参数2》,……){[0282]《函数体》[0283]};[0284]函数参数:函数名后面的参数是用()包裹起来,多个参数之间用,隔开。并非所有函数都有参数。如无参数则()可省略。函数体:函数体用{}包裹起来。函数体内部则可书写多个指令函数。并非所有函数都有函数体。如无函数体则{}可省略。函数结束符:使用;作为结束符。[0285]指令函数库包括基本指令与扩展指令。基本指令函数包括代码块(script)、变量定义与赋值(var、assign)、条件控制(if、else)、循环(do、while、for)、遍历(loop、list)、循环与过程中断(break、continue、return)、函数定义与调用(function、call)、抛出与捕获异常(throw、try、catch、finally)、外部脚本加载(include)、空执行(void)、打印(print、printf、println)、调试(info、debug、trace、warn、error)、排序(sort)、标记(mark)等。而扩展指令与目标生成的程序语言相关,在使用时可动态扩展。[0286]■操作符[0287]gscript支持以下字符,以及优先级顺序如下表:[0288][0289]操作符按功用划分为算术操作符、关系运算符、逻辑操作符、位运算符、三元表达操作符、类型转换操作符、null赋值操作符、取值操作符、转义操作符、注释操作符、字符或字符串操作符、保留操作符。[0290]■运算函数[0291]运算函数主要包括数学、字符串、html、日期、数组、对象、取值、json、调试等运算函数以及扩展的运算函数。[0292]gscript语言有很多高级特性,例如类型推断、常量优化、函数参数化等等。gscript语言现版本使用java语言编写,并且和java的交互性很好,可以说是无缝连接。通过取值操作符和取值运算函数即可访问java常量、类、属性以及调用方法等。gscript语言现版本已支持以下这些计算机语言,如下表所示:[0293]已支持的计算机语言指令函数库java基本javascript基本、javascript扩展html基本、html扩展css基本、css扩展xml基本、xml扩展json基本、json扩展text基本、text扩展[0294]当然,上述这些计算机语言配合相应的语法分析器经过gscript语法分析器可以直接转换为gscript语言,从而可以间接通过gscript语言来转换生成概念及概念连接。[0295][0296]gscript语法分析器分析gscript语言成指令函数树。该指令函数树即为gscript的语法树。反之gscript语法分析器可以将指令函数树生成相应的gscript语言。因此使用gscript语言有一个很大优势:能够将不同的计算机语言生成统一的语法树,便于分析处理。[0297]1.2.2.2.2.2.java语法规则[0298]java语言是一种面向对象的程序设计语言。面向对象具有封装,继承和多态等特征。(1)封装:把对象的属性和操作结合在一起,构成一个独立的对象。同过修饰符的使用外部对象不能直接操作对象的属性,只能使用对象提供的服务。(2)继承:即扩展,子类继承父类几乎全部属性和行为,但是继承只能是单继承,一个子类只能有一个直接父类;继承是可以传递的。子类可以当作父类看。(3)多态:通过方法重载和方法重写实现。[0299]类是对象的抽象,而对象是类的实例;对象都有属性和行为两大要素,属性是对对象的静态描述。而行为则体现了对象的功能和行为。一个类的使用是通过对该类实例化来完成的。[0300]属性和行为构成了类的成员。作为类的属性,可以是基本数据类型,也可以是引用类型;方法则体现出了行为;get和set方法作为一种约定被用于提供对属性的操作。一个类可以作为另外的类一个属性,即属性可以是引用性数据。[0301]类的继承即扩展,其关键词是extends。继承准则:总是让子类执行超类可执行的所有行为;确保子类包含超类的所有信息;向子类添加成员,从而定义子类的特有行为;将共同特性迁移到超类上;允许同一超类的不能子类执行相同的行为,但实现方式不同——方法重写。[0302]接口是一群抽象行为的集合。通过接口实现了多重继承。应该这样更好的设计类,让类封装所代表对象的属性和行为。对象外部的功能可通过接口来实现。[0303]枚举是限定有限可能值的一种手段,使用枚举可以降低程序出错的几率,并可以提高代码的可读性与可维护性。java中的枚举并不是简单常量的集合,而是一个对象,其本质依然是类。[0304]1.2.2.2.2.3.概念生成引擎[0305]概念生成引擎根据gscript语法规则、java语法规则以及目标程序语言的语法规则来生成概念及概念连接。[0306]1.2.2.2.2.3.1.gscript[0307]概念生成引擎优选配置方式为gscript语言语法的指令函数、操作符与运算函数定义一系列概念以及概念连接。配置方法可以使用与基础定义相一致的技术手段。[0308]■指令函数[0309]◆基本指令[0310][0311][0312][0313]◆扩展指令[0314]●text[0315][0316]●json[0317][0318]●xml[0319][0320]●html[0321][0322][0323]●css[0324][0325]●js(javascript)[0326][0327]■操作符[0328][0329][0330]■运算函数[0331][0332][0333][0334]1.2.2.2.2.3.2.java[0335]gscript语言通过取值操作符和取值运算函数无缝与java的常量、对象等交互。同时使用var、assign指令函数定义的局部变量与全局变量也是以java对象的形式存储在存储区,通过取值操作符@@、@和取值运算函数@@、@、fromcontext取得这些变量。也可以通过插件方法访问引入的第三方jar包。[0336]优选配置与java注解来配置与定义概念及概念连接。配置方法可以使用与基础定义相一致的技术手段。而java注解则是使用了java的语言特性,使得概念及概念连接的定义在代码开发过程中即可进行。[0337]√java注解是附加在代码中的一些元信息,用于一些工具在编译、运行时进行解析和使用,起到说明、配置的功能。[0338]√例如使用包名索引表的概念配置concepts/c.o.g.p.c.i.actioncontext.json、connectivities/c.o.g.p.c.i.actioncontext.json,java注解com.onegrid.grid.platform.nlp4.impl.conceptnetwork.annotation.classconcept9、com.onegrid.grid.platform.nlp4.impl.conceptnetwork.annotation.classconceptconnectivity。[0339]概念生成引擎可将每个类分别作为一个概念,该类的类名、或指代该类的词作为该概念的词。允许多个类指向同一个概念,例如接口与它的实现类通常会表示同一个概念。[0340]√类的概念id常使用一个小技巧:使用包名索引表来缩减概念id的长度,如索引c.o.g.p.c.i来表示包名com.onegrid.grid.platform.context4。[0341]同时,基础定义的概念id=object与由这些类生成的概念构成species种属关系。[0342]√例如概念id=object与上述例子中的概念id=c.o.g.p.c.i.actioncontext、id=c.o.g.p.c.i.applicationcontext构成species种属关系;[0343]java枚举虽然本身也是类但须不同处理,其须定义两个概念。其中一个概念是带有本体概念的无词概念且是另一个概念的值,而另一个概念却是那个无词概念的本体概念。[0344]引擎针对类的每个字段(field)的引用情况不同进行分别处理:[0345]①如果字段field被配置或注解定义了概念,则此类的概念与该字段的概念构成attribute属性关系;[0346]②如果字段field的数据类型指向某个类(或java枚举),而且该类的组件类型(componenttype)是已经被定义概念的类,则此类的概念与该字段数据类型的概念构成attribute属性关系;[0347]√例如类com.onegrid.grid.platform.context4.impl.actioncontext(概念id=c.o.g.p.c.i.actioncontext)。[0348]③否则,引擎则为该字段定义一个概念,该字段的字段名、或指代该字段的词作为该概念的词,然后此类的概念与字段所生成的概念构成attribute属性关系。[0349]√例如类com.onegrid.grid.platform.core4.impl.bean.requestpage(概念id=c.o.g.p.c.i.b.requestpage)。[0350]引擎针对不同数据类型也需要进行分别处理:[0351]①类:基本的数据类型及所对应的一些对象类型。[0352]②类:集合类型,主要包括数组、实现java.lang.collection的类。[0353]③类:其它类型,含java.lang.object、java.lang.class、枚举等。[0354]引擎定义类字段(field):如果字段没有被配置或注解定义了概念连接,那么:[0355]◆如果字段为固定常量时定义一个概念,常量值、或指代该常量值的词作为该概念的词,然后字段的概念与该生成的概念构成value值关系。[0356]◆如果字段的概念id与它数据类型的概念id不一致时两者之间构成value值关系。[0357]√例如上述示例概念id=c.o.g.p.c.i.b.requestpage.uri与概念id=@string构成value值关系;例如上述示例概念id=c.o.g.p.c.i.b.requestpage.titles与概念id=map构成value值关系。[0358]引擎定义类的方法(method):如果方法没有被配置或注解定义了概念及概念连接,那么:[0359]◆如果方法名符合javabean的规范(即getter和setter方法),那无需定义。因为基础定义中常定义概念id=get、id=set与概念id=object构成sv主谓关系。[0360]◆否则,定义一个概念,该方法名、或指代该方法的词作为该概念的词,然后此类的概念与该生成的概念构成sv主谓关系。[0361]引擎定义类的继承(extends):如果父类与子类概念id不一致时,父类的概念与子类的概念之间构成species种属关系。[0362]1.2.2.2.2.3.3.html[0363]html语法主要有:html文档是由html元素定义的;html元素以开始标签起始,以结束标签终止;元素的内容是开始标签与结束标签之间的内容;某些html元素具有空内容(emptycontent);空元素在开始标签中进行关闭(以开始标签的结束而结束);html标签可以拥有属性,属性总是以名称/值对的形式出现;html文档存在外部样式,由标签link引入;html文档存在内部样式,有标签style定义;html元素存在内联样式,主要由属性style定义;html元素事件以属性形式存在,即通过事件属性使事件在浏览器中触发动作的能力。概念及概念连接的生成见上一节gscript“指令函数-扩展指令-html”。[0364]1.2.2.2.2.3.4.css[0365]css语法主要有:css规则由两个主要的部分构成:选择器,以及一条或多条声明;selector{declaration1;declaration2;...declarationn};每条声明由一个属性和一个值组成;selector{property:value};每个属性有一个值,属性和值被冒号分开;可以通过依据元素在其位置的上下文关系来定义样式;id选择器可以为标有特定id的html元素指定特定的样式,且以"#"来定义;类选择器以一个点号显示;可以为拥有指定属性的html元素设置样式,而不仅限于class和id属性。概念及概念连接的生成见前一节gscript“指令函数-扩展指令-css”。[0366]1.2.2.2.2.3.5.xml[0367]xml指可扩展标记语言,它被设计用来传输和存储数据。xml语法规则很简单且很有逻辑。xml语法主要有:xml文档必须有根元素;xml元素的标签没有被预定义,须自行定义标签;xml元素都必须有关闭标签;xml元素的标签对大小写敏感;与html元素类似,xml元素也可拥有属性(名称/值的对);xml元素的属性值须加引号。概念及概念连接的生成见前一节gscriptꢀ“指令函数-扩展指令-xml”。[0368]1.2.2.2.2.3.6.json[0369]json:javascript对象表示法(javascriptobjectnotation)。json是存储和交换文本信息的语法。类似xml。json比xml更小、更快,更易解析。json语法是javascript语法的子集。json语法主要有:json名称/值对:名称/值对包括字段名称(在双引号中),后面写一个冒号,然后是值;json值可以是:数字(整数或浮点数)、字符串(在双引号中)、逻辑值(true或false)、数组(在方括号中)、对象(在花括号中)、null;json对象在花括号中书写,且包含多个名称/值对;json数组在方括号中书写,且可包含多个对象。概念及概念连接的生成见前一节gscript“指令函数-扩展指令-json”。[0370]1.2.2.2.2.3.7.js(javascript)[0371]gscript语言通过取值操作符和取值运算函数无缝与javascript的浏览器对象、函数等交互。同时也使用var、assign指令函数与javascript的变量定义var映射;使用function指令函数与javascript的函数定义function映射;通过取值操作符@和取值运算函数@、fromcontext与javascript的变量获取映射,等等。[0372]√例如执行gscriptjs(javascript)代码生成javascript代码。[0373]gscript语言可以通过配置将浏览器、外部脚本例如jquery框架等内置的对象、函数引入到gscript内,使得在gscript内部可以访问到这些对象、函数。[0374]√例如默认的gscript配置。[0375]javascript是一种轻量级的编程语言,可由所有的现代浏览器执行。javascript跟java一样,也有变量、数据类型、对象、函数、运算符、比较和逻辑运算符、if...else条件、switch、for、while、return、break和continue、throw、try、catch等。同时javascript对象也拥有属性和方法,属性是与对象相关的值,而方法是能够在对象上执行的动作。。[0376]部分概念及概念连接的生成见前一节gscript“指令函数-扩展指令-js(javascript)”、“运算函数-扩展运算函数-js(javascript)”。[0377]1.2.2.3.语义网络/词典/知识库[0378]现在主流的语义网络/词典/知识库主要有:conceptnet、framenet、wordnet、hownet等。本文所述的概念网络也是一种语义网络,因此在技术上是可以实现与现有主流的语义网络/词典/知识库相互转换。[0379]1.2.3.扩展定义[0380]通过上述方法生成概念及概念连接可能会存在一定的不足,或者说在一定程度上可能会无法满足语义分析推理的需要,因此可以进行进一步扩展定义。在实现的技术手段上可以选用与基础定义一样的技术手段。[0381]另外借助词典如《同义词反义词词典》、word2vec工具等等可以帮助扩充概念词及概念间的相关关系。[0382]√《同义词反义词词典》是华东师范大学出版社出版的图书。共收入同义词、反义词词目1200余组。[0383]√word2vec是一个将单词转换成向量形式的工具。可以把对文本内容的处理简化为向量空间中的向量运算,计算出向量空间上的相似度,来表示文本语义上的相似度。[0384]1.2.4.动态形成[0385]例如概念连接的“动态形成”章节所述,在自然语言理解过程中动态为概念之间形成连接即关系。因此可以将这些概念连接动态加入到概念网络中。通常加入到概念网络中的概念连接其特征都只有一个肯定,其目的在于:概念网络中概念连接不仅满足自然语言理解的需要,而且还可以适用于不同语境。[0386]√例如语句“我没有包”表达了我me跟包bag之间形成了attribute(属性宿主与领属)的连接,但此连接在当前语境下特征为否定。但加入到概念网络中的连接其特征却是肯定。[0387]例如自然语言理解过程中人为的操作,为概念添加词、增加概念连接等。[0388]这取决于实际的应用情况。[0389]1.2.5.词向量[0390]词向量就是用来将语言中的词进行数学化的一种方式,顾名思义,词向量就是把一个词表示成一个向量。主要有两种表示方式:[0391]√one-hotrepresentation。创建一个词表库并把每个词顺序编号。在实际应用中,一般采用稀疏编码存储,主要采用词的编号。这种表示方法一个最大的问题是无法捕捉词与词之间的相似度,就算是近义词也无法从词向量中看出任何关系。此外这种表示方法还容易发生维数灾难,尤其是在deeplearning相关的一些应用中。[0392]√distributedrepresentation。其基本思想是通过训练将每个词映射成k维实数向量(k一般为模型中的超参数),通过词之间的距离(比如cosine相似度、欧氏距离等)来判断它们之间的语义相似度。word2vec使用的就是这种词向量表示方式。[0393]传统上自然语言处理(nlp)系统把词编码成字符串。这种方式是随意确定的,且对于获取词之间可能存在的关系并没有提供有用的信息。词向量是nlp领域的一个替代方案。它把词或短语映射成实数向量,把特征从词汇表大小的高维度空间降低到一个相对低的维度空间。目前最流行的词向量模型是由mikolov等人在2013年提出的word2vec。[0394]主要有两种方式可以跟词向量结合在一起。[0395]■与概念直接或间接对应的词使用词向量替代。人为无法为概念对应全部且都准确的词,而通过词向量捕捉词与词的相似度,有助于为概念扩充词,或者为概念间建立相关关系。[0396]■概念id直接使用词向量。[0397]2.1.自然语言理解实现过程[0398]2.1.1.切分句[0399]■篇章/段落[0400]一个篇章通常由一个或多个段落组成。段落则是句子的集合体。习惯上称“自然段”,具有换行另起的标志。[0401]■自然语言对话[0402]即计算机和人通过人类的语言(自然语言)进行交互。可以将自然语言对话分成单轮对话和多轮对话,其中单轮对话是基础。用户通过自然语言例如英文、中文,与对话系统进行单轮/多轮交谈,系统则帮助用户完成任务。[0403]不论是篇章/段落还是单轮/多轮对话,句子是最基本的语言运用单位,因此切分句子是非常必要的一步。实现句子切分的方法主要有两种:[0404]■基于符号规则。例如英文、中文,都有明确的分句符号,只是还需要考虑某些词可能会包含这些符号。[0405]√例如英文句子结束的标点符号是“.!?;”,中文句子结束的标点符号是“。!?…!?”。英文成对的符号“()""””,中文成对的符号"《》“”‘’{}()()【】\"\""可以构成分句,其间包含的句子结束符号应被忽略。英文缩写中的点号不作为句子的结束标记。英文中还应对小数识别,如果点号左右紧接着数字,则该点号为小数点;如果点号左右为非数字字符,则该点号为句子结束标点或者缩写中的点号。[0406]√开源项目apacheopennlp、stanfordnlp等都提供了分句工具。[0407]■基于训练/识别。例如apacheopennlpsentencedetector,它能检测到一个句子中的标点符号是否标记着句子的末尾。[0408]当然如果明确自然语句为单句的话,就表示无需进一步进行切分自然语句,则可跳过切分句这一步。[0409]2.1.2.切分概念词[0410]切分概念词主要由切分词、词性标注、概念识别三环节组成。[0411]2.1.2.1.切分词[0412]以英文为代表的拉丁语系语言,词之间以空格作为天然的分割符。而汉语则以字为基本书写单位,词之间没有明显的标记,并且词比“单字”表义能力更强。因此中文分词是中文信息处理的基础与关键。[0413]中文分词的方法已经有很多,例如正向最小匹配、逆向最小匹配、正向最大匹配、逆向最大匹配、最少切分等基于词库(或词典)的分词方法,基于隐马尔科夫模型hmm、二元语法、条件随机场crf、双向lstm的seq2seq等基于统计的分词方法。但是仍然存在歧义识别、新词识别等分词技术难点。[0414]本文讲述的切分词是可以选择基于字的序列标注模型、基于词的n元语法模型、基于词库等其中一种方法或多种方法组合。基于词的n元语法模型的分词方法对词典词的处理具有较好的性能,而基于字的序列标注模型的分词方法对词典中未登录词具有较好的鲁棒性。多种方法组合的切分词过程如下:[0415]1)将概念网络中概念直接或间接相对应的词动态加入到词典。如果是带有关系成分的词或组合词,则忽略关系成分取出词再加入到词典;[0416]√例如概念id=create,其可有"定义"、"创建"、"新建"、"建立"、"构建"、"搭建"、"构造"、"初始"、"建造"、"建"、"造"等词相对应,将这些词动态加入到词典;例如词概念id=selt,可有带有关系成分的词“{0}或者{1}”。则将“或者”词动态加入到词典;例如概念id=eban,可有组合词“宁可{1}也不{2}”,则将“宁可”、“也不”词动态加入到词典;[0417]2)利用最大熵隐马尔科夫模型、条件随机场crf、双向lstm的seq2seq等基于字的序列标注模型分词方法对句子分词。这个分词结果可以作为最终的分词结果;[0418]√已有很多分词器实现,例如:[0419][0420]3)基于词典的全切分方法对句子分词;[0421]√例如:[0422][0423]4)将上述两种方法切分出来的词合并,合并时对相同位置且相同的词只保留其中一个;[0424]5)再利用二元模型(bigram)、最短距离(最少词数)、逆向最大匹配、正向最大匹配、逆向最小匹配、正向最小匹配等算法消除歧义,取得最终的分词结果。[0425]6)不同的算法可能会产生不同的分词结果。因此可以对这些算法分别设定优先级,然后对这些算法按优先级高低进行遍历,过程是:[0426]1)首先使用优先级高的算法进行切分出分词结果;[0427]2)然后将该分词结果进行后续的语义理解处理,如果处理成功则结束,否则在没有遍历过的算法中选择优先级高的算法再进行切分出分词结果。如果该分词结果已经被处理过,则继续选择下一个优先级高的算法,否则重复第ii步;[0428]3)直至语义理解处理成功,或算法全部被遍历;[0429]2.1.2.2.词性标注[0430]词性是用来描述一个词在上下文中的作用,而词性标注就是识别这些词的词性,以确定其在上下文中的作用。一般情况下,词性标注是建立在分词基础上,为分词结果中的每个词标注一个正确的词性,也即确定每个词是名词、动词、形容词或其他词性的过程。[0431]概念网络中与概念直接或间接相对应的词是可以指定词性,但如果并没有存在特定词性的词,则可以跳过词性标注这一步,否则的话词性标注对后续的概念识别环节会起到关键的作用。[0432]词性标注方法也有很多,大多都是基于统计模型,例如隐马尔科夫模型hmm。[0433]√已有很多词性标注器实现,例如:[0434][0435]2.1.2.3.概念识别[0436]基于概念网络为分词结果中的每个词识别出概念。一个词可以对应一个或多个词概念或无词概念。而那些没有被识别出任何概念的词则标记为未知词概念。因此这个分词结果可被称为概念词序列。[0437]对于词概念,匹配词来识别。如果是带有关系成分的词或组合词,则忽略成分取出词再进行匹配。通常还会为识别出的组合词概念标记出与其关联的词在句子中所在的位置。[0438]√例如表news,生成词概念id=news,可有词“news”、“新闻”、“资讯”等,语句“最近有哪些新闻?”中的词“新闻”即对应此概念;例如词概念id=selt,可有带有关系成分的词“{0}或者{1}”,语句“苹果或者西瓜”中的词“或者”即对应此概念;例如词概念id=eban,可有组合词“宁可{1}也不{2}”,语句“我宁可累死也不劳烦你”中的词“宁可”、“也不”即对应此概念。同时,“宁可”标记其关联“也不”在句子中所在的位置是5,“也不”标记其关联“宁可”在句子中所在的位置是1。[0439]对于无词概念,通过其概念识别器来识别。识别出的概念通常也包含实现该概念定义(def)的转换器。[0440]√例如无词概念id=@time,用于指时间、日期,例如词“20150712”、“明天”、“前些天”、“某一天”。该概念的本体概念是词概念id=time。词概念id=time的对应词则可以是“时间”、“日期”。语句“明天日期是20150712”,借助该概念的概念识别器即可识别出词“明天”、“20150712”对应到该概念。当然也可识别出词“日期”对应概念id=time。[0441]2.1.3.概念定义(def)依存分析[0442]本文讲述的概念定义(def)依存分析主要使用以下几种方法实现:[0443](1)基于arc-standard转移动作和分类器的依存句法分析,同时在分析过程中动作转移时进行概念定义(def)分析;[0444](2)基于现有的预训练语言表征模型例如bert直接训练出依存结构树,然后通过此依存结构树进行概念定义(def)分析。[0445]2.1.3.1.基于arc-standard转移动作和分类器的依存句法分析[0446]依存句法分析就是利用句子中词与词之间的依存关系来表示词语的句法结构如主谓、动宾、定中等结构关系,为实现对自然语言的精准理解提供基础。[0447]主流依存句法分析方法分为基于图(graph-based)和基于转移(transition-based)两类:基于图的方法将依存句法分析看成从完全有向图中寻找最大生成树的问题,图中的边表示两个词之间存在某种句法关系的可能性;基于转移的方法通过一系列移进、规约等转移动作构建一棵依存句法树,学习的目标是寻找最优动作序列。与基于图的方法相比,基于转移的方法算法复杂度更低,因此具有更高的分析效率,同时由于能采用更丰富的特征,其分析准确率也与基于图的方法相当。而且近年来很多深度学习技术不断应用于基于转移的方法。[0448]本文讲述的就是基于分类器和arc-standard转移动作的依存句法分析方法,但不同的是在分析过程中动作转移时进行概念定义(def)分析。[0449]2.1.3.1.1.基于arc-standard转移动作[0450]基于转移的依存句法分析法使用一系列由初始到终止的状态(state)表示句法分析的过程,一个状态由栈(stack)、缓存(buffer)以及部分已分析好的依存弧构成,其中栈用于存储已经过分析的词,缓存表示待分析的词。[0451]初始状态下,栈中仅含有一个根节点(root),缓存中存储句子中全部的词。一个状态经过一个转移动作(action)变为一个新的状态,转移动作共有移进(shift)、左归约(left-reduce)、右归约(right-reduce)三种。其中移进动作将缓存中第一个词压入栈中;左归约在栈顶的两个词之间产生一条左指向依存弧,同时将栈顶第二个词下栈;右归约在栈顶的两个词之间产生一条右指向依存弧,同时将栈顶词下栈。[0452]经过一系列转移动作,最终能够达到终止状态,即栈中仅含有一个根节点,缓存为空,此时恰好构成一颗完整的依存树,并完成对一个句子的依存句法分析过程。[0453]已有很多开源项目实现基于转移的依存句法分析,例如上述表格提及的standardnlp、syntaxnet、哈工大ltp。[0454]2.1.3.1.2.基于分类器[0455]基于转移的依存句法分析还要有一个分类器来实现,其输入是一个状态,输出则为该状态下最可能的动作。传统的分类器需要人工定义一系列特征及各种组合特征模板,极其繁琐,又需要丰富的句法分析领域知识,而且准确率又不高。[0456]基于神经网络的分类器就完全不同,它只需要将一些零散的原始特征直接作为传入神经网络模型中。至于特征是如何组合的,不再由人工编写的特征模板决定,而是由神经网络模型的隐藏层自动提取。[0457]√例如google开源神经网络syntaxnet。谷歌研究人员随机抽取英文新闻专线的句子(来源penntreebank)作为一个标准的基准,parseymcparseface重新获取句子语词之间的依存关系,正确率达94%。[0458]√例如哈工大ltp。nndepparser是ltp神经网络依存句法分析模型的训练套件,用户可以使用nndepparser训练获得ltp的依存句法分析模型。nndepparser分别支持从人工标注依存句法的数据中训练依存句法分析模型和调用依存句法分析模型对句子进行依存句法分析。[0459]2.1.3.1.3.概念网络转移动作补偿[0460]尽管使用神经网络具有很高的准确性,但句法分析仍然非常困难,主要的问题在于人类语言具有显著的歧义性。包含20到30个单词的中等长度的句子会具有数百、数千甚至数万种可能的句法结构,这样的情况并不少见。一个自然语言句法分析器必须能够搜索所有这些结构选择,并找到给定语境下最合理的那个结构。[0461]本文还提出可以在依存句法分析过程中引入概念网络转移动作补偿方法。该方法思路就是在基于转移的依存句法分析过程中补入常识,使得在一定的语境下能找到最合理的句法依存。过程如下:[0462]1)将概念网络中概念连接转换为概念间可能的转移动作;[0463]√转换方法示例如下:[0464][0465]■value值关系。该关系的左侧概念自动与关系动作词概念形成sv主谓关系,而关系动作词概念则与该关系的右侧概念自动形成vo谓宾关系。因此参考上面的表格,该关系的左侧概念与关系动作词概念之间依照sv主谓关系转换为两概念间可能的转移动作,同时关系动作词概念与该关系的右侧概念之间依照vo谓宾关系转换为两概念间可能的转移动作;[0466]■多层的概念连接,即生成跨概念间可能的转移动作。例如两层概念连接attribute-value。[0467][0468]■species种属关系。该关系的右侧概念是左侧概念的下位(或为子类),具有继承左侧概念关系的特性。因此该关系的右侧概念也继承与左侧概念相关的转移动作。[0469]2)概念词序列(即经过概念识别后的分词结果)在转移动作之前预先判定每个词与之后的词可能会构成的转移动作。[0470]√例如:[0471][0472]3)在转移动作时首先用分类器判定该状态下最可能的动作,然后根据该动作在概念间可能的转移动作中判定是否有存在其它可能的新的转移动作,如果有则复制当前状态新建子线程用于处理新的动作转移,具体思路是:[0473][0474][0475]■处理完毕后标记栈顶词,以避免被重复处理。如果栈顶词已经处理过了,则不再在概念间可能的转移动作中重复判断了;[0476]■新线程与原线程之间独立工作即各自状态独立,使用线程的目的在于通过并行处理来提高分析性能;[0477]■设定新线程该状态下的动作获得的分值等同于分类器判定的最可能动作的分值。[0478]4)经过一系列转移动作后就会产生很多个线程,而且每个线程也都经过一系列转移动作后达到终止状态,即原线程与每个新线程它们的栈中都只含有一个根节点,缓存为空。[0479]■每个线程包括原线程,在转移动作的过程中是可以被提早判断无效而被强制结束,从而有助于句法分析的结果收敛;[0480]5)此时可能会产生很多的句法分析结果即依存树,可以通过算法从中获取最优结果;[0481]■算法示例:[0482]对每一次左右归约的动作转移进行统计,统计内容为动作获得的分值(即分类器判定的最可能动作的分值)、依存弧间的距离、是否命中概念间转移动作。假设动作获得的分值最大(经过sigmoid函数拟合后的值在0-1范围内,值越接近1越好)、依存弧间的距离最小(用1除以距离后的值也在0-1范围内,值越接近1越好)、命中概念间转移动作(命中则值为1,否则值为0)为最佳,则计算向量空间中由这些分值构成的向量与长度相等且值都为1的向量之间的余弦相似度,余弦值越接近于1,表示结果越好。[0483]2.1.3.2.基于预训练语言表征模型例如bert等进行从概念词序列到依存结构树的模型训练[0484]现有主流的预训练语言表征模型例如bert已在在多个自然语言理解任务中取得了重大突破。运用这些预训练模型可以训练从概念词序列到依存结构树的模型。通过该模型可以实现从概念词序列输出依存结构树,然后再通过输出的依存结构树进行概念定义(def)分析。[0485]依存结构树表达了句子中单词之间的相互依存关系。依存结构树中子节点依存于父节点,例如句子"我的猫喜欢吃猫粮",对应的依存结构树是:"我的"依存于"猫","猫粮"依存于"吃","猫"与"吃"则都依存于"喜欢"。[0486]句子中某些字或单词可以与其它词没有任何依存关系,因为口语表述中经常存在某些字或词没有任何语义,这些词在下述def分析过程中可能会被忽略。[0487]句子中可以并行存在多个依存结构树。当存在多个依存结构树时可以使用其中一个依存结构树的根为中心,其它依存结构树的根则依存于作为中心的根。例如句子"我想你我爱你","我想你"、"我爱你"分别是两个依存结构树,"我想你"的"想"为中心,"我爱你"的"爱"依存于"想"。因此,也可以充分有效运用三元组关系处理的方法。[0488]2.1.3.3.概念定义(def)分析[0489]2.1.3.3.1.概念定义(def)定义[0490]概念定义(def)是指概念的具体定义或实现,也可称为概念实例。它与知网hownet所述知识词典中的def完全不同。[0491]概念定义(def)由def转换器来定义,而def转换器则在概念网络中配置与定义。def转换器根据一个概念来生成一个def,多个概念则生成多个def。[0492]def可以划分为简单def、复合def两类。简单def包括一般def、带有附加的def、带有附加与限定的def三种,复合def主要包括连接与介引def、主谓宾def两种。[0493]按如下分类进行定义def:[0494]■简单def[0495]一般def是最基础的,是不带有任何附加与限定def的,生成的def可以不支持合并其它任何def。带有附加的def,指带有一系列左附加、右附加、标点符号附加的def,生成的def应当支持合并其它def,并且合并时标记为附加。带有附加与限定的def,指除了带有上述附加外,还带有一系列限定,生成的def也应当支持合并其它def,并且合并时标记是附加还是限定。[0496]语言表达是任意的,因此通常生成的def都是可以支持合并其它def。只是对于一般def,忽略合并这个过程即可。[0497]概念在生成def时,如果是带有附加的def,则待def生成完毕后将附加的def合并到该def上,且标记被合并的def是附加;如果是带有附加与限定的def,则待def生成完毕后将附加与限定的def都合并到该def上,且标记被合并的def是附加还是限定。[0498]■主谓宾def[0499]主谓宾def,包含主语、动作、宾语、兼语或宾补以及一系列补充def,生成的def通常表达了动作、行为或方法。该def应该支持合并该主语def、宾语def、兼语或宾补def,以及支持合并一系列补充def。[0500]■连接与介引def[0501]连接与介引def,包含连接或介引的开始def,以及一系列连接或介引的结束def,根据作用的不同需分别处理。[0502]◆表连接[0503]表达连接前后两个def的,生成的def通常为组合grouping。该def应支持合并开始与一系列结束def的def,同时开始与每个结束之间有组合类型。而这组合类型依赖于语义。[0504]◆表介引[0505]表达引出前面或后面的def,该def的开始def常为用于引出的介词,而结束def则为引出部分的中心词。生成的def就是开始def生成的def。该def应当支持合并一系列结束def的def,同时与每个结束之间有介引类型。而这介引类型也依赖于语义。[0506]通常可以通过用于连接与介引的概念来判断该def的作用。如果def的开始def是这些概念之一的,则判断为表介引,否则为表连接。如果为表介引的则该概念的语义即为介引类型。如果为表连接的,则再进一步判断依存于开始def的或者结束def的是否存有这些概念之一,如果有则该概念的语义即为组合类型。[0507]√常用于连接与介引的概念有:[0508][0509]综上所述,概念网络中配置与定义def转换器有一个通用的方法,在于:[0510]def转换器通常生成支持合并附加与限定的def;[0511]对于sv主谓关系的右侧概念、vo谓宾关系的左侧概念,它们的def转换器应能生成表达动作、行为或方法的def;[0512]对于能用于连接与介引的概念,它们的def转换器应能生成可以标示为连接与介引的def,并且也标示出表连接的组合类型与表介引的介引类型。表介引的def则还应支持合并一系列引出def的def。[0513]概念定义(def)的必要依存与可选依存条件。如果语言表达不完整,则将无法理解表达的意思。同样有些def要求必须存在与之相依存的def,这些def称为必要依存条件。反之没有这些与之相依存的def,也能理解其表达的意图,那么这些def就称为可选依存条件。[0514]主要有以下两种方法来定义def的必要依存与可选依存条件:[0515]■通过概念直接或间接相对应的带有关系def的词。带有的关系def约定了该概念定义(def)的必要条件。如果缺失这部分def,语义上将会不完整;[0516]√例如概念id=caru,可有带有def的词“因{1}”,其中{1}就是该概念的必要依存def。语句“因他生病了”,“因”的右侧“他生病了”为该概念的关系def,表示原因。语句“因”,缺失必要的关系def,致使语义表达不完整。[0517]■通过def转换器来生成带有必要依存与可选依存条件的def;[0518]上述def的必要依存与可选依存条件,是def生成时候就被定义的,称为基本的必要依存与可选依存条件。还有一种有限制的必要依存与可选依存条件,其与语句本身相关,也称为动态的必要依存与可选依存条件。[0519]√例如概念id=var,可有词“变量”。其本身没有设定必要依存与可选依存条件。①语句“创建变量”表达的语义不完整,②语句“创建名称是c的变量”表达的语义完整,③语句“创建名称是c且值为100的变量”表达的语义更加完整。“创建”会生成一个表达动作创建的def,而“变量”生成的def会合并到该def上(即为宾语def)。因此“名称是c”是该def的必要依存def,而“值为100”是可选依存def。[0520]当然,有时必要依存与可选依存def已经在上文语句中表达,可以满足当前必要依存与可选依存条件。因此实际分析过程中需要结合上下文会话来分析。[0521]主要有以下两种方法来定义动态的必要依存与可选依存条件:[0522]■通过def转换器来生成可以在合并过程中定义这些条件的def。当然也可以通过配置等技术手段来实现合并过程中的定义;[0523]√上述示例中“创建”的def,当在合并“变量”的def时设定“变量”的def的限定def应包含name←→be←→@var.name,而value←→be←→@var.value则是可选的限定def;[0524]■概念定义(def)运行过程中判定是否缺失必要的依存def。[0525]在语句理解过程中def缺失其必要依存def,不代表该句法分析是无效的,它可以通过下文或多轮对话来补充所需的必要依存def。[0526]√上述示例中①语句“创建变量”,虽然单轮语义表达不清,但通过下轮语句如“变量名称是c”补充了所需的必要依存def,使得语义理解完整。[0527]必要依存与可选依存条件配置与定义通常应用在主谓宾def的def合并过程中。本文选用xml格式的配置文件进行配置与定义。[0528]示例中配置文件中定义了多个条件。条件元素属性verb表示动作,object表示宾语,subject表示主语,double表示兼语或宾补,if-constrainted表示条件是否在作为限定def时候适用。另外条件属性或元素require-*表示必要的def。元素spec则表示限定def,元素item则表示其中一项。[0529]2.1.3.3.2.def分析过程[0530]概念定义(def)的分析过程主要就是def间合并的过程。分析过程主要包含有概念连接分析、依存条件分析、上下文分析等。[0531]依存结构树中子节点与父节点之间的依存关系可以使用转移动作相同的思路来处理。左边的子节点依存于右边的父节点,可以认为是左归约(left-reduce);右边的子节点依存于左边的父节点,可以认为是右归约(right-reduce)。[0532]在动作转移的同时进行概念定义(def)分析。一个状态含有def栈(compositionstack)。def栈则用于存储已定义的def。当经过一系列转移动作后最后的终止状态其def栈中只会含有一个def。分析过程:[0533]■转移动作是移进(shift)时会把缓存中第一个词压入栈中,与此同时为这个词生成一个一般def,并将这个def压入到def栈中;[0534]■转移动作是左归约(left-reduce)时def栈顶第二个def依存于def栈顶def,且下栈。转移动作是右归约(right-reduce)时def栈顶def依存于def栈顶第二个def,且下栈。[0535][0536]■def之间依存取决于依存关系。def在依存过程中会转换为其它类型的def。[0537][0538][0539]■在def分析过程中是可以判定def依存是否有效。当被判定为无效时,也就表示当前转移动作无效,从而使得当前句法分析的线程(包括原线程)被提早判断无效而被强制结束。例如根据依存关系的五条公理,一个def只能依存于一个。因此如果一个def被依存于多个def,则可判定def依存无效,并且当前句法分析的线程(包括原线程)也被提早判断无效而被强制结束。[0540]√在20世纪70年代,robinson提出依存语法中关于依存关系的四条公理,在处理中文信息的研究中,中国学者提出了依存关系的第五条公理:一个句子中只有一个成分是独立的;其它成分直接依存于某一成分;任何一个成分都不能依存与两个或两个以上的成分;如果a成分直接依存于b成分,而c成分在句中位于a和b之间,那么c或者直接依存于b,或者直接依存于a和b之间的某一成分;中心成分左右两面的其它成分相互不发生关系。[0541]■def在转移动作是移进(shift)时根据词来生成,因此:[0542]■当词对应一个或多个词概念时,根据词概念的def转换器定义一个或多个def;[0543]■当词对应一个或多个无词概念时,由其概念识别器识别出的概念所含的def转换器定义一个或多个def;[0544]■当词标记为未知词概念时,则该def不存在,在分析过程中将被忽略。[0545]可见一个def可能会不存在,也可能只有一个,但也有可能是多个。多个def也就表达了语言的歧义性,而不存在def也就表示无法理解当前语句。[0546]在分析过程中def并不是一成不变的,可能从一个变成了零个(即不存在),也可能从多个变成了一个甚至也变成了零个,这取决于在上下文会话作用下的依存分析。[0547]2.1.3.3.2.1.概念连接分析[0548]根据转移动作是否为概念间可能的转移动作,分以下两种情况进行分析。[0549]■如果转移动作是概念间可能的转移动作,则中心词与依存词就只需要在词对应的概念中选定隶属于或等于该动作两边概念即可。[0550]同时依存词是依存于该词的依存词的中心词。那么一种情况是依存词与依存词的依存词之间选定概念,另一种情况是依存词与它的中心词之间选定概念,所以依存词应仅选定两种情况重合的概念。[0551]◆如果依存词不存在重合的概念,那么就可以认定def依存是无效的;[0552]◆如果依存词存在不被重合的概念,则将这些不重合的概念从已选定的概念中移除,并且往上处理它的中心词、往下处理它的依存词。从这些词已选定的概念中移除与这些不重合的概念相连的概念。然后再以这些词为中心往上往下处理。同样的道理,如果这些词不存在重合的概念,那么也可以认定def依据是无效的。[0553]■如果转移动作不是概念间可能的转移动作,除非能将概念网络中概念连接全部都转换为概念间可能的转移动作则就可以跳过这一步,否则就需要从概念网络中判断依存词与它的中心词、依存词与它的依存词是否存在合理的概念连接,从而为这些词选定概念。[0554]◆如果词被标定为未知词概念,则应视为合理;[0555]◆如果词的概念是可以跟其它任何概念相连接,但在概念网络中并不反映出来,则应视为合理;[0556]◆如果是在连贯的多层概念连接内则应视为合理。包含species种属关系的上下文(或父子)继承推导;[0557]√例如概念连接thing←species→object←species→var表达了thing←→var之间species种属关系,因此可以从概念连接thing←attribute→quantity←value→@quantity中推导出@quantity←→var的概念连接合理。[0558]√此方法也可用于判断超过两个以上的概念之间连接的合理性。[0559]◆把概念网络当作图,则概念为图的节点,概念连接为图的路,那么可以把这个问题看成图两点寻路问题,因此可以选择最短路径、深度优先遍历等图论算法实现;[0560]◆如果推导出词之间不存在合理的概念连接,则还应视实际的应用场景判断:[0561]如果应用在特定领域和场景,一般来讲应判定该def依存是无效的;如果应用在通用领域例如聊天,则需要考虑到语言的任意性、表达的随意性,因此这样的概念连接可能是合理的。[0562]上述两种情况分析了两概念间连接合理性的情形。然而除了一般def外其它def都涉及多个概念间的连接合理性。主要考虑带有限定的def、主谓宾def。[0563]■带有限定的def[0564]◆优先判定限定def内部的连接合理性;[0565]◆如果限定def是主谓宾def,则判断该限定def的概念是否为关系动作词概念,①如果是则进一步判断宾语是否缺失,a如果是则可判定不合理,b否则判断主语或宾语def与当前def的连接合理性;②如果不是则需进一步判断该限定def的内部是否缺失主语或宾语def,a如果两者都缺失或都未缺失则判断该限定def与当前def的连接合理性,b如果缺失其一则判断与未缺失的一起三者之间的连接合理性;[0566]◆如果限定def为连接或介引def,则①如果该限定def的作用表连接,则判断该限定def的开始def与一系列结束def各自与当前def的连接合理性;②如果该限定def的作用表介引,则判断依附于该限定def的开始def与一系列结束def的def各自与当前def的连接合理性;[0567]◆如果限定def为其它def,则判断限定def与当前def两者之间的连接合理性。[0568]■主谓宾def[0569]◆如果主谓宾def中存在兼语或宾补def,则在英文下考虑主语-谓语-概念id=*action、宾语-宾补的连接合理性,在中文下考虑主语-谓语-概念id=*action、兼语-宾语的连接合理性;[0570]◆如果主谓宾def中不存在兼语或宾补def,则考虑主语-谓语-宾语的连接合理性。[0571]√例如上述示例中的中文语句“创建一个名称是a的变量”:[0572][0573][0574]2.1.3.5.2.2.依存条件分析[0575]分析概念定义(def)的必要依存与可选依存条件。本文所述的xml格式的配置文件进行配置与定义了这些条件。因此可以很容易判断语句是否满足了这些条件。[0576]√例如上述示例中的中文语句“创建一个名称是a的变量”:[0577][0578]如果必要依存与可选依存条件没有满足,则在上下文分析会话中记录,以便于使用自然语言生成技术将缺失的这些条件告诉用户,并能够在下轮语句中接收匹配这些条件的def。[0579]2.1.3.5.2.3.上下文分析[0580]上下文会话中使用“先进后出”队列存储有效的概念定义def。队列数量可以设定上限,当超过上限时最先进入队列的会被移除。[0581]当队列中最后进入的是待合并的def时,则将该def从队列中移除并合并到当前正在分析的def。待合并的def通常为表介引的def,在def运行中被推入到队列中。[0582]当队列中存在待匹配的依存条件时,当前正在分析的def需要判断是否满足这些依存条件,如果满足则①将def叠加到这些依存条件所属的def上,当队列中的def因它所有待匹配的必要依存条件全被满足时即可运行该def;②当前def不再推入到队列,同时被叠加的def移至最前;③如果当前def存在待匹配的依存条件时被叠加的def将继承这些条件。[0583]判断是否满足的依据:先将当前def当作被判断def的待匹配依存条件所指的def,然后根据上节依存条件分析进行判断是否满足。叠加指作为被匹配依存条件所指的def。[0584]√例如:[0585][0586]2.1.4.概念定义(def)运行[0587]概念定义(def)是概念的具体定义或实现,是程序运行过程中产生的对象,因此可以直接运行处理。[0588]概念定义(def)在不同的应用场景下需要进行不同的处理方法。[0589]本文在这里主要阐述基于def运行的一种处理方法,该方法能够准确的生成与操纵ui界面、数据、程序设计语言代码以及生成回复def。[0590]经过概念定义(def)依存分析可能会有多个有效的概念定义(def),但并不是所有的def运行结果都能成功。这些def在运行时上下文运行会话都是独立的,互不干扰。多个def的运行结果有可能是一致的,但也有可能不同,这恰恰说明了语言的歧义性。如果所有def的运行结果都失败,那也就表示语句在当前会话下无法理解,所以还需要考虑通过下文或多轮对话方式来补充理解。[0591]√例如两个语句“创建一个名称是a的变量”、“创建两个名称是a的变量”,虽然它们的分析结论上下一致但运行结论却大不相同。def分析结论是-,是指假设概念@quantity←→name之间的连接是合理的情况下。[0592]def运行的前提条件:[0593]■是有效的,并且它所有的必要依存条件都被满足;[0594]■已实现在上下文运行会话下的运行方法;[0595]2.1.4.1.gscriptgtl[0596]本文在这里阐述基于def运行的一种新处理方法,该方法能够准确的生成与操纵ui界面、数据、程序设计语言代码或者生成回复def。该方法是基于gscript语言的gtl模板引擎技术。该技术能够解析或编译执行gtl文本文件生成gscript语言代码,然后再通过gscript引擎根据gtl文本文件类型调用不同的指令函数库解析或编译执行代码生成其它程序设计语言。而这些生成的程序设计语言能够被其相应的执行器或工具所执行,例如html语言能被浏览器所执行。[0597]基于gscript语言的gtl模板引擎技术实现def运行。[0598]在上下文运行会话中通常设定运行模式。这些运行模式包括人机交互模式(hci)、开发模式(dev)、混合模式(dev hci)等。[0599]本文主要讲述人机交互模式、开发模式两种模式。人机交互模式又根据有无ui界面划分为ui、noui两个子模式。ui子模式常用于计算机、手机等有屏幕的设备,noui子模式常用于智能音箱等无屏幕的设备。开发模式又根据gscript语言可支持的计算机语言划分子模式。gscript语言现版本已支持:java、js(javascript)、html、css、xml、json、text。gtl模板引擎在不同的运行模式下调用不同格式的gtl文本文件来执行。[0600]√人机交互模式、开发模式与gtl文本文件格式对应如下:[0601][0602]√gtl模板引擎支持《%!%》标签语法。使用该标签语法,就可以引入其它gtl文本文件,甚至嵌套引入,从而解决一个关键的现实问题:“因多个运行模式与子模式的存在,会致使开发gtl文本文件的工作量大幅度增加,然而这些工作量很多都是重复的”,大幅度减少开发的工作量。[0603]gtl模板引擎可按照下面方法来选定gtl文本文件执行。[0604]■如果def已经被指定了gtl文本文件,则选择该文件执行;[0605]■否则按如下处理:[0606]◆表达动作、行为或方法的def[0607]根据动作的概念id来选择gtl文本文件执行。[0608]√例如概念id=create,表示创建动作,在人机交互模式下自动选择hci_json/create.gtl_json,而在开发子模式json下自动选择dev_json/create.gtl_json。[0609]◆组合(grouping)def[0610]对于组合成员进行遍历处理,然后根据当前运行模式与组合类型将处理结果合并。[0611]√例如语句“创建一个名为a的变量并且再创建一个名为b的变量”。“创建一个名为a的变量”与“再创建一个名为b的变量”是组合的def,对该组合的def依次遍历处理,它们生成的gscript代码合并。[0612]◆表介引的def[0613]该def通常依存于其它def,因此忽略不处理。但需要将它推入到上下文分析会话队列中,并标记为待合并的def。[0614]◆其它def[0615]如果当前def的概念隶属于概念id=object,则默认为表查询的动作(概念id=query),也就是说转换为表达动作、行为或方法的def然后再处理。[0616]√例如语句“新闻”,则转换为语句“查询新闻”的方式处理;[0617]■如果无法找到相应的gtl文本文件执行,则意味着无法处理,即表示语句无法理解。[0618]gtl模板引擎允许外部传入缓存数据,使得在执行时可以将def作为缓存数据传入,从而在执行过程中可以对那些依存的(即被合并的)def进行处理。[0619]√例如[0620][0621]2.1.4.2.上下文运行[0622]如果def运行过程中发现必要依存条件没有满足时,则在上下文运行会话中记录,以便于使用自然语言生成技术将缺失的这些条件告诉用户,并能够在下轮语句中接收匹配这些条件的成分。[0623]如果def运行成功,则在运行会话结束时如下进行:[0624]■将该def推入上下文会话的def队列中;[0625]■如果当前def为表达动作、行为或方法的def,则形成事件(event)进行存储到上下文会话的事件队列中。同时概念id=event与由该对象生成的无词概念构成species种属关系;[0626]■将def运行过程中新产生的对象及对象间关系分别存储到上下文会话的对象队列、对象关系队列中。对象集合也属于对象;[0627]■根据def运行过程中发生的对象属性变化(含值变化)、对象间关系变化,同步修改到上下文会话的对象队列、对象关系队列;[0628]上下文会话中的事件、对象、对象关系等队列对def运行的方法内部实现(例如指代消解)以及后续的自然语言生成都将起到关键的作用。[0629]2.1.5.上下文会话[0630]上下文会话贯穿整个分析、运行过程。分析会话、运行会话都由上下文会话产生。[0631]■分析会话[0632]分析会话作用在分析环节,它的生命周期开始于句子分析,结束于:①没有分析出有效的def②其中一个def运行成功③所有def都运行结束。[0633]■运行会话[0634]运行会话则依存于分析会话,作用在运行环节,它的生命周期从def运行开始直到def运行结束为止。当def运行成功后在分析会话、运行会话结束前会将包含的数据(例如运行会话中的事件、对象、对象间关系等)合并到上下文会话,以便于下文或下轮对话的分析、运行。[0635]4.1.实现过程[0636]4.1.1.def生成[0637]根据所要表达的意图生成def的方法主要是使用规则。可以通过配置等技术手段来实现定义。[0638]√例如在概念定义def分析与运行过程中表述需要必要依存与可选依存条件的意图:[0639][0640]√例如def运行的结果,需要进一步提示用户或者与用户对话:[0641][0642]4.1.1.1.程序设计语言[0643]本文已在前面章节讲述过程序设计语言的实质就是语法规则,而且程序设计语言一般都可以通过语法分析器将代码转成语法树。那么就可以通过语法分析器将代码转换为语法树,然后再通过def生成引擎将语法树转换为def。[0644]gscript语言也有语法分析器,可以将代码转换成语法树。同时,gscript语言现版本支持的计算机语言配合相应的语法分析器经过gscript语法分析器可以直接转换为gscript语言。[0645]本文在下节主要讲述有关gscript语言的生成策略。而其它多数程序设计语言例如java、html、js、css、html、json、xml等其策略与此基本一致,因此不在这里一一详述。[0646]4.1.1.1.1.gscript语言[0647]4.1.1.1.1.1.gscript/java语法规则[0648]具体见前面章节“gscript语法规则”、“java语法规则”。[0649]4.1.1.1.1.2.def生成引擎[0650]4.1.1.1.1.2.1.gscript[0651]4.1.1.1.1.2.2.java[0652]有关java语法已在前面章节讲述。[0653]4.1.1.1.1.2.3.html[0654]有关html语法已在前面章节讲述。生成方法见前一节gscript“指令函数-扩展指令-html”。[0655]4.1.1.1.1.2.4.css[0656]有关css语法已在前面章节讲述。生成方法见前一节gscript“指令函数-扩展指令-css”。[0657]4.1.1.1.1.2.5.xml[0658]有关xml语法已在前面章节讲述。生成方法见前一节gscript“指令函数-扩展指令-xml”。[0659]4.1.1.1.1.2.6.json[0660]有关json语法已在前面章节讲述。生成方法见前一节gscript“指令函数-扩展指令-json”。[0661]4.1.1.1.1.2.7.js(javascript)[0662]有关javascript语法已在前面章节讲述。[0663]部分生成方法见前一节gscript“指令函数-扩展指令-js(javascript)”、“运算函数-扩展运算函数-js(javascript)”。[0664]4.1.1.2.def衔接[0665]生成的def可能会有多个。为了语义表达的连贯、合理,通过衔接手段将各def合理的衔接在一起。衔接手段主要包括:合并、指代、省略、分句、附加、连接、参照等。[0666]■合并[0667]指将def中局部相同的部分合并在一起,表达了语言的紧凑性。[0668]√例如多个不带兼语或宾补def的主谓宾def的合并规则:[0669]a仅主语def概念相同;[0670][0671]b仅主语与谓语def概念相同;[0672][0673]c仅主语与谓语与补语def概念相同;[0674][0675]d仅补语def概念不同;[0676][0677]e仅谓语与补语def概念相同;[0678][0679]f仅谓语与宾语与补语def概念相同;[0680][0681]g仅主语与宾语def概念相同;[0682][0683]h仅主语与宾语与补语def概念相同;[0684][0685]√上述示例语句②“创建用户”[0686][0687]■指代[0688]结合上下文会话,用代词等手段转换def,起代替或指示人、事物的作用。代词主要是人称代词、指示代词。[0689]√例如[0690][0691]■省略[0692]结合上下文会话,将上文中已表述的def省略,以避免语义表达重复,突出重点。通常跟指代手段一起使用。[0693]√上述示例中(be(name,@var.name="a",ude1))var→(this)var,即表示省略了重述描述“名词是a”[0694][0695]■分句[0696]指将def中层级太长的部分分离出来,作为从句补充。通常与指代、连接手段一起使用。[0697]√例如:[0698][0699]■附加[0700]通过为def附加组词、叹词等,让语句不会发生歧义,更加通顺、表达情感。[0701]√例如:[0702][0703]■连接[0704]通过连接与介引def连接def。这在合并手段中经常使用。[0705]√例如:[0706][0707]■参照[0708]结合上下文会话,以上文一些def作为参照点,使用比较、比拟、排除等手段转换def。[0709]def衔接手段在技术上除了基于规则实现外,当然还可以通过神经网络例如基于关键词的seq2seq方法来实现。[0710]4.1.1.3.上下文生成[0711]上下文生成会话中使用“先进后出”队列存储生成def的有效的def。这种情况主要发生在单轮/多轮对话中、程序设计语言代码生成语句中。通常在单轮/多轮对话中这些def还带有待匹配的依存条件,用于判断用户的回复是否能满足这些依存条件并做出相应的响应。[0712]√例如示例语句①“创建变量”:[0713][0714][0715]在理解过程中上下文会话会合并存储分析会话、运行会话包含的数据,在生成过程中上下文会话会合并存储生成会话中包含的数据。这些数据为def衔接例如指代、省略、参照等手段提供了关键的依据。[0716]4.1.2.句法分析[0717]4.1.2.1.生成原则[0718]根据def类型不同,其生成句子的原则也不相同,如下所述:[0719]■如果def已经被指代生成模板或规则,则按照该模板或规则生成词序列;[0720]■否则按如下处理:[0721]◆一般def,选词[0722]◆带有附加的def[0723]●选词,下述称为中心词[0724]●左附加def选出的词依次在中心词的左边[0725]●右附加def选出的词依次在中心词的右边[0726]●标点符号def选出的词在最右边[0727]◆带有附加与限定的def[0728]●选词,下述称为中心词[0729]●左附加def选出的词依次在最左边[0730]●附加def选出的词依次在中心词的左边[0731]●右附加def选出的词依次在中心词的右边[0732]●标点符号def选出的词在最右边[0733]◆连接与介引def[0734]●开始def选出的词在左边,下述称为中心词[0735]●结束def选出的词依次在右边[0736]◆主谓宾def[0737]●选词,下述称为中心词[0738]●主语def选出的词在中心词的左边,下述称为主语def词[0739]●宾语def选出的词在中心词的右边,下述称为宾语def词[0740]●兼语或宾补def选出的词,在中文下在主语def词与宾语def词之间,在英文下在宾语def词的右边[0741]●补语def选出的词依次在最右边[0742]4.1.2.2.生成方法[0743]句法分析的目的就是在于将def转换为符合人类语言习惯的句子。常见方法有基于生成模板与规则的,还有基于n-gram语言模型、神经网络等统计模型的等。[0744]4.1.2.2.1.切分词方法[0745]def生成时可能会有多个规则,例如上述示例语句③,句子的生成会有多种选择。同时一个概念又可直接或间接对应多个词。[0746]句子生成就是要在这些有序的词里选择最好的词序列。切分词算法是在切分出的词里面找到最好的分词结果,这个分词结果就是词序列。常使用二元模型(bigram)、最短距离等算法来实现。[0747]√例如[0748][0749]4.1.2.2.2.依存句法分析方法[0750]def之间依存取决于依存关系,因此def的依存词与中心词存在着依存关系。依存句法分析的目的就是为分词结果找到一条最好的依存树。这里,仍然使用基于转移的依存句法分析法,同时也需要一个神经网络分类器。[0751]与依存句法分析不同的是,分类器输入一个状态,并设定输出最可能的动作是依存关系对应的动作,然后记录每个词获得的分值。经过一系列转移动作,最终达到终止状态,也就可以得到词序列。这里可能会产生很多依存树,可以通过算法从中获取最优结果。算法可用前面章节概念网络转移动作补偿提到的算法,不同的是:算法中提到“依存弧间的距离”在这些依存树中都是一样的,且都设定“命中概念间转移动作”(即命中值都为1)。[0752]其关键思想在于:分类器在输入状态与输出动作都相同的前提下,由于词特征不同导致传入神经网络模型的特征信息也不同,所以每个词得到转移动作分值也就不同。[0753]√例如上述示例中的生成def[0754][0755]4.1.2.2.3.其它方法[0756]例如利用机器翻译方法,实现输入源(def)到输出目标(句子)的翻译。[0757]4.1.3.上下文会话[0758]上下文会话贯穿整个生成过程。同一个理解与生成的过程中的上下文会话是同一个。[0759]■生成会话[0760]生成会话由上下文会话产生。单轮/多轮对话中的生成会话依存于当前运行会话。生成会话作用在生成环节,它的生命周期从def生成开始直到句法分析结束为止。[0761]在生成会话结束前会将包含的数据(例如def队列等)合并到上下文会话,以便于下文的生成或下轮对话的分析、运行。[0762]五、多种语言间转换[0763]多种语言间转换的方法是将上述自然语言理解与生成方法进行组合。[0764]语言1的篇章/段落、单论/多轮对话在语言1的概念网络下由切分句切分成句子,然后每个句子依次经过切分概念词、包含def分析以及概念定义def分析的依存句法分析等环节分析成def,而后基于语言2的概念网络将def依次经过def生成、句法分析等环节生成句子,最终这些句子构成语言2的篇章/段落、单论/多轮对话。[0765]这里的def生成包含def转换功能。def转换目的在于将在语言1的概念网络下生成的def转换为语言2的概念网络下的def。转换方法可以通过规则(例如两个概念网络之间的规则映射)与统计(例如def间序列到序列)的方式实现。转换后的def再经过def衔接等手段处理,而后再经过句法分析生成语言2的句子。当前第1页12当前第1页12
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献