用于基于分层对象模型的约束语言解释器-分析器的方法和设备的制作方法

文档序号:6503858阅读:180来源:国知局
专利名称:用于基于分层对象模型的约束语言解释器-分析器的方法和设备的制作方法
技术领域
本发明涉及语言解释器领域,更具体而言,涉及基于分层对象模型的自然语言解释器。可以使用这种语言处理器来简化运输工具、机器的控制器或任何其它使用控制器的机构的人机接口。
背景技术
需要高级控制的复杂系统近几十年来迅速增长。传统的用户接口(例如键盘、图形显示器)和附属软件已经用于与这些控制器交互。作为系统和控制复杂性增长的结果,这些系统典型地要求对用户进行相当广泛的训练,并且还要求用户持续使用以便保持熟练。
这尤其适用于飞机(aircraft)座舱,其中存在对飞机飞行管理系统(FMS)的可用性的大量关注。对此领域的关注范围从所需的训练时间量(如由Wiener,E.(1989)的“Human factors of advancedtechnology(“glass cockpit”)aircraft”,MoffettFieldNASA ContractorReport 177528所描述的)到理解它们的错误和困难,例如由Sarter,N.和Woods,D.(1991)的“User interaction with cockpit automationOperational experiences with the flight management system(FMS)”,The Ohio State University,Columbus,OH所描述的那些。
近来试图解决与复杂性相关的问题的大量工作集中在利用所增加的图形格式的灵活性的开发上,以通过包括弹出式菜单、对话框及其它工具的操作程序来提供更加有利的支持。然而在许多情况下,并不是接口本身使复杂的控制器难以使用,而是基本功能逻辑的复杂性。
作为说明性的例子,在飞机控制领域,当用户学习使用FMS时,他或她必须学习并牢记大量的程序和操作规程集。这些中的许多包括如由Sherry,L.和Poulson,P.(1998)的“Implications of Situation-ActionRule Description of Avionics Behavior”HCI-Aero 1998,Montreal,Quebec所描述的模式逻辑,但是许多其它的涉及执行FMS功能所需的基本步骤。例如,在未公开的航点周围建立等待航线所需要的步骤通常并不直观,并且如果用户近来没有执行过该程序,那么在他或她通过交互逻辑找到正确路径之前可能会花费几分钟来不断摸索。
为了在飞机控制系统的情况下处理此控制的复杂性,美国专利No.6,346,892(’892)公开了一种用于飞机系统管理的方法和设备,其采用了座舱控制语言(CCL),该语言使用用户已经熟悉的操作逻辑(空中交通管制(ATC)许可(clearance)的内容和语法)来作为FMS交互逻辑的基础,该专利作为引用被结合于此。这允许用户不必学习新的、看似任意的用于控制复杂系统的操作的规则集。换句话说,这使所述系统能够象用户所想的那样去工作,而不是使用户象系统工作那样去想。
在Riley,V.(2000)的“Developing a User-Centered AutoflightInterface”Proceedings of World Aviation Congress,San Diego,CA.中描述了一种用于飞机控制并且基于此原理的接口和系统,其显示了用户可以在大约十五分钟内学会使用这种系统。在训练时间期间,训练用户输入到达航点上交叉限制所需的时间,并且以最小帮助来保持在未公开的航点周围。例如,为了执行许可命令“保持在Alamosa之前二十英里处”,用户只需输入“HOLD 20 BEFORE ALS(保持在ALS之前20)”。因此在Riley所公开的此例子中,用户输入的重要元素模仿在许可中相同元素的次序。
’892专利利用了显示器、输入设备和被编程来解释各种可选表达式的语言分析器/解释器,所述各种可选表达式已经被输入可由计算机识别的预定格式,所述分析器/解释器可操作来显示所分析的命令,并且在认可时向所述计算机输入所分析的命令。然而,例如在’892专利中所利用的语言分析器的一个问题在于,它可能难于更新或适应新的应用、语言等。用于语言编程的传统模型可能有点不灵活,并且不易于适应改变的环境。利用传统的编程设计难以有效地实现复杂的规则。

发明内容
本发明是基于提供自然语言分析器/解释器的目的,所述自然语言分析器/解释器利用分层对象模型来提供灵活性,并且简化特定系统的复杂规则和约束。本发明的分析器是在用户接口和所述用户接口与其通信的外部系统之间的接口,本发明的分析器约束向所述外部系统所传递的语言以便只提供有效的串或命令。语言处理器还向用户接口提供反馈以帮助用户输入有效信息。
可以利用允许易于信息输入和输出的用户接口特征;然而在本发明的系统中,重要的是在系统的用户接口与由系统所需的处理与应用相关的帮助级别的交互逻辑之间进行区分;所述用户接口由物理显示器组成并且控制用户的使用,例如CRT、键盘、鼠标、语音识别和其它输入/输出设备、以及相关驱动器,而交互逻辑控制接口和基本系统如何工作。
本发明的语言解释器可以用于包括复杂控制的任何系统中,例如在上面的’892专利中所描述的座舱控制系统。然而,本发明不限于飞机或运输工具应用;在所有利用任何类型的复杂控制机构的情况下或者甚至在所有将把语言从一种形式翻译为另一种形式或者以某种方式来约束语言的情况下,都可以利用本发明。
主要的设计构思包括分离功能并且灵活地使用分层模型。所述功能被分成输入(其中信息被翻译成对象或符号)、语法分析、语义分析、以及控制器翻译,所述控制器翻译分别映射命令和符号。语法分析只关注符号(或词)的次序,而语义分析涉及与每个符号或词相关的实际逻辑值。
在把每个对象添加到命令对象之后并且可能在所述命令对象被传递到翻译器之前被认为是完整的时,进行语义检查。句法和语义规则集特定于分层结构中的每个对象,并且位于具有每个对象的DoME模型中,或者被编码为所选择的对象模型,或者为所选择的对象模型所固有。
本发明的分层模型包括语法创建、对象类代码生成以及串的识别和串到对象的翻译。下面更详细地描述本发明的元件。尽管下面以用户与座舱设置中的FMS交互的其示例性应用描述了本发明的特定实施例,但是应该如上所述更广泛地解释本发明。
已经为了最大灵活性而设计了用于此平台的接口,但是与本发明相关的真正的工作量节省是由于减少了用户试图记住并遵循附属系统规则和程序的认知努力。此系统对于输入甚至最复杂的命令串也是理想的,特别是当输入关注涉及功能逻辑的复杂性时。所述系统被设计成容纳不同的语法结构,因此可以相对容易地以不同语言来定制交互逻辑的语法。
此原理可以应用于以下情况,其中任何类型的语言利用了关于某领域的已有用户知识主体,例如对于机械师而言在控制数控机床时高级几何学和基于机床控制的语言的知识,或者对于制造人员而言用于工业过程的过程控制语言的知识。甚至更广泛地,此原理可以应用于把一种形式的语言简单变换为另一种形式的语言。


图1是示出系统中的高级数据流和数据表的框图;图2是分析器内部逻辑模块及其彼此交互的框图;图3是说明对串进行预处理的流程图;图4是说明对串进行处理的流程图;图5是说明对数字(number)进行预处理的流程图;图6是说明使用语法来处理符号的流程图;图7是说明添加符号的流程图;图8是说明把符号添加到临时对象上的流程图;以及图9A和9B是说明执行发送命令的流程图。
具体实施例方式
系统体系结构图1说明本发明的语言解释器-分析器10的实施例。语言分析器10与用户接口50和外部系统60连接(interface),所述外部系统60可以是控制器、计算机系统、显示器或者可以接受命令或约束的文本串17的其它设备。在此上下文中,术语“约束的文本串”指的是可以为外部系统60所理解的任何输出。
本发明的语言分析器10是约束的自然语言分析器,其使用两个主要的半独立的机构语法信息25和状态表25(这些可以是集成的,并且下面处处以它们的集成形式来表示)、以及符号和分层对象模型20。除这两个主要机构之外,分析器10可以包括附加的支持元件。这些元件可以包括部分串缓冲器22、辅助应用信息26、翻译表28、外部系统信息30和通信词典32中的一个或多个。
在一般意义上,语法信息和状态表24、25用来对语言提供一组严格的约束,所述约束把语言限制为可以为外部系统60所理解的语言。对象模型20使用户输入元素18能够被操纵为可以被正确解释的对象。这两个主要机构彼此相互依赖语法部分24通过依靠给予对象及其各自的枚举的分层定义来利用对象模型20。同样,对象模型20严重依靠语法信息24以不允许许多在句法上不正确的串。在分析器10中使用此混合方法来最大化命令/短语的面向对象性质的有用性以及基于语言的解释器所必需的句法的灵活性,从而使得对不同系统的改变或自适应简单得多。主要的设计构思包括分离功能并且灵活地使用分层对象模型。
在本发明的实施例中,其中外部系统60是飞机的飞行控制器的FMS应用,本发明通过实现约束的自然语言分析器10来便于CCL由所述飞行控制器使用,所述约束的自然语言分析器10使用户能够以她希望的几乎任何次序来输入用于飞行控制的许可元素,只要她遵循合法的英语语法和ATC用语。CCL是用于自动飞行系统的以用户为中心的交互概念,任何用户可以在大约十五分钟内学会使用所述自动飞行系统。
从更广义来说,本发明便于把语言从一种形式翻译为另一种形式,并且可以用来与控制器或任何其它类型的外部系统60连接。通过给命令输入提供灵活性并且提供用于输入信息的上下文、句法和语法帮助,本发明消除了学习并记住用于特定接口的特殊操作规则的需要,从而使用户更容易地以遵循在域内所使用的操作逻辑来输入命令。所述应用一般足以允许任何用户输入符合以可由外部系统60理解的任何形式的语言的约束输出。这通过以下事实来使得易于学习和使用,即为用户所理解的语言(例如CCL)使用关于操作外部系统60的现有用户知识来作为用于交互逻辑的基础。也就是,系统的交互逻辑模仿域的操作逻辑。因此,用户不必学习用于复杂系统的新的操作逻辑(例如任何类型的运输工具或机器的自动化控制),或者当输入针对外部系统60的信息时不必处理所述系统的模式管理或其它基于状态的方面。
本发明的语言分析器10具有四个主要功能1)通过把隐含词自动插入到命令或输入串中以使用户不必输入冗余词来向他或她提供简化操作;2)便于解析可能在输入期间存在的歧义;3)确认消息的逻辑有效性,并且为无效的串生成适当的错误消息;以及4)通过在输入期间提供接下来可能的词、词组或完整词的列表来提示用户。
尽管语言分析器10是本发明的主要焦点,但是下面简要地描述了用户接口50以及所述语言分析器10可以与其连接的外部系统60。
用户接口50可以包括任何已知的显示单元,例如CRT、LCD/等离子面板、键盘、鼠标、文本或字符阅读器、条形码阅读器、语音识别系统、扬声器等。在FMS实施例中,用户接口50可以包括控制/显示单元、主飞行显示器、多功能显示器、导航显示区、具有字母数字键的键盘或小键盘、选项显示区、命令显示区、线路选择键、选项键、照相机和/或可能是传声器的话音输入设备。用户接口50用来把串/部分串和命令18发送到语言分析器10中。用户接口50还用来接收分析器用户接口输出14(帮助、错误消息、完成),并且把它们提供给用户。
外部系统60可以是把所分析或约束的文本用作输入的任何系统。外部系统可以被广义地解释为计算机系统或显示机构,其中语言分析器10仅仅把语言从一种形式翻译为另一种形式。语言分析器10根据特定语言的规则和句法来提供限制和约束。然而在广义解释的实施例中,外部系统60可以是接受命令并且按照那些命令运作的某种控制器。于是语言分析器10用来从所有可能的语言中向控制器60只提供可接受的命令,其中用户可能试图使用所述语言来与所述控制器60通信。在较窄的示例性实施例中,外部系统60可以是飞行控制系统(如上所述),例如由’892专利所描述的飞行控制系统。外部系统接受来自语言分析器10的完整命令或其它输出17,其可以为所述外部系统60理解。
在下面参考实体时,词“表”可以用来描述一个或多个对象的集合。传统的表常常被解释为数据库,所述数据库将只包含数据并且不同于对所述数据操作的功能模块。然而在优选实施例的当前描述中,词“表”、“对象”、“数据库”、“缓冲器”或涉及数据的其它词可以以面向对象的方式来实现,这意味着这些实体还可以包含对各自的对象数据操作的功能或程序代码。换句话说,如下面所用的“表”可以另外包含用于对在所述表中存储的数据进行操作的功能码。
如上所述,接口分析器10本身的主要部件是两个半独立的机构1)符号和分层对象表20,以及2)语法信息和状态表24、25。在基本意义上,符号和分层对象表20使输入命令串能够被操纵为可以被解释为它们意图的符号对象80。语法表24、25可以用来为语言提供一组严格的约束,所述语言映射到外部系统60的语言。换句话说,语法信息24、25可以包含所有可以由外部系统60使用的合法的命令或词。
如图1所说明的,本发明的语言解释器-分析器10可以利用任何数目的附加数据库或表,其可以或不可以被集成到分析器10本身中;然而,那些没有集成到所述分析器10中的数据库可以容易地被所述分析器10访问。可以提供部分串缓冲器22来临时保持经由用户接口50输入的部分串,以使所述部分串可以依照最终产生完整的对象或输出17的方式进行分析和组合。此部分串只存在到一个符号(或多个符号)可以被识别、形成并传递到下一合法串上时。所保持的且临时的对象包括一个或多个符号。
可以提供辅助应用信息数据库26,其包含不是仅仅由语言分析器10使用的信息,而是提供可以帮助语言分析器10格式化命令17的相关信息。
例如在用于FMS的示例性系统中,辅助应用信息26可以是例如包括特定对象的位置的导航信息数据库,其中可以在飞行期间使用所述对象,例如机场名称、机场对象和航点对象以及这些元素的可能完成。FMS-EFIS共享存储器更新可以包括诸如“从飞行计划获取航点序号”、“获取始发机场”、“获取最近的机场航点序号”和“获取目的机场”之类的功能。显然,除FMS之外,导航数据库还将向许多其它应用提供信息,并因而不仅仅是所述FMS的一部分。在FMS应用中使用导航信息数据库可以帮助用户创建用于控制器60的完整命令17。
可以提供控制信息数据库30,其包括特定于特定类型的控制器或外部系统60的信息。这可以允许以相同的基本软件来使用各种类型的控制器,以及只有此数据库可能需要更新以便利用不同的控制器,并且可以构成用于FMS应用的FMS信息数据库系统。
可以提供有助于确保可靠的数据传送的通信词典32。尽管此词典可以包含低级通信协议数据(例如与TCP/IP相关、或者甚至更低的协议级物理层信息),但是它主要涉及在更高级进行可靠的传送,即确保有效命令以可靠的方式到达外部系统60。
可以在FMS应用中实现通信词典32以作为用于数据链路通信的数据链路词典32,所述数据链路词典例如基于诸如由RTCA Inc.“Minimum Operational Performance Standards for ATC Two-WayData Link Communications”RTCA/DO-219所公布的规范之类的标准,该规范作为引用被结合于此。
为了阐明通信词典32可以如何在FMS实施例中操作,提供了下面示例性的描述和交互。在此特定例子中,由于数据链路数据词典32是CCL命令串的功能子集(“数据链路”是ATC命令的子集,并且所述CCL可以处理任何ATC命令),所以CCL和数据链路是完全兼容的。使数据链路接口并入CCL接口可以使用户能够在CCL环境中编辑数据链路消息。这又支持例如在数据链路上完全协商许可的能力。
例如,如果控制器向比由于重力而可能的高度还要高的高度发送许可,那么用户可以把该许可复制到CCL命令串字段中,把所述高度编辑到可行值,并且把所述命令串作为请求发回到所述控制器。在CCL环境内的编辑保留了原始消息的可执行属性,以使当从控制器接收确认时,可以直接执行命令串,就像任何数据链路消息或CCL命令串那样。对于FMS,CCL将在数据链路领域中继续是必要的,因为当用户需要手动输入路由修改时,他把数据链路用作输入路由数据的主要机构将防止他停留于精通传统的基于CDU的FMS操作,所以易于使用所述FMS将比当前甚至更重要。此外,由于CCL使用与数据链路相同的操作逻辑(因为二者都基于ATC消息),所以数据链路消息实际上加强了CCL的交互逻辑,从而使手动和自动操作基本上是相同的。这应当使用户能够停留在精通较低级的自动化和手动数据输入上,而不管持续练习的损失。
可以通过陈述下述来概括此原理当结合语言分析器10使用这种通信词典数据库(内部或外部)32时,在所述数据库内所包含的信息不仅可以用来帮助输入适当的信息,而且可以用来加强关于适用控制器或外部系统60的逻辑的知识。
语法信息和状态表使用脚本集和先行一个词汇的解释器来在预运行时间形成语法信息24和状态表25;它们包含从控制器或外部系统60观点来看的所有可能的合法语句(当然,这些语句并不包括合法语句的参数化的、分类的或数字分量,因为所述表会太大)。在示例性实施例中为了创建此表,研究表明大部分命令包含单个动作和目标(或参数变量)以及一组介词。研究还识别频繁使用的形容词、副词、参数和连词(参见表1)。
最初在FMS的情况下开发语言分析器10。在此语法(其用来产生状态表25)开发中,初始命令串组包括公用许可的综合列表;根据那些许可来识别CCL词汇(即哪些词表示动作,以及哪些词表示目标。)。根据此词汇、许可的原始列表、数据链路规范以及根据所接受的ATC用语,可能的命令串的列表被外推以形成语法。
一旦所述语法已经被定义,那么可以通过把每个命令串(或其它类型的输出串、规则分量等)依照作为动词、目标/参数、以及可能的介词短语的列表的其一般形式/类型来输入到规则文件中,从而根据这种串在通用意义上来创建语法信息24。然后,可以运行把所述规则置换(permute)为所有可能次序的程序。每个目标和介词短语可以被单独定义,并且(只要可能的话)可以使用枚举来表示等效的词和短语。
可以使用规则置换、名词规则和分层表示来构造状态表25。可以使用任何语法状态产生技术或工具(例如Bison)来把语法与对象映射合并并且变换为状态机25。状态表25确定特定命令行在形成时的特定状态,例如所述命令是否完整、它缺乏什么信息、什么选项可用等等。状态表是灵活的,因为它可以用来提前检查并看看是否可以预先考虑所需信息。因而尽管是先行一个分析器状态机,但是分析器可以执行为先行两个或者甚至在必要时先行k个。
规则置换可以利用多达200或更多个明确定义的命令。规则置换还包含词组的列表以及依照词类型的介词和动词的列表,所述词组必须一起并依照所列出的次序出现。名词规则包括用户期望的词或对象的次序,并且定义了每个对象集合映射到什么。分层模型包括分层对象关系的列表。把Bison的语法处理为状态机通过在插入之后把Bison输出变换为临时文件以及然后变换为最终的分析器读取语法表来完成。
这可以利用一系列脚本或其它程序来完成第一脚本可以标记词组。这允许区分何时命令中的词次序是关键的,例如“CLIMB AT20NM”和“AT 20NM CLIMB”。另一脚本可以标记介词和动词,以及另一脚本可以获取每个所标记的组并创建所有可能的置换,以使可以依照任何次序来把介词短语置于动词及其目标之前或之后。在完成此之后,用于定义可以如何输入给定目标的名词规则以及分层对象关系可以与所置换的命令列表合并。然后此合并的信息被传递到Bison中以便以Bison所特有的输出格式来创建状态机。然后可以通过抽出状态信息以及Bison规则列表来修改此格式以作为分析器的输入。
可以在此结构中利用替换法。在FMS例子中,“when at(当在时)”、“on reaching(在到达时)”和“when reaching(当到达时)”能够全部被替换为“at(在)”以创建具有相同意义的命令串。可以在运行时间使用语法信息和状态表24、25来确保所输入串的正确性,并且向用户提示可能的下一词。然而,虽然提示是方便的,但是如果用户只想输入目标或者避免命令串的一些部分,那么可以使用对象模型来确定遗漏的(missing)词或者向用户提示适当选择。
状态表25与语法表24紧密绑定,即语法信息24保持所有可在控制器上使用的有效命令对象,但是所述状态表25可能寻址此信息以便潜在地修改特定命令的状态。语法信息25可以包括当前状态、当前符号对象(在命令中临时或保持的对象)、命令、临时对象(由语法所处理但不能被添加到所述命令的对象上)和保持对象(对于添加到命令是合法的但是未由语法进行处理的对象)。可以如下来说明在临时对象和保持对象之间的区别。对于命令“TO FL320 AT KMSP”,语法期望是TO+FL+数字。命令对象期望Verb(动词)=TO;cclTo对象期望Target(目标)=Altitude(高度),并且cclAltitude对象期望Altitude Unit(高度单位)=Enumeration(FL)Value(枚举值)=数字。因此对于“TO FL”,语法是对的,并且临时对象保持为“FL”,但是对于“TO FL320 KMSP”,所述语法并不是对的,并且保持对象保持为“KMSP”。
翻译FMS翻译包括下述。创建FMS表以把FMS命令映射到CCL等效物中。在启动时创建翻译表来把CCL等效物加载到n叉树中以用于快速查找。使用继承和属性映射来从FMS表找到等效的CCL命令。由于作为对象的CCL命令是非常特定的,所以可以通过攀爬分层模型并且穿过n叉树来找到CCL命令的等效物。在每个终端节点处存在FMS号,其与CCL串匹配,并且映射到一个或多个FMS命令。可以用翻译器对象来填充数据类型,并且如果必要的话从数据库中获得附加信息。
符号与分层对象模型表符号表和分层对象数据库20利用了许多公用的面向对象编程技术(例如封装、继承和抽象)。经由任何用户输入设备50输入到系统中的每个词、部分词、数字或短语被转换为简单对象,所述简单对象可以被认为是象令牌、枚举或其它形式的对象表示。此数据库20可以包含对象,所述对象包括这些部分词、词、数字和短语(文本元素)令牌化的枚举。然后可以使用对象模型来把所述对象组合在一起以创建单个命令对象84。一旦用户输入被变换为对象格式,那么可以对这些变换的对象执行语义检查、翻译成外部控制器或系统的命令、或者其它类型的操作。本发明分析器10的实现方式创建准确且完整的对象模型,以获得自然语言的复杂性和词序的细微差别。
因为可以向对象的结构施加对象排序的分层结构,所以对象模型是分层的。例如,在低层,对象可以广泛地建立词或部分词的模型;在下一层,可以建立更特定的子对象类型的模型,例如名词、动词、参数等;子对象可以继承其所基于的父“词”对象的所有或一些属性。在甚至更高的层,例如指向位置的对象可以被这样定义,所述对象继承了它所基于的“名词”对象的所有或一些属性。可以利用所有面向对象的编程方法的工具并且获得优点。
实施例的实现方式可以是以依照下述的面向对象的方式所组织的文件1)语法对象,2)一般对象,3)控制类,以及4)接口。
语法对象可以被组织为诸如动词、连词、介词和参数(名词)之类的类型。这些语法对象中的许多将与多个不同的实现方式相关。在FMS实施例中,这些语法对象可以包括

表1这些对象的实现方式实际上可以是单个类的类型,所述单个类的类型在被动态例示时从在启动时所构造的数据库中读取其对象的特定信息。
一般对象可以包括符号对象、数字对象、对象列表和临时对象,所述临时对象用于在未顺序地输入命令时存储部分命令对象。这些一般对象还可以是命令对象(其可以包括动词以及介词的列表)、复合命令对象(其可以包括两个命令对象和一个连词)、返回类型(其可以包括消息或错误严重性类型)、对象指针、以及其它类型的传统面向对象的对象类型。控制类可以包括符号表20、语法信息24和状态查找表25、以及语言分析器的元素,其可以包括部分串和保持或临时对象。接口可以包括用于辅助应用信息26的接口例如导航数据库接口26、用于用户接口50和用于外部控制器或系统60例如FMS。这些接口被设计成是基本类,以便隔离对系统的外部改变。
软件配置和执行图2说明包括四个内部逻辑块/模块的本发明的语言分析器10的示例性实施例,所述四个模块为符号查找和发送模块70、应用语法和添加模块72、获取词类型或数据模块74以及翻译和发送模块76。
可以通过举例来最好地说明对操作这些模块的讨论。在FMS实施例中,用户可能想要输入反映了交叉限制的命令串“Cross MCW at orabove FL210”,其中MCW是用于位置的符号,以及FL210是用于高度的符号,这是将向FMS控制器60所提供的命令串。所述用户使用用户输入设备50来输入此命令。
为了预处理串,由用户提供串或部分串。为了开始以上命令串,用户可以通过在字母数字小键盘上输入“C”或通过经由任何适当的输入机构50来输入整个词“cross(交叉)”来开始。此输入12最初由符号查找和发送模块70处理。
如果部分串“C”最初经由输入设备50输入,那么可以把所述“C”发送到语言分析器10来处理。分析器10通常执行串格式化,所述串格式化试图添加/除去空格,识别数字,把部分串与旧的未处理串合并,并且与其它数据库核对。在这种情况下,符号查找和发送模块70检查部分串缓冲器22以看看是否存在任何旧的未处理串。由于这是新的命令,所以部分串缓冲器22是空的,因为最后发送的命令使所述部分串缓冲器22被清空或者因为此缓冲器22的某种形式的初始化。
接下来,符号查找和发送模块70试图利用符号表20(图1和2)来把输入识别为有效的符号对象。通常,串的预处理将把格式化的输入串作为未处理/部分串而存储在部分串缓冲器22中,转送所述串以用于进一步的数字处理,或者将转送所述串以用于进一步的串处理。在本例子中,利用包括可能词的符号表20来检查“C”,可以使用所述词并且可以利用那些合法的词(对于此例子而言是可以开始命令的那些词)的语法信息24来检查所述词。可以在用户接口50上向用户显示以“C”开始的可能的词的列表,以使用户可以从挑选列表中选择一个词。用户可能通过从向她所展示的列表中选择该词或者通过对剩余字母重复键盘输入来完成词“cross”的输入。在此实施例中,从用户输入设备到语言分析器的通信可以经由控制抽象层模拟来进行,不过在一般意义上,可以使用任何已知的协议。
尝试了把串翻译为符号,例如以找到“cross”的符号。如果翻译失败,那么试图在辅助应用(FMS)信息数据库26中定位所述对象。如果在数据库26中不能发现所述串,那么将其作为未处理的串来存储并且向用户发出警告。一旦分析器10处理输入“cross”并且使用其符号表20把此输入识别为有效的符号对象,那么词“cross”由获取词类型或数据模块74根据语法信息24来识别为特定符号类型82。获取词类型模块74接收由符号查找和发送模块70所提供的串18,并且返回附属符号类型82(例如名词、动词、连词、介词、参数、枚举),如果发现的话。如果没有发现,那么可以向用户返回错误或调用某一其它形式的错误处理。
当符号查找和发送模块70接收符号类型82时,分析器10构造符号对象80,并且将其传递给应用语法和添加模块72,所述应用语法和添加模块72相对于在语法信息表24和状态表25中所存储的语法规则来处理所述符号对象80以创建命令对象84。应用语法和添加模块72可以检查以看看是否存在等待的保持对象。如果存在的话,那么可以把符号对象80添加到保持对象,并且如果没有出现错误的话,那么把此组合对象作为符号对象80来处理(否则调用适当的错误处理)。如果没有等待的保持对象,那么检查语法以确保符号可以合法地跟随。如果语法检查不成功,那么可能试图执行自动插入连词或动词。如果这失败了,那么可以利用现有符号来创建保持对象,或者可以提示用户输入用户选择。如果语法检查成功了,那么对其进行处理并且把符号添加到所述语法上。
在本例子中,“cross”符号对象由应用语法和添加模块72相对于语法规则和状态表进行处理以创建命令对象84。在此,分析器10可以把“可能的下一个”词的列表减小为只有可以合法跟随“cross”的那些词,并且可选地把这些显示给用户。
接下来,用户可以在用户输入设备上输入“M”来作为导航符号“MCW”的一部分,并且激活符号查找和发送模块70。如前所述,分析器10试图把输入识别为有效符号对象。如果不能的话,那么它把输入作为部分串存储在部分串缓冲器22中,并且等待附加输入或发出错误消息。再一次,分析器10把“可能的下一个”词的列表减小到只有以“M”开始的那些词,并且可以把这些显示给用户。所述用户可以通过在键盘上输入“CW”来继续。分析器10再次试图把所述输入识别为有效的符号对象,并且把它作为部分串存储在缓冲器22中,从而可能把输入串添加到部分串缓冲器22的内容上,并且等待附加输入或发出错误消息。分析器10把“可能的下一个”词的列表减少为只有以“MCW”开始的那些词,并且在此示例性实例中并没有这些词,因此用户接口不显示任何选项。
接下来,用户输入空格(“”),并且分析器10试图把所述输入识别为有效的符号对象。在这种情况下,“MCW”被传递到获取词类型或数据模块74,并且由于这不是一个正常的命令词,所以它被传送到翻译和发送模块76,在那里查询辅助应用信息数据库26(在这种情况下为导航数据库)。在此数据库26中,“MCW”被作为导航符号发现,并且返回所述符号及其类型。分析器10相对于应用语法和添加模块72中的语法规则24和状态表25来处理所述符号对象,并且把所述符号(对于“MCW”)添加到先前创建的命令对象(“cross”)84上。分析器10现在可以把“可能的下一个”词的列表减小到只有可以合法跟随合成组合的命令对象(“cross MCW”)的那些词,并且可选地把它们显示给用户。
接下来在所提供的例子中,用户在用户接口上输入“FL 210”,其表示高度。分析器10在获取词类型或数据模块74中相对于语法规则24和状态表来处理符号对象,但是在这种情况下,并不把所述符号添加到先前创建的命令对象上。接下来,用户输入空格(“”),并且分析器10在获取词类型或数据模块74中相对于语法规则24和状态表来处理符号对象。在此,系统不能把“FL 210”高度符号添加到先前创建的命令对象上,因为需要“用户选择”来消除歧义(其调用获取用户选择例程86)。
由于高度尚未被添加到命令对象上,所以分析器10在应用语法和添加模块72中生成“插入”词的列表(例如在…之上、在…之后、在…以后在、在、在并保持、在或在…之上、在或在…之后、在或在…之前等)。这些插入词被显示给用户。然后用户必须选择其中之一,或者可选择地,所述用户可能经由键盘来选择“删除”或“清除”来清除内容。
在所给出的例子中,用户输入“在或在…之上”。分析器10在应用语法和添加模块72中相对于语法规则24和状态表25来处理符号对象,并且把所述符号添加到先前创建的命令对象上。再次,分析器生成“可能的下一个”词的列表。
现在已经输入了完整的串,并且用户输入“GO”来经由发送命令输入12调用命令串。分析器10处理命令对象84。使用继承和属性映射,命令对象84被识别为交叉限制,并且由分析器10翻译为控制器60可以将其实现为飞行改变计划的格式。然后分析器10可以生成“可能的下一个”词的列表。如果这是命令的末尾,那么分析器可以清除用户接口50的显示区、命令串缓冲器以及系统的其它各个缓冲器,并且准备接受另一命令。可选择地,用户可以删除或清除所述内容。
本发明的方法上面已经参考两个特定例子解释了本发明的系统和操作方法。下面以过程的方式来描述本发明的方法。本发明的方法包括用于下述的例程1)对串进行预处理;2)对串进行处理;3)对数字进行预处理;4)使用语法来处理符号;5)添加符号;6)把符号添加到临时对象上;以及7)发送命令或输出串。下面更详细地并且不参考特定的例子来描述这些例程。除应当注意的情况外,串的预处理和处理由符号查找和发送子系统70来执行,而剩余的处理功能由应用语法和添加子系统72来执行。
对串进行预处理如图3中所表明的,作为用户输入元素18的输入串102由一个或多个功能104处理,所述一个或多个功能104提供了对所述输入串102的初步处理100。这些功能104包括在适当位置添加和/或除去空格、识别数字、执行与旧的未处理串的合并、执行数据库检查(由获取词类型或数据子系统72使用辅助应用信息数据库26来执行)、以及其它功能。这可以导致所预处理的串被存储为未处理的串106,被翻译为数字202,或被解释为下一合法串152。
对串进行处理当完成由预处理例程来生成下一合法串152时,依照图4,处理串例程150获取下一合法串152,并且试图把它翻译为符号154。如果此翻译失败158,那么(由辅助应用信息数据库26中的获取词类型或数据子单元74)执行搜索160以定位符号对象162。如果符号翻译154是成功的156,那么不执行此数据库搜索160。符号对象162把任何等待数字添加到其上302(如下面更详细定义的),以及然后此组合如下面更详细定义的由使用语法处理符号的例程来处理252。
对数字进行预处理如图5中所表明的,向预处理数字例程200提供新的数字202,并且进行测试以看看是否存在等待数字。如果存在等待数字218,那么把新的数字添加到等待数字上220。否则,执行语法检查206。如果此语法检查失败208,那么实施错误处理210,所述错误处理可以是以向用户给出错误消息的形式。但是如果语法检查206是成功的212,那么处理所述语法214,并且把数字占位符添加到保持对象上216。
使用语法处理符号图6说明使用语法来处理符号的例程250。进行测试以确定是否存在等待的保持对象252。如果存在的话278,那么试图把符号添加到所述保持对象上352。此操作可以导致成功280,但是如果它导致失败的话282,那么试图处理保持对象284。如果此操作失败288,那么实施错误处理290。如果成功的话286,那么重复此例程250。
相应地,如果当处理符号时没有等待的保持对象254,那么试图进行语法检查256。如果此检查成功258,那么如下所述来处理语法260并且添加符号302。如果语法检查失败262,那么试图自动插入连词或动词264。此操作可以导致成功266,但是如果它失败的话268,那么试图处理保持对象270。试图保持对象可以成功272,但是如果失败的话2523,那么请求用户输入选择276,所述选择是经由符号查找和发送模块70来接受的。
添加符号在图7中说明添加符号300。类似于先前例程,进行测试以看看是否存在等待的临时对象302。如果不存在等待的临时对象304,那么试图把符号添加到当前对象上306。如果成功的话,那么这触发语义分析314,所述语义分析发生在把任何新的符号添加到命令对象或临时对象之后。如果把所述符号添加到当前对象没有成功310,那么创建临时对象312。
如果临时对象正在等待320,那么试图把所述符号添加到所述临时对象上352,这可能成功322,也可能失败324。当失败时324,试图添加临时对象326。如果此添加成功328,那么添加所述符号334并且重复该过程300。
把符号添加到临时对象上如图8中所说明的,可以依照把符号添加到临时对象的例程350来试图把符号添加到对象上352。此试图可能成功354,也可能失败356。如果失败的话,那么所述符号被变换为其父对象(使用标准的面向对象技术)358,以及然后试图把所变换的符号添加到所述对象上358。此试图可能成功360,也可能失败362。如果失败的话362,那么搜索“遗漏的”对象以及添加所述符号或所变换的符号365。此试图可能成功366,也可能失败368。如果失败的话368,那么试图使所述符号为临时符号,并且向其添加对象370,这可能成功372,也可能失败374,在失败的情况下开始错误处理。无论如何,重复所述例程350。
发送命令在图9A和9B中说明发送命令处理400。如图9A中所说明的,调用发送命令402包括试图处理未处理的串404。如果此试图没有成功,那么调用错误处理408。如果成功的话406,那么对保持对象进行解析410,可能有处理保持对象的操作412。无论如何,检查语法414,并且如果此检查没有成功,那么调用错误处理416。如果成功的话418,那么对临时对象进行解析420,并且如果适当的话,添加临时对象422。无论如何,进行检查以看看是否可接受发送424,并且如果不是的话428,那么调用错误处理。如果可以发送426,那么所述命令被翻译并发送到外部系统430。
图9B说明经过语义分析314的命令的处理432。所述命令被转换为外部系统数字434,以及然后每个对象被翻译为外部系统值436。然后运行相应的外部系统脚本438,如果存在问题的话,其可以调用错误处理442,或者成功440的话,复位语法信息444。
可以按照功能块部件和各种处理步骤来描述本发明。这种功能块可以由被配置为执行规定功能的任何数目的硬件和/或软件部件来实现。例如,本发明可以使用各种集成电路部件,例如存储元件、处理元件、逻辑元件、查找表等,其可以在一个或多个微处理器或其它控制设备的控制下执行各种功能。类似地,在使用软件编程或软件元素来实现本发明元件的情况下,可以利用诸如C、C++、Java、汇编语言等任何编程或脚本语言来实现本发明,各种算法是利用数据结构、对象、过程、例程或其它编程元素的任何组合来实现的。此外,本发明可以使用用于电子器件配置、信号处理和/或控制、数据处理等任何数目的常规技术。
这里所示出并描述的特定实现方式是本发明的说明性例子,并且不打算以任何方式来另外限制本发明的范围。为了简洁起见,可能没有详细描述所述系统的常规电子器件、控制系统、软件开发以及其它功能方面(和所述系统的各个操作部件的部件)。此外,在所给出的各个图中所示出的连接线或连接器打算表示在各种元件之间的示例性功能关系和/或物理或逻辑耦合。应当注意,在实际设备中可能存在许多可选或附加的功能关系、物理连接或逻辑连接。此外,除非元件被特别地描述为“必需”或“关键”的,否则没有项或部件对实施本发明来说是必需的。在不脱离本发明的精神和范围的情况下,许多修改和适应对本领域技术人员来说将是显而易见的。
权利要求
1.一种用于接受语言输入并且生成约束的语言输出的自然语言分析器(10),包括输入端(12),其被配置为从用户接口(50)接受用户输入元素(18),包括词、部分词、数字、语言符号和发送命令中的一个或多个;输出端(17),其被配置为向外部系统(60)输出完整的、句法上正确分析的输出串(17);符号表(20),其依照分层对象模型(20)来构造,包括多个表示可能有效的用户输入元素(18)的符号对象(80),所述符号对象(80)以基于面向对象的分层结构为基础,其中根据符号表(20)的相应符号对象(80)和语法规则来把所映射的符号对象(80)映射到用户输入元素(18);语法信息和状态表(24,25),包括多个语法输出对象(84),其表示可以供所述外部系统(60)使用的合法语句,所述语法信息和状态表(24,25)为完整分析的输出串(17)提供一组严格的约束并且不允许句法上不正确的串,所述语法信息和状态表(24,25)用来基于语义规则根据在分层构造的符号表(20)中一个或多个映射的符号对象(80)来创建所映射的输出对象(84),所述语法信息和状态表(24,25)与所述符号表(20)进行交互以不允许句法上不正确的用户输入元素(18);以及状态表(25),其被配置为反映在由用户逐渐输入时特定输出的状态;所述自然语言分析器(10)还包括翻译器(76),包括具有输出对象(84)到输出串(17)的映射的翻译表(28),所述翻译器被配置为把来自所述翻译表(28)的信息和所述输出对象(84)进行组合以生成所分析的输出串(17)。
2.根据权利要求1所述的分析器(10),其中所述外部系统(60)是用于运输工具、机器和系统中至少一个的控制器。
3.根据权利要求2所述的分析器(10),其中所述运输工具控制器(60)是飞机FMS控制器,以及所分析的输出串(17)是FMS命令。
4.根据权利要求1所述的分析器(10),其中所述语法信息和状态表(24,25)包括词类型,所述词类型包括动词、介词和形容词中的一个或多个。
5.根据权利要求1所述的分析器(10),其中所述多个符号对象包括语法对象、一般对象、控制类、以及接口。
6.根据权利要求5所述的分析器(10),其中所述接口包括应用辅助信息接口和外部系统接口。
7.根据权利要求6所述的分析器(10),其中所述应用辅助信息接口是导航数据库信息接口,以及所述外部系统接口是FMS接口。
8.根据权利要求5所述的分析器(10),其中所述控制类包括符号类型列表、语法和状态接口、以及状态查找表;所述一般对象包括符号对象、数字对象、对象列表、以及临时对象;以及所述语法对象包括动词、连词、介词和参数。
9.根据权利要求1所述的分析器(10),其中所述语法信息和状态表(24,25)被配置为把至少两个不同的用户输入元素(18)映射到单个相同映射的命令对象(84)。
10.根据权利要求1所述的分析器(10),还包括部分串缓冲器(22),其被配置为保持用户输入元素(18),直到形成所映射的符号对象(80)和所映射的命令对象(84)中的至少一个。
11.根据权利要求1所述的分析器(10),其中所述输入端(12)被配置为从多于一个的用户接口设备(50)中接受输入;以及所述分析器被配置为把来自两个或更多个用户接口设备的用户输入元素(18)组合成单个分析的输出串(17)。
12.一种用于分析用户提供的语言输入并且向外部系统提供所分析的输出的方法,包括提供自然语言分析器(10),所述分析器(10)包括经由用户接口(50)从用户接受用户输入元素(18)的用户输入端(12),所述分析器(10)还包括向外部系统(60)输出所分析的输出串(17)的输出端;通过向符号表中输入符号对象(80)来依照分层对象模型结构(20)建立作为所述分析器(10)的一部分的符号表(20),所述符号对象(80)对应于有效的用户输入元素(18),并且包括符号对象类型信息;通过提供多个语法输出对象(84)来建立语法信息和状态表(24,25),所述语法输出对象(84)对应于所述外部系统(60)的有效分析的输出串(17);通过提供对应于所述命令对象(84)的输出串(17)来建立翻译器(76);由用户把用户输入元素(18)输入到所述用户输入端(12)中;利用所述符号表(20)和语法规则来把所述用户输入元素(18)转换为对应于所述用户输入元素(18)的所映射的符号对象(80);利用所述语法信息和状态表(24,25)并且基于语义规则来把一个或多个所映射的符号对象(80)转换为相应映射的输出对象(84),并且更新在所述状态表(25)中所映射的输出对象(84)的状态;通过检查语法和信息状态表(24,25)、所述符号表(20)、语法规则和语义规则来约束正在输入的用户输入元素(18),并且返回用于帮助用户输入适当的用户输入元素(18)的信息;接收发送命令来作为用户输入元素(18);响应于接收所述发送命令,利用所述翻译器(76)把所映射的输出对象(84)翻译为相应分析的输出串(17);以及向所述外部系统(50)发送所分析的输出串(17)。
13.根据权利要求12所述的方法,其中约束用户输入元素包括经由所述用户接口(50)向用户提供有效的下一输入的挑选列表、定义有效的下一输入的类型的帮助消息和表明用户输入的问题的错误消息中的至少一个。
14.根据权利要求12所述的方法,其中建立所述语法信息和状态表(24,25)包括识别用于所述外部系统的综合输出串集,把所述命令串以它们的一般形式、参数、以及可能的介词短语的列表来输入到规则文件中,并且把所述规则置换为所有可能的次序。
15.根据权利要求12所述的方法,还包括向用户提供语法对象的图形表示及其彼此间的关系,所述关系涉及功能、语义约束和用于自动插入或创建的默认信息。
16.根据权利要求12所述的方法,还包括当用户没有遵循正确的语法时,为所述用户插入用户输入元素(50);以及向所述用户提示分析的输出串(17)所需的用户输入元素(50)。
17.一种用于分析用户提供的语言输入并且向外部系统提供所分析的输出的方法,包括通过把预处理串存储为未处理的串(106)、执行数字处理(202)、或者通过执行下一合法串处理(152)处理串来把用户输入元素(50)作为输入串进行预处理(102);根据符号表(20)的相应符号对象(80)来通过下一合法串处理(152)把所未处理的串处理为所映射的符号对象(80);通过数字处理并把数字占位符添加到表示命令对象(84)的当前状态的保持对象(216)来预处理输入数字(202);处理所映射的符号对象(80),这导致下述中的至少一个a)把所映射的符号对象(80)与保持对象进行组合(352),b)向所述用户接口(50)提供错误消息,c)自动插入连词或动词(264),d)向用户提供可能的下一输入值的选择列表(276),e)定位遗漏的对象并将其添加到所述命令对象(84)的当前状态,以及f)把所映射的符号对象(80)添加到所述命令对象(84)的当前状态;处理用户输入的发送命令(402),其把任何未解析的映射的符号对象(80)与所述命令对象的当前状态进行组合(84,410,412,420),生成完整的有效命令对象(84);把所述完整有效的命令对象(84,434,436,438)翻译为所分析的输出串(17);以及向所述外部系统(60)发送所分析的输出串(17),并且复位所述命令对象(84)的当前状态。
全文摘要
自然语言分析器(10)根据在用户接口(50)上输入的用户命令(18)来创建用于外部系统(60)的所分析的命令或输出(17)。所述分析器(10)利用以面向对象的分层方式设置的符号(80)以及语法信息和状态表(25,25)来约束语言输入,以使它们符合外部系统(60)的要求。所述分析器(10)经由用户接口(50)向用户提供反馈以帮助形成用于外部系统(60)的有效输出(17),并且为用户降低了复杂性。所述分析器(10)通常可以应用于控制系统领域,以及用于飞机的飞行控制系统。
文档编号G06F17/27GK1898665SQ200480038683
公开日2007年1月17日 申请日期2004年10月21日 优先权日2003年10月23日
发明者H·沙克莱顿, C·J·米西亚克 申请人:霍尼韦尔国际公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1