处理在处理自然语言查询中的故障的制作方法

文档序号:11620592阅读:165来源:国知局
处理在处理自然语言查询中的故障的制造方法与工艺
优先权声明本申请根据35u.s.c.§119(e)要求于2015年9月11日提交的名称为“handlingfailuresinprocessingnaturallanguagequeriesthroughuserinteractions”的美国临时专利申请序列号no.62/217,260的提交日期的优先权,其全部内容通过引用合并于此。本说明书涉及处理在处理自然语言查询中的故障。
背景技术
:当计算机系统试图处理由用户提供的自然语言查询以提供匹配的搜索结果时,可能发生故障。可以使用迭代模型来处理这些故障。然而,在该上下文中实现迭代模型可能是禁止的,例如,通常需要可能在用户提供的自然语言查询中使用的术语的完全定义集合。技术实现要素:本说明书描述了用于处理在从自然语言查询生成sql查询中的故障的技术。通常,能用方法体现在本说明书中描述的主题的一种创新方面,所述方法包括以下动作:通过自然语言前端从用户获得自然语言查询;将自然语言查询转换成将在知识库的结构化应用编程接口(api)上执行的结构化操作,包括:解析所述自然语言查询,分析所解析的查询以确定依赖性,执行词法分辨,基于依赖性和词法分辨来形成概念树,分析所述概念树以生成超图,基于所述超图来生成虚拟查询,以及处理所述虚拟查询以生成一个或多个结构化操作;在知识库的结构化api上执行一个或多个结构化操作;以及将与自然语言查询匹配的搜索结果返回给用户。该方面的其他实施例包括相应的计算机系统、装置和记录在一个或多个计算机存储介质上的计算机程序,每一个被配置为执行方法的动作。对于被配置为执行特定操作或动作的一个或多个计算机的系统,是指该系统上安装有软件、固件、硬件或它们的组合,在操作中使得该系统执行操作或动作。对于被配置为执行特定操作或动作的一个或多个计算机程序,是指一个或多个程序包括指令,所述指令在由数据处理装置执行时使该装置执行操作或动作。上述和其他实施例每一个可以可选地包括下述特征中的一个或多个,单独的组合。具体地,一个实施例包括结合的所有下述特征。解析所述自然语言查询包括将所述自然语言查询分成短语并且将短语作为节点放在解析树中。执行词法分辨包括生成用于一个或多个所解析的短语的概念。分析所述概念树包括:分析概念树中的概念以及父-子或兄弟姐妹关系;以及变换概念树包括用新信息注释概念、移动概念、删除概念或将概念与其他概念合并。超图表示数据库模式,其中数据表可以具有它们之间的多个联合映射。该方法进一步包括分析超图,包括使用概念树来执行用于联合的路径分辨。该方法进一步包括在将自然语言查询转换成一个或多个结构化操作期间检测故障。该方法进一步包括通过包括确定用于自然语言查询的替代解析是否可用的另外的处理来解决故障。该方法进一步包括通过包括以下操作的另外的处理来解决故障:通过用户交互界面向用户提供识别故障的一个或多个信息项;响应于与信息项的用户交互:以及根据用户交互,修改自然语言查询以生成一个或多个结构化操作。故障能基于不良解析、歧义列引用、歧义常量、歧义日期时间、未用比较关键字或否定关键字、聚合错误、丢失联合步骤、未处理概念、不匹配的名词短语或丢失数据访问中的一个或多个。知识库、自然语言前端和用户交互界面被实现在一个或多个计算机和存储指令的一个或多个存储设备上,以及其中,知识库根据数据模式来存储与实体相关联的信息并且具有用于查询知识库的程序的api。本说明书中所述的主题能在特定实施例中实现以便实现以下优点中的一个或多个。能减少用于处理在处理自然语言查询中的故障的努力。通过用户交互,能使自然语言词语匹配到由自然语言处理系统识别的词典,减少可能出现在自然语言查询中先期对查询词语的完整定义的需要。而且,在用户提供的自然语言查询中检测到的语言歧义能当它们出现时被解决,消除了基于每一替选解释来产生搜索结果的需要。此外,能更早引起用户对数据访问问题的关注,没有任何违反数据安全的风险。在从自然语言查询生成结构化查询中能最小化用户交互。具体地,系统经由评估解析以及在解析和处理以自然语言表达的输入查询期间通过识别某些错误或警告生成的结构化查询的质量,通过用户动作,使用技术来避免不必要迭代。该评估允许系统执行提供将自然语言查询翻译成结构化查询同时克服解析器的一些缺点或自然语言查询中的一些语法/结构错误的操作。因此,该系统通常能从紧凑的句子或甚至短语确定结构查询的内容。这提高了用户体验并且使得更有用地将自然语言查询翻译成结构化查询。在一些情况下,该系统在没有用户交互的情况下不能确定结构化查询。在那些情况下,该系统尝试引导用户进行能解决错误并且导致成功翻译成结构化查询的校正。例如,如果有歧义,该系统能识别并且呈现可能的解释和选择以消歧。这帮助用户在那些情况下快速地校正自然语言查询并且提高生成结构化查询的速度。系统允许未面临特定数据领域或查询语言的用户使用自然语言查询来获得特别所期望的信息。该系统接受以纯英文(或用户选择的语言)呈现的查询并且通过使用nlp(自然语言处理)技术处理它以在查询后端生成和运行相应的结构化查询并且将结果返回给用户。为了处理自然语言查询,生成多个模式词典,其提供用来处理自然语言查询的多个映射。在附图和下述描述中阐述本说明书的主题的一个或多个实施例的细节。主题的其他特征、方面和优点从描述、附图和权利要求将变得显而易见。附图说明图1是将自然语言查询转换成结构查询的示例性过程的流程图。图2是示出用于通过用户交互来处理在处理自然语言查询中的故障的示例性系统的框图。图3是示出用于在查询版本上迭代的示例性过程的流程图。图4-7是示例性概念树的图。图8是示出用于通过用户交互来处理丢失令牌故障的示例性过程的框图。图9是示出用于通过用户交互来处理词典匹配故障的示例性过程的框图。图10是示出用于通过用户交互来处理数据访问故障的示例性过程的框图。图11是示出用于通过用户交互来处理语言歧义故障的示例性过程的框图。图12是示出用于通过用户交互来处理在处理自然语言查询中的故障的示例性过程的流程图。不同图中相同的参考数字和名称指示相同的元件。具体实施方式概述用户能使用例如自由形式英文文本串的自然语言来提供查询。系统能将接收的自然语言查询转换成结构化查询,例如结构化查询语言(“sql”)查询。能执行结构化查询并且返回响应数据以输出。例如,响应于查询,转换的结构化查询能被用来获得响应于该查询的数据,然后能将其返回给用户。该系统不总是能够成功地将给定的自然语言查询转换成结构化查询。具体地,自然语言查询能包括用户所犯的错误,包括打字错误、格式错误的句子、或丢失关键词。由于系统在识别特定语句格式方面的限制,该系统还可能不能转换自然语言查询。将自然语言查询转换成结构化查询的过程可能经过许多阶段。图1是将自然语言查询转换成结构化查询的示例性过程100的流程图。为了方便,参考执行该过程的系统,例如下文参考图2所述的系统,描述该过程。系统获得102自然语言查询。该系统能接收用户通过用户接口输入的查询。例如,用户接口能是搜索接口,用户通过该接口能提交自然语言搜索查询。在下文中,将参考图2-7,更详细地描述各个过程步骤的细节。系统解析104获得的自然语言查询。解析器能被用来将自然语言查询解析为令牌,例如将查询“我能在哪儿获得培根鸡蛋三明治?”解析为下述令牌:“哪儿”、“我”、“获得”、“培根鸡蛋”和“三明治”。能使用两种解析器:依赖性解析器和组别(constituency)解析器。另一示例性查询能是“每一销售国家的计算机销售和用于在asia制造和在emea销售的商品的生产国家”。该查询能被解析成令牌“销售”、“每一”、“销售国家”、“生产国家”、“制造”、“asia”、“销售”和“emea”。组别解析器将自然语言查询分成短语并且将这些短语放在解析树中作为节点。解析树中的非终端节点是短语类型,例如名词短语或动词短语,终端节点是短语本身,以及不标记边。依赖性解析器根据这些词之间的关系来分解自然语言查询中的词。解析树中的每一节点表示词,子节点是与依赖于父的词,以及边由该关系标记。系统分析106所解析的查询来确定组分之间的依赖性。依赖性分析允许该系统来识别解析的短语之间的修饰语关系。此外,系统执行108词法分辨来识别匹配n元和生成用于匹配的n元语法的概念。对于短语,例如n元创建的概念捕捉该短语对一些人群意味着什么。能通过使用一个或多个词典来识别该含义。例如,在上述示例中,短语“销售”能被识别为映射到用于特定模式词典的表中的“sales_cost_usd”列的n元。因此,将属性概念生成为对应于所解析的查询中的短语“销售”。也可以从词典了解其他信息,例如短语与数字和可聚合的列相关联。当最终生成相应的结构化查询时,可以使用该信息。能基于识别的短语,包括例如属性、日期/时间_窗口表达式、语音部分(例如每、通过、对、在…中或否)、数字/串常量、识别的常量、子上下文和聚合,创建多种不同类型的概念。例如通过倒排索引或通过通用项,能识别所识别的常量。系统从生成的概念以及n元之间的依赖性,形成110概念树。初始概念树从对应于解析的短语和所识别的依赖性关系的概念创建。概念由概念树中的节点表示。然而,初始概念树不包括能由从概念树本身的父-子关系推断的信息。由此,初始概念树表示在该概念树上执行另外的分析、简化和变换后由该系统用来结构化查询的中间结构。该分析和变换允许该系统识别在概念树中表示的实体与能用来形成准确地表示用户提交该查询的意图的结构化查询的属性、联合点、聚合和/或谓语之间的有意义和无歧义映射。系统处理112该概念树的概念和依赖性来变换该概念树。具体地,分析概念树中的概念和父-子或兄弟姐妹关系。变换基于推理规则体系,该推理规则体系基于由概念树提供的、允许该系统梳理句法歧义的语义表示。变换的概念可以用新信息来注释,它们可能被移动、删除或与其他概念合并。处理后的剩余概念形成变换的概念树。变换的概念树确定性地映射至查询运算/组件来便于通过逐个地简单处理它们来构建查询组分,而翻译为结构化查询。系统从概念树创建114超图并且分析该超图以生成联合。超图表示数据库模式,其中数据表本身中可以具有多个联合映射。超图能包括表示在数据库中存储的数据表的列的节点集,以及表示该列所属的边的集合。如果由两个节点表示的列可联合,则两个节点由边连接;以及边识别列所属的表。超图分析包括使用概念树来用于联合的路径分辨。一旦变换概念树并且完成超图分析,该系统处理116该概念树和超图以生成将被称为虚拟查询的输出查询的构建块。虚拟查询是查询组分的表示,包括例如选择的属性、分组属性、聚合、过滤和联合。从变换的概念树的节点,换句话说,来自超图分析的除联合规范外的处理、合并或注释过的概念,创建这些组分。系统处理118该虚拟查询来生成结构化查询。通过处理由虚拟查询表示的查询组分,虚拟查询能被翻译为结构化查询。能取决于使用的查询评价引擎的类型,定制翻译来以不同用语生成结构化查询。另外,虚拟查询能被翻译为不同查询语言,例如对应于接收的查询的语言。在转换的不同阶段可能发生故障。本说明书描述用于识别故障和作用于故障的技术。动作能包括通过另外的处理解决故障。具体地,能在转换的相应阶段采取动作。例如,如果在解析自然语言查询时出现故障,该系统能请求替选的解析。在一些实施方式中,能始终向用户传播动作。例如,能提示用户阐明输入查询的一部分,例如阐明常数值的绑定。系统架构图2是示出用于通过用户交互来处理在处理自然语言查询中的故障的示例性系统200的框图。系统200包括自然语言(nl)前端220和知识库230。系统200接收源自一个或多个用户设备210(例如智能电话210-b和膝上型电脑210-a)的自然语言查询,并且将它们转换成将在知识库230的应用编程接口(api)上执行的结构化操作,例如编程语句。当系统200检测到预定类型的转换故障时,系统200能使得向用户呈现提示,请求用户提供输入来校正该故障。注意,并非所有转换故障要求用户输入或交互;相反,仅一些类型的故障,例如数据访问问题或选择的语言歧义要求用户输入。系统被配置为使用用于处理如在本说明书中所述的故障的一种或多种技术在没有用户交互的情况下处理大部分问题。知识库230包括知识获取子系统232和实体数据库234。知识库230提供结构化api,用于由程序使用来查询和更新实体数据库234。知识获取子系统232从例如互联网的外部源获得另外的实体信息以及与实体数据库234中的现有的实体信息相关联地并且根据知识库的数据模式存储。知识获取子系统可以绕过nl前端220,直接与外部源通信。实体数据库234存储实体信息,即,有关实体的信息,例如人的出生日期、企业的地址和多个组织之间的关系。根据数据模式,将实体信息存储在实体数据库234中。在一些实施方式中,实体数据库234使用表结构来存储实体信息。在其他实施方式中,实体数据库234以图结构来存储实体信息。通常使用由实体数据库的数据库管理系统(dbms)支持的形式语言来表达数据模式。数据模式指定实体信息的组织,如同实体数据库中逻辑地构成,例如,当实体数据库是关系数据库时,将实体信息分成数据库表。数据模式能包括表示特定于应用的完整性约束的数据,例如应用能访问表中的哪些列以及应当如何组织输入参数来查询某一表。在关系数据库中,数据模式可以定义例如表、字段、关系、视图、索引、封装、过程、功能、队列、触发器、类型、语句、物化视图、同义词、数据库链接、目录、xml模式和其他元素。能在位于一个或多个位置处的一个或多个计算机上实现的nl前端220包括nl输入/输出接口222、转换和故障处理子系统224和转换数据库226。nl输入/输出接口222从用户接收自然语言查询,并且当系统200完成处理这些查询时,将匹配搜索结果提供给用户,通常通过与用户设备的网络连接。转换数据库226存储基于自然语言查询来生成将在知识库230的api上执行的结构化操作的规则。例如,基于(1)知识库使用数据表存储实体信息的配置,和(2)在应用模式中指定的这些表的名称,将参考图8更详细解释,转换规则可以指定应当将自然语言查询“非红色卡迪拉克cts2015的价格?”转换成结构化查询语言(sql)语句“从汽车表选择其中make_and_model='卡迪拉克cts'和颜色='non-red'的msrp”。在转换数据库226中存储的转换规则可以特定于由基础知识库使用的数据模式。例如,如果基础知识库将实体信息存储为使用节点来表示实体以及使用边来表示实体之间的关系的图结构,转换规则可以指定应当如何解析自然语言查询或更新语句以生成用于查询图结构的语句,例如输入参数、这些输入参数之间的运算符以及输出参数。例如,在接收自然语言查询“谁是美国的第一任总统”后,系统可以使用转换规则来生成下述语句:1.查找通过“第一”边与节点“us总统”连接的节点,以及2.检索节点名“乔治华盛顿”。转换和故障处理子系统224将从用户接收的自然语言查询转换成将在知识库230的api上执行的结构化操作。子系统224基于在转换数据库226中指定的转换规则来执行这些转换。在转换过程期间,当故障发生时,子系统224能解决故障或能向用户呈现有关故障的信息并且与用户交互来解决故障。可能发生不同类型的故障,因为处理自然语言查询包括若干阶段,例如解析、令牌化、依赖性分析、概念树分析和sql查询生成,以及可能在这些阶段的任何一个处发生故障。在查询版本上迭代当故障发生时,可以生成替选解析并且对其评分。赢的替选解析,例如具有最高分值的替选解析,能用来生成结构化查询。图3是用于在查询版本上迭代的示例性过程300的流程图。为了方便,参考执行该过程300的系统,例如参考图2所述的系统,描述过程300。系统解析自然语言查询302。首先,自然语言查询能对应于获得的用户输入查询。例如如上参考图1所述,能获得和解析自然语言查询。系统基于解析的查询的分析来确定304解析的查询是否触发错误或警告。警告能被用作指示解析的查询不如预期,但仍然能被处理的质量度量。错误是指示解析查询出错,并且不能进行到结构化查询的转化过程的故障。在解析查询的分析期间,取决于分析的阶段,能触发多于一个警告。响应于确定解析查询触发警告,警告分支,系统计算306质量分值。能与例如解析结果的状态信息以及例如有关原因、位置和相关查询令牌的信息的警告信息一起存储质量分值。在计算质量分值后,系统确定308是否有替选解析。质量分值能取决于在分析解析查询期间触发的警告的数目。响应于确定解析查询触发错误,错误分支,系统确定308是否有替选解析。另外,系统记录错误和状态信息。状态信息能包括与错误相关联的原因、位置和相关令牌。响应于确定有替选解析,是分支,系统从步骤302迭代。由此,如果触发后续警告或错误,能分析多个替选解析。响应于确定无可用替选解析,系统选择最佳可用解析310。如果一个或多个迭代导致警告,比较用于解析的质量分值。例如,能选择具有最高质量分值的解析。在选择最佳可用解析后,系统确定该解析是否是最佳解析。最佳解析是可以具有警告但不具有任何错误的解析。如果找到这样的最佳解析,系统生成314结构化查询。解析查询的分析或解析替选查询包括生成变换的概念树,然后能用来生成结构化查询。如果未找到最佳解析,例如,如果最佳可用解析仍然具有错误,系统生成316错误消息。如果每一迭代导致触发错误,该系统不能继续。能向用户呈现特定的错误消息。在一些实施方式中,能提示用户采取行动来校正输入查询。另外,即使当找到最佳解析时,如果生成警告,系统能生成316能提供给用户的警告消息。返回到步骤304的确定,响应于确定查询或替选查询未触发错误或警告,系统生成314结构化查询。记录和传播故障在自然语言查询的转换期间,能确定会导致故障的错误或能触发导致指示较低置信度的质量分值的警告。能确定多种不同类型的错误。不良解析:例如,当系统不能从解析查询生成概念树时,系统能确定存在不良解析。响应于不良解析,系统确定是否存在替选解析。如果不存在替选解析,会发生故障。如果的确存在替选解析,使用替选解析来执行分析。歧义列引用:在转换过程的若干不同阶段,会发生歧义列引用错误。如上参考图1所述,系统将通过解析识别的组分与特定n元匹配。然而,可能存在多个匹配可能,例如,存在特定n元的多个列匹配。代替记录该阶段的错误,系统能记录所有可能匹配并且确定图1中所述的概念树变换阶段中的进一步分析是否解决该歧义。此外,在超图分析期间,系统能确定没有可用来消除哪一联合路径是用于列的联合路径的歧义的子上下文。响应于该错误,系统能提示用户指定特定子上下文来解决该歧义。替选地,歧义可能是由于不良解析。该系统能尝试替选解析来在提示用户之前解决该歧义。例如,输入查询能是“销售多于1000的国家”。该查询能生成能提供给用户的下述错误消息:在用于短语“国家”的查询中发现歧义列引用。不能消除该列的歧义,因为它具有多个匹配:表表可能短语factorytoconsumermanufacture_country_code生产factorytoconsumerpackage_country_code包装factorytoconsumersale_country_code销售修改查询:“销售多于1000的生产国家”会导致下述结构化查询:歧义常数:解析查询的分析,特别是在上文参考图1所述的概念树分析期间,会导致格式错误的概念树,阻止该系统识别指定常数值引用的内容或所识别的列具有与该常数不兼容的类型。响应于所识别的错误,该系统能确定替选解析是否解决该问题,作为确保该问题不是不良解析的方式。如果替选解析不能解决该歧义,会将该错误作为识别特定固定短语和请求阐明的消息传播给用户。例如,输入查询能是“喜欢名称'johndoe'”。对该查询的解析导致不能适当捕捉固定串'johndoe'和属性名之间的依赖性关系的概念树。在图4中示出该概念树的示例。在图4所示的示例性概念树400中,概念“johndoe”未被示为依赖于概念“名称”。然而,适当地解析不同查询版本,例如“喜欢地名为'johndoe'的地方”并且导致图5所示的概念树500。在概念树500中,正确地定义“johndoe”与“名称”的依赖性。这导致转换成下述结构化查询:歧义日期时间:一些日期时间表示看起来非常像整数,例如2015既能是数字也能是日期时间常数。解析可能不能消除数字和日期时间常数之间的歧义。因此,系统使用短语的上下文来确定其实际上是日期时间还是数字常数。这能在概念树分析阶段期间执行。如果该系统不能消歧,会生成错误。响应于该错误,系统检查替选解析来确认歧义错误不是由该解析导致的。如果替选解析不能解决该歧义,能够向用户提供指出特定日期时间/数字表达式并且请求阐明的消息。例如,会导致要求用户输入以解决的查询是“2015的总利润”。未用比较关键字或否定关键字:否定和比较关键字对正确地生成谓语很重要。在概念树分析阶段期间处理关键字。当系统不能适当地处理它们时,该系统生成警告。未适当地处理主要是指未使用关键字概念来设置或修改关系。警告很大可能是由不良解析或错误格式的语句导致的。系统首先尝试替选解析来查看是否有允许系统适当地处理关键字的替选版本。由于错误是警告并且不是故障,假定无其他错误,系统至少可以生成结构化查询。然而,系统仍然能用指示该系统不能处理该关键字的消息告知用户。例如,输入查询能是“生产成本不是2000的销售”。在图6中示出用于该输入查询的解析结果概念树。在图6所示的概念树600中,未正确地定位否定概念“不”。因此,能对该解析生成指示该系统不能解析该输入查询中的否定关键字“不”的警告。如果不存在不生成警告的替选解析,从该输入查询生成的结构化查询如下:如果存在解决该问题的替选解析,图7中示出示例结果概念树。在图7中示出的概念树700中,正确地定位否定概念。结果,生成的结构化查询能够是:聚合错误:在分析输入查询期间,具体地是在概念树分析期间,会发生不同类型的聚合错误。当不应用聚合函数时,会发生一种聚合错误。这会发生在系统不能将聚合函数与属性或结构化查询表达式关联时。例如,输入查询“生产国家为法国的平均数”会导致生成指示该系统不能将聚合函数、具体地是输入查询中的[平均值]与所应用于的列相关联的错误消息。能使用校正的查询“生产国家为法国的平均销售额”来生成结构化查询:在概念树分析期间会发生的第二种聚合错误是非兼容类型的聚合函数。该聚合错误会发生在当查询指示在不是兼容类型的属性上指定聚合,例如对串属性求平均时发生。当识别到不同关键字,但没有适当地与兼容的聚合自变量相关联时,第三种聚合错误会发生。例如,查询“销售国家为法国的不同生产国家的数量”生成错误消息,因为该系统不能解释输入查询中的“不同”关键字。校正的查询“销售国家为法国的不同多个生产国家”能用来生成结构化查询:当未指定一个或多个聚合自变量时,第四种聚合错误会发生。当查询指定聚合表达式,例如度量,作为分组键时,第五种聚合错误会发生。例如,查询“每一闪现总和的点击总量”,其中,“点击”和“闪现”是数值度量。在查询中使用“每”指示查询是错误格式。能生成指示在该输入查询中聚合表达式“闪现总和”被指定为维度的错误消息。在每一聚合错误中,该问题可能是由不良解析或错误格式的语句导致的。该系统能尝试替选解析来了解替选解析解决该错误。如果不存在替选解析,例如,通过用于校正输入查询的提示,将该错误呈现给用户。丢失联合步骤:在超图分析期间,该系统可以确定不能唯一地识别列引用。该系统能够执行与联合路径的部分匹配来确定哪一联合步骤丢失。该系统检查替选解析来确保该错误不是由解析导致的。该系统可以用用户识别正确的联合路径将所需的丢失引用(例如子上下文短语)告知用户。例如,输入查询能是“买方位置在内华达的销售”。系统能确定生成的错误是指示联合步骤丢失的查询中的歧义引用。该系统能向用户呈现指示丢失的引用所处的位置的信息,例如如下表所示:表列可能短语buyer_seller.personbusiness_address_id企业地址buyer_seller.personpersonal_address_id个人地址示例性查询还能导致告知用户未识别名词短语“位置”的info消息。用“个人地址”替代“位置”的校正会导致生成下述结构化查询:未处理概念:除了系统识别还可以用作语音的一部分的一些关键字外,在概念树分析期间,应当处理系统为概念生成的n元。例如,如果存在恒定字面概念,该系统应当能够找出哪一列与之有关并且最终从其生成谓语。如果系统以未处理的概念结束,则其是即使该系统仍然能够生成结构化查询也有事物丢失的指示。如果生成结构化查询,该系统能将其与警告一起返回以让用户知道有事物丢失。该消息能例如高亮指示丢失了的内容。如果没有生成结构化查询,则处理可以取决于概念类型。最低限度能将错误消息返回给用户。不匹配名词短语:系统监控没有与任何词典匹配的名词短语,例如属性、子上下文等,并且生成用于它们的哑概念以确保它们在形成概念树中适当地起它们的作用。未识别的名词短语非常可能是错误拼写的短语或部分提供的多元。例如,系统能识别“个人地址”或“企业地址”短语,但用户仅将短语“地址”包括在查询中。在不进行处理的情况下,如果可能,系统将生成相应的结构化查询,但还能将读作短语“地址”没有与系统识别的任何短语匹配的消息传播给用户。消息可以进一步提到该短语可能对应于“个人地址”或“企业地址”。一旦用户指定意图是哪一个,转换通过。在类似的示例中,错误拼写用户输入查询并且使用了“个人地址”。该系统能识别相似性并且询问用户她/他是否是指“个人地址”、丢失数据访问:在语义解决阶段,当该系统为其创建概念时,系统能检查以查看用户是否访问表(和列)。取决于用户访问的类型,系统能向他/她示出指示用户无权访问表的错误消息,或能仅示出查询,例如用户仅具有速览(peeker)访问,或能同时示出查询和结果,例如,如果用户有权访问数据。如果用户无权访问数据但能看到模式,则该系统能处理倒排索引命中或从用户获得显式验证来将它们处理为索引命中。将用户交互用于解决故障的示例如上所述,使用用户交互,能解决不同类型的故障。例如,系统可以生成不良解析。如果系统不能识别成功处理的一个或多个替选解析,则能通过描述该问题的消息提示用户。然后,用户能修改自然语言查询并且再次尝试解析。接收的自然语言查询可能导致歧义列引用。例如,查询“销售多于1000的国家”要求用户输入以消歧。能为用户提供可能解释的列表以帮助用户阐明在提交的查询中“国家”的使用。在一些实施方式中,系统提供相应的子上下文短语以阐明“国家”的每一可能含义。然后,用户能添加特定短语并且重试,例如“销售多于1000的生产国家”。接收的自然语言查询可能导致聚合错误。例如,查询“销售国家为法国的不同生产国家的数量”导致错误消息,向用户指示该系统不能将“不同”与表达式相关联。然后,用户具有重写查询的机会。接收的自然语言查询可能导致丢失联合步骤。例如,查询“买方的位置在内华达的销售”未对系统提供足够的信息来识别“内华达”是指什么。从联合分析,该系统检测到能引用买方的企业地址或买方的家庭地址中的一个。该系统提供用户能用来固定查询的可能短语的显示。上文仅表示一些示例。即使该系统能够向前移动并且生成结构化查询,如果最佳解析具有警告,则该系统仍然能为用户提供所有警告(具有上下文信息)。例如,将在自然语言查询和警告消息中高亮未使用的比较或否定关键字。在那时,用户可以检查结构化查询并且决定修改自然语言查询(可能使用更适当的英文)以避免警告。与未处理概念”、“不匹配的名词短语”或“歧义日期时间”错误类似。如果该系统生成不具有任何警告或错误的解析,用户接收翻译的结构化查询和系统使用的查询的版本(如果使用替选解析)。否则,通过使用错误/警告消息,为用户提供某种指导。图8-12示出用于解决故障的一些示例性用户交互。当处理自然语言查询时会发生的一种故障是丢失令牌故障。令牌化是将文本分解成通常称为令牌的单元的过程。令牌能表示一个或多个词、数字或标点符号。图8是示出用于通过用户交互来处理丢失令牌故障的示例性过程800的框图。当自然语言处理系统不能定位初始查询中对应于要求令牌的词时,发生丢失令牌故障。例如,因为主语从自然语言查询“在哪儿?”丢失,当系统处理该查询时,会生成丢失令牌故障。为了便利,过程800将被描述为由位于一个或多个位置并且根据本说明书适当编程的一个或多个计算机的系统执行。例如,被适当地编程的图2的系统200能执行过程800。过程800从系统获得用户提供的自然语言查询802开始,例如“非红2015价格?”。接收自然语言查询802后,系统尝试将自然语言查询802转换成适合于在基于表的知识库850上操作的结构化操作,例如sql查询。在一些实施方式中,转换步骤中的一个包括基于知识库850的基础知识模式,例如车辆表810,来使自然语言查询802令牌化。如图8所示,基于车辆表810的所有sql查询必须提供对应于车辆的品牌&型号的令牌的需求,自然语言处理系统将自然语言查询802细分成下述令牌804:“非红”和“2015”。在一些实施方式中,因为令牌“非红”在车辆表810的“品牌和型号”列中没有匹配值,该系统将令牌804视为未被正确地产生并且视为发生丢失令牌故障。一旦自然语言处理系统检测到该故障,该系统提示用户输入以解决该故障。例如,该系统可以要求用户提供车辆的品牌和型号以阐明提交的自然语言查询802,如步骤806所示。用户能通过用另外的上下文阐明自然语言查询802以产生阐明的自然语言查询,例如“蓝色卡迪拉克ats2015价格?”进行响应。系统800可以通过处理阐明的查询,例如将自然语言查询802用作上下文继续。系统可以从来自阐明查询的阐明的查询:“蓝色”、“卡迪拉克ats”和“2015”生成下述令牌并且基于新令牌来生成sql查询。当处理自然语言查询时可能发生的另一种故障是过度复杂查询故障。例如,语义复杂的查询很可能具有大量词典匹配和依赖性关系,当它们超出系统处理能力时,会导致故障。图9是示出通过用户交互来处理词典匹配或依赖性故障的示例性过程900的框图。为了便利,过程900将被描述为由位于一个或多个位置并且根据本说明书适当编程的一个或多个计算机的系统执行。例如,图2的系统200,当被适当编程时,能执行过程900。在接收用户提供的自然语言查询902,例如“全新非红卡迪拉克cts2015的价格?但二手车如果便宜10k或具有天窗或涡轮引擎也可以”,自然语言处理系统在将自然语言查询902转换成一个或多个sql查询时,会尝试解决短语“二手车”的依赖性。因为解决短语“二手车”的依赖性904会生成大量可能结果,例如“二手非红卡迪拉克cts2015”、“二手非红卡迪拉克cts”、“二手非红卡迪拉克2015”、“二手卡迪拉克cts2015”、“二手卡迪拉克cts”、“二手卡迪拉克2015”、“二手卡迪拉克”,会超出系统对单个自然语言查询能处理的指定最大数量的结果,该系统会经历词典匹配故障或依赖性故障906。当词典匹配或依赖性故障发生时,该系统会提供查询构建用户界面,用户通过该界面能重写初始自然语言查询902或为包括在初始自然语言查询902中的术语提供语言界限以减少查询复杂度。例如,该系统可以将例如单选按钮和下拉列表的用户界面(ui)控制提供为过滤器,使得用户可以去除自然语言查询902中的依赖性。例如,用户可以应用条件过滤器,例如具有值“二手”,结合品牌和型号过滤器,例如具有值“卡迪拉克cts”和年份过滤器,例如具有值“2015”来阐明术语“二手”是指“卡迪拉克cts2015”。一旦用户应用适当的过滤器,该系统可以基于过滤器值来处理新查询。当处理自然语言查询时会发生的第三种故障是数据访问故障。例如,当用户查询用户无权访问的数据源时,数据访问故障发生。图10是示出用于通过用户交互来处理数据访问故障的示例性过程1000的框图。为了便利,将过程1000描述为由位于一个或多个位置并且根据本说明书适当编程的一个或多个计算机的系统执行。例如,图2的系统200在被适当编程时能执行过程1000。在接收到自然语言查询1002时,例如“非红卡迪拉克cts2015的价格?”,在步骤1004,自然语言处理系统可以确定处理自然语言查询1002要求读取访问车辆表1010。然而,系统可以例如基于在用户简档中指定的许可来确定用户不被允许对车辆表1010的读取访问。当检测到缺乏适当的数据访问许可时,系统会经受数据访问故障1004。在一些实施方式中,该系统提供有关如何解决该故障的建议。例如,该系统可以建议用户联系数据库管理员来接收适当的数据访问,然后返回该查询。然后,用户能按照该建议来解决该故障,使得处理能继续。注意,当向用户提供建议时,该系统避免提供潜在展现用户无权访问的数据的信息。例如,系统能抑制向用户展现用户不能读取访问的数据表的名称,例如,车辆表1010,或数据列,例如“颜色”和“品牌&型号”列。相反,系统可以仅提供常用指令,指示用户解决数据访问故障,例如建议用户应当联系数据库管理员。当处理自然语言查询时可能发生的第四种故障是语言歧义故障。例如,当自然语言查询包括会导致查询术语的多个不同解释的歧义时,语言歧义故障会发生。图11是示出用于通过用户交互来处理语言歧义故障的示例性过程1100的框图。为了便利,将过程1100描述为由位于一个或多个位置并且根据本说明书适当编程的一个或多个计算机的系统执行。例如,图2的系统200在被适当编程时能执行过程1100。在接收用户提供的自然语言查询102后,例如“哪儿有培根鸡蛋三明治?”,如步骤1104所示,自然语言处理系统将自然语言查询102解释为两个独立的查询“哪儿有培根?”和“哪儿有鸡蛋三明治?”替选地,如步骤1106所示,系统也可以将自然语言查询1102解释为单个查询“哪儿有包括培根和鸡蛋的三明治?”。有时,例如由于缺少进一步上下文,系统认为两种替选同样可能或甚至似乎合理。当面对两个竞争似乎合理的解释时,系统会面临语言歧义故障。为了解决该故障,该系统提示用户阐明自然语言查询102以去除歧义。例如,该系统可以提示用户阐明她是否想搜索在哪里获得“培根鸡蛋三明治”,如步骤1108所示。一旦用户阐明自然语言查询102,去除一个或多个歧义,该系统能继续处理阐明的查询并且产生匹配结果。图12是示出用于通过用户交互处理在处理自然语言查询中的故障的示例性过程1200的流程图。为了便利,将过程1200描述为由位于一个或多个位置并且根据本说明书适当编程的一个或多个计算机的系统执行。例如,图2的系统200在被适当编程时能执行过程1200。过程1200以系统通过自然语言前端从用户获得(1202)自然语言查询开始。在获得查询后,系统尝试将该查询转换成将在知识库的结构化应用编程接口(api)上执行的结构化操作。例如,该系统可以解析纯英文查询以产生若干令牌并且将产生的令牌映射到数据表模式以便生成sql查询。当系统尝试将自然语言查询转换成一个或多个结构化操作时,会发生例如在本说明书中所述的故障。当系统检测到故障时,系统通过用户交互界面向用户提供(1204)描述该故障的信息,例如提示用户帮助解决该故障。例如,当语言歧义故障发生时,该系统可以以某种方式为用户提供解释自然语言查询的选择以解决歧义。响应于接收有关该故障的用户的输入,该系统基于用户的输入修改(1206)转换过程。在一些实施方式中,系统通过丢弃初始查询并且处理新查询来修改转换过程。在一些其他实施方式中,系统通过考虑用户的输入,例如上下文,继续处理初始查询来修改转换过程。例如,在接收到应如何解决歧义的用户选择后,例如“培根鸡蛋三明治”而不是“培根”和“鸡蛋三明治”,系统可以相应地生成sql查询。然后,系统通过在知识库的结构化api上执行(1208)一个或多个结构化操作,例如sql查询,继续过程1200。一旦生成操作结果,例如匹配查询结果,系统可以将它们提供(1210)给用户。在一些实施方式中,用户通过用户界面输入自然语言查询。自然语言查询处理系统解析该查询以生成文档树并且执行短语依赖性分析以生成组分之间的依赖性。然后,系统执行词法分辨,包括在生成用于匹配的n元的概念后的n元匹配。系统基于生成的概念以及概念之间的依赖性来生成概念树。该系统还可以通过修改树中的概念之间的关系来变换概念树。下一阶段是虚拟查询生成并且以执行路径分辨的超图分析步骤开始。该系统迭代所有节点(概念)以生成用于输出查询的构建块并且使用超图来生成所有联合(如果有的话)。能处理结构化查询来生成实际的sql查询。在这些阶段的任何一个中会发生故障并且自然语言查询处理系统可以匹配故障并且将该故障传播给用户以解决或可以记录该问题以作为缺陷进行调查。为通过错误传播来解决故障,系统跟踪上下文并且提供合理信息量,使得能采取动作。通常,能在先前经过的任一阶段采取动作(例如向解析器请求替选解析)或能始终传播到用户(例如请求用户阐明常数值的绑定)。生成替选解析如上参考图3所述,迭代查询版本能包括确定用于给定初始自然语言查询的替选解析。在一些实施方式中,检查初始查询的解析结果。如果初始查询不具有任何动词或如果查询结尾的标点与解析输出不一致,系统能对查询进行一个或多个小的改变以使其更接近适当形成的语句或问题。例如,初始查询能是“昨天法国每个销售渠道的利润?”。该查询实际上是在结尾处具有问号的名词短语。如果将原始查询改变成适当问题,例如解析为适当问题的“法国昨天每个销售渠道的利润是多少?”,该系统能够获得更好的解析。该系统能通过向初始查询添加动词,例如解析为适当语句的“给我看看昨天法国每个销售渠道的利润”,获得更好解析。在另一示例中,由用户输入的初始查询能是“买方个人地址在加利福尼亚以及卖方的企业地址在内华达的每一买方名的销售?”该查询被解析为语句,但末尾具有引号。解析丢失一些依赖性并且导致在解析分析期间触发的错误。然而,下述改变查询正确地解析:“买方个人地址在加利福尼亚以及卖方的企业地址在内华达的每一买方名的销售是多少?”解释为适当问题。“买方个人地址在加利福尼亚以及卖方的企业地址在内华达的每一买方名的销售”丢掉问号并且解释为适当片段。为了完整性,导致的结构化查询如下:在一些其它实施方式中,初始输入查询会缺少适当的标点和/或可以多种方式解释。用于这样的查询的初始解析结果可能不会导致成功的分析。如上所述,试图基于基本的修改的替选解析的系统尝试也可能不能产生成功分析。该系统会通过使用其他技术,例如在解析器外,生成替选解析来在将查询发送到解析前,用一些令牌范围约束来扩增输入查询。由解析器将这些约束处理为单元,并通常导致能被正确解析的替选版本,例如具有成功分析或高质量分值。有能用来基于特定语法生成替选查询的不同技术。示例性初始查询是“卖家具有多于100个赞的销售额和买家的平均赞”。如上所述,用于生成替选版本的基本改变不会导致成功解析。生成具有令牌范围约束的替选查询的示例是“销售额和买家的平均赞”,其中“卖家具有多于100个赞”,这会导致成功解析。通过使用花括号{}来标记约束。系统可以生成多个版本并且使用排名机制来基于它们的排名将那些版本馈送到分析中。为了完整性,生成的结构化查询如下:能在数字电子电路中或者在有形地体现的计算机软件、固件或者在计算机硬件(包括在本说明书中公开的结构及其结构等效物中)或者在它们中的一个或者多个的组合中实施在本说明书中描述的主题和功能操作的实施例。能将在本说明书中描述的主题的实施例实施为一个或者多个计算机程序,即编码在有形非易失存储介质上的用于由数据处理装置执行或者控制数据处理装置的操作的一个或者多个计算机程序指令模块。计算机存储介质能是机器可读存储设备、机器可读存储基片、随机或者串行存取存储器设备或者它们中的一个或者多个的组合。替选地或者附加地,能在人为生成的传播的信号,例如机器生成的电、光或者电磁信号上对程序指令编码,该信号被生成用于对信息编码以用于向适当接收器设备发送以供数据处理装置执行。术语“数据处理装置”是指数据处理硬件并且涵盖各种用于处理数据的装置、设备和机器,举例而言包括可编程处理器、计算机、多个处理器或计算机。该装置还能是或进一步包括专用逻辑电路,例如fpga(现场可编程门阵列)或者asic(专用集成电路)。该装置除了硬件之外可选地也能包括为计算机程序创建执行环境的代码,例如构成处理器固件、协议栈、数据库管理系统、操作系统或者它们中的一项或者多项的组合的代码。计算机程序(也可以被称为或描述为程序、软件、软件应用、应用、模块、软件模块、脚本或者代码)能用任何形式的编程语言编写,包括编译或者解译语言、或声明或者过程语言,并且计算机程序能用任何形式部署,包括部署为独立程序或者部署为适合于在计算环境中使用的模块、组件、子例程或者其他单元。程序可以但不必须对应于文件系统中的文件。程序能被存储于保持其他程序或者数据的文件,例如存储于标记语言文档中的一个或者多个脚本的一部分中、专用于讨论的程序的单个文件中,或者多个协同文件,例如存储一个或者多个模块、子程序或者代码部分的文件中。计算机程序能被部署用于在一个计算机上或者在位于一个地点或者跨多个地点分布并且由数据通信网络互连的多个计算机上执行。在本说明书中描述的过程和逻辑流程能由一个或者多个可编程计算机执行,该一个或者多个可编程计算机执行一个或者多个计算机程序以通过对输入数据操作并且生成输出来执行功能。该过程和逻辑流也能由专用逻辑电路,例如fpga或者asic,或由专用逻辑电路和一个或多个编程计算机的组合执行。适合于执行计算机程序的计算机能基于通用微处理器或者专用微处理器,或者其两者,或者任何其他种类的中央处理单元。通常,中央处理单元将从只读存储器或者随机存取存储器或者二者接收指令和数据。计算机的必要元件是用于执行指令的中央处理单元以及用于存储指令和数据的一个或者多个存储器设备。中央处理单元和存储器能由专用逻辑电路补充或者并入专用逻辑电路中。通常,计算机还将包括用于存储数据的一个或者多个海量存储装置,例如磁盘、磁光盘或者光盘或者被操作地耦合用于从该一个或者多个海量存储设备接收数据或者向该一个或者多个海量存储设备发送数据或者接收和发送二者。然而,计算机无需具有这样的设备。另外,计算机能被嵌入在另一设备中,仅举几个示例,例如移动电话、个人数字助理(pda)、移动音频或者视频播放器、游戏控制台、全球定位系统(gps)接收器或者便携存储设备,例如通用串行总线(usb)闪存驱动。适合于存储计算机程序指令和数据的计算机可读介质包括所有形式的非易失性存储器、介质和存储器设备,举例而言包括半导体存储器设备,例如eprom、eeprom和闪速存储器设备;磁盘,例如内部硬盘或者可拆卸盘;磁光盘;以及cd-rom和dvd-rom盘。为了提供与用户的交互,能在计算机上实施在本说明书中描述的主题的实施例,该计算机具有用于向用户显示信息的显示设备(例如,crt(阴极射线管)或者lcd(液晶显示器)监视器)以及用户能用来向计算机提供输入的键盘和指向设备,例如鼠标或者轨迹球。其他种类的设备也能用来提供与用户的交互;例如向用户提供的反馈能是任何形式的感知反馈,例如视觉反馈、听觉反馈或者触觉反馈;并且能用包括声音、语音或者触觉输入的任何形式接收来自用户的输入。此外,计算机能通过向用户使用的设备发送文档和从该设备接收文档,例如通过响应于从用户的设备上的web浏览器接收的请求向web浏览器发送网页来与用户交互。在本说明书中描述的主题的实施例能在计算系统中实施,该计算系统包括例如作为数据服务器的后端组件;或者包括例如应用服务器的中间件组件;或者包括前端组件,例如具有图形用户交互接口或者web浏览器、或应用的客户端计算机,用户能通过它们与在本说明书中描述的主题的实现方式交互;或者一个或者多个这样的后端、中间件或者前端组件的任何组合。系统的组件能通过任何形式或者介质的数字数据通信(例如通信网络)互连。通信网络的示例包括局域网(lan)和广域网(wan),例如因特网。计算系统能包括客户端和服务器。客户端和服务器一般相互远离并且通常通过通信网络交互。客户端和服务器的关系借助在相应计算机上运行并且相互具有客户端-服务器关系的计算机程序而产生。在一些实施例中,服务器将例如html页的数据传送到用户设备,例如,为了向与作为客户端的设备交互的用户显示数据以及从用户接收用户输入。能在服务器处从该设备接收在用户设备处生成的数据,例如用户交互的结果。尽管本说明书包含许多具体实现方式细节,但是不应将这些解释为限制任何发明的范围或可以要求保护的内容的范围,而是解释为对特定于特定发明的特定实现方式的特征的描述。在本说明书中在分立的实施例的背景中描述的某些特征也能在单个实施例中被组合实施。相反地,在单个实施例的背景中描述的各种特征也能在多个实施例中分立地或者在任何适当子组合中被实施。另外,虽然上文可能将特征描述为在某些组合中发挥作用并且甚至起初这样要求保护,但是来自要求保护的组合的一个或者多个特征能在一些情况下从该组合中去除,并且要求保护的组合能涉及子组合或者子组合的变型。类似地,尽管在附图中以特定顺序描绘操作,但是这不应被理解为要求以所示特定顺序或者以依次顺序执行这样的操作或者执行所有所示操作以实现希望的结果。在某些境况中,多任务和并行处理可能是有利的。另外,在上文描述的实施例中的各种系统模块和组件的分离不应被理解为在所有实施例中要求这样的分离,并且应当理解描述的程序组件和系统一般能一起集成于单个软件产品中或者被封装到多个软件产品中。已描述了主题的特定实施例。其他实现方式在所附权利要求的范围内。例如,在权利要求中记载的动作能按不同顺序被执行并仍然实现希望的结果。作为一个示例,在附图中描绘的过程不必需要所示的特定顺序或者依次顺序以实现希望的结果。在一些情况下,多任务和并行处理会是有利的。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1