计算机生成的在问答系统中的自然语言输出的制作方法

文档序号:11851482阅读:305来源:国知局
计算机生成的在问答系统中的自然语言输出的制作方法与工艺

自然语言生成通常是利用来自知识库的三元组的集合(set of triples)来执行的。三元组(triple)被编译成有效的自然语言句子。越来越常见的是,用户想要的是响应于他们口头提交给设备的询问而输出的自然语言句子。时常地,响应于自然表达的口头询问,所返回的自然语言句子回答是不正确的或是像机器人的且听起来不自然。



技术实现要素:

提供该“发明内容”是为了引入将在后文“具体实施方式”中进一步描述的简化形式的概念的选集。该“发明内容”并不意图识别所要求保护的主题的关键特征或必要特征,并且也不意图用于帮助确定所要求保护主题的范围。

本发明的实施例涉及用于生成自然语言输出的系统、方法和计算机存储介质以及其他。如所提及的,本发明寻求生成既正确(或有效)又听起来自然的自然语言输出,其中所述输出是在说出时通顺(flow well)的句子。知识库三元组可以被用于将询问表达成机器可读语言,所述机器可读语言能够被转换成自然语言输出。三元组可以与适合被用于特定三元组的一个或多个句子结构相关联。如本文中所使用的“句子结构”一般指的是示例性的上下文无关(context free)句子格式,其包括可以被替代的一个或多个变量。三元组和/或句子结构还可以与一个或多个约束相关联。如本文所使用的“约束”一般指的是一种规则,其对能够被用于替代变量的值的类型进行限制。当与句子结构相关联的约束被满足时,该句子结构可以被用作输出回答,如后文详细描述的。

因此,在一个实施例中,本发明涉及一个或多个计算机存储介质,其上具体实现有计算机可执行指令,所述指令当被一个或多个计算设备执行时实现生成自然语言输出的方法。所述方法包括:从用户处接收询问;识别对询问的回答;将回答映射为来自知识库的结构化数据;识别与结构化数据相关联的句子结构;识别与句子结构相关联的一个或多个约束被满足;以及当一个或多个约束中的每个被满足时,将输出回答以句子的形式传达给询问。

在另一实施例中,本发明涉及一种用于生成自然语言输出的计算机系统。所述系统包括:计算设备,其与具有一个或多个处理器和一个或多个计算机存储介质的自然语言引擎相关联;以及与自然语言引擎耦合的数据存贮,其中自然语言引擎识别对询问的回答,将回答映射为来自知识库的结构化数据,识别与结构化数据相关联的句子结构,识别与句子结构相关联的一个或多个约束,以及将输出回答以句子的形式传达给询问。

在另一实施例中,本发明涉及一种用于生成自然语言输出的计算机化方法。所述方法包括:从用户处接收询问;识别对语音输入询问的回答;将回答映射为三元组的集合;识别与三元组的集合相关联的至少一个规则,其中至少一个规则包括与所述三元组的集合相关联的上下文无关语法句子结构以及与上下文无关语法句子结构相关联的至少一个约束;确定至少一个约束是否被满足;以及当确定与上下文无关语法句子结构相关联的至少一个约束被满足时,将语音输出回答以句子的形式传达给语音输入询问。

附图说明

以下结合附图详细描述了本发明,其中:

图1是适于用于实现本发明的实施例的示例性计算环境的框图;

图2是适于用于实现本发明的实施例的生成自然语言输出的示例性系统的框图;

图3是根据本发明的实施例的用于生成自然语言输出的示例性方法的流程图;

图4是根据本发明的实施例的生成自然语言输出的示例性方法的流程图;以及

图5是根据本发明的实施例的生成自然语言输出的示例性方法的流程图。

具体实施方式

本发明的主题是关于其特殊性描述的,以满足法定要求。然而,说明书本身并非旨在限制该专利的范围。相反地,发明人考虑到了所要求保护的主题还可能结合其它当前的或将来的技术以其它方式实现,以包括与在本文献中描述的步骤相似的不同步骤或步骤组合。此外,虽然术语“步骤”和/或“框(block)”在此可以用于表示方法所采用的不同元素,但是所述术语不应该被解释为暗示了在本文公开的各种步骤之间的任何特定的次序,除非各个步骤的次序被明确描述。

本文描述的技术的各个方面一般涉及生成自然语言输出的系统、方法和计算机存储介质等。本发明涉及生成既正确(或有效)又听起来自然的自然语言输出,其中所述输出是在说出时通顺的句子。知识库三元组可以被用于将询问表达成机器可读语言。三元组可以与适用于特定三元组的句子结构相关联。本文所使用的“句子结构”一般指的是示例性的上下文无关句子格式,其包括能够被替代的一个或多个变量。三元组和/或句子结构还可以与一个或多个约束相关联。如本文所使用的“约束”一般指的是一种规则,其对能够替代变量的值的类型进行限制。当与句子结构相关联的约束被满足时,该句子结构可以被用作输出回答。

在已经简略描述了本发明的实施例的概况后,在下文描述可以实现本发明的实施例的示例性操作环境,以便提供用于本发明的各个方面的一般上下文。在总体上参考附图,并且最初特别参考图1,示出用于实现本发明的实施例的示例性操作环境,其一般地被指定为计算设备100。计算设备100是且仅是适当的计算环境的一个例子,并不意图暗示对本发明的实施例的用途或功能的范围的任何限制。计算设备100也不应被解释为对关于图示组件的任一或其组合具有任何依赖或要求。

本发明的实施例可以在计算机代码或机器可用指令的一般上下文中描述,计算机代码或机器可用指令包括计算机可用或计算机可执行指令(例如程序模块),其由计算机或其它机器(例如,个人数字助理、智能电话、平板PC或其它手持设备)执行。一般而言,包括例程、程序、对象、组件、数据结构等的程序模块指的是执行特定任务或实现特定抽象数据类型的代码。本发明的实施例可以以多种系统配置实践,包括手持设备、消费电子产品、通用计算机、更专业的计算设备等。本发明的实施例还可以实践于分布式计算环境中,其中任务是通过经由通信网络链接的远程处理设备执行的。在分布式计算环境中,程序模块可以位于本地和远程计算机存储介质(包括存储器存储设备)中。

继续参考图1,计算设备100包括总线110,其直接或间接耦合以下设备:存储器112、一个或多个处理器114、一个或多个呈现组件116、一个或多个输入/输出(I/O)端口118、一个或多个I/O组件120以及示例性的电源122。总线110表示的可能是一条或多条总线(例如,地址总线、数据总线或其组合)。虽然为了清楚起见用线条示出了图1的各种框,但是在现实中,这些框表示逻辑的而不一定是实际的组件。例如,人们可以将呈现组件(例如显示设备)认为是I/O组件。并且,处理器具有存储器。本发明人认识到这是本领域的特性,并且重申图1的图仅是说明可以结合本发明的一个或多个实施例使用的示例性计算设备。在例如“工作站”、“服务器”、“膝上型计算机”、“手持设备”等这样的种类之间并不进行区分,因为所有这些都被认为在图1的范围内且被称作“计算设备”。

计算设备100通常包括多种计算机可读介质。计算机可读介质可以是计算设备100可访问的任意可用介质,并且包括易失性和非易失性介质、可移除和不可移除介质。计算机可读介质包括计算机存储介质和通信介质;计算机存储介质本身不包括信号。计算机存储介质包括用任意方法或技术实现的用于存储信息(例如,计算机可读指令、数据结构、程序模块或其它数据)的易失性和非易失性、可移除和不可移除介质。计算机存储介质包括但不限于:RAM、ROM、EEPROM、闪存或其它存储器技术、CD-ROM、数字通用盘(DVD)或其它光盘存储、磁带盒、磁带、磁盘存储或其它磁存储设备、或可以用于存储期望信息并可由计算设备100访问的任意其它介质。计算机存储介质本身不包括信号。通信介质通常实现为计算机可读指令、数据结构、程序模块或在调制数据信号(例如,载波或其它传输机制)中的其它数据,并且包括任意信息输送介质。术语“调制数据信号”意指这样的信号,其对其一个或多个特性进行设置或修改以对信号中的信息进行编码。通信介质包括,例如但不限于:有线介质,例如有线网络或直连线连接;以及无线介质,例如声、RF、红外和其它无线介质。上述各项的任意组合也应该包含于计算机可读介质的范围内。

存储器112包括易失性和/或非易失性存储器形式的计算机存储介质。存储器可以是可移除的、不可移除的或者其组合。示例性硬件设备包括固态存储器、硬驱动、光盘驱动等。计算设备100包括一个或多个处理器,其从各种实体(例如,存储器112或I/O组件120)处读取数据。呈现组件116向用户或其它设备呈现数据指令。示例性呈现组件包括显示设备、扬声器、打印组件、振动组件等。

I/O端口118允许计算设备100逻辑地耦合到其它设备(包括I/O组件120)上,这些设备中的一些可以是内置的。图示的I/O组件包括麦克风、控制杆、游戏板、卫星碟、扫描仪、打印机、无线设备、控制器,例如触笔、键盘和鼠标、自然用户接口(NUI)等。NUI处理空中手势、语音或由用户生成的其它生理输入。这些输入可以解释为搜索前缀、搜索请求、与意图建议进行交互的请求、与实体或子实体进行交互的请求、或与由计算设备100表示的广告、实体或消歧拼贴、动作、搜索历史等等进行交互的请求。这些请求可以被发送给适当的网络元件以供进一步处理。NUI实现语音识别、触摸和触笔识别、面部识别、生物特征识别、在屏幕上和邻近屏幕的手势识别、空中手势、头部和眼睛跟踪以及与在计算设备100上的显示器相关联的触摸识别的任意组合。计算设备100可以装备有深度摄像机,例如,立体摄像机系统、红外摄像机系统、RGB摄像机系统、以及用于手势检测和识别的这些的组合。另外,计算设备100可以装备有支持检测运动的加速计或陀螺仪。加速计或陀螺仪的输出被提供给计算设备100的显示器,以呈现沉浸式增强现实或虚拟现实。

本文描述的主题的方面可以在由计算设备执行的计算机可执行指令(例如,程序模块)的一般上下文中描述。一般而言,程序模块包括例程、程序、对象、组件、数据结构等,其执行具体任务或实现具体的抽象数据类型。本文描述的主题的方面还可以实现于分布式计算环境中,其中任务通过经由通信网络链接的远程处理设备执行。在分布式计算环境中,程序模块可以位于本地和远程计算机存储介质中,包括存储器存储设备。

此外,虽然在本文中经常使用术语“服务器”,但要认识到该术语还可以涵盖搜索引擎、Web浏览器、云服务器、一组分布在一个或多个计算机上的一个或多个处理器、一个或多个独立存储设备、一组一个或多个其它计算或存储设备、一个或多个上述设备的组合等。

现在参考图2,提供了示出可以采用本发明实施例的示例性计算系统200的框图。一般而言,计算系统200示出了生成自然语言输出的环境。

在其它未示出的组件中,计算系统200一般包括网络202、用户设备204、数据库206和自然语言引擎208。网络202可以包括但不限于一个或多个局域网(LAN)和/或广域网(WAN)。这样的网络环境在办公室、企业范围计算机网络、内联网和互联网中是常见的。因此,在此不再描述网络202。

数据库206可以是能够存储数据的任意类型的数据存储设备。这样,数据库206可以是数据的在线仓库。数据库在计算机网络中是常见的,因此,在本文中不再描述。

用户设备204可以是能够传达语音输入询问并接收语音输出询问的任意计算设备。例如,图1的计算设备100可以是示例性用户设备。在特定实施例中,用户设备204是移动电话。

自然语言引擎208可以是能够实现本发明的任意设备。自然语言引擎208可以被配置为响应于询问而对自然语言输出进行编译,以及其他。在实施例中,自然语言输出是句子形式的口头响应(例如,由用户设备204读出的句子)。在实施例中,单个句子是自然语言输出。在替代实施例中,可以输出多个句子。自然语言引擎208可以包括接收组件210、识别组件212、映射组件214、结构组件216、约束验证器218和传达组件220。

接收组件210可以被配置为接收一个或多个询问。所述询问可以由用户经由例如用户设备204输入。在实施例中,询问是语音输入询问,意味着该询问是由用户说出的而不是经由键盘输入的。然而,在一些情况下,询问可以经由键盘输入。

如前所述,语音输入询问可以由用户说出。语音输入询问可以以自然语言格式说出。换句话说,语音输入询问通常是以用户对例如另一人类进行自然地询问的问题的形式提交的。这样,语音输入询问的含义可以通过解析器(未示出)来识别。针对语义含义对搜索询问进行解析是在本领域中所理解的,并且询问的含义可以使用本领域技术人员已知的任意方法来识别。识别询问的含义增加了响应于询问识别出的回答是正确的可能性。

识别组件212可以被配置为识别对语音输入询问的回答,以及其他。识别组件212可以利用(解析器识别出的)语音输入询问的含义来识别回答。可以根据数据库206识别回答。示例性语音输入“询问:回答”对(query:answer pair)将会是:

语音输入询问:Tom Hanks是做什么的?

回答:演员

在该例子中,解析器可以将语音输入询问的含义识别为对源实体(即,Tom Hanks)的职业进行识别。

映射组件214可以被配置为将对语音输入询问的回答映射为知识库中的结构化数据,以及其他。该结构化数据可以是一个或多个三元组。如本文使用的,三元组的集合指的是主语、谓语和宾语组成的组。将回答映射为三元组的集合,就将自然语言语音输入询问和回答转换为自然语言引擎208可读的格式。

继续上述例子,三元组的集合可以是:

Tom Hanks,职业,演员

三元组的集合还可以是类似于以下的事物:

Tom Hanks,当前工作,演员

Tom Hanks是主语,职业或当前工作是谓语,演员是目标或宾语。

回答一旦被映射为三元组的集合,则系统200就可以识别三元组的集合的句子结构。结构组件216可以被配置为识别与三元组的集合相关联的一个或多个句子结构,以及其他。如前所述,句子结构是示例性的上下文无关句子格式,其包括可以用值替代的一个或多个变量。换句话说,变量可以用上下文替代。因为每个句子结构仅在特定环境集合下有效,所以存在与三元组的任意集合相关联的有效句子结构的有限集合。

可与上文列出的三元组的集合(例如,Tom Hanks,当前工作,演员)相关联的示例性句子结构可以是:

[源实体ID]当前工作是[目标实体ID]。

在该例子中,变量是[源实体ID]和[目标实体ID]。源实体ID可以用“Tom Hanks”替代,而目标实体ID可以由“演员”替代,以产生下列句子输出:

输出:Tom Hanks的当前工作是演员。

句子结构可以与三元组的集合和约束集合相关联。如前所述,“约束”一般指的是规则,其对能够替代变量的值的类型进行限制。约束可用于确保句子结构仅适用于特定三元组的集合。例如,上述句子结构

[源实体ID]当前工作是[目标实体ID]

将不适用于例如以下的三元组的集合:

Tom Hanks,身高,6英尺。

该三元组的集合显然与关于Tom Hanks的身高的语音输入询问相关联。因此,详细列举当前职业的句子结构是不相关的。约束验证确保为语音输出回答选择了有效的句子结构。

约束验证器218可以被配置为验证与句子结构相关联的一个或多个约束,以及其他。一旦识别出一个或多个句子结构,则评估与其相关联的约束以查看是否约束被满足。为了将句子结构用作语音输出回答,与句子结构相关联的每个约束必须被满足。如果未满足每个约束,则评估另一句子结构,直到识别出满足所有约束的句子结构。例如,拿以下为例:

语音输入询问:Tom Hanks有多高?

回答:6英尺

三元组:Tom Hanks,高度,6英尺

该三元组可以与下述句子结构相关联:

[源实体ID]有[目标实体ID]英尺高。

该句子结构与下述约束以及其他相关联:

约束1:[源实体ID]=人类

约束2:[目标实体ID]=数字

在该例子中,[源实体ID]是Tom Hanks(即,人类),而[目标实体ID]是6(即,数字)。因此,约束1和2中的每个约束得到满足。在该情况下,约束验证器218将会确定每个约束被满足,并识别句子结构是有效句子结构。约束可以限制主语、宾语、谓语、主语和宾语之间的关系,等等。

或者,如果句子结构未被发现是有效的句子结构(例如,未满足与句子结构相关联的每个约束),则该句子结构将不作为用于语音输出回答的有效的句子结构而被选择。在该情形下,可以识别与所述三元组的集合相关联的另一句子结构,并验证与其相关联的约束。如果没有有效的句子结构被识别,则没有输出被传达。

传达组件220可以被配置为传达语音输出回答以及其他。语音输出回答可以是单个句子或多个句子。例如,在上述例子中,语音输出回答可以是“Tom Hanks有6英尺高”。传达组件220可以向用户设备204传达语音输出回答。

在实施例中,传达组件220可以传达与搜索结果页面相组合的语音输出回答。例如,语音输出回答“Tom Hanks有6英尺高”可以被口头输送(以及文本输送),同时还呈现搜索结果页面。搜索结果页面可以是语音输出回答的源。

在实施例中,排名组件(未示出)可以被配置为,在多于一个句子结构可能有效时对句子结构进行排名,等等。例如,如果应该响应于寻求包括出生地点和出生日期的回答的语音输入询问而构造句子,则可能期望首先说出出生日期然后说出出生地点。例如,语音输入询问“Tom Hanks的出生地点和日期”,输出回答可能是“Tom Hanks于1956年7月9日出生于Concord市”。该句子结构可能看起来比首先列出出生地点的句子更通顺。排名组件可以被配置为基于内置于系统200内的各种偏好和/或规则来对句子结构进行排名,从而选择排名更高的句子结构。

在应用中,接收到语音输入询问。示例性语音输入询问可以是“谁是Tom Hanks的妻子?”,对该询问的回答是“Rita Wilson”。该语音输入询问和回答可以映射为如下的三元组的集合:“Tom Hanks,结婚,Rita Wilson”。可以识别与回答和三元组相关联的句子结构。示例性的相关联的句子结构可以是:

[源实体ID]目前与[目标实体ID]自[令牌]起结婚。

然后识别出于该句子结构相关联的约束集合。针对该特定句子的约束集合可以是:

约束1:源实体ID=人类

约束2:目标实体ID=人类

约束3:在源实体ID和目标实体ID之间的婚姻,没有结束日期

约束4:令牌=年份

约束3将句子结构限制为当前婚姻,因为不存在结束时间。在该例子中,源实体ID是Tom Hanks(即,人类),目标实体ID是Rita Wilson(即,人类),并且婚姻没有结束日期因为他们自1988年(即,令牌)起结婚。因此,所有约束被满足,并且句子结构可以被识别为有效的。语音输出回答可以是“Tom Hanks与Rita Wilson自1988年起结婚”。

可以将另外的句子添加到语音输出回答。基于询问的含义可能期望另外的句子。例如,对询问Tom Hanks的妻子的人而言,知道其前妻可能是有帮助的。另外的三元组的集合可以与语音输入询问相关联。例如,另外的三元组的集合可以如下:“Tom Hanks,先前的婚姻,Samantha Lewes”。另外的句子可以与句子结构相关联。当识别可能的句子结构时,可以识别主要的句子结构(即,[源实体ID]目前与[目标实体ID]自[令牌]起结婚),从而两个句子结合到一起。后续的句子结构可以是:“[源实体ID]先前与[目标实体ID]自[令牌]到[令牌]结婚”。与该句子结构相关联的约束可以是:

约束1:源实体ID=人类

约束2:目标实体ID=人类

约束3:令牌=年

约束4:在源实体ID和目标实体ID之间的婚姻的结束日期存在可以呈现另外的约束以进一步对句子结构缩小范围,从而源实体ID是与在先前句子中的源实体ID相同的,且目标实体ID是与在先前句子中的目标实体ID不同的。

在该例子中,每个约束都被满足,因为Tom Hanks和Samantha Lewes是曾结过婚的人类,并且婚姻具有结束日期。因此,语音输出回答可以是“Tom Hanks先前与Samantha Lewes自1978到1987结婚”。在实施例中,后续的句子可以与代词相关联,而不是重新开始相同的实体。例如,不是说“Tom Hanks当前与Rita Wilson自1988年结婚。Tom Hanks先前与Samantha Lewes自1978年到1987年结婚”,输出替代地可以是“Tom Hanks当前与Rita Wilson自1988年结婚。他先前与Samantha Lewes自1978年到1987年结婚”。

另外的例子可以是询问X是否是Y组的前成员的语音输入询问。与所述语音输入询问相关联的句子结构可以是“[源实体ID]是[目标实体ID]的前成员”。该例子的示例性约束可以是:

约束1:源实体ID=人类

约束2:目标实体ID=政党

约束3:源实体ID不再是目标实体ID的成员。

约束确保句子结构仅在适当情形下被选作有效句子结构。在上述询问政党的前成员的例子中,关于净值(net worth)(例如,[源实体ID]净值是[令牌])的句子结构将不被选作约束3,在此情况下“源不再是目标的成员”不被满足。

现在转向图3,描绘了生成自然语言输出的示例性方法300的流程图。在框302处,接收询问。询问可以是语音输入询问。询问还可以是文本输入。在框304处,识别对询问的回答。这可以基于询问的含义。在框306处,可以将询问和回答映射为三元组的集合。所述三元组的集合将回答以机器可读的并且可以翻译为自然语言输出的方式表示。在框308处,识别与所述三元组的集合相关联的规则。规则可以包括一个或多个句子结构,以及与每个句子结构相关联的一个或多个约束。在框310处识别相关联的一个或多个句子结构以及一个或多个约束。在框312处,确定约束是否被满足。为了让句子结构是有效句子结构,与句子结构相关联的每个约束应该被满足。基于确定约束未被满足,方法300返回到框310以识别另一句子结构以及待要评估的相关联的约束。这将持续,直到识别出有效的句子结构为止或没有更多的句子结构可用于评估为止。如果没有识别出有效的句子结构,则将不生成输出。

基于确定约束被满足,在框314处将句子结构识别为有效。在框316处,输出以有效句子结构的格式传达。输出可以仅是单个句子,或者可以是多个句子。输出可以是语音输出,从而将输出对用户说出。

现在转向图4,描绘了生成自然语言输出的示例性方法400的流程图。在框402处,接收询问。询问可以是语音输入询问。在框404处,识别对询问的回答。在框406处,将回答映射为结构化数据。在实施例中,结构化数据是三元组的集合。在框408处识别与该回答和三元组的集合相关联的句子结构。在框410处,将与句子结构相关联的一个或多个约束识别为被满足。当识别一个或多个约束中的每个约束被满足时,在框412处以句子的形式传达输出回答。

现在转向图5,描绘了生成自然语言输出的示例性方法500的流程图。在框502处,接收语音输入。语音询问输入可以被解释或解析为与三元组的集合相关联的知识图路径。在框504处,识别对语音输入询问的回答。该回答可以基于解释出的知识图路径。在框506处,将回答和询问映射为三元组的集合。三元组的集合可以与知识图路径相关联。在框508处,识别与所述三元组的集合相关联的至少一个规则。至少一个规则包括与所述三元组的集合相关联的一个或多个句子结构以及与一个或多个句子结构相关联的一个或多个约束。在实施例中,句子结构是上下文无关语法句子,其满足所有的回答三元组约束。在框510处,确定是否至少一个约束被满足。当确定出未满足所述至少一个约束时,在框514处将上下文无关语法句子识别为不是有效的,并且可以评估另外的句子机构。另外的句子结构可以被评估,直到识别有效的句子结构为止,或直到不再有任何句子结构被识别以评估为止。一旦识别了有效的句子结构,就构造最终的句子。

当确定所述至少一个约束被满足时,在框512处将句子结构识别为有效的句子结构。一旦识别了有效的句子结构,则在框516处传达语音输出回答。

本发明已经结合特定实施例被描述,这些实施例在所有方面都是说明性的而非限制性的。在不背离本发明范围的前提下,替代实施例对本发明所属领域的普通技术人员而言将会是明晰的。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1