分布式语义模式的制作方法

文档序号:6417166阅读:148来源:国知局
专利名称:分布式语义模式的制作方法
技术领域
本发明涉及定义和处理用户/计算机交互的方法和系统。本发明尤其涉及将用户输入分解为命令或实体的系统。
(3)背景技术在典型计算机系统中,用户输入被限制于一套严格的有固定格式的用户响应。例如,在有命令行接口时,用户输入必须采取一种专用形式,这种专用形式唯一地标别出单个命令和从合理的自变量的有限专用域中选处的自变量。类似地,当有图形用户接口时,呈现给用户的只是有限的选项集,并且对开发者而言,比较直截了当的是为有限的用户输入集中的每个具体用户输入定义出一个由有限的命令或实体集组成的用户输入域。
通过将用户限制于一个严格的允许输入或响应集,计算机系统要求用户或操作者要具有很高的技术水平。在心里把期望要执行的任务转换为能由运行于计算机系统上的应用所识别的特定输入,历来是用户的责任。为扩展计算机系统的可用性,一直都在努力为应用提供自然语言(NL)接口。自然语言接口将应用的功能性延伸到了其有限输入集之外,并使计算机系统向自然语言格式的输入开放。自然语言接口负责执行一种转换,即从相对含糊和非常依赖于上下文的自然语言王国转换成计算机应用所要求的精确和严格的输入集。
自然语言接口利用语义对象和各种动作把自然语言输入转换成由应用使用的信息。当创作与自然语言接口交互的应用时,应用开发者使用过程化、说明性编程语言来实现语义对象和动作。诸如C、C++、C#和Fortran等过程化编程语言可定义在应用运行过程中对数据对象执行的各种动作。诸如XML、LISP和Prolog等说明性编程语言可定义应用的语义对象。
然而,说明性语言编码和过程化语言编码之间的集成对创作者而言是难以开发的。在一途径中,语义对象由说明性语言表示,但是创作者需要为使用该语义对象的每个动作复制语义对象声明。在另一途径中,语义对象的含糊声明在过程化语言中使用,这就需要创作者跟踪和维护语义对象间的关系。其结果是,一种将过程化逻辑模块和说明性逻辑模块集成起来的创作工具将是有用的。
(4)发明内容本发明涉及一种带有指令的计算机可读介质,当指令在计算机上实现时促使计算机进行信息处理。该指令包括一说明性逻辑模块和一过程化逻辑模块,说明性逻辑模块适于定义至少有一个语义槽的语义对象,而过程化逻辑模块适于定义在具有对说明性逻辑模块的参照的语义对象上执行的动作。
本发明的另一方面涉及编译应用的一种方法。该方法包括标识一在对应于说明性逻辑模块的过程化逻辑模块中的标定。说明性逻辑模块中的语义对象被访问,以执行过程化逻辑模块中的动作。
本方面的又一方面涉及处理自然语言输入的过程化逻辑模块。该模块包括与定义至少有一个槽的语义对象的说明性逻辑模块相对应的标定,及适于使用语义对象在说明性逻辑模块上执行动作的过程化编码。
用于处理来自用户的自然语言输入的计算机可读介质构成了本发明的另一方面。该计算机可读介质包括多个过程化逻辑模块。每个过程化逻辑模块包括与定义以等级结构排列的多个语义对象的说明性逻辑模块相对应之标定。另外,每个语义对象包括多个可用自然语言输入填充的槽。
(5)


图1是计算系统环境的块图。
图2是使用自然理解接口的环境块图。
图3是示出编译器、过程化逻辑模块和说明性逻辑模块之间交互的简化块图。
图4是使用过程化逻辑模块和说明性逻辑模块的示例性实现的块图。
(6)具体实施方式
图1阐述了本发明可在其中实现的适当计算系统环境100的示例。该计算系统环境100仅是适当计算环境的一个示例,并非旨在提出对本发明使用范围或功能性的任何限制。计算环境100也不应被解释为对示例性操作环境100中所示的任一组件或其组合有任何依赖性或任何需求。
本发明也可在很多其它通用或专用计算系统环境或配置中运作。适于本发明使用的众所周知的计算系统、环境、和/或配置的示例包括,但不限于,个人计算机、服务器计算机、手持式或膝上型设备、多处理器系统、基于微处理器的系统、置顶盒、可编程电器消费品、网络PC、迷你计算机、大型机、电话系统、包括任一种以上系统或设备的分布式计算环境、等等。
本发明可以计算机可执行指令的一般上下文进行说明,诸如由计算机执行的程序模块。通常,程序模块包括执行具体任务或实现具体抽象数据结构的例程、程序、对象、组件、数据结构等等。本发明还可在任务由经通信网络连接的远程处理设备执行的分布式计算环境中实践。在分布式计算环境中,程序模块可置于包括存储器存储设备的本地和远程计算机存储介质。由程序和模块执行的任务参照附图在后面说明。本领域技术人员可以把该说明和附图实现为处理器可执行指令,这些指令可写在任何形式的计算机可读介质上。
参照图1,实现本发明的示例性系统包括计算机110形式的通用计算设备。计算机110的组件可包括,但不限于,处理单元120、系统存储器130以及把包括系统存储器在内的各种系统组件耦合到处理单元120的系统总线121。系统总线121可能是若干总线结构类型中的任何一种,包括存储器总线或存储器控制器、外围总线、以及使用多种总线架构的任一种的本地总线。这些总线架构包括,但不限于,工业标准架构(ISA)、微信道架构(MSA)、扩展ISA(EISA)、视频电子标准协会(VESA)局部总线(VLB)和也称为Mezzanine总线的外围部件互连(PCI)。
计算机110通常包括各种计算机可读介质。计算机可读介质可以是能被计算机110访问的任何可用介质,并包括易失和非易失介质、可移动和不可移动介质。作为示例,而非限制,计算机可读介质可包括计算机存储介质和通信介质。计算机存储介质包括以任何方法或技术实现、用于存储诸如计算机可读指令、数据结构、程序模块或其它数据等信息的易失和非易失介质、可移动和不可移动介质。计算机存储介质包括但不限于RAM、ROM、EEPROM、闪存或其它存储器技术、CD-ROM、数字化视频光盘(DVD)或其它光学存储技术、磁卡、磁带、磁盘存储或其它磁性存储设备、或任何其它可用于存储所需信息并可由计算机110访问的介质。通信介质通常包括诸如载波或其它传输机制的调制数据信号中的计算机可读指令、数据架构、程序模块、或其它数据,且包括任何信息输送介质。术语“调制数据信号”意指用将信息编码成信号的方式设置或改变其一个或多个特征的信号。作为示例,而非限制,通信介质包括诸如有线网络或直线连接的有线介质,和诸如声学、射频、红外线和其它无线介质的无线介质。以上任何介质的组合也应包括在计算机可读介质的范围中。
系统存储器130包括诸如只读存储器(ROM)131和随机存取存储器(RAM)132的易失和/或非易失存储器形式的计算机可读介质。包含有助于计算机110如起动时在元件间传送信息的基本例程的基本输入/输出系统(BIOS)133通常存储在ROM131中。RAM132通常包含可被处理单元120立即访问和/或现时操作的数据和/或程序模块。作为示例,而非限制,图1示出了操作系统134、应用程序135、其它程序模块136、和程序数据137。
计算机110还可包括其它可移动/不可移动、易失/非易失计算机存储介质。作为示例,图1图示了读取和写入不可移动、非易失磁性介质的硬盘驱动器141,读取和写入可移动、非易失磁盘152的磁盘驱动器151,读取和写入可移动、非易失光盘156,诸如CD-ROM或其它光学介质的光盘驱动器155。其它也用在示例性计算环境中的可移动/不可移动、易失/非易失计算机存储介质包括,但不限于,如磁带、闪存卡、CD-ROM、数字化视频光盘、数字化录像带、固态RAM、固态ROM等等。硬盘驱动器141通常通过诸如接口140的不可移动存储器接口与系统总线121连接,而磁盘驱动器151和光盘驱动器155通常通过诸如接口150的可移动存储器接口与系统总线121连接。
如上所述并如图1所示的盘驱动器及其相关联的计算机存储介质为计算机110提供计算机可读指令、数据结构、程序模块、和其它数据的存储。在图1中,例如,硬盘驱动器141被示为存储操作系统144、应用程序145、其它程序模块146、和程序数据147。注意这些组件可以与操作系统134、应用程序135、其它程序模块136、和程序数据137相同或不同。在此给予操作系统144、应用程序145、其它程序模块146、和程序数据147的不同的标记至少说明它们是不同的副本。
用户可通过输入装置如键盘162、话筒163和诸如鼠标、跟踪球或触摸板等定位装置161向计算机110输入命令和信息。其它输入装置(未示出)可包括游戏杆、游戏垫、卫星接收器、扫描仪等等。对于自然用户接口应用,用户还可使用语音、手写、注视(眼睛的移动)、和其它姿势与计算机进行通信。为了使自然用户接口便于使用,计算机可包括捕捉用户姿势(gesture)的话筒、书写板、照相机、移动感应器、和其它设备。这些和其它输入设备常常通过与系统总线耦合的用户输入接口160与处理单元120相连,但也可通过诸如并行端口、游戏端口或通用串行总线(USB)的其它接口来与总线结构连接。监视器191或其它类型的显示设备也可通过诸如视频接口190的接口与系统总线121相连。除了监视器,计算机还可包括诸如扬声器197和打印机196的其它输出设备,它们通过输出外围接口190相连。
计算机110可以在使用与一台或多台远程计算机,诸如远程计算机180的逻辑连接的网络化环境中运行。远程计算机180可以是个人计算机、手持式设备、服务器、路由器、网络PC、同等装置或其它普通网络节点,而且通常包括上述与个人计算机110相关的许多或全部组件。图1中所描绘的逻辑连接包括局域网(LAN)171和广域网(WAN)173,但也可包括其它网络。这样的网络化环境在办公室、企业范围计算机网络、企业内部互联网和因特网上是常见的。
当用于LAN网络化环境中时,计算机110通过网络接口或适配器170与局域网171连接。当用于WAN网络化环境中时,计算机110通常包括调制解调器172或其它用于在广域网173,诸如因特网中建立通信的装置。可以是内置式或外置式的调制解调器172与系统总线121通过用户输入接口160或其它适当机制连接。在网络化环境中,与计算机110相关的程序模块或其一部分可存储在远程存储器存储装置中。作为示例,而非限制,图1示出了驻留于远程计算机180中的远程应用程序185。应当理解,所示网络连接是示例性的,且其它用于在计算机间建立通信连接的技术也可以使用。
通常,应用程序135使用命令行或图形用户接口(GUI)通过用户输入接口160与用户交互。然而,为了简化和扩展计算机系统的使用,已开发了能够接收用户自然语言输入的输入。与自然语言或语音相比,图形用户接口是精确的。一个设计良好的图形用户接口通常不会产生模糊引用或需要下层应用来确认对通过接口160所接收的输入的具体判读。例如,由于接口是精确的,通常不需要为了输入而向用户做进一步查询,例如“你点击了‘ok’按钮吗?”。通常,为图形用户接口设计的对象模型在其实现上是非常机械和严格的。
与图形用户接口形成对照的是,自然语言查询或命令常常不是仅转换成一个,而是一系列的对输入对象模型的功能调用。与常规行输入或图形用户接口的严格、机械限制形成对比的是,自然语言是一种常常无意识地依靠对话人双方的智力来解决歧义的通信方法。实际上,自然语言被称之为“自然”完全是因为它不是机械的。双方对话人基于有关围绕对话任意领域的上下文信息和暗示来解决歧义。在对话人看来,句子“将会议记录发送给星期五参加回顾会的人”是无需更多解释就可完全理解的句子。然而,从机器的机械观点看,必须指定诸如确切的是什么文档、所指的是哪一次会议以及确切的文档发送对象是谁等具体细节。
图2是显示使用逻辑模块202的各种应用的自然理解接口200简化块图。自然理解接口200通过例如键盘、手势或姿势识别设备、光学扫描仪、话筒或其它输入设备接收用户输入。识别引擎可用来识别用户输入中的特征。语音的识别特征常常是口语的用字,而手写字体的识别特征常常对应于用户手写字体的笔划。在一具体示例中,语法可用来识别语音表达中的字。已经知道也可为视觉输入提供识别。识别特征由利用一个或多个逻辑模块202的接口200处理。
逻辑模块202包括过程化和说明性编程码,以驱动接口200中的应用。例如,编码用XML、LISP、Prolog、C、C++、C#、Java和/或Fortran写成。各应用使用逻辑模块202中的语义对象访问知识库204中的信息。当在此使用时,“语义的”指的是自然语言表达的含义。语义对象可定义对应于自然语言表达的特性、方法和事件处理器。在本发明的一实施例中,语言对象提供了指向可被一个或多个逻辑模块202利用的实体的一种方法。涉及一特定域应用的具体域实体可用任意个不同语义对象来识别,其中每个语义对象都代表以不同方式表达的相同域实体。术语“语义多形”可用来表示具体实体可用多个语义对象来标识。语义对象的丰度,即语义对象的数量、其相互关系及其复杂度,与应用将在其自然语言接口中提供的用户表达水平相对应。作为多形的示例,“John Doe”、“NISD的VP”、和“Jim的经理”都指向同一个人,却分别被不同的语义对象PersonByName(以名定人)、PersonByJob(以职定人)、和PersonByRelationship(以关系定人)所捕捉。
语义对象也可形成嵌套和互相关联,包括递归性相互关联关系。换言之,语义对象可以有其自身也是语义对象的成分。例如,“Jim的经理”对应于有两个成分的语义对象“Jim”是“Person(人物)”语义对象而“Jim的经理”是PersonByRelationship语义对象。这些关系由说明语义对象间关系的语义模式来定义。在一实施例中,模式表示为父子分级树结构。例如,“SendMail”语义对象是有指向存储在知识库204中特定人的“收件人”特性的父对象。两个示例子对象可表示为“PersonByName”对象和“PersonByRelationship”对象,它们可用来标识来自知识库204的邮件消息收件人。
使用逻辑模块202,可基于执行的动作和/或逻辑模块202的语义对象访问知识库204。本领域技术人员可以理解,知识库204可包括将自己以众多形式表现的各种类型和结构的数据,诸如,但不限于,关系数据库或模型对象数据库、web服务、本地或分布式编程模块或对象、XML文档或其它带注解或不带注解的数据表示机制等等。具体示例包括联系人、约会、音频文件、视频文件、文本文件、数据库等等。然后,自然理解接口200可基于知识库204中的数据及根据一个或多个逻辑模块202执行的动作,向用户提供输出。
本发明的一方面允许使用包括过程化和说明性语言的各种语言来撰写逻辑模块202。这样,应用开发者就可撰写源文件,利用不同语言来最佳地表示要执行的特定任务并因此利用每种语言所提供的特征。例如,XML源文件可包括语义对象的声明,而C#源文件则可包括在XML源文件中声明的语义对象上执行的动作。这样,类定义可跨若干个以不同语言创作的源文件“分布”(即可访问)。在一实施例中,源文件可在诸如公共语言运行时(CLR)之类的共享运行时环境中实现。
图3示出了编辑用过程化和说明性语言写成的逻辑模块的框架。编译器222翻译来自至少一个过程化逻辑模块224和至少一个说明性逻辑模块226的编码。在一实施例中,编译器222将模块224和226的每个模块中的编码转换成处理器可读的机器语言。在另一实施例中,多个过程化和说明性模块也可被编译器222使用和编译。例如,过程化逻辑模块224包括定义在说明性逻辑模块226中的语义对象上执行的动作的编码。例如,动作可用诸如C#的过程化语义编码,而语义对象可用诸如XML的说明性语言定义。
在本方面的一实施例中,过程化逻辑模块224包括“部分类”标定。部分类标定或参考向编译器222通报该具体类跨越了多个源文件。作为结果,在说明性逻辑模块226中声明的特性、方法和/或事件处理器不必在过程化逻辑模块224中重复,那么编译器222将不会因为特性、方法和/或事件处理器未出现在过程化逻辑模块224中而中断编译。
下面用XML写成的编程码声明了包括至少一个“foo2”类型的槽“Slot1”的一个“foo1”类型的类“Class1”。取决于使用“Class1”的特定应用,其它槽和声明也可应用在此编码中。
<Class1 type=“foo1”>
<Slot1 type=“foo2”max=“10”/>
…</Class1>
假设“Class1”声明如上,则包括诸如提供如下的编码的过程化编程模块可写入“Class1”的访问槽。例如,下面的编码例示了一部分类“Class1”,它向编译器通报另一源文件包含了“Class1”的声明。下面的编码包括一占位变量“noDoubt”,以保持“Class1”过程使用的数据。作为示例,“Class1”中的“Slot1”被过程“Slot1.Count()”访问,如下所示。
public partial class Class1SemObj{public SemObj noDoubt;∥clearly a place holder,not a slotpublic void Evaluate (){int size=Slot1.Count();∥access Slot1 defined in XML…∥focus on implementing domain logic herenoDoubt=Slot1
;}}图4图示了一示例性应用,其中过程化逻辑模块在语义对象上执行动作,而该语义对象未在过程化逻辑模块中声明。在此例中,过程化逻辑模块包括机票预订模块250、旅馆预订模块252和租车预订模块254。过程化逻辑模块250、252和254的每一个都包括指向语义对象256的部分类标定,该对象可在例如单独的“声明”XML源文件中声明。语义对象256包括模块250、252和254使用的旅行数据,包括旅行工具、出发城市、抵达城市、开始日期和/或结束日期。
语义对象256可通过使用部分类标定由每个过程化逻辑模块250、252和254访问。如此,应用开发者只需开发旅行语义对象256的一个实例。写在机票预订模块250、旅馆预订模块252和租车预订模块254中的编码可被执行,以执行在旅行语义对象256中的任意或所有数据元素上的动作。作为结果,应用以时间上高效的方式创作,其中该方式可减少重复声明,并因此防止集成过程化和说明性逻辑而引起的错误。
仍参照图2所示系统,在一示例性实施例中,用户将“Schedule a flight fromSeattle to Minneapolis next Tuesday(安排下星期二从西雅图飞往明尼阿波利斯)”的自然语言输入提供给接口200。在此例中,诸如华盛顿州Redmond微软公司提供的SAPI5.2语音应用程序接口可用来标识自然用户输入中的语义对象。该输入可与语义标记相关联(即串行化(serialized))形成对应于诸如语义标记语言的语言格式,以填充图4的旅行语义对象256。例如,语音应用程序接口可提供如下输出;<sml text==“Schedule a flight from Seattle to Minneapolis next Tuesday”confidence=“90”>
<TravelSemanticObject text=“flight”>
<TravelMeans type=“airline”>
<DepartureCity type=“airport code”>SEA</DepartureCity>
<ArrivalCity type=“airport code”>MSP</ArrivalCity>
<StartDAte type=“date”>April 27</StartDate>
<TravelMeans>
<TravelSemanticObject>
</sml>
然后,旅行语义对象256的槽可至少部分地被自然语言输入的信息填充。如果需要,接着可利用与旅行语义对象256相关联的规则和/或语义模式来向用户提示剩下的未知信息,诸如这里的旅行结束日期。使用旅行语义对象256槽中的信息,机票预订模块250可被实例化(instantiated),以访问知识库204提供机票价格、空座率等等。另外,旅馆预订模块252和租车预订模块254可被实例化,在无需相应过程化编程模块中进一步声明旅行语义对象256的情况下,基于旅行语义对象256提供可能的旅馆和租车预订。如此,用单个声明,旅行语义对象256就可被多个过程化编程模块访问。
以上提供的诸示例性实施例实际上被大大简化了,并且是被用来说明本发明的操作的。它们说明了可扩展到更加复杂对象分级的本发明操作。当自然语言表达不是琐碎的,语义对象树可用以适当形式将其传送到逻辑模块202的方式来充分捕捉某一表达的含义。
本发明因此提供了一种功能强大的操作工具,它允许语义对象使用诸如XML的说明性编程语言或诸如C#或C++的过程化编程语言的众多编程语法来声明。这种框架因此很适合多种过程化编程模块无需语义对象的多次声明就可利用说明性模块,且反之亦然。过程化模块利用对象的属性、特性、方法和事件处理器,使单个区域中的过程化模块得以更简便地制作。
尽管参照具体实施例对本发明进行了说明,本领域技术人员将理解形式和细节可作改变,不背离本发明的精神和范围。
权利要求
1.一种带有指令的计算机可读介质,当指令在计算机上实现时致使计算机处理信息,所述指令包括一说明性逻辑模块,适于定义至少有一个语义槽的语义对象;以及一过程化逻辑模块,适于定义在参照所述说明性逻辑模块的所述语义对象上执行的动作。
2.如权利要求1所述的计算机可读介质,其特征在于,所述说明性逻辑模块使用XML、LISP和Prolog中至少之一来实现。
3.如权利要求1所述的计算机可读介质,其特征在于,所述过程化逻辑模块使用C、C++、Java和C#中至少之一来实现。
4.如权利要求1所述的计算机可读介质,其特征在于,所述指令还包括一第二过程化逻辑模块,适于定义在参照所述说明性逻辑模块的所述语义对象上执行的动作。
5.如权利要求1所述的计算机可读介质,其特征在于,所述说明性逻辑模块适于定义分级结构中的关系语义对象模式。
6.如权利要求1所述的计算机可读介质,其特征在于,所述语义对象包括多个槽。
7.如权利要求1所述的计算机可读介质,其特征在于,它还包括一编译器,适于将所述说明性逻辑模块和所述过程化逻辑模块转换成处理器可读的机器语言。
8.如权利要求1所述的计算机可读介质,其特征在于,它还包括一接口,用于接收用户的自然语言输入。
9.如权利要求8所述的计算机可读介质,其特征在于,所述说明性逻辑模块的至少一个槽适于被所述自然语言输入的至少一部分所填充。
10.如权利要求9所述的计算机可读介质,其特征在于,所述过程化逻辑模块在已被填充的所述至少一个槽上执行一动作。
11.如权利要求9所述的计算机可读介质,其特征在于,所述接口适于基于已被填充的所述至少一个槽来访问知识库。
12.一种编译应用的方法,其特征在于,它包括标识在一过程化逻辑模块中的、对应于一说明性逻辑模块的一标定;以及访问所述说明性逻辑模块中的一语义对象,以在所述过程化逻辑模块中执行动作。
13.如权利要求12所述的方法,其特征在于,它还包括将所述说明性逻辑模块和所述过程化逻辑模块转换成处理器可读的机器语言。
14.如权利要求12所述的方法,其特征在于,多个过程化逻辑模块包括所述对应于所述说明性逻辑模块的标定。
15.如权利要求12所述的方法,其特征在于,它还包括声明多个在分级结构中的关系语义对象。
16.如权利要求12所述的方法,其特征在于,所述标定是部分类标定。
17.一种处理自然语言输入的过程化逻辑模块,其特征在于,它包括一标定,对应于定义有至少一个槽的一语义对象的一说明性逻辑模块;以及一过程化编码,适于使用所述语义对象在所述说明性逻辑模块上执行动作。
18.如权利要求17所述的过程模块,其特征在于,所述模块还适于使用所述语义对象和所述至少一个槽访问知识库。
19.如权利要求17所述的过程模块,其特征在于,所述标定是指向所述语义对象的部分类标定。
20.如权利要求17所述的过程模块,其特征在于,所述语义对象定义多个槽。
21.如权利要求17所述的过程模块,其特征在于,所述标定对应于排列在一分级结构中的多个语义对象。
22.一种处理自然语言输入的计算机可读介质,其特征在于,它包括多个过程化逻辑模块,其中每个过程化逻辑模块分别包括对应于定义排列在一分级结构中的多个语义对象的一说明性逻辑模块的标定,每个语义对象包括可被所述自然语言输入所填充的多个槽。
23.如权利要求22所述的计算机可读介质,其特征在于,每个标定都是部分类标定。
全文摘要
本发明涉及一种带有指令的计算机可读介质,当指令在计算机上实现时促使计算机进行信息处理。该指令包括适于定义至少有一个语义槽的语义对象的说明性逻辑模块,以及适于定义在参照说明性逻辑模块的语义对象上所执行动作的过程化逻辑模块。
文档编号G06F9/45GK1645318SQ20041006039
公开日2005年7月27日 申请日期2004年12月22日 优先权日2004年1月22日
发明者洪小文, 王冠三 申请人:微软公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1