语法创建系统的制作方法

文档序号:6603074阅读:182来源:国知局
专利名称:语法创建系统的制作方法
技术领域
本发明一般涉及上下文无关文法。本发明尤其涉及用于创建这种语法的创建系统。
背景技术
基于语义的稳健的理解技术已经被广泛应用于人机对话系统中。事实上,在口语理解领域工作了多年之后,它已经成了最具有竞争力的技术之一。但是,该技术也有许多缺点。主要的缺点之一是要求有在特定领域语法的人工开发方面的专门技术。这被认为是众多开发者在建立对话系统过程中所面临的一个主要障碍。
研究人员试图解决这一问题。例如,一些研究人员多年来一直在致力于尝试开发数据驱动的自动语法推理。但是,由于复杂目标语法的稀少数据的根本问题,所以在该类型系统方面的成功极为有限。
一种语义上下文无关文法(CFG),如句法CFG,定义了从单独的单词到组成部分的合法组合,以及从组成部分到句子的组合。此外,语义CFG必须定义特定领域中的概念以及那些概念之间的关系。正是这种变化的额外维度使得需要为每个新的领域开发一种语法。
把这些应用中的语义信息定义成语义模型也是很普遍的。语义模型常常用于很多不同的目的。例如,语义模型可以作为对语言启用应用的说明。换言之,一旦定义了语义模型,语法和应用逻辑开发可以根据语义模型同时进行。语义模型还在对话管理中扮演着重要的角色。另外,从语义模型不指定用来表达概念的语言表达式这一方面而言,语义模型和语言无关。因此,它不仅被用于语言启用应用,还被用于集成从多种模式来的输入,如鼠标点击事件。因此,在很多这样的应用中,语义模型必须被创建,并且在开发CFG之前必须已经存在。

发明内容
一种语法创建系统使用多个信息源来帮助创建语法。这产生了用相对较小的数据量半自动地推导出的语义语法。
在一个实施例中,首先写出语义模型,再从该模型自动地推导出一种上下文无关文法(CFG)模板,使得继承了语义模型的语义限制(FG模拟还是呈现出结构的一般化)。
在另一个实施例中,本发明采用语义注释使语法分析器的学习专注于感兴趣的地方。本发明可以进一步使用句法限制来减小语法开发期间的学习空间。此外,本发明可以高效的方式利用预先存在的库语法来开发语法,如使用拖放技术。


图1是仅形成本发明的环境的一个实施例的个人计算机的框图。
图2是展示了根据本发明的一个实施例说明上下文无关文法的创建的数据流程图。
图2A展示了上下文无关文法的语法分析树。
图2B详细显示了图2中的表达式注释块212的数据流程。
图6A展示了根据本发明一实施例的具有树叶节点的语法分析树。
图3-11是展示了根据本发明的一个实施例的创建系统的工作的屏幕画面。
具体实施例方式
本发明是用于帮助创建环境无关语义语法的创建系统。该系统可以在计算机设备上实现,并被实现成一种方法。图1仅是一个可以使用本发明的示范环境的展示实施例。当然,也可以使用其它的环境。
图1展示了可以在其上实现本发明的适合的计算机系统环境100的例子。计算机系统环境100只是合适的计算机环境的一个例子,并且不试图对本发明的使用或功能范围提供任何限制。计算机环境100也不应该被解释成对于示范工作环境100中所展示的任何一个部件或者部件的组合有任何的依赖或要求。
本发明也可以基于一些其他的通用或专用计算机系统环境或配置来工作。适于本发明所使用的一些熟知的计算机系统、环境和/或配置的例子包括但不限于个人计算机、服务器计算机、手持式或膝上型设备、微处理器系统、基于微处理器的系统、机顶盒、可编程消费电子器件、网络PC、微型计算机、大型机、包含上述任一种系统或设备的分布式计算机环境以及类似。
本发明可以在由计算机执行的计算机可执行指令(如程序模块)的大环境下进行描述。通常,程序模块包括进行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等。本发明还可以在分布式计算机环境中来实践,其中任务是由通过通信网络链接的远程处理设备来进行的。在分布式计算机环境中,程序模块可以位于包括记忆存储设备的本地或者远程计算机存储媒介中。
参考图1,用于实现本发明的示范系统包括以计算机110的形式出现的通用计算机设备。计算机110的组件可以包括但不限于处理单元120、系统存储器130以及把包括由系统存储器的各系统组件耦接至处理单元120的系统总线121。系统总线121可以是若干类型总线结构中的任一种,包括存储总线或存储控制器、外围总线以及使用多种总线结构中的任一种的本地总线。作为例子而不是限制,这样的结构包括工业标准结构(ISA)总线、微通道结构(MCA)总线、扩展工业标准结构(EISA)总线、视频电子标准协会(VESA)本地总线以及外围组件互联总线(也被称为夹层总线)。
计算机110一般包括多种计算机可读媒介。计算机可读媒介可以是计算机110能够访问的任何可用媒介,并且包括易失性和非易失性媒介,可拆卸和不可拆卸媒介。作为例子而不是限制,计算机可读媒介可以包括计算机存储媒介和通信媒介。计算机存储媒介包括以任何方法或技术实现的,用于存储注入计算机可读指令、数据结构、程序模块或其他数据等信息的易失性和非易失性、可拆卸和不可拆卸媒介。计算机存储媒介包括但不限于RAM、ROM、EEPROM、闪存或其他存储技术、CD-ROM、数字多用途光盘(DVD)或其他光盘存储、盒式磁带、磁带、磁盘存储或其他磁存储设备或可用于存储所需的信息并可由计算机110访问的任何其他媒介。通信媒介一般在如载波等调制数据信号或其他传输机制中把计算机可读指令、数据结构、程序模块或其他数据具体化,并包括了任何信息传递媒介。术语“调制数据信号”指的是让它的一个或多个特征以信号中的编码信息的方式来设置或改变。作为例子而不是限制,通信媒介包括有线网络或直接线缆连接等有线媒介,和声波、RF、红外以及其他无线媒介等无线媒介。计算机可读媒介的范围还应该包括上面的任意组合。
系统存储器130包括易失性和/或非易失性存储器形式的计算机存储媒介,如只读存储器(ROM)131和随机存取存储器(RAM)132。基本输入/输出系统133(BIOS)包含有基本的例程,它们有助于在计算机110的单元之间传输信息(如在启动时),BIOS一般被存储在ROM 131中。RAM 132一般包含有处理单元120可以立即访问的和/或目前正在运行的数据和/或程序模块。作为例子而不是限制,图1展示了操作系统134、应用程序135、其他程序模块136和程序数据137。
计算机110还可以包括其他可拆卸/不可拆卸的易失性/非易失性计算机存储媒介。仅作为例子,图1展示了从不可拆卸非易失性磁媒介读取或写入的硬盘驱动141、从可拆卸非易失性磁盘152读取或写入的磁盘驱动151以及从CDROM或其他光媒介等不可拆卸非易失性光盘读取或写入的光盘驱动155。可以被用在示范操作环境中的其他可拆卸/不可拆卸的易失性/非易失性计算机存储媒介包括但不限于盒式磁带、闪存卡、数字多用途光盘、数字视频磁带、固态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。其他输入设备(未示出)可以包括操纵杆、游戏手柄、圆盘式卫星电视天线、扫描仪或类似。这些以及其他的输入设备通常通过耦接到系统总线的用户输入接口160被连接到处理单元120,但也可以用其他接口和总线来连接,如并行端口、游戏端口或通用穿行总线(USB)。监视器191或者其他类型的显示设备也可以经由视频接口190等接口被连接到系统总线121。除了监视器之外,计算机还可以包括其他的外围输出设备,如扬声器197和打印机196,它们可以通过输出外围接口195连接。
计算机110可以运行在使用到远程计算机180等一个或多个远程计算机的逻辑连接的联网环境中。远程计算机可以是个人计算机、手持式设备、服务器、路由器、网络PC、对等设备或其他公共网络节点,并且一般包括上面关于计算机110所描述到的很多或所有单元。图1中所描绘的逻辑连接包括局域网(LAN)171和广域网(WAN)173,但是也还可以包括其他网络。这样的联网环境在办公室、企业范围的计算机网、内联网和因特网中是非常常见的。
当被用于LAN网络环境中时,计算机110通过网络接口或适配器170被连接到LAN 171。当被用于WAN网络环境中时,计算机110一般包括调制解调器172或其他用于建立WAN 173(如因特网)上的通信的装置。调制解调器172可以是内部的或者是外部的,它可以经由用户输入接口160或其他合适的机制被连接到系统总线121。在联网的环境中,和计算机110相关的程序模块或其部分可以被存储在远程记忆存储设备中。作为例子而不是限制,图1把远程应用程序185显示成驻于远程计算机180上。可以注意到所显示的网络连接是示范性的,并且可以使用其它的在计算机之间建立通信链路的装置。
图2是展示了根据本发明的一个实施例的上下文无关文法的生成的数据流程图。图2中所示的不同组件可以示范性地实现在图1中所示的各组件中。图2被提供作为综览,而参考图3-10,将详细讨论单独的数据流程步骤。图2显示了系统198,它包括前端,或者说用户接口(UI)224以及后端199。后端199包括模板语法生成组件204、语法分析器208、学习器218和语法管理器230。
运行时,首先写出系统的语义模型。块200指出了这一步。语义模型是特定领域应用中不同概念之间的关系的相对高层且相对简单的语义描述。例如,可能需要数小时来编写相对复杂应用的语义模型。语义模型通过图2中的块202展示。
语义模型不是语法。它不足以用模型来分析自然语言输入。为了正确地解释自然语言表达式的含义,一个语法分析器被用来根据上下文无关文法(CFG)在表达式和模型之间进行映射。例如,模型可以包含下列语义类的定义<entity name=”ApptByAttributes”type=”Appointment”>
<slot type=”Time”name=”StartTime”/>
<slot type=”Time”name=”EndTime”/>
<slot type=”Person”name=”Attendees”/>
</entity>
该语义类简单地定义了语义概念“ApptByAttributes”,它是引用“Appointment”(“ApptByAttributes”的类型)的特定方式。为了用该概念来引用一次已有的约会,说话者必须指定概念空位(slot)中的一个或多个,以从其它已有的约会中把它区分出来。例如,“the meeting from 3 to 5 withAlex(3点到5点和Alex会面)”就是该概念的一个表达式。为了正确地理解该短句,我们需要识别它的语义结构,语义结构把短句中的单词映射到语义类中的组成部分<entity name=”ApptByAttributes”type=”Appointment”>
<slot type=”Time”name=”StartTime”text=’3’/>
<slot type=”Time”name=”EndTime”text=’5’/>
<slot type=”Person”name=”Attendees”text=’Alex’/>
</entity>
为了识别上面的正确解释,我们需要使得语义分析器知道“3”和“5”是“Time”,“Alex”是“Person”,且在该语境中“3”是“StartTime”,“5”是“EndTime”。此外,语法从诸如“上午9点至下午3点的航班”等其他也包含时间表达式的表达中区分出该表达,并且只将前面的表达接受为“ApptByAttributes”。类似于此的一个语法例子如下<ApptByAttributes>→会见<ApptAttributes>
<ApptAttributes>→<ApptAttribute><ApptAttributes>
<ApptAttributes>→<ApptAttributes>
<ApptAttribute>→从<Time>StartTime<ApptAttribute>→到<Time>EndTime<ApptAttribute>→与<Person>Attendee<Person>→Alex|john|Dave|.....
<Time>→1|2|3|4|5|.....
给出了前述的语法,一种稳健的语义分析器可以把输入的表达映射入图2A所示的CFG语义分析树203。前述的语义结构可以从该CFG语义分析树被构建。该语义结构是对隐藏关于产生该树的CFG规则的应用的所有细节的CFG语义分析树的抽象。
很明显,该语法包含了详细的语言学信息,它们描述了如何表达式模型中的概念以及如何用自然语言把简单的概念组合成更复杂的一种概念。因此语法开发的任务要远难于在语义模型中描述某领域的概念关系。但是,用从模型、语法库和注释样本来的信息,可以非常大地改进语法产生过程。
一旦编写好了模型202,可以如下面所讨论的用自动语法模板生成组件204从该模型产生模板CFG。模板CFG从语义模型继承了语义限制。这是通过假设在CFG中把较小单元的集成引导成较大单元语言学限制对于在人机互动中所使用的语言是不变的来完成的。在模板CFG中,每个语义类具有相应的CFG非终结符,还有很多限制语言结构的非终结符和预终结符。很多预终结符起初是占位符,并且不与任何终结符相关。因而,模板CFG没有被非常充分地明确。块206指出了模板语法。
可以用两种方式来扩展未充分明确的模板语法206。第一种是通过使用语法库。语法管理器230可以访问预先存在的语法的语法库232。语法管理器230根据通过UI 224的用户输入将语法库232中的特定语法和模型中的概念相关(因此还和对应于这些概念的模板CFG中的非终结符相关)。这样的库语法可以包含例如和领域无关的低级语义实体,如可以在不同应用中共享的日期、时间、持续长度、邮寄地址、货币、数字、百分数等。
让模板语法206更具体的第二种方式是通过用注释样本进行语法学习。这可以在稳健的语义分析器和训练语句的语义注释的帮助下来完成。一旦模板语法生成器204发展出了模板语法206,且语法管理器230用语法库扩展了模板语法206,就准备好分析输入的训练语句了。训练语句(或训练表达式)可以有创建者写入,或者从训练表达式数据库中得到,并由图2中的块210代表。根据本发明的一个实施例,创建者通过UI 224处合适的输入用训练语句的语义结构来注释这些训练语句。由于语义结构是CFG分析树结构的抽象,所以根据模型注释句子比直接注释CFG分析树结构要容易得多。块212指出了训练语句的注释,而块214指出了注释的表达。
因为模板语法206没有被非常充分地明确,所以用模板CFG生成的语义分析是相当模糊的,且性能通常是不可接受的。注释的数据通过只使符合语义注释的那些语义分析树结构有效而对此进行了补偿。在语义分析器发现符合抽象语义结构的语义分析216之后,它可以通过把语句中的终结词和语义分析树中的预终结符并列来从CFG语义分析树学习CFG规则。抽象语义结构的注释通过固定语句中的词和对应于语义注释中的语义类的那些非终结符的并列从而在CFG语义分析树结构中提供一些锚接点。这种固定很大程度地减小了对输入单词和没有在语义结构中注释的模板语法的预终结符之间的可能并列的搜索空间,这样学习组件可以有效地学习单词和预终结符之间的并列。学习组件还调用句法限制220,这样可以进一步减小可能的单词/预终结符并列的搜索空间。从学习到的并列,通过学习组件218可以产生新的CFG规则228,并随之被语法管理器230用于扩展模板语法,以使其更具体。
即使有这些限制,仍然有一些必须由学习器218解决的额外的不明确性。为了解决这些不明确性,学习器218生成用户查询或提示222,它被传递到UI224以显示给用户。用户然后可以提供对于那些查询的回答226。回答226被提供给学习组件218,使得学习组件218可以根据指明的单词/预终结符并列输出学习后的CFG 228。应该注意,可以进行附加的学习来重复该过程。此时,学习后的CFG 228中的学习到的CFG规则被用来扩展模板语法206。这样的扩展可以得到更加具体的新语法。新语法随后被语义分析器208用于分析新句子和新表达式,以发现它们的注释;并且学习器218可以从新的注释进行学习,以继续改进语法。
在一个实施例中,可以半自动地获得对句子或表达式的注释。图2B展示了图2中的表达式注释块212的详细数据流程。该开发工具的用户可以用稳健的语法分析器208和目前所学习到的语法(最初是用语法库扩展的模板语法)来分析句子。该分析器生成CFG分析树,并把它映射到语义结构注释241。该注释随后通过UI 224被显示给用户。由于该阶段的语法是未充分明确的,所以分析器208可能会犯错。用户可以在块242中通过UI 224纠正错误,以产生纠正后的注释214,纠正后的错误随后再被分析器用来生成符合纠正后注释的CFG分析树。从该CFG分析树,可以提取并列候选,并将其送到学习器,以识别正确的并列。
图3-11是更好地展示了根据本发明的语法创建系统的运行的屏幕画面。
用户接口(UI)不需要采用图3-11中所展示的形式。然而,这些图仅仅是示范性的。在该实施例中,UI显示包括标有Parse,Save Ann,Learn以及Next的按钮。当例如指示和点击设备激发Next按钮时,它使得下一个训练语句或训练表达式(训练表达式不需要是完整的句子)显示在标记为“Sentence To BeAnalyzed”的范围之中。Parse按钮使得句子被递给分析器208;分析器208生成语义注释。Save Ann按钮使得一个被注释的训练语句被保存,而Learn按钮使得在语法开发者纠正了注释之后,学习器218对分析器生成的注释进行学习。
图3是显示模型300和一组库语法232的屏幕画面。数字304所指出的符号代表了对象类型,而数字306所指出的符号代表了对象类型代表了语义类的实际名,名字紧跟在它之后。因此,CancelAppt是包括必须由类型为ExistingAppt的对象(例如类型为ExistingAppt的语义类ApptByAttribute的实例化)填充的空位的语义类名。语义类ApptByAttribute包括五个空位,其中两个是日期(StartDate和EndDate),两个是时间(StartTime和EndTime),一个标识People。
在为了产生语义注释而完成分析之前,将为该系统提供模型300;且模板语法生成组件204开发模板语法206。模板语法随后被提供给语法管理器230。可以用多种不同的方法来生成模板语法。为了说明的目的,下面将提供一种较短的例子。假设下面是语义模型中的概念定义的一个例子<entity type=”ExistingAppt”name=”ApptByAttributes”>
<slot type=”People”/>
</entity>
<command type=”ApptUpdate”name=”AddAttendee”>
<slot type=”People”/>
<slot type=”ExistingAppt”/>
</command>
在该例中,简化的语义类ApptByAttributes是有代表已有约会的参与者的一个空位的实体。它涵盖了这样的表达式“和Alex会面”。它的语义类型是ExistingAppt,意味着它是引用已有约会的很多不同方式中的一种。其他方式(语义类)包括ApptByAnaphora(如“那次会面”)。语义类AddAttendee是一个命令。它有两个空位,它们简单地表达式了可以把People加入ExistingAppt中。
为了给该模型开发模板CFG,假设把指导较小单元集成为较大单元的语言学限制对于人机互动中所用的语言是不变的。改变的是特定领域的语义和对概念的语言学表达式。因此,这使得可以建立从语义模型继承了语义限制的模板CFG。因此,上面的模型可以自动地被解释成下列的模板CFG
<T_ExistingAppt>→<C_ApptByAttributes> (1)<C_ApptByAttributes>→{<ApptByAttributeMods>}<ApptByAttributeHead>
{<ApptByAttributeProperties>} (2)<ApptByAttributeProperties>→<ApptByAttributeProperty>
{<ApptByAttributeProperties>} (3)<ApptByAttributeProperty>→<ApptByAttributePeopleProperty> (4)<ApptByAttributePeopleProperty>→{<PreApptByAttributePeopleProperty>}<T_People>
{<PostApptByAttributePeopleProperty>} (5)<ApptByAttributeHead>→NN(6)<PreApptByAttributePeopleProperty>→.* (7)<PostApptByAttributePeopleProperty>→.* (8)<T_UpdateAppt>→<C_AddAttendee>
<C_AddAttendee>→<AddAttendeeCmd>{<AddAttendeeProperties>}<AddAttendeeCmd>→.*<AddAttendeeProperties>→<AddAttendeeProperty>{<AddAttendeeProperties>}<AddAttendeeProperty>→<AddAttendeePeopleProperty>
<AddAttendeeExistingApptProperty>
<AddAttendeeExistingApptProperty>→{<PreAddAttendeeExistingApptProperty>}<T_ExistingAppt>
{<PostAddAttendeeExistingApptProperty>
<AddAttendeePeopleProperty>→{<PreAddAttendeePeopletProperty>}<T_People>
{<PostAddAttendeePeopletProperty>
<PreAddAttendeeExistingApptProperty→.*<PostAddAttendeeExistingApptProperty→.*<PreAddAttendeePeopleProperty→.*<PostAddAttendeePeopleProperty→.*在该例中,在右面空白处用数字标出了规则。一个实体,如ApptByAttribute,包括头部、出现在头部前面的可选(带括号)修饰符(如,“Alex的会面”)以及规则2所展示的跟在头部后面的可选(带括号)属性(如,“和Alex会面”)。修饰符和属性两者是递归地定义的,使得它们最终如规则3和4所示的引入不同空位的顺序。
每个空位是用可选的先导和结尾括起来的,如规则5所示。头部、先导和结尾最开始是规则7和8中所展示的(.*)占位符。一些占位符是用部分语言限制(如,头部必须是NN(名词)),如规则6所示。
对于类似于AddAttendee之类的命令,该模板开始于一个命令部分<AddAttendeeCmd>,接下来是<AddAttendeeProperties>。剩下来的非常类似于对象的模板规则的相应部分。该模板设置了语法的结构框架。因此,语法学习的任务变成了从例子学习对于像头部、命令、先导等预终结符之类的表达式。不进行学习,占位符可以匹配任何事物。但是,这样的性能是无法被接受的,因为语法的未充分明确性导致了不明确性。
非终结符<T_People>是和应用有关的,并因此将由开发者以例如名字列表的形式提供。
如果语义分析器208已经具有继承了模型的句法限制的模板语法(如上所述地被开发),用户现在将可以用已有的库语法来增强语法。这可以通过在屏幕上把库语法从库302拖至(如通过用指示和点击设备)合适的对象类型或语义类来完成。
但是,根据库语法232的简化列表,创建者可能难以确定那些库语法中实际包含了什么。因此,通过输入合适的用户输入,用户可以使得库语法232中的一个在生成模式下运行,并因此生成该特定CFG支持的语句段或表达式。在一个示范实施例中,用户简单地只需要把点击光标放在库语法232列表中的语法上,并用右键点击,那么如图4所示将出现一个显示框303,它显示了用户所选的CFG支持的语句段或表达式例子。在所示的例子中,框303为“PreciseTime”库语法生成,并显示了用该语法生成的许多不同的表达式。
图5所显示的屏幕画面和图3中所示的屏幕画面基本相同,除了左边的模型已经用从列表232来的多个库语法进行了扩展。为了发现库语法232列表中的每个语法中的各语义类,用户可以简单地用右击代表库语法的任一图标。在一个示范例中,用户已经点击了Date语法、People语法和Time语法。随后将显示包含在每个语法中的语义类。用户然后可以从列表232把特定语法类拖至屏幕左手边的模型,并将它们放置(通过放下它们)在恰当的对象类型或空位类型中。
在图5中,可以看到用户把Weekday库语法305从列表232拖至显示在图5左边的语法。还可以看到用户把PreciseTime语法307从列表232中拖出,并也将它放置在显示在图5左边的语法中。最后,可以看到用户还把PeopleList语法309从语法列表232拖至左边。
通过把语法从列表232拖放至屏幕5左边的正在开发的语法的模型,这使得可以把合适的用户输入从UI 224(图2)提供至语法管理器230。语法管理器230随后将所选的库语法和系统开发的CFG相关。
图6展示了本发命另一个包括注释的实施例。为了注释训练语句或训练表达式,用户首先点击用户界面上的Next按钮,使得新的训练语句或训练表达式被显示在题为“被分析的句子”的输入框内。当然,用户也可以简单地通过打字输入句子。在任一种情况,一旦下一个训练语句或训练表达式出现在了输入框中,用户可以把该句子拖放至显示在屏幕左手边的特定语义类。
这使得UI 224(图2)发送命令到分析器208,以用特定的语义类分析段。分析器208随后把句子分析成CFG分析树,CFG分析树随后被抽象成语义结构注释,图6中显示了该注释的例子,其中分析器208通过用词语“meeting”填充CancelAppt语义类中的ExistingAppt空位已经发现了正确的语义结构。
另一个注释例子可能会有所帮助。注释提供了必须符合的并列中的锚接点。因此,它们划分了并列的搜索空间,并使得学习器专注于本地感兴趣的地方。例如,假设使用下列的训练语句。“安排和Peter在下午3点会面”(“Schedule a meeting with Peter at 3 PM”)。且进一步假设输入了下列的注释<command name=”NewMeeting”type=”ApptUpdate”>
<slot type=”Time”name=”StartTime”text=”3 PM”/>
<slot type=”Person”name=”Attendees”text=”Peter”/>
</command>
然后,分析器遵守这些限制,并生成图6A中所示的具有下列的树叶节点的分析树(不约定把终结词映射到预终结符,除非这样的映射在注释中被明确了)ScheduleMeetingCmd PreAttendeeProperty|Attendee/Peter|PostAttendeeProperty PreTimeProperty|Time/3 PM|PostTimeProperty注释的限制把可能的并列空间划分成三个部分,这样“Schedule a meetingwith”只能匹配“ScheduleMeetingCmd”和“PreAttendeeProperty”,“at”只能匹配PostAttendeeProperty和PreTimeProperty。因此,注释过程提供了被认为是正确的锚接点,并显著地减小了学习器所要求的搜索空间。
学习器还可以用句法线索220(图2)来把单词并列到预终结符。例如,在一个实施例中,介词和限定词只能和它们后面的词组合。因此,“at”只能和“PreTimeProperty”并列。因此,将引入下面两个规则PreTimeProperty→at句法限制可以依据语言的一部分,或者也可以依据其他希望的句法限制。
图7展示了另一种方式,为了产生语法学习的注释用户可以用这种方式强迫分析器208分析没有注释的句子。首先用户简单地点击Next按钮,在标有“将被分析的句子”的输入框中将出现新的训练表达式。用户随后点击Parse按钮,从UI 224将生成将该训练语句传送到分析器208的输入,并使得它分析该句子。CFG分析随后被抽象成语义结构,并在330显示该结构。可以看到分析器208已经正确地分析了该训练语句。因此,用户可以通过按下Learn按钮让学习组件218从该分析中进行学习。假设分析中没有剩下任何的不确定性,学习组件218将从分析器208生成的分析中学习额外的关系。在学习了关系之后,学习器218生成代表那些关系的CFG规则。
图8展示了另一个实施例,其中用户可以通过纠正分析来进一步注释训练语句。在图8中,假设用户已经按下了Next按钮来获得新的训练语句“Newmeeting with Peter Mau at five(五点钟和Peter Mau的新会面)”。还假设用户已经把该句子拖至NewAppt语义类。分析器208因此尝试用特定类型或语义来分析该句子,并输出一个抽象的语义结构332。可以看到分析器已经犯了一个错误。该分析器把小时(“five”)错误地分析成了EndTime,而不是所引用的会面的StartTime。这可以被创建者纠正。
图9展示了图8中所示的分析树是如何被纠正的。在图9中,用户在语义类NewAppt上点击了右键,这使得UI显示该语义类的所有空位,包括StartTime。用户随后拖出被错误分析的小时,并把它放在StartTime空位上。这样的纠正因此正确地注释了小时,使得语义注释被修改成如336所示。用户可以因此按下Learn按钮,使得学习组件从该正确分析进行学习。
当学习组件尝试从该注释进行学习并生成需要的CFG规则时,它将遭遇到训练语句中未注释部分的不确定性。例如,学习组件仍然不具有允许它确定应该把“new meeting with”放在语法并列中的哪个地方的信息。分析器不能确定如何在该文本段中划分NewAppt的命令和People的修改符。换言之,系统无法知道“New meeting with”中的哪些对应于新会面的命令,以及哪些字修饰Peter这个人。因此,该系统允许用户进行选择。学习组件218生成图10中所示的用户提示222。在用户提示中,要求用户用恰当的分段来标识特定的文本字串,这些分段是用文本段中放置在某些地方的垂线来指明的。这基本上使得用户进一步注释训练语句,使得学习器可以没有疑义地完成分析。
当然,为了完成该纠正过程,在图2中由UI 224生成恰当的输入,以输入到系统中的各组件。在学习器完成了注释学习之后,用户随后可以通过简单地按下Parse按钮来再一次要求系统分析相同的句子,并且将生成图11中所示的分析树340,以展示该系统已从以前生成的注释分析进行了学习。
还应该提一提另一个特点。根据本发明的创建工具展示性地包括了可选语法输入框342。通过点击可选语法输入框,UI 224接受并显示随后将被显示的分析340中所用的特定语法。这使得用户确定了在分析运行过程中采用的是正确的语法。
应该注意UI 224可以按照多种不同的方式和系统198的剩余部分199互动。表1包括定义了UI 224和系统的剩余部分之间的互动的一个示范协议。当然,也可以使用其它或另外的协议。
表1[helpstring(“方法LoadSDL要求服务器加载语义模型[用语义描述语言]文件”)]HRESULT LoadSDL([in]BSTR SDLfname);[helpstring(“方法LoadGramLibrary通知FastLearner加载库语法。”)]HRESULT LoadGramLibrary([in]BSTR Libfname);[helpstring(“方法Save保存经学习的语法。”)]HRESULT Save( );[helpstring(“方法SaveAs将经学习的语法保存为指定文件。”)]HRESULT SaveAs([in]BSTR FileName);[helpstring(“方法ViewGrammar要求服务器显示经学习的语法。”)]HRESULT ViewGrammar( );[helpstring(“方法GetLibrarySample要求FastLearner生成n[输入参数]个库语法非终结符样本。用‘|’分隔输出样本。”)]HRESULT GetLibrarySample([in]BSTR NT,[in]int n,[out,retval]BSTR*Samples);[helpstring(“方法LoadGrammar加载预先学习的语法。第一个[输入]参数指定语法文件名。”)]HRESULT LoadGrammar([in]BSTR NT);[helpstring(“方法ParseSegment要求FastLearner分析把非终结符rootNT作为起始符号的句段。输出的是插入的分析树。”)]HRESULT ParseSegment([in]BSTR rootNT,[in]BSTR segment,[out,retval]BSTR*ParseTree);[helpstring(“方法Associate将CFG非终结符和语义模型中的空位相关。”)]HRESULT Associate([in]BSTR slot,[in]BSTR CFG_NT);[helpstring(“方法Unassociate将CFG非终结符和语义模型中的空位去相关。”)]HRESULT Unassociate([in]BSTR slot,[in]BSTR CFG_NT);[helpstring(“方法LearnAnnotation让FastLearner开始从注释进行学习。如果FastLearner发现了它不能解决的歧义,输出参数fAmbi将为1。否则将为0。”)]HRESULT LearnAnnotation([in]BSTR sentence,[in]BSTR annotation,[out,retval]BSTR*fAmbi);[helpstring(“方法AskQuestion当分析出现歧义时,让FastLearner提问。如果fYNQ=1,它是Y/N问题。否则它是多选问题。‘/’被用来为多选问题分隔问题和选项。”)]HRESULT AskQuestion([out]int fYNQ,[out,retval] BSTR*question);[helpstring(“方法LearnFromAnswer把对所提问题的回答提供给FastLearner。如果问题是Y/N回答是0|1。否则将返回选项号(1...n)。如果仍然有歧义,输出的fAmbi为1。”)]HRESULT LearnFromAnswer([in]int answer,[out,retval]int*fAmbi);[helpstring(“方法BatchAnnotationLearning把包含注释句列表(每一行中有成对的句子字串和加括号的注释字串的列表)的文件发送给FastLearner以开始批量的学习。”)]HRESULT BatchAnnotationLearning([in]BSTR annoFile);[helpstring(“方法ParseWithType分析特定类型的段。用加括号的树表示REluts”)]HRESULT ParseWithType([in]BSTR type,[in]BSTR segment,[out,retval]BSTR*ParseTree);可以看到本发明提供了一个或多个显著的优点。其中之一是从CFG分析树结构中抽象了语义结构。虽然已有技术在语法学习中使用了句法,但句法注释和CF6是有关的;因此就显得太昂贵,并且容易出错。本发明只要求用户在模型的基础上注释句子,以生成语义注释,该语义注释相对于语言学CFG语法透明,并且可以由开发者在很好地理解他正在开发的应用的情况下简单地进行。
此外,本发明用分析器来引导注释。人工语义注释的一个公共问题是不一致性。例如,一些注释者把“at 5:00”注释成开始时间,而其他人则简单地把“5:00”注释成开始时间。通过减轻了创建者清楚地写出这些项目中的每一项这一任务,且通过代之以允许创建者简单地把文本的一个部分拖至语义类以及允许分析器用该语义文本分析文本,分析器将总是以相同的方式编写术语。换言之,分析器可以被配置成从不把术语“at 5:00”写成开始时间,并且随后把术语“5:00”写成开始时间。因此,本发明调用分析器来消除创建过程中的不一致性。
用分析器来引导注释不仅导致了提高的一致性,还节约了时间。例如,用户可以把整个句子或句段拖至一个语义类。分析器随后将用该语义类分析该句子或句段。这允许用户只在较高层次上进行注释(如在语义类层)并允许分析器进行较低层次的注释。
此外,本发明用注释来限制分析器。换言之,一旦做出了注释,分析器将知道应该根据注释激活哪一个非终结符。这为分析器显著地减小了分析训练语句时的搜索空间。
本发明还用处于生成模式的库语法来生成例子。这在确定库语法是否应该被用于特定应用中时是非常有用的。
此外,本发明从语义模型中开发了一种模板语法,它继承了语义模型的语义限制。模板语法提供了结构化的推广,使得学习的语法可以被用来对具有和训练数据中不一样的结构的新句子进行分析。由于模板语法遵从简单的范例,所以它的结构便于阅读和维护。用模板语法和库语法,分析器可以获得一种分析,该分析可以帮助用户为语法学习注释句子。
本发明还提示用户解决开发CFG过程中的不确定性。本发明进一步在学习过程中使用句法限制来进一步为学习减小搜索空间。
尽管参考特定实施例对本发明进行了描述,但是本领域的技术人员将意识到在不离开本发明的精神和范围的情况下做出形式上的和细节上的变化。
权利要求
1.一种为应用而构建经学习的上下文无关文法(CFG),其特征在于,包括为应用生成语义模型,该语义模型具有相关的语义限制;根据该语义模型生成模板语法,使得该模板语法继承和该语义模型相关的语义限制;以及通过用该模板语法分析训练语句构建经学习的CFG。
2.如权利要求1所述的方法,其特征在于,构建经学习的CFG包括通过根据语义模型注释获得的训练表达式来提供经注释的训练表达式,以提供一个或多个锚接点,这些锚接点是训练表达式和模板语法中的一个或多个预终结符之间的已知正确并列。
3.如权利要求2所述的方法,其特征在于,构建经学习的CFG进一步包括分析经注释的表达式,以产生符合锚接点的分析结果。
4.如权利要求3所述的方法,其特征在于,构建经学习的CFG进一步包括用模板CFG为训练表达式的除了锚接点处并列的部分外的剩余部分学习并列。
5.如权利要求4所述的方法,其特征在于,学习并列包括获得一组预先选择的句法限制;以及应用句法限制来为训练表达式的剩下部分学习并列。
6.如权利要求4所述的方法,其特征在于,学习并列包括用模板CFG中的预终结符把训练表达式中多个不同潜在词语并列标识成不明确性。
7.如权利要求6所述的方法,其特征在于,学习并列进一步包括提供输出查询给用户,该输出查询提示需要清楚的用户输入来消除不确定性的歧义;以及接收该清楚的用户输入。
8.如权利要求7所述的方法,其特征在于,提供输出查询包括提供潜在的并列作为多个用户可选并列选项。
9.如权利要求1所述的方法,其特征在于,进一步包括分析获得的训练表达式以产生分析结果;显示分析结果的抽象;以及接收纠正的输入,它指出用户对分析结果的纠正。
10.如权利要求9所述的方法,其特征在于,纠正输入注释至少一个锚接点,该至少一个锚接点是训练表达式和模板语法中的预终结符之间的已知正确并列。
11.如权利要求10所述的方法,其特征在于,接收纠正输入包括接收选择输入,选中分析结果中的训练表达式的错误并列部分;接收移动输入,指出用户把错误并列部分拖至分析结果抽象中的正确对象;以及接收放置输入,指出用户把错误并列部分放至分析结果抽象中的正确对象。
12.如权利要求11所述的方法,其特征在于,进一步包括重新分析训练表达式,以产生符合锚接点的新分析结果;以及显示新分析结果的新抽象。
13.如权利要求1所述的方法,其特征在于,构建经学习的CFG包括根据用户输入将至少一个预先已有的库语法和模板语法相关。
14.如权利要求13所述的方法,其特征在于,将至少一个预先已有的库语法和模板语法相关包括选择多个可用库语法中的一个;以及将所选库语法运行于生成模式,以生成所选库语法支持的至少一个表达式例子。
15.如权利要求13所述的方法,其特征在于,构建经学习的CFG包括同时显示语义模型的指示和可用库语法的指示;选择库语法中的一个;将所选库语法拖至语义模型中希望的位置;放下所选库语法;以及将所选库语法和模板语法相关。
16.一种构建经学习的上下文无关文法(CFG)的方法,其特征在于,包括为经学习的CFG生成语义模型;获得模板CFG;接收训练表达式;通过根据语义模型注释训练表达式来提供经注释的训练表达式,以提供至少一个锚接点,这些锚接点是部分训练表达式和模板CFG之间的已知正确并列;分析经注释的表达式来提供符合锚接点的分析结果;以及根据分析结果构建经学习的CFG。
17.一种用于开发特定领域的上下文无关文法(CFG)的系统,其特征在于,包括模板语法生成器,它接收语义模型并生成从该语义模型继承了语义限制的模板语法;注释接口,它接收指出了用户指定的锚接点的用户注释输入,锚接点是训练表达式的至少一部分和语义模型之间的并列;耦接到模板语法生成器和注释接口的分析器,它接收模板语法和用户注释输入,并分析该训练表达式以提供符合锚接点的分析结果;以及耦接到分析器的学习器,它根据分析结果学习特定领域的CFG。
18.如权利要求17所述的系统,其特征在于,进一步包括语法管理器,配置成访问预先已有的语法的语法库,接收用户相关输入,以及根据用户相关输入将所选预先已有的语法和经学习的CFG相关。
19.如权利要求18所述的系统,其特征在于,学习器被配置成将至少一个预先已有的语法运行于生成模式,以生成预先已有的语法支持的表达式例子。
20.一种生成上下文无关文法(CFG)的方法,其特征在于,包括生成未充分明确的模板CFG;根据模板CFG的抽象用一个或多个锚接点注释训练表达式,这些锚接点将训练表达式的部分和CFG中的预终结符并列;给出锚接点的情况下,用模板CFG分析训练表达式,以提供分析结果;除锚接点之外,还学习训练表达式和模板CFG的并列;以及将CFG规则加入到模板CFG,以反映经学习的并列和锚接点。
21.如权利要求20所述的方法,其特征在于,进一步包括接收指出了用户对分析结果的纠正的用户纠正输入。
22.如权利要求21所述的方法,其特征在于,学习并列包括获取预先已有的句法限制;以及通过限制必须为之学习和模板CFG的并列的训练表达式部分来将预先已有的句法限制应用于学习并列。
23.如权利要求21所述的方法,其特征在于,学习并列包括把用户对分析结果的纠正用作锚接点。
24.一种为应用领域中的应用生成上下文无关文法(CFG)的方法,其特征在于,包括生成未充分明确的模板CFG;显示应用领域的模型,而不是CFG;根据模型而不是模板CFG注释训练表达式,标识训练表达式和模板CFG之间的一个或多个并列点;用模板CFG分析训练表达式,以提供符合并列点的分析结果;学习训练表达式和CFG的并列;以及将CFG规则加入到模板CFG,以反映学习的并列。
全文摘要
一种语法创建系统,它使用多个信息源来帮助语法创建。这产生了用相对较小的数据量半自动地导出的语义语法。
文档编号G06F17/27GK1423194SQ02156109
公开日2003年6月11日 申请日期2002年12月5日 优先权日2001年12月5日
发明者Y·Y·王, A·阿克洛 申请人:微软公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1