CN112487157A - 用于聊天机器人的基于模板的意图分类 - Google Patents
用于聊天机器人的基于模板的意图分类 Download PDFInfo
- Publication number
- CN112487157A CN112487157A CN202010953879.7A CN202010953879A CN112487157A CN 112487157 A CN112487157 A CN 112487157A CN 202010953879 A CN202010953879 A CN 202010953879A CN 112487157 A CN112487157 A CN 112487157A
- Authority
- CN
- China
- Prior art keywords
- template
- robot
- templates
- utterance
- chat robot
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/30—Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
- G06F16/33—Querying
- G06F16/332—Query formulation
- G06F16/3329—Natural language query formulation or dialogue systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/30—Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
- G06F16/33—Querying
- G06F16/3331—Query processing
- G06F16/334—Query execution
- G06F16/3343—Query execution using phonetics
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/30—Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
- G06F16/35—Clustering; Classification
- G06F16/355—Class or cluster creation or modification
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/20—Natural language analysis
- G06F40/253—Grammatical analysis; Style critique
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/20—Natural language analysis
- G06F40/279—Recognition of textual entities
- G06F40/289—Phrasal analysis, e.g. finite state techniques or chunking
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/20—Natural language analysis
- G06F40/279—Recognition of textual entities
- G06F40/289—Phrasal analysis, e.g. finite state techniques or chunking
- G06F40/295—Named entity recognition
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/30—Semantic analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N20/00—Machine learning
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L51/00—User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
- H04L51/02—User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail using automatic reactions or user delegation, e.g. automatic replies or chatbot-generated messages
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/20—Natural language analysis
- G06F40/237—Lexical tools
- G06F40/247—Thesauruses; Synonyms
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computational Linguistics (AREA)
- Artificial Intelligence (AREA)
- Health & Medical Sciences (AREA)
- Audiology, Speech & Language Pathology (AREA)
- General Health & Medical Sciences (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Mathematical Physics (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- Software Systems (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Medical Informatics (AREA)
- Computing Systems (AREA)
- Acoustics & Sound (AREA)
- Evolutionary Computation (AREA)
- Human Computer Interaction (AREA)
- Machine Translation (AREA)
Abstract
本公开涉及用于聊天机器人的基于模板的意图分类。本公开涉及聊天机器人系统,并且更具体地涉及基于将输入话语与模板进行匹配来确定所述输入话语代表特定聊天机器人可以执行的任务的技术。还描述了用于基于已经向聊天机器人提供的示例话语来生成模板的技术。在某些实施例中,基于示例话语生成初始模板集。然后使用可以在单词层级或句子层级上执行的模板泛化技术来细化该初始模板集,以生成最终模板集,用于在运行时、当将这些模板与用户话语进行匹配时使用。所述最终模板集可以包括从所述初始模板集得到的一个或多个泛化模板,并且还可以包括所述初始模板集。
Description
相关申请的交叉引用
本申请根据35U.S.C.119(e)要求于2019年9月12日提交的名称为“TEMPLATE BASEDINTENT CLASSIFICATION FOR CHATBOTS[用于聊天机器人的基于模板的意图分类]”的美国申请号62/899,691以及2020年9月3日提交的名称为“TEMPLATE-BASED INTENTCLASSIFICATION FOR CHATBOTS[用于聊天机器人的基于模板的意图分类]”的美国申请号17/011,296的权益和优先权,上述美国申请通过引用以其全文并入本文。
技术领域
本公开涉及聊天机器人系统,并且更具体地涉及基于将输入话语与模板进行匹配来确定所述输入话语代表特定聊天机器人可以执行的任务的技术。
背景技术
聊天机器人提供了用于与人类用户进行会话的接口。聊天机器人可以被配置为响应于在会话期间提供的用户输入来执行各种任务。可以以各种形式来提供用户输入,包括例如音频输入和文本输入。因此,自然语言理解(NLU)、语音到文本和其他语言处理技术可以用作聊天机器人所执行的处理的一部分。在一些计算环境中,多个聊天机器人可用于与用户进行会话,其中每个聊天机器人处置不同的任务集。
实施聊天机器人系统的挑战之一是确定用户输入项(例如,表达请求或查询的话语)是否应由特定聊天机器人处理。为了确定聊天机器人是否能够处理用户输入项(例如,满足请求或回答问题),应基于对用户输入的内容的分析来确定用户输入的含义。
发明内容
本公开涉及聊天机器人系统,并且更具体地涉及基于将输入话语与模板进行匹配来确定所述输入话语代表特定聊天机器人可以执行的任务的技术。本文描述了各个实施例,包括方法、系统、存储有可由一个或多个处理器执行的程序、代码或指令的非暂态计算机可读存储介质等。
在某些计算环境中,多个聊天机器人可用于与用户进行会话,其中每个聊天机器人处置不同的任务集。在这样的环境中,如果早期确定了哪个聊天机器人(如果有的话)能够处置请求或查询,则可以方便地处置用户输入中的用户请求或查询。本文描述了用于基于将输入话语与模板进行匹配来对用户输入的意图进行分类的各种技术。
在本文所描述的一些实施例中,基于规则的分类器被配置为通过将话语与模板进行匹配来识别聊天机器人。在某些实施例中,分类涉及将输入话语与模板集进行比较,其中每个模板是正则表达式(regex)并与特定聊天机器人相关联。还描述了用于基于已经向聊天机器人提供的示例话语为聊天机器人生成一个或多个模板的技术。在某些实施例中,基于示例话语生成初始模板集。然后使用可以在单词层级或句子层级或这两个层级上执行的模板泛化技术来细化该初始模板集,以生成最终模板集,用于在运行时、当将这些模板与用户话语进行匹配时使用。所述最终模板集可以包括从所述初始模板集得到的一个或多个泛化模板,并且还可以包括所述初始模板集。
在某些实施例中,一种方法包括在计算机实施的聊天机器人系统处接收来自用户的输入话语。所述聊天机器人系统基于模板集确定所述输入话语代表所述聊天机器人系统中的第一聊天机器人被配置为执行的任务。例如,为了做出该确定,聊天机器人系统可以将输入话语与所述模板集中的各个模板进行比较。所述模板集中的第一模板是包括字符串模式的正则表达式,所述字符串模式对应于已经向所述第一聊天机器人提供的一个或多个示例话语的泛化形式,并且所述一个或多个示例话语代表所述第一聊天机器人被配置为执行的任务。对于聊天机器人系统,做出确定进一步包括针对所述模板集中的每个模板,基于所述输入话语与所述模板之间的匹配程度来计算对应得分。基于计算的得分,所述聊天机器人系统确定在所述模板集中所述第一模板与所述输入话语最佳地匹配,并且因此,所述第一聊天机器人适合于处置所述输入话语。响应于确定所述输入话语代表所述第一聊天机器人被配置为执行的任务,所述聊天机器人系统将所述输入话语的至少一部分作为输入传送给所述第一聊天机器人。
在参考以下说明书、权利要求和附图之后,前述内容以及其他特征和实施例将变得更加显而易见。
附图说明
图1是结合了根据某些实施例的聊天机器人系统的环境的简化框图。
图2是根据某些实施例的主机器人系统的简化框图。
图3是根据某些实施例的技能机器人系统的简化框图。
图4图示了根据某些实施例的示例模板集。
图5图示了根据某些实施例的示例话语和泛化模板。
图6图示了根据某些实施例的基于图5中的示例话语的一系列泛化步骤的结果。
图7图示了根据某些实施例的一系列泛化步骤的结果,这些步骤可以接在图6所示的泛化之后并且最终导致图5中所示的泛化模板。
图8图示了根据某些实施例的简化流程图,其描绘了作为训练分类器的一部分的用于生成泛化模板的处理。
图9图示了根据某些实施例的简化流程图,其描绘了用于基于泛化模板对用户话语的意图进行分类的处理。
图10描绘了用于实施实施例的分布式系统的简化图。
图11是根据某些实施例的提供云服务的基于云的系统环境的简化框图。
图12图示了可以用于实施某些实施例的示例性计算机系统。
具体实施方式
在以下描述中,出于解释的目的,阐述了具体细节以便提供对某些实施例的透彻理解。然而,将显而易见的是,可以在没有这些具体细节的情况下实践各个实施例。附图和描述不旨在是限制性的。词语“示例性”在本文中用来意指“用作示例、实例或说明”。在本文中被描述为“示例性”的任何实施例或设计不必被解释为比其他实施例或设计更优选或有利。
在一些计算环境中,多个聊天机器人可用于与用户进行会话,其中每个聊天机器人处置不同的任务集。在这样的环境中,如果早期确定了哪个聊天机器人(如果有的话)能够处置请求或查询,则可以更方便地处置用户请求或查询。本文描述了用于基于将输入话语与模板进行匹配来对用户输入的意图进行分类的各种技术。本文所描述的某些实施例通过以下操作改善了数字助理和聊天机器人的技术领域:提供一种用于在具有不同技能组的多个聊天机器人可用的情况下将用户输入引导到适当的聊天机器人的技术,从而确保或至少增加了用户输入得到准确且高效的处置的机会。
聊天机器人的一项具有挑战性的功能是确定是否存在(即,可用)能够处置给定用户输入的聊天机器人的能力或确定特定聊天机器人是否能够处置给定用户输入的能力。如果存在这样的聊天机器人,则可以将用户输入传送给聊天机器人以进行处理。在存在多个聊天机器人的系统中,有时可能很难确定多个聊天机器人中是否存在更适合处置给定用户输入的特定聊天机器人。例如,聊天机器人(也称为聊天机器人系统)可以包括金融机器人和零售机器人,其中,金融机器人被配置为向用户提供有关用户的银行账户余额的信息,并且其中,零售机器人被配置为向用户提供有关零售商店的礼品卡余额的信息。如果用户提供由输入话语“check balance(查询余额)”代表的用户输入,则不清楚用户希望调用这两个机器人中的哪一个,因为金融机器人和零售机器人都能够提供余额信息。在这种场景下,可以提示用户进行进一步的输入以消除用户意图的歧义。例如,聊天机器人系统可以询问用户要使用这两个机器人中的哪一个或用户要查询余额的是哪个账户。
用于分解(resolve)在话语中向特定聊天机器人表达的用户意图的一个选项是采用基于机器学习(ML)的分类器。例如,可以使用已经在示例话语(也称为训练话语)上进行训练的神经网络来实施基于ML的分类器,其中,示例话语代表聊天机器人可以执行的任务。聊天机器人系统中的每个聊天机器人可能具有与之相关联的对应分类器,所述分类器已经使用特定于所述聊天机器人的示例话语进行了训练。作为这种分类器的替代或补充,可以使用基于规则的分类器。例如,在某些实施例中,在聊天机器人系统中使用基于规则的分类器来识别另一聊天机器人(例如,在多个可用聊天机器人中选择另一聊天机器人形式)以处置用户输入。
如以下所讨论的,描述了这样的实施例,其中基于规则的分类器被配置为通过将话语与模板进行匹配来识别聊天机器人。在某些实施例中,分类涉及将输入话语与模板集进行比较,其中每个模板是正则表达式(regex)并与特定聊天机器人相关联。regex是指定字符串模式的逻辑表达式。在某些实施例中,regex包括模式信息加上语言词性(POS)信息。
还描述了用于基于已经向聊天机器人提供的示例话语来生成模板的技术。生成模板的挑战之一是以这样的方式构建模板:使得模板匹配尽可能多的不同话语同时还要确保匹配的话语代表相同的意图。例如,如果训练语料库包括代表查询银行账户余额的任务的四个示例话语(即,四种不同的方式来陈述对任务的请求),则可以为这四个示例话语中的每个示例话语生成单独的模板,其中,每个模板都需要与其对应的示例话语精确匹配。每个模板可以例如需要用户话语至少包括与模板所对应的示例话语相同的单词序列,以便被视为匹配。这样的模板将非常精确,使得与不代表查询银行账户余额的用户话语相匹配的机会将非常低。然而,要求精确匹配是次优的,因为尽管精度很高,但很少有用户话语会与这种模板相匹配,从而导致召回率很低。因此,精确匹配模板的有用性受到限制。
相反,如果模板过于一般化,则存在与代表不同意图的用户话语相匹配的风险。例如,仅需要短语“Check balance(查询余额)”的模板将与“Check balance in savingsaccount(查询储蓄账户中的余额)”以及“Check balance on gift card(查询礼品卡的余额)”相匹配。因此,确定如何适当地构建模板——包括确定应将模板的哪些元素设为强制性的以及确定可以将模板的哪些元素设为可选的——是有意义的。
在某些实施例中,基于示例话语生成初始模板集。然后使用可以在单词层级和/或句子层级上执行的模板泛化技术来细化该初始模板集,以生成最终模板集,用于在运行时、当将这些模板与用户话语进行匹配时使用。所述最终模板集可以包括从所述初始模板集得到的一个或多个泛化模板,并且还可以包括所述初始模板集。
示例聊天机器人系统的概述
图1是结合了根据某些实施例的聊天机器人系统的环境100的框图。环境100包括数字助理构建器平台(DABP)102,所述DABP使得DABP 102的用户能够创建并部署数字助理或聊天机器人系统。DABP 102可以用于创建一个或多个数字助理(DA)或聊天机器人系统。例如,如图1所示,代表特定企业的用户104可以使用DABP 102来创建并部署用于特定企业的用户的数字助理106。例如,DABP 102可以被银行用来创建供银行的客户使用的一个或多个数字助理。多个企业可以使用同一个DABP 102平台来创建数字助理。作为另一示例,餐馆(例如,披萨店)的拥有者可以使用DABP 102来创建并部署使餐馆的客户能够订购食物(例如,订购披萨)的数字助理。
出于本公开的目的,“数字助理”是通过自然语言会话帮助数字助理的用户完成各种任务的实体。可以仅使用软件(例如,数字助理是使用可由一个或多个处理器执行的程序、代码或指令实施的数字实体)、使用硬件、或使用硬件和软件的组合来实施数字助理。数字助理可以在如计算机、移动电话、手表、器具、车辆等各种物理系统或设备中体现或实施。数字助理有时也称为聊天机器人系统。因此,出于本公开的目的,术语数字助理和聊天机器人系统是可互换的。
数字助理(如使用DABP 102构建的数字助理106)可以用于经由数字助理与其用户108之间基于自然语言的会话来执行各种任务。作为会话的一部分,用户可以向数字助理106提供一个或多个用户输入110并从数字助理106获得返回的回应112。会话可以包括一个或多个输入110以及回应112中。经由这些会话,用户可以请求由数字助理执行一个或多个任务,并且作为回应,数字助理被配置为执行用户请求的任务并以适当的回应来回应用户。
用户输入110通常呈自然语言的形式并且被称为话语。用户话语110可以是文本形式,如当用户键入句子、问题、文本片段或甚至单个单词并将文本作为输入提供给数字助理106时。在一些实施例中,用户话语110可以是音频输入或语音的形式,如当用户讲出或说出某些内容作为输入提供给数字助理106时。话语通常呈用户108说出的语言的形式。当话语呈语音形式时,将语音输入转换成该特定语言的文本形式的话语,并且然后由数字助理106将文本话语处理为用户话语110。可以使用各种语音到文本处理技术将语音或音频输入转换成文本话语,所述文本话语然后由数字助理106来处理。在一些实施例中,语音到文本的转换可以由数字助理106自身完成。
话语(其可以是文本话语或语音话语)可以是片段、一个句子、多个句子、一个或多个单词、一个或多个问题、上述类型的组合等。数字助理106被配置为将自然语言理解(NLU)技术应用于话语以理解用户输入的含义。作为针对话语的NLU处理的一部分,数字助理106被配置为执行用于理解话语的含义的处理,所述处理涉及识别对应于话语的一个或多个意图和一个或多个实体。在理解话语的含义后,数字助理106可以响应于理解的含义或意图来执行一个或多个动作或操作。出于本公开的目的,假设这些话语是已经由数字助理106的用户108直接提供的文本话语,或者是将输入语音话语转换为文本形式的结果。然而,这并不旨在以任何方式进行限制或约束。
例如,用户108的输入可以通过提供如“I want to order a pizza(我想要订购披萨)”的话语来请求订购披萨。在接收到这种话语之后,数字助理106被配置为理解话语的含义并采取适当的动作。适当的动作可以涉及例如以请求关于用户期望订购的比萨的类型、比萨的大小、比萨的任何配料等用户输入的问题来回应用户。由数字助理106提供的回应也可以是自然语言形式,并且通常以与输入话语相同的语言。作为生成这些回应的一部分,数字助理106可以执行自然语言生成(NLG)。为了用户能够经由用户与数字助理106之间的会话来订购比萨,数字助理可以引导用户提供用于比萨订购的所有必要信息,并且然后在会话结束时使比萨被订购。数字助理106可以通过向用户输出指示已经订购披萨的信息来结束会话。
在概念层级上,数字助理106响应于从用户接收的话语执行各种处理。在一些实施例中,该处理涉及一系列处理步骤或处理步骤流水线,包括例如(使用NLU)理解输入话语的含义、确定响应于话语而要执行的动作、在适当的情况下使动作被执行、响应于用户话语生成要输出到用户的回应、向用户输出回应等。NLU处理可以包括对所接收的输入话语进行解析以理解话语的结构和含义、细化并重新形成所述话语以开发出所述话语的更好的可理解形式(例如,逻辑形式)或结构。生成回应可以包括使用自然语言生成(NLG)技术。因此,由数字助理执行的自然语言处理(NLP)可以包括NLU处理和NLG处理的组合。
由数字助理(如数字助理106)执行的NLU处理可以包括如句子解析(例如,标记解析(tokenizing)、词性还原(lemmatizing)、识别句子的词性标签、识别句子中的命名实体、生成依存树来表示句子结构、将句子分成子句、分析单独的子句、分解指代(resolvinganaphoras)、执行分块(performing chunking)等)等各种NLU相关的处理。在某些实施例中,NLU处理或其一部分是由数字助理106自身执行的。在一些其他实施例中,数字助理106可以使用其他资源来执行部分NLU处理。例如,可以通过使用解析器、词性标记器和/或命名实体识别器处理句子来识别输入话语句子的句法和结构。在一种实施方式中,针对英语语言,使用由斯坦福NLP小组提供的解析器、词性标记器和命名实体识别器来分析句子结构和句法。这些是作为斯坦福CoreNLP工具包的一部分提供的。
虽然本公开中提供的各个示例示出了英语语言的话语,但是这仅意味着作为示例。在某些实施例中,数字助理106还能够处置除英语以外的语言的话语。数字助理106可以提供被配置用于针对不同语言执行处理的子系统(例如,实施NLU功能的部件)。这些子系统可以实施为可以使用服务调用从NLU核心服务器调用的可插单元。这使NLU处理对于每种语言而言是灵活且可扩展的,包括允许不同的处理顺序。可以为单独的语言提供语言包,其中,语言包可以登记可以从NLU核心服务器提供服务的子系统的列表。
可以通过各种不同的通道(如但不限于经由某些应用程序、经由社交媒体平台、经由各种消息传递服务和应用程序(例如,即时消息传递应用程序)、以及其他应用程序或通道)使数字助理(如图1中描绘的数字助理106)对其用户108而言是可用的或可访问的。单个数字助理可以为自身配置几个通道,使得单个数字助理可以同时在不同的服务上运行并通过不同的服务进行访问。
数字助理或聊天机器人系统通常包含一个或多个技能或与一个或多个技能相关联。在某些实施例中,这些技能是被配置为与用户交互并完成特定类型的任务(如跟踪库存、提交时间卡、创建费用报告、订购食物、查询银行账户、进行预约、购买小部件等)的单独的聊天机器人(称为技能机器人)。例如,针对图1所描绘的实施例,数字助理或聊天机器人系统106包括技能116-1、116-2等。出于本公开的目的,术语“技能(skill)”和“多个技能(skills)”分别与术语“技能机器人(skill bot)”和“多个技能机器人(skill bots)”同义地使用。
与数字助理相关联的每个技能通过与用户的会话帮助数字助理的用户完成任务,其中,所述会话可以包括由用户提供的文本或音频输入与由技能机器人提供的回应的组合。这些回应可以是给用户的文本或音频消息的形式和/或使用呈现给用户以供用户进行选择的简单的用户界面元素(例如,选择列表)来提供。
存在各种方法可以将技能或技能机器人与数字助理相关联或将其添加到数字助理。在一些实例中,技能机器人可以由企业开发,并且然后使用DABP 102添加到数字助理,例如通过由DABP 102提供的用于将技能机器人注册到数字助理的用户接口。在其他实例中,可以使用DABP 102开发并创建技能机器人,并且然后将其添加到使用DABP 102创建的数字助理。在又一些其他实例中,DABP 102提供在线数字商店(称为“技能商店”),所述在线数字商店提供涉及各种各样的任务的多个技能。通过技能商店提供的技能还可以公开(expose)各种云服务。为了将技能添加到使用DABP 102生成的数字助理,DABP 102的用户可以经由DABP 102访问技能商店、选择所需的技能、并指示将所选技能添加到使用DABP 102创建的数字助理。来自技能商店的技能可以按原样或以修改的形式添加到数字助理(例如,DABP102的用户可以选择并克隆技能商店提供的特定技能机器人、对所选技能机器人进行定制或修改并且然后将修改后的技能机器人添加到使用DABP 102创建的数字助理)。
可以使用各种不同的架构来实施数字助理或聊天机器人系统。例如,在某些实施例中,使用DABP 102创建并部署的数字助理可以使用主机器人/次(或子)机器人范例(paradigm)或架构来实施。根据此范例,数字助理被实施为与是技能机器人的一个或多个次机器人交互的主机器人。例如,在图1所描绘的实施例中,数字助理106包括主机器人114和是主机器人114的次机器人的技能机器人116-1、116-2等。在某些实施例中,数字助理106自身被认为充当主机器人。
根据主-次机器人架构实施的数字助理使数字助理的用户能够通过统一用户接口(即,经由主机器人)与多个技能交互。当用户与数字助理接洽时,由主机器人接收用户输入。然后,主机器人执行用于确定用户输入话语的含义的处理。然后,主机器人确定用户的话语中所请求的任务是否可以由主机器人自身来处置,否则,主机机器人选择用于处置用户请求的适当技能机器人并将会话路由到所选技能机器人。这使用户能够通过公共的单个接口与数字助理进行会话,并且仍然有能力使用被配置为执行特定任务的几个技能机器人。例如,针对为企业开发的数字助理,数字助理的主机器人可以与具有特定功能的技能机器人接口连接,这些技能机器人诸如用于执行与客户关系管理(CRM)有关的功能的CRM机器人、用于执行与企业资源规划(ERP)有关的功能的ERP机器人、用于执行与人力资本管理(HCM)有关的功能的HCM机器人等。以这种方式,数字助理的最终用户或消费者只需要知道如何通过公共的主机器人接口访问数字助理,而在后台提供了多个技能机器人来处置用户请求。
在某些实施例中,在主机器人/次机器人基础设施中,主机器人被配置为了解技能机器人的可用列表。主机器人可以访问识别了各种可用技能机器人的元数据,并且针对每个技能机器人,技能机器人的能力包括可以由技能机器人执行的任务。在接收到话语形式的用户请求之后,主机器人被配置为从多个可用技能机器人中识别或预测可以最好地服务或处置用户请求的特定技能机器人。然后,主机器人将话语(或话语的一部分)路由到该特定的技能机器人以进行进一步的处置。因此,控制从主机器人流动到技能机器人。主机器人可以支持多个输入通道和输出通道。在某些实施例中,可以借助于由一个或多个可用技能机器人执行的处理来执行路由。例如,如以下所讨论的,可以训练技能机器人以推断出话语的意图,并确定所推断出的意图是否与针对技能机器人所配置的意图相匹配。因此,由主机器人执行的路由可以涉及技能机器人向主机器人传送指示,所述指示表明技能机器人是否已经配置有适合于处置话语的意图。
虽然图1的实施例示出了数字助理106包括主机器人114以及技能机器人116-1、116-2和116-3,但这并不旨在是限制性的。数字助理可以包括提供数字助理的功能的各种其他部件(例如,其他系统和子系统)。这些系统和子系统可以仅在软件(例如,存储在计算机可读介质上并且可由一个或多个处理器执行的代码、指令)中、仅在硬件中或在使用软件和硬件的组合的实施方式中实施。
DABP 102提供了使DABP 102的用户能够创建数字助理(包括与数字助理相关联的一个或多个技能机器人)的基础设施以及各种服务和特征。在一些实例中,可以通过克隆现有技能机器人来创建技能机器人,例如,克隆由技能商店提供的技能机器人。如前所述,DABP102可以提供技能商店或技能目录,所述技能商店或技能目录提供了用于执行各种任务的多个技能机器人。DABP 102的用户可以克隆来自技能商店技能机器人。根据需要,可以对克隆的技能机器人进行修改或定制。在一些其他实例中,DABP 102的用户使用由DABP 102提供的工具和服务从头开始创建技能机器人。
在某些实施例中,在高层级,创建或定制技能机器人涉及以下活动:
(1)为新技能机器人配置设置
(2)为技能机器人配置一个或多个意图
(3)针对一个或多个意图配置一个或多个实体
(4)训练技能机器人
(5)为技能机器人创建对话流
(6)根据需要将自定义部件添加到技能机器人
(7)测试并部署技能机器人
下文简要描述了上述每个活动。
(1)为新技能机器人配置设置:可以为技能机器人配置各种设置。例如,技能机器人设计者可以为正在创建的技能机器人指定一个或多个调用名称。然后,这些调用名称(其用作技能机器人的标识符)可以被数字助理的用户用来显式调用技能机器人。例如,用户可以在用户话语中包括调用名称,以显式调用对应的技能机器人。
(2)为技能机器人配置一个或多个意图和相关联的示例话语:技能机器人设计者为正在创建的技能机器人指定一个或多个意图(也称为机器人意图)。然后基于这些指定的意图来训练技能机器人。这些意图表示技能机器人被训练以针对输入话语推断出的类别或分类。在接收到话语之后,训练后的技能机器人会推断出所述话语的意图,其中,所推断出的意图是从用于训练技能机器人的预定义的意图集中选择的。然后,技能机器人基于针对该话语推断出的意图采取适当的动作以对话语作出回应。在一些实例中,技能机器人的意图代表技能机器人可以为数字助理的用户执行的任务。每个意图被赋予一个意图标识符或意图名称。例如,对于针对银行训练的技能机器人,为所述技能机器人指定的意图可以包括“CheckBalance(查询余额)”、“TransferMoney(转账)”、“DepositCheck(存款查询)”等。
对于为技能机器人定义的每个意图,技能机器人设计者还可以提供一个或多个示例话语,这些示例话语代表并说明了意图。这些示例话语旨在表示用户可以针对该意图向技能机器人输入的话语。例如,针对CheckBalance(查询余额)意图,示例话语可以包括“What’smy savings account balance?(我的储蓄账户余额是多少?)”、“How much is in mychecking account?(我的活期存款账户里有多少钱?)”、“How much money do I have inmy account(我的账户里有多少钱)”等。因此,可以将典型的用户话语的各种排列指定为意图的示例话语。
这些意图及其相关联的示例话语用作用于训练技能机器人的训练数据。可以使用各种不同的训练技术。作为该训练的结果,生成预测模型,所述预测模型被配置为将话语作为输入并输出针对所述话语推断出的意图。在一些实例中,将输入话语提供给意图分析引擎(例如,由技能机器人执行的基于规则或基于机器学习的分类器),所述引擎被配置为使用训练后的模型来预测或推断输入话语的意图。然后,技能机器人可以基于推断出的意图采取一个或多个动作。
(3)为技能机器人的一个或多个意图配置实体:在一些实例中,可能需要附加上下文以使技能机器人能够正确地对用户话语作出回应。例如,可能存在其中用户输入话语分解成技能机器人中的相同意图的情况。例如,在以上示例中,话语“What’s my savings accountbalance?(我的储蓄账户余额是多少?)”和“How much is in my checking account?(我的活期存款账户里有多少钱?)”均分解成相同的CheckBalance(查询余额)意图,但是这些话语是询问不同事情的不同请求。为了阐明这种请求,可以将一个或多个实体添加到意图。使用银行业技能机器人的示例,被称为Account_Type(账户_类型)的实体(其定义被称为“checking(活期存款)”和“saving(储蓄)”的值)可以使技能机器人能够对用户请求进行解析并适当地作出回应。在上面的示例中,虽然这些话语分解为相同的意图,但是这两个话语的与Account_Type(账户_类型)实体相关联的值是不同的。这使技能机器人能够针对这两个话语执行可能不同的动作,尽管这两个话语分解为相同的意图。可以针对为技能机器人配置的某些意图指定一个或多个实体。因此,实体用于将上下文添加到意图自身。实体帮助更充分地描述意图并使技能机器人能够完成用户请求。
在某些实施例中,有两种类型的实体:(a)DABP 102提供的内置实体;以及(2)可以由技能机器人设计者指定的自定义实体。内置实体是可以与多种多样的机器人一起使用的通用实体。内置实体的示例包括但不限于与时间、日期、地址、数字、电子邮件地址、持续时间、循环时间段、货币、电话号码、URL等有关的实体。自定义实体用于更多定制的应用程序。例如,针对银行业技能,Account_Type(账户_类型)实体可以被技能机器人设计者定义为通过检查用户输入的关键字(如活期存款、储蓄、信用卡等)来实现各种银行业交易。
(4)训练技能机器人:技能机器人被配置为接收话语形式的用户输入、解析或以其他方式处理所接收的输入、并识别或选择与所接收的用户输入相关的意图。如以上所指示的,为此,必须对技能机器人进行训练。在某些实施例中,基于为技能机器人配置的意图和与意图相关联的示例话语(统称为训练数据)来训练技能机器人,使得技能机器人可以将用户输入话语分解成其所配置的意图中的一个意图。在某些实施例中,技能机器人使用预测模型,所述预测模型是使用训练数据训练的并且允许技能机器人辨别用户说出(或者在一些情况下,正试图说出)的内容。DABP 102提供可以被技能机器人设计者用于训练技能机器人的各种不同的训练技术,包括各种基于机器学习的训练技术、基于规则的训练技术和/或其组合。在某些实施例中,训练数据的一部分(例如,80%)用于训练技能机器人模型并且另一部分(例如,其余20%)用于测试或验证模型。一旦进行了训练,训练后的模型(有时也称为训练后的技能机器人)便可以用于处置用户的话语并对用户的话语作出回应。在某些情况下,用户的话语可以是仅需要单个答案并且无需进一步的会话的问题。为了处置这种情况,可以为技能机器人定义Q&A(问与答)意图。Q&A意图是以与常规意图类似的方式创建的。用于Q&A意图的对话流可能与用于常规意图的对话流不同。例如,与常规意图不同,用于Q&A意图的对话流可能不涉及用于从用户征集附加信息(例如,特定实体的值)的提示。
(5)为技能机器人创建对话流:为技能机器人指定的对话流描述了当响应于接收到的用户输入分解出技能机器人的不同意图时,技能机器人如何反应。对话流定义了技能机器人将采取的操作或动作(例如,技能机器人如何回应用户话语、技能机器人如何提示用户进行输入、以及技能机器人如何返回数据)。对话流像技能机器人所遵循的流程图一样。技能机器人设计者使用如markdown语言等语言指定对话流。在某些实施例中,可以使用被称为OBotML的YAML版本来指定技能机器人的对话流。针对技能机器人的对话流定义自身充当会话的模型,所述模型是使技能机器人设计者精心策划技能机器人与技能机器人所服务的用户之间的交互的模型。
在某些实施例中,技能机器人的对话流定义包含三个部分,如下所述:
(a)上下文部分
(b)默认转变部分
(c)状态部分
上下文部分:技能机器人设计者可以在上下文部分中定义在会话流中使用的变量。可以在上下文部分中命名的其他变量包括但不限于:针对错误处置的变量、针对内置实体或自定义实体的变量、使技能机器人能够识别并保存用户偏好的用户变量等。
默认转变部分:技能机器人的转变可以在对话流状态部分中或在默认转变部分中定义。在默认转变部分中定义的转变充当后备并且当状态内没有定义适用的转变或触发状态转变所需的条件无法得到满足时被触发。默认转变部分可以用于定义允许技能机器人得体地处置出乎意料的用户动作的路由。
状态部分:对话流及其相关操作被定义为管理对话流内的逻辑的暂时状态序列。对话流定义内的每个状态节点都命名一个部件,所述部件提供所述对话中的那个时候所需的功能。因此,状态是围绕部件构建的。状态包含特定于部件的性质并且定义了在部件执行之后被触发的向其他状态的转变。
特殊情况场景可以使用状态部分来处置。例如,有时可能想要为用户提供选项来暂时离开用户与之接洽的第一技能以进行数字助理内的第二技能中的事情。例如,如果用户忙于与购物技能进行会话(例如,用户已做出一些购买选择),则用户可能想要跳转至银行业技能(例如,用户可能想要确保他/她有足够的钱用于购买)并且然后返回到购物技能以完成用户的订单。为了解决这一点,第一技能的对话流定义中的状态部分可以被配置为发起与同一数字助理中的第二不同技能的交互并且然后返回到原始对话流。
(6)将自定义部件添加到技能机器人:如上所述,技能机器人的对话流中指定的状态对与状态相对应地提供所需的功能的部件进行了命名。部件使技能机器人能够执行功能。在某些实施例中,DABP 102提供了用于执行各种各样的功能的一组预先配置的部件。技能机器人设计者可以选择这些预先配置的部件中的一个或多个并且将其与技能机器人的对话流中的状态相关联。技能机器人设计者还可以使用DABP 102提供的工具创建自定义部件或新的部件并且将自定义部件与技能机器人的对话流中的一个或多个状态相关联。
(7)测试并部署技能机器人:DABP 102提供了使技能机器人设计者能够测试正在开发的技能机器人的几个特征。然后,可以将技能机器人部署并包括在数字助理中。
虽然以上描述描述了如何创建技能机器人,但是还可以使用类似的技术来创建数字助理(或主机器人)。在主机器人或数字助理层级,可以为数字助理配置内置系统意图。这些内置系统意图用于识别在不调用与数字助理相关联的技能机器人的情况下数字助理自身(即,主机器人)可以处置的一般任务。针对主机器人定义的系统意图的示例包括:(1)Exit(退出):当用户发出想要退出数字助理中的当前会话或上下文的信号时适用;(2)Help(帮助):当用户请求帮助或定向时适用;以及(3)UnresolvedIntent(未解析出的意图):适用于与Exit(退出)意图和Help(帮助)意图不太匹配的用户输入。数字助理还存储关于与数字助理相关联的一个或多个技能机器人的信息。该信息使主机器人能够选择用于处置话语的特定技能机器人。
在主机器人或数字助理层级,当用户向数字助理输入短语或话语时,数字助理被配置为执行用于确定如何路由话语和相关会话的处理。数字助理使用路由模型来确定这一点,所述路由模型可以是基于规则的、基于ML的或其组合。数字助理使用路由模型来确定对应于用户输入话语的会话是要被路由到特定技能以进行处置、要由数字助理或主机器人自身按照内置系统意图进行处置、还是要被处置为当前会话流中的不同状态。
在某些实施例中,作为此处理的一部分,数字助理确定用户输入话语是否使用其调用名称显式地识别技能机器人。如果调用名称存在于用户输入中,则所述调用名称被视为对与调用名称相对应的技能机器人的显式调用。在这种场景下,数字助理可以将用户输入路由到显式调用的技能机器人以进行进一步处置。在某些实施例中,如果不存在特定调用或显式调用,则数字助理评估接收到的用户输入话语并针对与数字助理相关联的技能机器人和系统意图计算置信度得分。针对技能机器人或系统意图计算的得分表示用户输入代表技能机器人被配置为执行的任务或代表系统意图的可能性有多大。选择相关联的计算的置信度得分超过阈值(例如,置信度阈值路由参数)的任何系统意图或技能机器人作为候选以进行进一步的评估。然后,数字助理从所识别的候选中选择特定的系统意图或技能机器人用于对用户输入话语进行进一步的处置。在某些实施例中,在一个或多个技能机器人被识别为候选之后,针对每个意图,(使用针对每个技能训练的模型)对与那些候选技能相关联的意图进行评估并且确定置信度得分。置信度得分超过阈值(例如,70%)的任何意图通常均被视为候选意图。如果选择了特定的技能机器人,则将用户话语路由到该技能机器人以进行进一步的处理。如果选择了系统意图,则由主机器人自身根据所选系统意图执行一个或多个动作。
数字助理层级或技能机器人层级的分类
本文所描述的基于模板的分类技术可以应用于主机器人/数字助理层级和/或技能机器人层级。例如,在包括数字助理或主机器人以及一个或多个技能机器人的聊天机器人系统中,基于模板的分类处理可以由主机器人/数字助理的分类器和/或技能机器人的分类器执行。例如,如图2所描绘的,主机器人可以包括可以使用模板来实施的分类器224。
图2是根据某些实施例的主机器人(MB)系统200的简化框图。MB系统200可以仅在软件中、仅在硬件中、或硬件和软件的组合中实施。MB系统200包括预处理子系统210、路由子系统220和数据存储装置250。图2所描绘的MB系统200仅仅是主机器人中的部件布置的示例。本领域普通技术人员将认识到许多可能的变型、替代方案和修改。例如,在一些实施方式中,MB系统200可以具有比图2所示的那些系统或部件更多或更少的系统或部件,可以组合两个或更多个子系统,或者可以具有不同的子系统配置或布置。
语言处理子系统210被配置为处理由用户提供的话语202。如以上聊天机器人系统概述章节中所讨论的,这种处理可以涉及被执行用于理解话语的含义的NLU处理。因此,语言处理子系统210可以包括被配置为检测话语202的语言的语言检测器212和被配置为对话语202进行解析以理解其含义的语言解析器214。由语言处理子系统210执行的处理可以包括例如句子解析(例如,标记解析、词性还原、识别句子的词性标签、识别句子中的命名实体、生成依存树来表示句子结构、将句子分成子句、分析单独的子句、分解指代、执行分块等)。语言处理子系统210将话语202与作为上述处理的结果而生成的所提取信息205一起输出。例如,所提取信息205可以包括依存树、词性标签列表等。在一些实施例中,语言处理子系统210可以重新格式化话语202以输入到路由子系统220。重新格式化可以涉及例如重新排列话语202中的单词顺序、将话语202分成不同的部分以单独处理每个部分、校正语法错误等。
路由子系统220被配置为确定哪个机器人(例如,一组可用技能机器人216-1至216-3之一或MB系统200自身)应当处置用户话语(例如,话语202)。具体地,路由子系统220的分类器224被配置为确定用户话语是否代表特定的机器人(主或次/技能)和/或用户话语是否代表已经为特定机器人配置的特定意图。例如,如较早讨论的,技能机器人可以配置有一个或多个机器人意图。每个机器人意图可以具有其自己的对话流,并与技能机器人可以执行的一个或多个任务相关联。在确定话语202代表针对特定机器人或特定机器人已经配置的意图时,路由子系统220可以调用所述特定机器人并且传送话语202(可能与所提取信息205一起)作为所述特定机器人的输入235。
可以使用基于规则的模型或基于ML的模型或这两者来实施分类器224。例如,在一些实施例中,分类器224可以包括在训练数据254上训练的神经网络。对于每个技能机器人216,训练数据254可以包括一组对应的示例话语(例如,针对技能机器人216所配置的每个意图的两个或更多个示例话语)。训练数据254可以用于预训练神经网络,以推断用户话语代表技能机器人216或代表已经为技能机器人216配置的意图之一的可能性。
另外,在某些实施例中,分类器224可以被配置为应用一组规则252,以确定用户话语代表技能机器人216或代表已经为技能机器人216配置的意图之一的可能性。可以将作为应用规则的结果而做出的确定与使用ML模型做出的确定进行组合。例如,分类器224的神经网络可以输出第一置信度得分,应用规则的结果可以包括第二置信度得分,并且分类器224可以在数学上组合这两个置信度得分或者将这些置信度得分彼此进行比较以确定话语202最有可能代表的机器人。
可以以各种方式来实施规则252。例如,规则可以被表达为包括与话语的句子结构有关的一个或多个条件的逻辑陈述。在某些实施例中,规则252被表达为模板,更具体地,被表达为regex。如以上所指示的,regex是指定字符串模式的逻辑表达式。例如,为了使话语与披萨订购机器人相匹配,披萨订购机器人的regex可以指定所述话语必须包含单词“pizza(披萨)”与用于下订单的一组同义词中的至少一个单词(例如,“order(订购)”、“buy(买)”、“purchase(购买)”等)的组合。
可以从示例话语(例如,训练数据254中包括的相同话语)得到模板的字符串模式。下文描述如何得到这种字符串模式的示例。通常,通过迭代地细化一个或多个示例话语的组以产生(多个)示例话语的更一般形式来形成模板的字符串模式。细化可以涉及分析示例话语的句法和结构(例如,以识别语言词性(POS)、命名实体等)。因此,字符串模式可以包括POS信息,使得字符串模式由单词序列形成,其中,单词序列中的每个单词对应于特定的词性部分(例如,名词、代词、动词等)。
分类器224可以针对与用户话语进行匹配的每个模板计算置信度得分。该置信度得分指示用户话语与模板的字符串模式的匹配程度。例如,如果话语202精确地匹配字符串模式,则分类器224可以计算出置信度得分为“1”。如果话语202不匹配(例如,话语不包含在字符串模式中指定的序列中的任何单词),则分类器224可以计算出置信度得分为“0”。分类器224可以将置信度得分分派给模板所对应的机器人意图。如果任何特定机器人意图的置信度得分超过阈值,则分类器224可以认为话语202代表该特定机器人意图。
在一些实施例中,分类器224可以支持部分模板匹配。例如,分类器224可以基于用户话语与模板匹配的百分比来计算模板的置信度得分(例如,介于0到1之间的得分)。另外,作为计算模板得分的一部分(例如,通过所匹配的单词/元素的数量对模板得分进行加权)或在跨不同意图对模板得分进行排名时,分类器224可以将模板匹配的长度考虑在内。例如,如果对于同一用户话语对应于不同意图的模板具有相似的得分,则分类器224可以确定其模板具有最长匹配的意图是最有可能由用户话语代表的意图。
进一步地,在某些实施例中,分类器224可以基于针对机器人已经配置的意图的各个得分来计算机器人的总体置信度得分(例如,特定机器人的所有模板得分的平均值)。如果特定机器人的总体得分超过阈值(所述阈值可以与模板得分的阈值相同或不同),则分类器224可以认为话语202代表该特定机器人。
如图2所示,规则252和训练数据254可以存储在MB系统200可访问的数据存储装置250中。数据存储装置250还可以存储技能机器人信息258。技能机器人信息258可以包括关于技能机器人216的能力的信息、用于技能机器人216的配置信息。例如,技能机器人信息258可以包括针对每个技能机器人216的机器人意图列表以及与这些机器人意图相关联的任务的描述。
可以使用模板在句子层级或话语层级执行匹配。在一些实施例中,分类器224还可以在单词层级执行匹配。例如,规则252可以包括具有相关联的置信度得分的单词列表,其中,单词的置信度得分指示所述单词代表特定意图的概率。因此,分类器224可以被配置为通过将用户话语中的单词与列表中的单词进行匹配来确定用户话语中的每个单词的置信度得分。单词层级的评分可以与基于模板的评分组合使用,以更准确地确定用户话语最能代表哪个机器人意图。当用户话语基于模板匹配的得分较高时,可以合理确定用户话语代表模板所对应的意图。然而,可能存在这样的情况,其中,用户话语与任何模板都不紧密匹配,但是仍然具有较高的单词得分(例如,用户话语中的一个或多个单词超过阈值)。
在识别出机器人(例如,基于对作为与模板进行匹配的结果而生成的置信度得分的评估)之后,路由子系统220可以将对话语202的处理移交给所识别的机器人。作为该移交的一部分,路由子系统220可以确定提供什么内容作为所识别的机器人的输入235。在一些实例中,路由子系统220可以提供少于全部的话语202作为输入235。例如,当话语202不包含要由所识别的机器人处理的信息时(例如,话语202仅旨在调用所识别的机器人)可能发生这种情况。进一步地,在一些实施例中,路由子系统220可以在输入235中包括所提取信息205中的至少一些。
图3是根据某些实施例的技能机器人系统300的简化框图。SB系统300可以实施图2中的任何技能机器人216,并且可以仅在软件中、仅在硬件中、或硬件和软件的组合中实施。如图3所示,SB系统300可以包括分类器320和会话管理器330。
分类器320可以以与图2中的分类器224类似的方式操作,并且分类器320可以提供以上关于分类器224描述的功能。分类器320可以使用基于规则的模型或基于ML的模型或这两者来实施,并且可以使用与分类器224相同的输入(例如,话语202和所提取信息205)。在某些实施例中,分类器320被配置为通过应用模板而推断出话语202的意图,所述模板作为规则352被存储在技能机器人系统300可访问的数据存储装置350中。如图3所示,数据存储装置350可以被配置为存储规则352和意图信息354。规则352可以例如包括针对技能机器人系统300的每个意图的单独的regex。意图信息354可以包括从其得到规则352的示例话语和/或其他意图相关的配置信息。例如,意图信息354可以包括一个或多个置信度阈值,其中,这些值由技能机器人设计者指定,作为配置技能机器人系统300的一部分。
分类器320可以使用规则352以及可能还使用训练后的AI模型来确定话语202是否代表针对技能机器人已经配置的特定意图(即,与技能机器人系统300相关联的机器人意图之一)。聊天机器人系统中的每个技能机器人可以包括其自己的分类器320。进一步地,在一些实施例中,分类器224被配置为在数字助理/主机器人已经确定话语202代表特定技能机器人之后做出其确定。例如,主机器人系统200可以使用分类器224确定话语202代表与技能机器人系统300相对应的技能机器人。基于该确定,主机器人系统200可以将话语202和所提取信息204作为输入提供给分类器320,使得分类器320可以将话语202与一个或多个模板进行匹配以识别话语202最能代表的机器人意图。以这种方式,每个技能机器人可以管理和应用其自己的模板,这些模板是从特定于已经为技能机器人配置的意图的示例话语得到的。
在识别出话语202最能代表的意图之后,分类器320可以将所识别的意图的指示322传送给会话管理器330。在图3的实施例中,会话管理器330被示出为在技能机器人系统300本地。然而,会话管理器330可以在主机器人与多个技能机器人之间共享。因此,在一些实施例中,会话管理器330在数字助理或主机器人本地。
响应于接收到指示322,会话管理器330可以确定对话语202的适当回应335。例如,回应335可以对应于图1的实施例中的DA回应112之一,并且可以是在为技能机器人系统300配置的对话流定义355中指定的动作或消息。例如,会话管理器330可以从数据存储装置350访问对话流定义355,并且基于对话流定义355,将与所指示的意图相关联的对话流状态确定为要转变到的下一个状态。会话管理器330可以基于对话语202和/或从话语202得到的信息(例如,所提取信息204)的进一步处理来确定回应335。例如,如果话语202是“Checkbalance in savings(查询储蓄余额)”,则会话管理器330可以转变到向用户呈现与用户的储蓄账户有关的对话的对话流状态。会话管理器330可以基于表明所识别的意图是为技能机器人系统300配置的“CheckBalance(查询余额)”意图的指示322、并且还基于识别到已经为“Account_Type(账户_类型)”实体提取的“saving(储蓄)”的值来转变到该状态。
用于生成模板的示例技术
确定用户话语与模板的匹配程度的一种方法是识别用户话语与模板共有的最长公共子序列(LCS)。基于LCS,可以针对与模板相关联的意图计算置信度得分。例如,尽管所述话语包含了附加单词,可以认为话语“I want to order pizza(我想订购披萨)”与包括模式“I order pizza(我订购披萨)”的模板100%匹配。在某些实施例中,这样的匹配返回得分1.0,这代表完美的模板匹配。这种匹配技术本质上是尝试匹配模板的至少一个子字符串,并且理想情况下是匹配整个模板。可以将用户话语与跟不同机器人意图相关联的模板进行匹配,以将话语分类为与不同机器人意图中任何一个具有最高得分的模板的意图相对应。如以下所解释的,LCS还可以用于创建代表多个示例话语的模板。
图4图示了根据某些实施例的示例模板集400。模板集400包括模板402、404、406和418,并且可以对应于与同一机器人意图(例如,为图3中的技能机器人系统300配置的意图)相关联的模板。模板402、404和406分别从示例话语412、414和416得到,使得每个示例话语具有对应的模板。例如,模板402、404和406可以基于其对应示例话语412、414和416的精确字符串模式。为了确定用户话语是否代表机器人意图,可以将用户话语与模板402、404和416中的每个模板进行匹配。匹配的结果可以包括每个模板402、404和416的置信度得分,其中,置信度得分指示用户话语代表机器人意图的程度。
针对向聊天机器人提供的每个示例话语(例如,示例话语412、414和416)创建模板并与模板进行匹配可能很麻烦。如果存在相同示例话语的多种变化或排列,则可能为每种排列生成各自的模板,并且这将导致要匹配大量模板。可以将模板的数量减少到一定程度,例如,通过使用基于LCS的归纳过程来识别两个示例话语共有(在两个示例话语之间共享)的子序列,并且将所述子序列用作这两个示例话语的模板。例如,在图4的实施例中,如果示例话语412和示例话语414共享相同的子序列,则可以用捕获该共享子序列的单个模板来替换模板402和404。然而,仅通过基于LCS的归纳得到的模板无法充分捕获示例话语背后的全部含义。例如,仅识别示例话语与另一示例话语之间的最长公共子序列并没有考虑示例话语的哪些部分对其含义是可选的以及哪些部分是强制性的。
regex提供了一种方法用于在捕获示例话语背后的语义含义的同时减少要匹配的模板数量,以保留示例话语的含义的方式对这些模板进行泛化。另外,regex是有利的,因为它们不仅是机器可理解的,而且是人类可理解的,这有助于由机器人开发人员进行规则的调试和定制。在某些实施例中,regex可以包括模式(例如,单词/子字符串的序列,并且对于每个单词或子字符串,包括该单词或子字符串的所需实例的数量(0或更多、1或更多等)。regex可以进一步包括语言信息(例如,有关名词、动词等的信息)。作为示例,除了特定单词在用户话语的上下文中起作用的词性之外,regex还可以指定在用户话语中特定单词应当出现的顺序。
理想地,为聊天机器人配置的每个意图仅具有为其生成的一个模板,使得可以通过与单个模板进行匹配来确定用户话语是否代表所述意图。例如,如图4所描绘的,可以生成泛化模板418,该泛化模板捕获示例话语412、414和416中每一个的结构和含义。用户话语可以与泛化模板418进行匹配,并且这可能足以确定用户话语是否代表与示例话语412、414和416相关联的机器人意图。用户话语可以可选地与模板402、404和406进行匹配,以便确定用户话语最类似于示例话语412、414或416中的哪一个。
可以通过应用语言理解将模板402、404和406简化为更一般的形式来生成泛化模板418。简化过程可以涉及基于语言的词性(如名词、主语、谓语等)以及这些词性之间的关系来泛化模板402、404和406。下文描述在单词层级和句子层级应用的模板泛化技术的示例。
在某些实施例中,模板由规则生成器生成。规则生成器可以是数字助理/主机器人的一部分。例如,如图2所描绘的,主机器人系统200可以包括规则生成器260。可替代地,每个技能机器人(例如,图3中的技能机器人系统300)可以包括其自己的规则生成器。在又一实施例中,规则生成器可以是聊天机器人系统外部的单独计算机系统的一部分。规则生成器可以在硬件和/或软件(例如,作为程序代码)中实施,并且可以被配置为执行用于识别示例话语中的词性(例如关键名词、动词等)的语言处理。规则生成器可以进一步被配置为确定示例话语的句子结构。基于语言处理,规则生成器可以为每个示例话语生成单独的regex作为初始模板集(例如,模板402、404和406)。
在生成初始模板集之后,规则生成器可以将模板彼此进行比较,并且基于所述比较,识别模式以学习被编码为一个或多个新regex的规则,这些新regex补充或替换初始模板集。新regex是初始模板集的泛化(例如,泛化模板418)。例如,可以将新regex确定为捕获与同一意图相关联的两个或更多个先前的regex的共享特征。这可以迭代地完成,一次进行一对regex。新regex也可以是先前的regex的更一般的版本。因此,可以在多次迭代的过程中形成泛化模板418,其中,每次迭代涉及进一步细化或简化至少一个现有模板。
另外,在某些实施例中,规则生成器被配置为执行过滤过程,由此如果相同的regex与不同的机器人意图相关联,则所述regex将被丢弃,因为它不够具体(因为匹配这种regex不足以指示不同机器人意图中的任何特定机器人意图)。例如,在图4的实施例中,如果在生成泛化模板418的过程中规则生成器确定存在两种替代方法来进一步简化现有模板,但是第一种方法导致模板与针对(同一聊天机器人或另一个聊天机器人的)不同机器人意图已经生成的泛化模板相同,则规则生成器可能会忽略由第一种方法生成的模板。因此,规则生成器可以跨意图比较模板/regex,以确定保留哪些regex。
为了生成泛化模板,诸如图2中的规则生成器260等规则生成器可以被配置为应用一种或多种启发法(heuristics)。泛化可以在单词层级执行,例如使用词干提取、系统实体泛化、自定义实体泛化、泛化词性、单词同义词和/或大小写中立化。
词干提取:在词干提取中,单词被替换为其词根/词干。例如,“paid(“付款”的过去时态)”变为“pay(“付款”的动词原形)”,因此,如果模板包括序列“When was I last paid”(我上一次付款(过去时态)的时间),则所述序列将变为“When was I last pay”(我上一次付款(动词原形)的时间)。
系统实体泛化:如以上所指示的,聊天机器人系统可以配置有根据实体类型枚举的系统级实体。当这种实体出现在模板序列中时,可以将这种实体替换为其命名实体类型。例如:“pay Lauren$20”(付给劳伦20美金)可能会变成“pay PERSON CURRENCY”(付给“人物”“货币”)。
自定义实体泛化:如以上所指示的,聊天机器人系统可以配置有自定义实体(例如,特定于一个或多个技能机器人的实体)。当定义自定义实体时,可以为自定义实体指定有效值的列表。例如,Account_Type(账户_类型)实体可以是为金融机器人定义的自定义实体,其中,Account_Type实体可以具有值“checking(活期存款)”或“saving(储蓄)”。因此,“payMom from checking”(从活期存款给妈妈付款)可能会变成“pay Mom from Account_Type”(从“账户_类型”给妈妈付款)。
泛化词性:在一些实施例中,泛化了某些词性(例如,符号和感叹词)。例如,“Hello$%^(你好$%^)”可能变为“UH SYM SYM SYM”,其中“UH”表示问候感叹词并且“SYM”表示符号。
单词同义词:可以将单词替换为其同义词(例如,来自VerbNet、WordNet或已知同义词的某个其他来源的同义词)。例如,“pay Mom$20(付给妈妈20美金)”与“send Mom$20(寄给妈妈20美金)”具有相同的含义,因为“send(寄给)”和“pay(付给)”是同义词。在这种情况下,“send(寄给)”和“pay(付给)”可以作为同一模板元素的选项被包括,例如,“(send|pay)Mom$20((付给|寄给)妈妈20美金)”。在一些实施例中,通过将来自示例话语的单词编码成词向量并确定词向量在向量空间中的位置彼此靠近来获知同义词。例如,用于“red(红色)”和“green(绿色)”的词向量在向量空间中的位置可以彼此靠近,因为这两个术语都与颜色的概念有关。
大小写中立化:为了允许用户话语的大写变化,可以通过大小写中立化来标准化从示例话语得到的模板。例如,“I want to order a Pizza(我(大写字母)想要订购披萨)”可能会变成“i want to order a pizza(我(小写字母)想要订购披萨)”。
在某些实施例中,规则生成器被配置为将句子层级泛化与单词层级泛化结合使用或替代单词层级泛化。句子层级泛化可以包括例如停止词、归纳、子表达式/语言分组、子模式排序、可选子表达式、子表达式的合并、同义词、语言特征和语言的先验子表达式。
停止词:在一些实例中,停止词可以从模板中删除。例如,“I want to send money(我想要寄钱)”可能变成“I want send money(我想寄钱)”。
归纳:如以上所指示的,示例话语可以用于基于其最长公共子序列来进行泛化。例如,“I to send money(我寄钱)”可以是“I want to send money for something(我想要寄钱买一些东西)”和“I would like to send money(我想要去寄钱)”的泛化。
子表达式/语言分组:可以应用语言推理以将话语的各部分分组在一起成为子模式。例如,“I want to send$20from my checking account to Mom(我想从我的活期存款账户寄20美金给妈妈)”可以分解为以下子模式:
请求类型:I want to(我想)
主要动词:send(寄)
直接宾语:$20(20美金)
介词/实体短语1:from my checking(从我的活期存款账户)
介词/实体短语2:to Mom(给妈妈)
子模式中出现的动词、名词和介词短语也可以进一步分解为它们的组成部分。例如,介词短语可以分为先介词然后名词短语。类似地,名词短语可以分为先形容词、代词、限定词、然后是名词。例如,在句子“I am going to school(我要去学校)”中,单词“going to(要去)”是动词短语的一部分,而“school(学校)”是名词短语的一部分,因此“going(要)”和“to(去)”应当与名词短语元素(例如,school(学校))分开地分组在一起。
语言分组也可以跨模板执行。例如,假设存在用于相同意图的两个模板。这两个模板的形式为:A B E1 E2(模板1)和A B E3 E4(模板2),其中,E1、E2、E3和E4是实体。因此,可以推断出这两个模板的更一般形式是:A B(E1 E2|E3 E4)。作为另一个示例,假设这两个模板的形式为:A B DO1 E1和A B DO2 E2。因此,这两个模板的一般形式可以是:A B(DO1 E1|DO2E2)。
子模式排序:被分组为子模式的单词可以用不同的方式排序。例如,“I want to send$20from checking to Mom(我想从活期存款寄20美金给妈妈)”可以重新排序为“$20 toMom from checking I want to send(20美金给妈妈从活期存款我想寄)”。
可选子表达式:子模式可以包括可选元素和/或强制性元素(例如,A是可选的、A或B中的任何一个、要么A要么B等)。例如,“I want to send money to Mom(我想寄钱给妈妈)”可以用模板形式表达为:(I want to),send,money,(to Mom)*((我想),寄,钱,(给妈妈)*),使得“to Mom(给妈妈)”是可选的。例如,可以通过比较模板以确定模板的哪些部分是冗余的来识别可选元素。例如,如果用于相同意图的两个模板的形式为:A B C(模板1)和A B CD(模板2),则可以推断元素D是可选的。在一些实例中,某些类型的子模式(如介词短语)可以被视为是可选的。另外,可以基于可选元素的词性来识别可选元素。例如,动词/动作和对象通常是强制性的,而实体通常是请求的参数,并且因此可以被设为可选的。副词是可以被设为可选的元素的另一示例。
子表达式的合并:具有等效含义的子表达式可以通过用复合表达式替换来合并。例如,“(I would like to),send,money((我想要去),寄,钱)”和“(I want to),send,money((我想),寄,钱)”可以泛化为:(I(would like)|want to),send,money(我(想要去|想)寄,钱)。
同义词:在一些实施例中,规则生成器可以被配置为跨示例话语/模板来获知同义词。如果由两个或更多个示例话语产生的模板仅相差一个单词并且所述单词具有相同的词性,则规则生成器可以将所述不同的单词识别为同义词。例如,规则生成器可以基于“send Mom$20(寄20美金给妈妈)”和“pay Mom$20(付20美金给妈妈)”被提供作为针对同一机器人意图的示例话语来确定“send(寄)”和“pay(付)”是同义词。
语言(语义)特征:在某些实施例中,规则生成器可以基于是否存在语义特征来生成具有子表达式的模板。例如,泛化模板可以指定子表达式元素是否为否定、子表达式元素的动词时态、所请求的量或请求类型。
语言的先验子表达式:在某些实施例中,规则生成器可以配置有与任何示例话语无关地提供的子表达式或部分模板。这样的子表达式可以基于常见的与语言相关的用法,如惯用语。例如,在英语语言中,以下可能是一个先验子表达式:
please*,((I want)|(I would like)|(could you)|(would you)|can you)*,(show|tell|help)me*,?*(请*,((我想)|(我想要)|(你可以)|(你会)|你能)*,(展示|告诉|帮助)我*,?*)
因此,如果规则生成器基于仅包括“I want to(我想)”的示例话语生成泛化模板,则规则生成器可以将上述子表达式合并到泛化模板中,从而捕获相同子表达式的变型,尽管在示例话语中没有表示这样的变型。
从以上的讨论中将理解,泛化可以涉及除LCS之外的其他技术,如基于实体知识以及如同义词和子模式表达式等语言信息的泛化。在某些实施例中,考虑到各个单词得分来进行泛化。如之前所提及的,分类器可以基于具有对应置信度得分的单词列表来执行单词层级匹配。单词得分也可以用于泛化模板。例如,可以通过排除得分低于特定阈值的单词、将得分高于特定阈值的单词设为强制性的、或这两者来使模板更一般化。如果候选模板不包含任何单独的高分词或完全由停止词或停止短语组成(help(帮助)、show(展示)、can youhelp me to(你能帮我吗)等),则可以拒绝这些候选模板。
如以上所指示的,分类器可以采用使用模板生成和泛化技术得到的模板。给定一组示例话语作为训练示例,规则生成器可以将这些示例话语用作生成对应的初始模板集的起点。以这种方式,每个训练示例都可以为对应的模板或规则提供基础。为了匹配与训练示例不同的用户话语,可以将初始模板集进行泛化以产生一个或多个泛化模板,从而允许分类器匹配更大的一组类似话语。例如,如以上所讨论的,可以比较对应于相同意图的模板,以基于最长公共子序列来生成更一般的模板。为了获得最终的泛化模板(例如,泛化模板418),可以以这种方式生成多个候选模板,并且然后迭代地细化这些候选模板,直到在不会跨机器人意图产生冲突的情况下无法再简化这些候选模板为止。例如,跨不同意图(例如,为同一技能机器人配置的意图或为不同技能机器人配置的意图)的候选模板。如果为两个不同的机器人意图生成了相同的候选模板,则可以针对两个意图都排除考虑所述候选模板作为模板。
在某些实施例中,模板泛化可以涉及响应于确定候选模板的当前形式与跟不同机器人意图相关联的另一模板(例如,候选模板或最终的泛化模板)冲突而回溯或恢复到候选模板的较早形式(例如,前一形式)。例如,规则生成器可以被配置为在检测到用于第一机器人意图的模板与用于第二机器人意图的模板之间的冲突时,撤消针对这两个模板中的至少一个模板的最后一个泛化步骤。例如,在恢复到这两个模板的较早形式时,规则生成器可以以不同的方式泛化模板,以使模板不会彼此冲突。进一步地,规则生成器可以存储导致冲突的任何泛化步骤的记录,例如,通过将这种泛化步骤添加到黑名单中。在某些实施例中,规则生成器为每个机器人意图维护单独的黑名单。为了提高性能,规则生成器可以进一步被配置为将候选模板的在不会引起冲突的情况下无法被进一步泛化的部分标记为“冻结”,从而指示被标记的部分处于其最终形式。
因为生成泛化模板可能涉及大量迭代,所以执行处理以获得“最终”泛化模板而到后期才发现该泛化模板与另一个模板冲突(例如,在评估用于另一意图的候选模板期间)可能在计算上是效率低下的。因此,在某些实施例中,规则生成器(例如,规则生成器260或彼此协作操作的不同技能机器人的规则生成器)被配置为针对多个意图并行地执行泛化。例如,可以对聊天机器人系统内已经配置的所有意图同时执行泛化。该并行处理可能涉及首先针对两个或更多个已配置的意图对初始模板执行更保守或更“安全”的泛化、在每个泛化步骤之后检查候选模板之间的冲突、并且在发现冲突时使候选模板回滚。保守泛化的示例包括词干提取和系统实体泛化,这两种方法都可以在几乎没有甚至没有改变含义或无意中删除对含义至关重要的元素的风险下进行。在已经完成保守的泛化之后,规则生成器可以进行到不太保守的泛化,然后再次在每个泛化步骤之后检查冲突,并在发生冲突时恢复到较早的模板形式。
回溯示例:假设“How much did I spend last month(我上个月花了多少钱)”是“Balances(余额)”意图的示例话语,并且“How much did I spend on gas last month(我上个月为汽油花了多少钱)”是“TrackSpending(跟踪花费)”意图的示例话语。规则生成器可以进行将“on gas(为汽油)”设为可选的泛化步骤,因为它是介词短语。在将“on gas(为汽油)”设为可选之后,规则生成器确定现在在TrackSpending(跟踪花费)意图的当前候选模板与Balances(余额)意图的初始模板之间存在冲突,因为这两个模板的模式相同。响应于该确定,规则生成器可以使得“on gas(为汽油)”再次成为需要的。进一步地,规则生成器可以试图以不同的方式来泛化“on gas(为汽油)”。例如,“on gas(为汽油)”可以泛化为“ExpenseType(费用类型)”实体,或者分组为子表达式,如“on(gas|food|clothes)(为(汽油|食物|衣服))”。如果无法进一步泛化“on gas”,则规则生成器可以将“on gas”标记为冻结,并试图对TrackSpending(跟踪花费)意图的候选模板的不同部分进行泛化。
在某些实施例中,规则生成器可以被配置为结合用户输入(例如,来自技能机器人开发人员的输入),作为确定最终的泛化模板集的一部分。具体地,规则生成器可以被配置为请求关于是否应当接受或拒绝泛化步骤的用户反馈。例如,如以上所指示的,规则生成器可以基于向量空间中词向量的接近度来生成同义词。向量空间中的接近度可以指示单词彼此紧密相关(例如,单词具有相同的效用或含义),但这并不总是如此。在一些实例中,其向量在向量空间中靠近的单词不是同义词。因此,规则生成器可以在识别出可能是同义词的单词之后要求用户确认所识别出的单词实际上是同义词。以这种方式,可以将(基于将启发法应用于训练数据的)机器学习与人类理解进行组合,以提高所得模板的质量。
模板泛化示例
图5图示了针对机器人意图的示例话语510和泛化模板520。在图5的实施例中,机器人意图与查询各种银行账户中的余额的任务相关联。如图5所示,示例话语510包括以下内容:
How much do I owe on all my credit cards?(我所有的信用卡欠多少钱?)
What’s the current balance on my cc?(我cc上的当前余额是多少?)
How much money do I have in all of my accounts?(我所有的账户里有多少钱?)
How much money did I save last year?(去年我存了多少钱?)
What’s the value of my trading account?(我的交易账户的值是多少?)
How much money do I have in checking?(我的活期储蓄里有多少钱?)
What’s my balance?(我的余额是多少?)
What’s my available credit on my Visa?(我在Visa上的可用信用额度是多少?)
Whats my balance(我的余额是多少)
如以上所指示的,实体泛化是更为保守的泛化类型之一。因此,作为初始泛化步骤,可以将以下元素泛化为“Account_Type(账户_类型)”实体:credit cards(信用卡)、cc、trading(交易)、checking(活期储蓄)、Visa。这在图6的框610中示出。
图6图示了基于图5中的示例话语510的一系列泛化步骤的结果。框610对应于以上结合图5讨论的初始泛化步骤的结果。如图6所示,与Account_Type(账户_类型)实体相对应的元素已经替换为“Account_Type(账户_类型)”。可以被执行以产生框610中所示的结果的附加处理包括将“Whats”校正为“What’s”。
框620示出了进一步泛化的结果,包括将短语“What’s my balance?(我的余额是多少?)”和“Whats my balance(我的余额是多少?)”组合为:“What’s my balance[?](我的余额是多少[?])”,其中,括号表示问号是可选的。
框620还示出了规则生成器可以基于确定存在Account_Type(账户_类型)后跟单词“account(账户)”的情况而做出的逻辑推理的结果。基于该确定,规则生成器可以推断出Account_Type(账户_类型)可以可选地后跟“account(账户)”,或者推断出“account(账户)”可以代替Account_Type(账户_类型)。这可以表达为:[Account_Type account]([账户_类型账户])。
框630示出了应用另一逻辑推理的结果。具体地,规则生成器可以确定在到目前为止产生的模式中,Account_Type(账户_类型)之前经常是介词和/或修饰语,如“on all my(在我所有的……上)”、“on my(在我的……上)”、“in all of my(在我所有的……中)”、“of my(我的)”、“in(在……中)”以及“on my(在我的……上)”。这些短语包括介词、限定词和物主代词的组合。由于限定词并不重要,因此这些短语可以重写为[on[all]my|in[all of my]]([在我[所有的]……上|在[我所有的]……中]),或者可能为[on in of all my]([在我所有的……上中])。因此,在“Balances(余额)”意图的上下文中,Account_Type(账户_类型)实体可以表达为实体短语:[on in of all my][Account_Type account]([在我所有的……上中][账户_类型账户])。由于这些是可选元素,并且实体短语可能出现在字符串模式中的任何位置(在其他元素之前或之后),因此删除了实体短语以产生框630中所示的字符串模式。
图7图示了一系列泛化步骤的结果,这些步骤可以接在图6所示的泛化之后并且最终导致图5中所示的泛化模板520。如以上所讨论的,在框630中,可以删除涉及Account_Type(账户_类型)实体的实体短语。然而,事实证明,删除操作在某种程度上弱化了含义,因为现在不清楚介词之前的各部分(例如,“What’s the value(值是什么)”)的含义。
如框710所示,下一个逻辑推理可以基于以下认识:“the value(值)”、“my balance(我的余额)”、“my available credit(我可用的信用额度)”以及“the current balance(当前余额)”是在实体短语之前并在介词“in(在……中)”、“of(……的)”和“on(在……上)”的另一侧的短语。因此,可以推断出这些短语在含义上是等效的,因此可以将它们组合为:
What’s[the value,my balance,my available credit,the current balance][?]([值,我的余额,我可用的信用额度,当前余额]是多少[?])
框720示出了推断出“money(钱)”是可选的结果。规则生成器可以以不同的方式做出该推断。一种方法是认识到“how much(有多少)”后跟名词“money(钱)”,之后又后跟“do(是)”。另一种方法是确定“how much(有多少)”或许应当后跟名词或被计数的事物,但在一些实例中可以省略。
框730示出了推断出“last year(去年)”是代表时间的实体的示例的结果。在这种情况下,实体用于表示请求余额信息的相关时间段。假设有可能提供除当前时间以外的时间的余额,则可能已经声明了这样的实体(例如,作为与“Balance(余额)”意图相关联的自定义实体)。然而,如果尚未声明任何这样的实体,则规则生成器仍可以假设时间是与Balance意图相关联的实体,并且可以省略与时间实体相对应的任何术语。
框740示出了推断出“owe(欠)”、“have(有)”和“save(存)”是同义词的结果。如果这些术语出现在诸如VerbNet等同义词列表中,则可以将它们与同义词列表中的其他同义词进行组合,以创建一组替代术语作为模板的一部分。然而,这些术语通常在同义词列表中不会表现为同义词。而是,它们仅是出于Balance(余额)意图的目的的同义词。因此,规则生成器可以以其他方式推断这些术语是同义词。例如,规则生成器可以基于这些术语中的每个术语的词向量在向量空间中的位置彼此靠近和/或基于确认这些术语实际上是同义词的用户输入,来确定这些术语是同义词。另外,在框740中,将问号“?”设为可选的。可以重复进行泛化处理,直到无法进一步简化模板为止。出于说明目的,可以假设模板的最终不可简化形式对应于框740中所示的这两个字符串模式。
框740中所示的这两个字符串模式对应于图5中的泛化模板520。返回参照图5,泛化模板520包括来自框740的这两个字符串模式作为替代字符串模式522和524。然而,在一些实施方式中,每个最终模式都可以被视为独立的模板。另外,泛化模板520包括以上结合图6的框630所讨论的可选元素。
图5至图7仅是图示如何执行一系列泛化以获得泛化模板的最终形式的示例。然而,最终形式不必与泛化模板520相同。而是,对以上结合图5至图7讨论的泛化步骤的修改是可能的。例如,在图7的框740中描绘的处理之后可以跟有确定“what is(是什么)”问题和“howmuch(有多少)”问题出于Balances(余额)意图的目的紧密相关的附加步骤。规则生成器可以基于例如本体论(ontology)或知识图进行这种终止。
如较早讨论的,模板可以以regex的形式表达,所述regex包括模式信息和语言词性(POS)信息。因此,虽然图5至图7的讨论集中于泛化模板520的模式信息的推导,但应当理解,泛化模板520可以不仅包括图5中所描绘的这两个字符串模式522、524以及可选元素。例如,泛化模板可以包括关于字符串模式522、524的不同部分所对应的词性的信息。
示例训练过程
图8图示了根据某些实施例的简化流程图800,其描绘了作为训练分类器的一部分的用于生成泛化模板的处理。图8所描绘的处理可以在由相应系统的一个或多个处理单元(例如,处理器、核)执行的软件(例如,代码、指令、程序)中、硬件中或其组合中实施。软件可以存储在非暂态存储介质上(例如,存储器设备上)。图8所呈现的且下文所描述的方法旨在是说明性的而非限制性的。尽管图8描绘了以特定序列或顺序发生的各个处理步骤,但这并不旨在是限制性的。在某些替代性实施例中,步骤可以以某种不同的顺序执行或者一些步骤还可以并行地执行。在某些实施例中,如图2中所描绘的实施例中,可以由如规则生成器260等规则生成器执行图8中所描绘的处理。
在802处,接收与不同意图相关联的示例话语。例如,聊天机器人系统可以包括多个技能机器人,并且可以向每个技能机器人提供一个或多个示例话语。示例话语例如可以是由技能机器人开发人员创建并存储以用作训练数据的话语。在某些实施例中,对每个技能机器人进行独立训练。然而,如以上所指示的,模板泛化可以涉及针对多个聊天机器人并行地执行泛化。在一些实例中,在802中接收的示例话语可以包括与已经针对同一聊天机器人(例如,主机器人或技能机器人)配置的不同意图相关联的话语。进一步地,在一些实例中,在802中接收的示例话语可以包括与已经针对不同的聊天机器人配置的不同意图相关联的话语(例如,用于第一技能机器人的话语和用于第二技能机器人的话语)。每个意图可能具有与之相关联的某些已声明的实体/变量。例如,跟踪花费意图可以配置有“Expense_Type(话费_类型)”和“Amount(数量)”实体等。另外,可能存在并非特定于任何特定意图的某些系统级实体,例如“Date(日期)”和“Time(时间)”。
在804处,从802中接收的示例话语提取词性。例如,每个示例话语可以被输入到语言处理子系统(如图2中的语言处理子系统210)以便为示例话语生成POS标签。可以使用标准语言解析器并使用通用词性来生成POS标签。
在806处,使用在802中接收到的示例话语和在804中提取到的POS,生成作为regex的初始模板。初始模板中的每个模板都可以表达为包括字符串模式的regex。regex可以支持为其对应的字符串模式中的元素指定以下概念中的任何一个/全部/其中之一的能力:强制性的/可选的、连续的、顺序的和可重新排序。例如,如较早所解释的,regex可以用于指定哪些元素是强制性的或可选的、以及元素可能在字符串模式中出现的顺序。进一步地,每个regex可以包括POS信息。例如,对于其字符串模式中的每个POS,regex可以包括指示对应的POS标签(例如,名词、动词、介词等)的信息。
在808处,执行泛化以从806中生成的初始模板得到泛化模板。可以使用上述单词层级泛化技术和/或句子层级泛化技术中的任何一种来执行808中的泛化。例如,在某些实施例中,808中的泛化可以涉及以下活动:
1)使用每个意图的已声明实体,识别实体短语以便泛化实体。例如,对于跟踪花费意图,可以将话语“how much I did I spend on entertainment(我在娱乐上花了多少钱)”泛化为“how much did I spend on EXPENSE_TYPE(我在“花费_类型”上花了多少钱)”。
2)基于实体短语在示例话语中出现的位置以及与相同意图相关联的实体短语的共同词性,获知实体短语的regex模式。
3)获知介词短语模式。例如,如果一个短语具有“on Expense_Type(在花费_类型上)”,而另一个短语具有“for Expense_Type(为了花费_类型)”,则可以获知模式“(on|for)Expense_Type((在……上|为了)花费_类型)”。获知可以涉及应用启发法以基于语言理解进行逻辑推理。在804中提取的POS有助于这种推理。
4)将话语分解为组成部分,包括动词短语、“Wh”短语(例如,包括单词“what(什么)”或“which(哪个)”的短语)、名词短语和介词短语。由此获知动词、wh和名词短语模式。
5)在给定的意图内,比较与该意图相关联的话语,以获知可以如何合并子短语模式(例如,send(寄)和pay(付)合并为“send|pay(寄|付)”)或如何将子短语模式设为可选的(例如,获知用于指定日期范围的模式“last month(上个月)”可能是可选的)。另外,例如,可以基于在相同上下文中使用的单词和/或从词向量相似度来获知同义词。
如较早讨论的,一些类型的泛化比其他类型的泛化更安全(例如,词干提取和实体泛化通常是最安全的),并且作为框808中处理的一部分可以首先执行这种泛化。同样如以上所讨论的,如果泛化被测试并被发现是无效的,则可以执行回溯(撤消泛化)以替代地尝试不同的泛化,并且可以记住被取缔/视为无效的泛化,以免重新尝试所述无效的泛化。如果泛化导致的总体模式达到以下效果,则可以将其视为无效:(i)不够具体(例如,“what do(是什么)”是不太可能特定于特定意图的模糊模式),或(ii)与从不同意图获知的另一种泛化的模式相匹配。
可以重复框808中的处理(例如,步骤3至步骤5),将剩余已获知模板的所有组合进行配对,直到无法进行进一步的泛化为止。另外,用户输入(例如,来自技能机器人开发人员的输入)可以用于测试泛化的有效性。例如,在框808的步骤5中,可以使用用户输入来替代比较话语。而且,经由用户输入引入的新训练示例(例如,由用户提供的附加示例话语)可以使训练再次开始,使得可以生成附加模板和从这些附加模板得到的泛化。
在810处,将来自806的初始模板和来自808的泛化模板与其对应的意图相关联地存储。例如,模板可以被保存在运行时引擎(例如,图2中的路由子系统220)可访问的存储存储器中(例如,保存在数据库中)。泛化模板形成要由运行时引擎的分类器(例如,分类器224)应用的规则的至少一部分。
根据上述技术(例如,基于关于图8讨论的处理)生成的泛化模板具有许多优点。例如,通过(例如,基于元素的POS)将某些模板元素设为可选的而不是完全删除这些元素,可以以非简化的方式执行泛化。相反,仅依靠LCS(简化技术)来泛化模板可能会导致模板过于一般化。进一步地,可以从现有模式中学习新的模式,以得到进一步的泛化(例如,基于Verb/WordNet或词向量将一个单词替换为含义相近的另一个单词),从而提高所得模板与更大范围的用户话语进行匹配的能力。通过测试候选模板(例如,通过多轮次重复跨不同意图的成对模板比较),可以提高所得模板代表其对应意图的精度。
示例运行时过程(基于模板的意图分类)
图9图示了根据某些实施例的简化流程图900,其描绘了用于基于泛化模板对用户话语的意图进行分类的处理。图9所描绘的处理可以在由相应系统的一个或多个处理单元(例如,处理器、核)执行的软件(例如,代码、指令、程序)中、硬件中或其组合中实施。软件可以存储在非暂态存储介质上(例如,存储器设备上)。图9所呈现的且下文所描述的方法旨在是说明性的而非限制性的。尽管图9描绘了以特定序列或顺序发生的各个处理步骤,但这并不旨在是限制性的。在某些替代性实施例中,步骤可以以某种不同的顺序执行或者一些步骤还可以并行地执行。在某些实施例中,如在图2中所描绘的实施例中,可以由诸如分类器224等分类器来执行图9中所描绘的处理。
在902处,从用户接收话语。例如,在902中接收到的话语可以对应于图2中的话语202。
在904处,处理在902中接收到的话语以提取词性。可以例如由诸如语言解析器214等语言解析器来执行904中的处理。
在906处,识别一个或多个候选模板以用于与在902中接收到的话语进行匹配时使用。在意图分类的上下文中,候选模板可以是分类器可用的所有模板的子集。候选模板包括泛化模板,并且在一些实例中还包括初始(非泛化)模板。在一些实施例中,906中的识别涉及使用索引来滤出可能匹配的模板集。例如,所述索引可以是各个单词得分的“词袋(bag ofwords)”型索引。对于索引中的每个单词,该词袋型索引可以包括相关联的值,所述相关联的值指示所述单词代表某个机器人意图的概率。这允许基于话语的单词得分而快速从考虑中排除机器人意图的子集以及与那些意图相关联的模板。具体地,单词得分可以用于识别最有可能由话语代表的意图,并且然后选择与这些所识别的意图相关联的模板作为进一步评估的候选项。
在908处,将在902中接收到的话语与在906中识别的模板进行匹配。如以上所指示的,模板可以以regex的形式表达,所述regex包括字符串模式和可选的词性信息。因此,908中的匹配可以涉及基于902中的话语与字符串模式的匹配程度和/或由候选模板指定的词性信息来为每个候选模板计算得分。例如,在一些实施例中,得分被计算为使得:(i)如果并非所有强制性元素都匹配,则得分为0,以及(ii)要获得满分1.0,用户话语中的所有单词都必须与候选模板相匹配,因此保留了候选模板模式的可选部分。换言之,根据某些实施例,当用户话语包括模板的所有强制性元素以及模板的所有可选元素时,可获得满分。然而,其他评分方法也是可能的(例如,基于部分匹配来计算介于0到1.0之间的得分)。
作为908中的匹配的一部分,可以应用词性信息以验证来自用户话语的匹配元素与其对应的模板元素起相同词性的作用。如果用户话语中的一个单词与模板中的另一个单词相同,但是具有与之相关联的不同词性(例如,一个是名词,而另一个是形容词),则用户话语中的这个单词可以被视为不匹配。
在910处,按得分对候选模板进行排名,以将与最高得分模板相关联的意图识别为用户话语所对应的机器人意图,即,用户话语最能代表的意图。在一些实施例中,可以应用阈值标准,使得最高得分必须超过次高得分某一阈值。如果最高得分没有超过次高得分所述阈值,则分类器可以提示用户进行输入,以指示与多个最高得分模板相关联的多个意图中的哪个意图是用户希望继续进行的意图。例如,分类器可以向用户呈现意图列表,并要求用户从所述列表中进行选择。可替代地,在部分模板匹配产生最高得分的情况下,或者在两个高得分模板匹配的情况下,分类器可以提出关于对训练模型未知(在任何模板中都没有表示)的单词的问题并阻止完全或明确的匹配。可以提出问题,以提示用户澄清当单词出现在用户话语中时所述单词的含义。
在912处,为已经配置有在910中识别的机器人意图的聊天机器人生成输入。例如,在912中生成的输入可以对应于图2中的输入235,并且可以包括整个用户话语。可替代地,如前所述,聊天机器人的输入可以仅包括用户话语和/或所提取信息的一部分。所提取信息的示例包括POS标签和实体值(例如,Account_Type(账户_类型)实体的“checking(活期存款)”值)。在一些实施例中,在912中生成的输入包括用户话语的经解析的形式,其中用户话语被分解成其组成部分。进一步地,在一些实施例中,在912中生成的输入可以包括哪个模板被视为是匹配模板(例如,凭借具有最高得分)的指示。这种附加信息可以由接收所述信息的聊天机器人用来执行特定动作。例如,聊天机器人可以基于其对话配置来确定取决于所匹配的模板的回应,如取决于匹配模板以不同的对话流状态开始会话。
图9中描绘的分类相关处理不限于用于识别为技能机器人配置的意图。也可以识别系统级的意图(例如,Exit、Help、或为主机器人/数字助理配置的其他意图)。在一些实施例中,与系统级意图有关的用户话语被优先考虑,使得如果最高得分模板与系统级意图相关联并且用户当前正在与技能机器人进行会话,则数字助理中断会话以触发用户与数字助理之间的会话。在用户与数字助理之间的会话完成之后,数字助理可以允许用户切换回被中断的会话。
示例实施方式
图10描绘了用于实施实施例的分布式系统1000的简化图。在图示的实施例中,分布式系统1000包括经由一个或多个通信网络1010耦接至服务器1012的一个或多个客户端计算设备1002、1004、1006和1008。客户端计算设备1002、1004、1006和1008可以被配置为执行一个或多个应用程序。
在各个实施例中,服务器1012可以被适配成运行使得能够生成用于与用户话语进行匹配的模板的一个或多个服务或软件应用程序。
在某些实施例中,服务器1012还可以提供可以包括非虚拟环境和虚拟环境的其他服务或软件应用程序。在一些实施例中,这些服务可以作为基于web的服务或云服务(如在软件即服务(SaaS)模型下)提供给客户端计算设备1002、1004、1006和/或1008的用户。操作客户端计算设备1002、1004、1006和/或1008的用户进而可以利用一个或多个客户端应用程序来与服务器1012交互以利用这些部件所提供的服务。
在图10所描绘的配置中,服务器1012可以包括实施由服务器1012执行的功能的一个或多个部件1018、1020和1022。这些部件可以包括可以由一个或多个处理器、硬件部件或其组合执行的软件部件。应了解,可以与分布式系统1000不同的各种不同的系统配置是可能的。因此,图10所示的实施例是用于实施实施例系统的分布式系统的一个示例并且不旨在是限制性的。
用户可以使用客户端计算设备1002、1004、1006和/或1008与聊天机器人系统进行交互。客户端计算设备1002、1004、1006和/或1008的用户可以包括在与聊天机器人系统的会话期间提供话语的最终用户。根据本公开内容的教导,客户端计算设备1002、1004、1006和/或1008的用户还可以包括提供用于生成模板作为训练意图分类器的一部分的输入的用户。客户端设备可以提供使客户端设备的用户能够与客户端设备交互的接口。客户端设备还可以经由该接口向用户输出信息。尽管图10描绘了仅四个客户端计算设备,但是可以支持任何数量的客户端计算设备。
客户端设备可以包括各种类型的计算系统,如便携式手持设备、如个人计算机和膝上型计算机等通用计算机、工作站计算机、可穿戴设备、游戏系统、瘦客户端、各种消息传递设备、传感器或其他感测设备等。这些计算设备可以运行各种类型和版本的软件应用程序和操作系统(例如,MicrosoftApple或类UNIX操作系统、Linux或类Linux操作系统(如Google ChromeTMOS)),包括各种移动操作系统(例如,Microsoft WindowsWindowsAndroidTM、Palm)。便携式手持设备可以包括蜂窝电话、智能电话(例如,)、平板计算机(例如,)、个人数字助理(PDA)等。可穿戴设备可以包括Google头戴式显示器以及其他设备。游戏系统可以包括各种手持游戏设备、支持因特网的游戏设备(例如,有或没有姿势输入设备的Microsoft游戏控制台、Sony系统、由提供的各种游戏系统以及其他设备)等。客户端设备可以能够执行各种不同的应用程序,如各种因特网相关应用程序、通信应用程序(例如,电子邮件应用程序、短消息服务(SMS)应用程序)并可以使用各种通信协议。
(多个)网络1010可以是本领域技术人员所熟悉的可以使用各种可用协议中的任何一种支持数据通信的任何类型的网络,所述可用协议包括但不限于TCP/IP(传输控制协议/因特网协议)、SNA(系统网络架构)、IPX(因特网分组交换)、等。仅通过示例的方式,(多个)网络1010可以是局域网(LAN)、基于以太网的网络、令牌环、广域网(WAN)、因特网、虚拟网络、虚拟私人网络(VPN)、内部网、外部网、公共交换电话网(PSTN)、红外线网、无线网(例如,根据IEEE 802.11协议套件、和/或任何其他无线协议中的任一种协议操作的网络)和/或这些网络和/或其他网络的任何组合。
服务器1012可以由以下各项构成:一个或多个通用计算机、专用服务器计算机(通过示例的方式包括PC(个人计算机)服务器、服务器、中档服务器、大型计算机、机架式服务器等)、服务器群、服务器集群、或任何其他适当的布置和/或组合。服务器1012可以包括运行虚拟操作系统的一个或多个虚拟机或涉及虚拟化的其他计算架构(如逻辑存储设备的可以被虚拟化以维护服务器的虚拟存储设备的一个或多个灵活池。在各个实施例中,服务器1012可以被适配成运行提供前述公开内容所描述的功能的一个或多个服务或软件应用程序。
服务器1012中的计算系统可以运行一个或多个操作系统,所述一个或多个操作系统包括以上所讨论的那些操作系统中的任何一个操作系统以及任何可商购获得的服务器操作系统。服务器1012也可以运行各种附加服务器应用程序和/或中间层应用程序中的任何一种应用程序,包括HTTP(超文本运输协议)服务器、FTP(文件传送协议)服务器、CGI(通用网关接口)服务器、服务器、数据库服务器等。示例性数据库服务器包括但不限于可从(国际商业机器公司)等商购获得的那些数据库服务器。
在一些实施方式中,服务器1012可以包括一个或多个应用程序以分析并合并从客户端计算设备1002、1004、1006和1008的用户接收的数据馈送和/或事件更新。作为示例,数据馈送和/或事件更新可以包括但不限于馈送、更新或从一个或多个第三方信息源和连续数据流接收的实时更新,所述实时更新可以包括与传感器数据应用程序、财务收报机、网络性能测量工具(例如,网络监测和流量管理应用程序)、点击流分析工具、汽车交通监测等相关的实时事件。服务器1012还可以包括一个或多个应用程序以经由客户端计算设备1002、1004、1006和1008的一个或多个显示设备来显示数据馈送和/或实时事件。
分布式系统1000还可以包括一个或多个数据储存库1014、1016。在某些实施例中,这些数据储存库可以用于存储数据和其他信息。例如,数据储存库1014、1016中的一个或多个数据储存库可以用于存储在意图分类期间使用的模板和/或其他信息。数据储存库1014、1016可以驻留在各种位置。例如,服务器1012所使用的数据储存库可以在服务器1012本地或者可以远离服务器1012并经由基于网络的或专用的连接与服务器1012通信。数据储存库1014、1016可以是不同类型。在某些实施例中,服务器1012所使用的数据储存库可以是数据库,例如关系数据库,如由Oracle和其他供应商提供的数据库。这些数据库中的一个或多个数据库可以被适配成响应于SQL格式的命令来实现数据到以及从数据库的存储、更新和取得。
在某些实施例中,数据储存库1014、1016中的一个或多个数据储存库还可以被应用程序用来存储应用程序数据。应用程序所使用的数据储存库可以是不同类型,如例如键值存储储存库、对象存储储存库或由文件系统支持的通用存储储存库。
在某些实施例中,本公开所描述的分类相关的功能可以经由云环境作为服务提供。图11是根据某些实施例的基于云的系统环境的简化框图,在所述基于云的系统环境中,各种分类相关的服务可以作为云服务来提供。在图11所描绘的实施例中,云基础设施系统1102可以提供可以由用户使用一个或多个客户端计算设备1104、1106和1108请求的一个或多个云服务。云基础设施系统1102可以包括一个或多个计算机和/或服务器,所述一个或多个计算机和/或服务器可以包括以上针对服务器1012所描述的那些计算机和/或服务器。云基础设施系统1102中的计算机可以被组织成通用计算机、专用服务器计算机、服务器群、服务器集群或任何其他适当的布置和/或组合。
(多个)网络1110可以促进客户端1104、1106和1108与云基础设施系统1102之间的数据通信和交换。(多个)网络1110可以包括一个或多个网络。网络可以是相同或不同的类型。(多个)网络1110可以支持一个或多个通信协议(包括有线和/或无线协议)以促进通信。
图11所描绘的实施例仅是云基础设施系统的一个示例并且不旨在是限制性的。应了解,在一些其他实施例中,云基础设施系统1102可以具有比图11所描绘的那些部件更多或更少的部件、可以组合两个或更多个部件或可以具有不同的部件配置或布置。例如,尽管图11描绘了三个客户端计算设备,但是在替代性实施例中,可以支持任何数量的客户端计算设备。
术语云服务通常用于指代通过服务提供商的系统(例如,云基础设施系统1102)按需且经由如因特网等通信网络变得可用于用户的服务。通常,在公共云环境中,构成云服务提供商的系统的服务器和系统不同于客户自己的本地部署的服务器和系统。云服务提供商的系统由云服务提供商管理。因此,客户可以使自身利用由云服务提供商提供的云服务,而不必针对服务购买单独的许可证、支持或硬件和软件资源。例如,云服务提供商的系统可以托管应用程序,并且用户可以经由因特网按需订购并使用应用程序,而用户不必购买用于执行应用程序的基础设施资源。云服务被设计成提供对应用程序、资源和服务的容易的、可伸缩的访问。几个提供商提供云服务。例如,由加利福尼亚州红木海岸(Redwood Shores,California)的Oracle提供如中间件服务、数据库服务、Java云服务以及其他服务等几种云服务。
在某些实施例中,云基础设施系统1102可以使用不同的模型(如在软件即服务(SaaS)模型、平台即服务(PaaS)模型、基础设施即服务(IaaS)模型和其他模型(包括混合服务模型)下)提供一个或多个云服务。云基础设施系统1102可以包括实现对各种云服务的供给的一套应用程序、中间件、数据库和其他资源。
SaaS模型使应用程序或软件能够作为服务通过如因特网等通信网络输送给客户,而客户不必购买底层应用程序的硬件或软件。例如,可以使用SaaS模型为客户提供对由云基础设施系统1102托管的按需应用程序的访问。Oracle提供的SaaS服务的示例包括但不限于用于人力资源/资本管理、客户关系管理(CRM)、企业资源规划(ERP)、供应链管理(SCM)、企业绩效管理(EPM)、分析服务、社交应用程序以及其他等的各种服务。
PaaS模型通常用于提供使客户能够开发、运行并管理应用程序和服务的平台和环境资源作为服务,而客户不必采购、构建或维护这种资源。由Oracle提供的PaaS服务的示例包括但不限于Oracle Java云服务(JCS)、Oracle数据库云服务(DBCS)、数据管理云服务、各种应用程序开发解决方案服务、以及其他服务。
云服务通常是以按需自助服务基础、基于订阅、可弹性伸缩、可靠、高度可用且安全的方式提供的。例如,客户可以经由订阅订单来订购由云基础设施系统1102提供的一个或多个服务。然后,云基础设施系统1102执行处理以提供客户的订阅订单中请求的服务。例如,客户可以下订阅订单,以在聊天机器人系统中部署技能机器人。作为配置技能机器人的一部分,客户可以提供一个或多个示例话语,以生成与已经为技能机器人配置的意图相关联的模板。云基础设施系统1102可以被配置为提供一个或甚至多个云服务。
云基础设施系统1102可以经由不同的部署模型提供云服务。在公共云模型中,云基础设施系统1102可以由第三方云服务提供商拥有,并且云服务被提供给任何一般的公众客户,其中,所述客户可以是个人或企业。在某些其他实施例中,在私有云模型下,云基础设施系统1102可以在组织内(例如,在企业组织内)操作并且服务被提供给所述组织内的客户。例如,客户可以是如人力资源部门、薪资部门等企业的各个部门或甚至是企业内的个人。在某些其他实施例中,在社区云模型下,云基础设施系统1102和所提供的服务可以由相关的社区中的几个组织共享。也可以使用如以上所提到的模型的混合等各种其他模型。
客户端计算设备1104、1106和1108可以是不同类型的(如图10所描绘的设备1002、1004、1006和1008)并且可以能够操作一个或多个客户端应用程序。用户可以使用客户端设备与云基础设施系统1102交互,如请求由云基础设施系统1102提供的服务。例如,用户可以使用客户端设备请求本公开所描述的分类相关服务。
在一些实施例中,由云基础设施系统1102执行的用于提供分类相关服务的处理可以涉及大数据分析。该分析可以涉及使用、分析并操纵大数据集以检测并可视化数据中的各种趋势、行为、关系等。该分析可以由一个或多个处理器执行,从而可能并行地处理数据、使用数据执行模拟等。用于该分析的数据可以包括结构化数据(例如,存储在数据库中或根据结构化模型结构化的数据)和/或非结构化数据(例如,数据块(二进制大对象))。
如图11中的实施例所描绘的,云基础设施系统1102可以包括被用于促进供给由云基础设施系统1102提供的各种云服务的基础设施资源1130。基础设施资源1130可以包括例如处理资源、存储或存储器资源、联网资源等。
在某些实施例中,为了促进对这些资源的高效供给以用于支持由云基础设施系统1102为不同客户提供的各种云服务,资源可以被捆绑成资源组或资源模块(也被称为“群(pod)”)。每个资源模块或群可以包括一种或多种类型的资源的预先集成且优化的组合。在某些实施例中,可以针对不同类型的云服务预先供给不同的群。例如,可以针对数据库服务供给第一组群、可以针对Java服务供给第二组群(所述第二组群可以包括与第一组群中的群不同的资源组合)等。对于一些服务,被分配用于供给服务的资源可以在服务之间共享。
云基础设施系统1102自身可以在内部使用由云基础设施系统1102的不同部件共享并且促进云基础设施系统1102服务供给的服务1132。这些内部共享服务可以包括但不限于安全和身份服务、集成服务、企业储存库服务、企业管理器服务、病毒扫描和白名单服务、高度可用性、备份和恢复服务、用于实现云支持的服务、电子邮件服务、通知服务、文件传送服务等。
云基础设施系统1102可以包括多个子系统。这些子系统可以在软件或硬件或其组合中实施。如图11所描绘的,子系统可以包括使得云基础设施系统1102的用户或客户能够与云基础设施系统1102交互的用户接口子系统1112。用户接口子系统1112可以包括各种不同的接口,如web接口1114、在线商店接口1116(其中,广告并且客户可购买由云基础设施系统1102提供的云服务)和其他接口1118。例如,客户可以使用客户端设备请求(服务请求1134)由云基础设施系统1102使用接口1114、1116和1118中的一个或多个接口提供的一个或多个服务。例如,客户可以访问在线商店、浏览由云基础设施系统1102提供的云服务并且针对客户希望订阅的由云基础设施系统1102提供的一个或多个服务下订阅订单。服务请求可以包括标识客户和客户期望订阅的一个或多个服务的信息。例如,客户可以针对由云基础设施系统1102提供的分类相关服务下订阅订单。作为订单的一部分,客户可以提供识别特定聊天机器人和/或为聊天机器人配置的特定意图的信息。客户可以进一步提供用于训练分类器的示例话语,以推断用户话语对应于特定聊天机器人和/或特定意图。
在某些实施例(如图11所描绘的实施例)中,云基础设施系统1102可以包括被配置为处理新订单的订单管理子系统(OMS)1120。作为该处理的一部分,OMS 1120可以被配置为:为客户创建账户(如果尚未创建的话);从客户接收要用于向客户开具账单以向客户提供所请求的服务的账单和/或计费信息;验证客户信息;在验证之后,为客户预订订单;并且策划各种工作流程来准备订单以进行供给。
一旦被正确地验证,那么,OMS 1120就可以调用被配置成为订单供给资源(包括处理资源、存储器资源和联网资源)的订单供给子系统(OPS)1124。供给可以包括为订单分配资源并配置资源以促进客户订单所请求的服务。为订单供给资源的方式和所供给的资源的类型可以取决于客户已经订购的云服务的类型。例如,根据一个工作流程,OPS1124可以被配置为确定正在请求的特定云服务并且识别可能已经为所述特定云服务预先配置的群的数量。为订单分配的群的数量可以取决于所请求服务的大小/量/层级/范围。例如,要分配的群的数量可以基于服务所要支持的用户的数量、正在请求的服务的持续时间等来确定。然后,可以为特定的请求客户定制分配的群以用于提供所请求服务。
云基础设施系统1102可以向请求客户发送响应或通知1144,以指示何时所请求服务现在已准备好使用。在一些实例中,可以向客户发送使客户能够开始使用和利用所请求服务的益处的信息(例如,链接)。在某些实施例中,对于请求分类相关服务的客户,回应可以包括已经从一组示例话语中生成的最终模板集(例如,泛化模板)。
云基础设施系统1102可以向多个客户提供服务。对于每个客户,云基础设施系统1102负责管理与从客户接收的一个或多个订阅订单有关的信息、维护与订单相关的客户数据并且向客户提供所请求服务。云基础设施系统1102还可以收集关于客户使用所订阅服务的使用情况统计数据。例如,可以收集所使用的存储量、所传送的数据量、用户的数量以及系统开机时间量和系统停机时间量等的统计数据。可以使用该使用情况信息向客户开具账单。可以例如以月为周期完成开具账单。
云基础设施系统1102可以并行地向多个客户提供服务。云基础设施系统1102可以存储这些客户的信息(可能包括专有信息)。在某些实施例中,云基础设施系统1102包括被配置为管理客户信息并提供对所管理信息的分离使得与一个客户相关的信息不能够被另一个客户访问的身份管理子系统(IMS)1128。IMS 1128可以被配置为提供如身份服务等各种安全有关服务,如信息访问管理、认证和授权服务、用于管理客户身份和角色以及相关功能的服务等。
图12图示了可以用于实施某些实施例的示例性计算机系统1200。例如,在一些实施例中,计算机系统1200可以用于实施以上所述的主机器人系统200、技能机器人系统300、以及各种服务器和计算机系统中的任何一个。如图12所示,计算机系统1200包括各种子系统,包括经由总线子系统1202与多个其他子系统通信的处理子系统1204。这些其他子系统可以包括处理加速单元1206、I/O子系统1208、存储子系统1218和通信子系统1224。存储子系统1218可以包括非暂态计算机可读存储介质,包括存储介质1222和系统存储器1210。
总线子系统1202提供用于使计算机系统1200的各个部件和子系统按预期彼此通信的机构。虽然总线子系统1202被示意性地示出为单个总线,但是总线子系统的替代性实施例可以利用多个总线。总线子系统1202可以是包括存储器总线或存储器控制器、外围总线、使用各种总线架构中的任何一种的局部总线等的若干种类型的总线结构中的任何一种。例如,这种架构可以包括工业标准架构(ISA)总线、微通道架构(MCA)总线、增强型ISA(EISA)总线、视频电子标准协会(VESA)局部总线以及外围部件互连(PCI)总线(所述PCI总线可以被实施为被制造成IEEE P1386.1标准的夹层(Mezzanine)总线)等。
处理子系统1204控制计算机系统1200的操作并且可以包括一个或多个处理器、专用集成电路(ASIC)或现场可编程门阵列(FPGA)。处理器可以包括单核处理器或多核处理器。计算机系统1200的处理资源可以被组织成一个或多个处理单元1232、1234等。处理单元可以包括一个或多个处理器、来自相同或不同处理器的一个或多个核、核和处理器的组合或核和处理器的其他组合。在一些实施例中,处理子系统1204可以包括如图形处理器、数字信号处理器(DSP)等一个或多个专用协处理器。在一些实施例中,处理子系统1204的处理单元中的一些或全部可以使用如专用集成电路(ASIC)或现场可编程门阵列(FPGA)等定制电路来实施。
在一些实施例中,处理子系统1204中的处理单元可以执行存储在系统存储器1210内或计算机可读存储介质1222上的指令。在各个实施例中,处理单元可以执行各种程序或代码指令并且可以维护多个同时执行的程序或过程。在任何给定时间,要执行的程序代码中的一些或全部可以驻留在系统存储器1210中和/或计算机可读存储介质1222上(潜在地包括驻留在一个或多个存储设备上)。通过适当的编程,处理子系统1204可以提供以上所述的各种功能。在计算机系统1200在执行一个或多个虚拟机的实例中,可以向每个虚拟机分配一个或多个处理单元。
在某些实施例中,可以可选地提供处理加速单元1206以用于执行定制处理或用于卸载处理子系统1204所执行的处理中的一些处理,从而加速计算机系统1200所执行的总体处理。
I/O子系统1208可以包括用于向计算机系统1200输入信息和/或用于从或经由计算机系统1200输出信息的设备和机构。通常,使用术语输入设备旨在包括用于向计算机系统1200输入信息的所有可能类型的设备和机构。用户接口输入设备可以包括例如键盘、如鼠标或轨迹球等指向设备、合并到显示器中的触摸板或触摸屏、滚轮、点击轮、拨号盘、按钮、开关、小键盘、具有话音命令识别系统的音频输入设备、麦克风以及其他类型的输入设备。用户接口输入设备还可以包括运动感测和/或姿势识别设备,如使得用户能够控制输入设备并与输入设备交互的Microsoft运动传感器、Microsoft360游戏控制器、提供用于使用姿势和口述命令接收输入的接口的设备。用户接口输入设备还可以包括眼部姿势识别设备,如检测来自用户的眼部活动(例如,在拍照和/或进行菜单选择时“眨眼”)并将眼部姿势变换为到输入设备(如Google)的输入的Google眨眼检测器。另外,用户接口输入设备可以包括使得用户能够通过话音命令与话音识别系统(例如,导航器)交互的话音识别感测设备。
用户接口输入设备的其他示例包括但不限于三维(3D)鼠标、操纵杆或指向杆、游戏手柄和图形板、以及音频/视觉设备(如扬声器、数码相机、数码摄像机、便携式媒体播放器、网络摄像机、图像扫描仪、指纹扫描仪、条形码读取器3D扫描仪、3D打印机、激光测距仪、眼睛注视跟踪设备)。另外,用户接口输入设备可以包括例如医学成像输入设备,如计算机断层扫描、磁共振成像、正电子发射断层扫描和医学超声检查设备。用户接口输入设备还可以包括例如音频输入设备,如MIDI键盘、数码乐器等。
通常,使用术语输出设备旨在包括用于从计算机系统1200向用户或其他计算机输出信息的所有可能类型的设备和机构。用户接口输出设备可以包括显示子系统、指示灯或如音频输出设备等非视觉显示器。显示子系统可以是阴极射线管(CRT)、平板设备(如使用液晶显示器(LCD)或等离子显示器的平板设备)、投影设备、触摸屏等。例如,用户接口输出设备可以包括但不限于在视觉上传达文本、图形和音频/视频信息的各种显示设备,如监视器、打印机、扬声器、头戴式耳机、汽车导航系统、绘图仪、话音输出设备和调制解调器。
存储子系统1218提供用于存储计算机系统1200所使用的信息和数据的储存库或数据存储装置。存储子系统1218提供用于存储提供一些实施例的功能的基本编程和数据构造的有形非暂态计算机可读存储介质。存储子系统1218可以存储当由处理子系统1204执行时提供以上所描述的功能的软件(例如,程序、代码模块、指令)。软件可以由处理子系统1204的一个或多个处理单元执行。存储子系统1218还可以根据本公开的教导提供用于存储所使用的数据的储存库。
存储子系统1218可以包括一个或多个非暂态存储器设备,所述一个或多个非暂态存储器设备包括易失性存储器设备和非易失性存储器设备。如图12所示,存储子系统1218包括系统存储器1210和计算机可读存储介质1222。系统存储器1210可以包括多个存储器,包括用于在程序执行期间存储指令和数据的易失性主随机存取存储器(RAM)和其中存储有固定指令的非易失性只读存储器(ROM)或闪速存储器。在一些实施方式中,包含如在启动期间帮助在计算机系统1200内的元件之间传送信息的基本例程的基本输入/输出系统(BIOS)通常可以存储在ROM中。RAM可以包含目前由处理子系统1204操作并执行的数据和/或程序模块。在一些实施方式中,系统存储器1210可以包括如静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)等多种不同类型的存储器。
通过示例而非限制的方式,如图12所描绘的,系统存储器1210可以加载正在执行的应用程序1212(所述应用程序可以包括如web浏览器、中间层应用程序、关系数据库管理系统(RDBMS)等各种应用程序)、程序数据1214和操作系统1216。通过示例的方式,操作系统1216可以包括各种版本的MicrosoftApple和/或Linux操作系统、各种可商购获得的或类UNIX操作系统(包括但不限于各种GNU/Linux操作系统、GoogleOS等)和/或如iOS、电话、OS、OS、OS操作系统等移动操作系统、以及其他操作系统。
计算机可读存储介质1222可以存储提供一些实施例的功能的编程和数据构造。计算机可读介质1222可以为计算机系统1200提供对计算机可读指令、数据结构、程序模块和其他数据的存储。当由处理子系统1204执行时提供以上所描述的功能的软件(程序、代码模块、指令)可以存储在存储子系统1218中。通过示例的方式,计算机可读存储介质1222可以包括如硬盘驱动器、磁盘驱动器、光盘驱动器(如CD ROM、DVD、Blu-盘或其他光学介质)等非易失性存储器。计算机可读存储介质1222可以包括但不限于驱动器、闪速存储器卡、通用串行总线(USB)闪速存储器驱动器、安全数字(SD)卡、DVD盘、数字录像带等。计算机可读存储介质1222还可以包括如基于闪速存储器的固态驱动器(SSD)、企业级闪速存储器驱动器、固态ROM等基于非易失性存储器的SSD、如固态RAM、动态RAM、静态RAM等基于易失性存储器的SSD、基于DRAM的SSD、磁阻RAM(MRAM)SSD、以及使用DRAM和基于闪速存储器的SSD的组合的混合SSD。
在某些实施例中,存储子系统1218还可以包括可以进一步连接到计算机可读存储介质1222的计算机可读存储介质读取器1220。读取器1220可以从如盘、闪速存储器驱动器等存储器设备接收数据并且被配置为从所述存储器设备读取数据。
在某些实施例中,计算机系统1200可以支持虚拟化技术,包括但不限于对处理和存储器资源的虚拟化。例如,计算机系统1200可以提供对执行一个或多个虚拟机的支持。在某些实施例中,计算机系统1200可以执行如促进对虚拟机的配置和管理的管理程序等程序。每个虚拟机可以分配有存储器、计算(例如,处理器、核)、I/O和联网资源。每个虚拟机通常独立于其他虚拟机运行。虚拟机通常运行其自身的操作系统,所述操作系统可以与由计算机系统1200所执行的其他虚拟机执行的操作系统相同或不同。因此,多个操作系统可以潜在地由计算机系统1200同时运行。
通信子系统1224提供到其他计算机系统和网络的接口。通信子系统1224用作用于从其他系统接收数据并从计算机系统1200向其他系统发射数据的接口。例如,通信子系统1224可以使得计算机系统1200能够经由因特网构建到一个或多个客户端设备的通信通道以用于从客户端设备接收信息并向客户端设备发送信息。例如,通信子系统可以用于在用户与用户正在与之进行会话的聊天机器人之间传输消息。
通信子系统1224可以支持有线通信协议和/或无线通信协议两者。例如,在某些实施例中,通信子系统1224可以包括用于访问无线话音和/或数据网络的射频(RF)收发器部件(例如,使用蜂窝电话技术、如3G、4G或EDGE(全球演进增强型数据速率)等先进的数据网络技术、WiFi(IEEE 802.XX家庭标准、或其他移动通信技术、或其任何组合)、全球定位系统(GPS)接收器部件和/或其他部件。在一些实施例中,除了无线接口之外或替代无线接口,通信子系统1224可以提供有线网络连接性(例如,以太网)。
通信子系统1224可以接收并发射各种形式的数据。例如,在一些实施例中,除了其他形式之外,通信子系统1224还可以接收结构化和/或非结构化数据馈送1226、事件流1228、事件更新1230等形式的输入通信。例如,通信子系统1224可以被配置为从社交媒体网络和/或其他通信服务的用户实时地接收(或发送)数据馈送1226,如馈送、更新、web馈送(如丰富站点摘要(RSS)馈送)和/或来自一个或多个第三方信息源的实时更新。
在某些实施例中,通信子系统1224可以被配置为接收连续数据流形式的数据,所述连续数据流可以包括(可以没有显式结束的本质上连续的或无界的)实时事件的事件流1228和/或事件更新1230。生成连续数据的应用程序的示例可以包括例如传感器数据应用程序、财务收报机、网络性能测量工具(例如,网络监测和流量管理应用程序)、点击流分析工具、汽车交通监测等。
通信子系统1224还可以被配置为将数据从计算机系统1200传送到其他计算机系统或网络。可以将数据以如结构化和/或非结构化数据馈送1226、事件流1228、事件更新1230等各种不同的形式传送到可以与耦接至计算机系统1200的一个或多个流数据源计算机通信的一个或多个数据库。
计算机系统1200可以是各种类型中的一种,包括手持便携式设备(例如,蜂窝电话、计算平板计算机、PDA)、可穿戴设备(例如,Google头戴式显示器)、个人计算机、工作站、主机、自助服务终端、服务器机架、或任何其他数据处理系统。由于计算机和网络的不断变化的性质,对图12所描绘的计算机系统1200的描述旨在仅作为具体示例。具有比图12所描绘的系统更多或更少的部件的许多其他配置是可能的。基于本文提供的公开内容和教导,本领域普通技术人员将理解实施各个实施例的其他方式和/或方法。
虽然已经描述了具体实施例,但是各种修改、更改、替代性构造和等同物是可能的。实施例不局限于在某些具体数据处理环境中的操作,而是自由地在多个数据处理环境中操作。另外,尽管已经使用特定系列的事务和步骤描述了某些实施例,但是对于本领域技术人员而言应当显而易见的是,这不旨在是限制性的。虽然一些流程图将操作描述为顺序过程,但是许多操作可以并行地或同时地执行。另外,可以重新布置操作的顺序。过程可以具有图中未包括的另外的步骤。可以单独地或联合地使用以上所述的实施例的各种特征和方面。
进一步地,虽然已经使用硬件和软件的特定组合描述了某些实施例,但是应当认识到,硬件和软件的其他组合也是可能的。某些实施例可以仅在硬件中或仅在软件中或使用其组合实施。本文所描述的各种过程可以在相同处理器或不同处理器上以任何组合实施。
在将设备、系统、部件或模块描述为被配置为执行某些操作或功能的情况下,这种配置可以例如通过将电子电路设计成执行操作、通过对可编程电子电路(如微处理器)进行编程以执行操作(如通过执行计算机指令或代码)或通过被编程成执行存储在非暂态存储器介质上的代码或指令的处理器或核或其任何组合来完成。过程可以使用包括但不限于用于过程间通信的传统技术的各种技术进行通信,并且不同的过程对可以使用不同的技术,或者相同的过程对可以在不同的时间使用不同的技术。
本公开中给出了具体细节以提供对实施例的透彻理解。然而,可以在没有这些具体细节的情况下实践实施例。例如,已经示出了公知的电路、过程、算法、结构和技术,而没有不必要的细节,以避免模糊实施例。此描述仅提供了示例实施例并且不旨在限制其他实施例的范围、适用性或配置。而是,先前对实施例的描述将为本领域技术人员提供用于实施各个实施例的使能描述。可以对元件的功能和布置作出各种改变。
因此,应当从说明性而非限制性意义上看待说明书和附图。然而,将明显的是,在不脱离权利要求中阐述的更广泛的精神和范围的情况下,可以对其作出添加、减少、删除以及其他修改和改变。因此,虽然已经描述了具体实施例,但是这些示例不旨在是限制性的。各种修改和等同物均在以下权利要求的范围内。
Claims (21)
1.一种计算机实施的方法,包括:
由计算机实施的聊天机器人系统接收来自用户的输入话语;
由所述聊天机器人系统基于模板集确定所述输入话语代表所述聊天机器人系统中的第一聊天机器人被配置为执行的任务,其中,所述确定包括:
将所述输入话语与所述模板集中的各个模板进行比较,其中,所述模板集中的第一模板是包括字符串模式的正则表达式,所述字符串模式对应于已经向所述第一聊天机器人提供的一个或多个示例话语的泛化形式,并且所述一个或多个示例话语代表所述第一聊天机器人被配置为执行的任务;
针对所述模板集中的每个模板,基于所述输入话语与该模板之间的匹配程度来计算对应得分;以及
基于计算的得分,确定在所述模板集中所述第一模板与所述输入话语最佳地匹配;以及
响应于确定所述输入话语代表所述第一聊天机器人被配置为执行的任务,由所述聊天机器人系统将所述输入话语的至少一部分作为输入传送给所述第一聊天机器人。
2.如权利要求1所述的方法,其中,所述第一模板包括语言词性信息,所述语言词性信息指示所述字符串模式的不同元素的词性。
3.如权利要求2所述的方法,其中,确定所述输入话语代表所述第一聊天机器人被配置为执行的任务进一步包括:
确定所述输入话语的元素具有与所述字符串模式的对应元素相同的词性。
4.如权利要求1所述的方法,其中,确定所述输入话语代表所述第一聊天机器人被配置为执行的任务进一步包括:
确定所述输入话语中的各个单词的得分,其中,单词的得分指示所述单词代表聊天机器人被配置为执行的特定任务的可能性;以及
基于所述输入话语中的各个单词的得分,识别作为更大模板集的子集的所述模板集。
5.如权利要求1所述的方法,进一步包括:
由所述聊天机器人系统生成所述第一模板,其中,生成所述第一模板包括:
针对已经向所述第一聊天机器人提供的所述一个或多个示例话语中的每个话语,生成作为包括字符串模式的正则表达式的初始模板;以及
重复执行句子层级泛化或单词层级泛化中的至少一个,直到一个或多个初始模板变为所述第一模板。
6.如权利要求5所述的方法,其中,句子层级泛化或单词层级泛化中的至少一个实例涉及确定应用于两个或更多个字符串模式的更一般的模式。
7.如权利要求6所述的方法,其中,所述更一般的模式将同义词分组在一起作为替代模板元素。
8.如权利要求5所述的方法,其中,句子层级泛化或单词层级泛化中的至少一个实例涉及:
确定字符串模式的特定元素是已经为所述第一聊天机器人配置的命名实体的多个可能值之一;以及
用所述命名实体替换所述特定元素。
9.如权利要求5所述的方法,其中,句子层级泛化或单词层级泛化中的至少一个实例涉及:
基于以下内容将第一字符串模式的元素识别为可选元素:(i)所述元素未出现在所述第一字符串模式与第二字符串模式之间的最长公共子序列中,或(ii)所述元素的词性。
10.如权利要求5所述的方法,其中,生成所述第一模板进一步包括:
确定在句子层级泛化或单词层级泛化的特定实例期间得到的第一字符串模式由于所述第一字符串模式与代表不同于所述第一字符串模式所代表的任务的第二字符串模式相同而是无效的。
11.一种计算机系统,包括:
一个或多个处理器;以及
存储器,所述存储器耦接至所述一个或多个处理器,所述存储器存储有指令,所述指令当由所述一个或多个处理器执行时使所述一个或多个处理器执行包括以下操作的处理:
接收来自用户的输入话语;
基于模板集确定所述输入话语代表第一聊天机器人被配置为执行的任务,其中,所述确定包括:
将所述输入话语与所述模板集中的各个模板进行比较,其中,所述模板集中的第一模板是包括字符串模式的正则表达式,所述字符串模式对应于已经向所述第一聊天机器人提供的一个或多个示例话语的泛化形式,并且所述一个或多个示例话语代表所述第一聊天机器人被配置为执行的任务;
针对所述模板集中的每个模板,基于所述输入话语与该模板之间的匹配程度来计算对应得分;以及
基于计算的得分,确定在所述模板集中所述第一模板与所述输入话语最佳地匹配;以及
响应于确定所述输入话语代表所述第一聊天机器人被配置为执行的任务,将所述输入话语的至少一部分作为输入传送给所述第一聊天机器人。
12.如权利要求11所述的计算机系统,其中,所述第一模板包括语言词性信息,所述语言词性信息指示所述字符串模式的不同元素的词性。
13.如权利要求12所述的计算机系统,其中,确定所述输入话语代表所述第一聊天机器人被配置为执行的任务进一步包括:
确定所述输入话语的元素具有与所述字符串模式的对应元素相同的词性。
14.如权利要求11所述的计算机系统,其中,确定所述输入话语代表所述第一聊天机器人被配置为执行的任务进一步包括:
确定所述输入话语中的各个单词的得分,其中,单词的得分指示所述单词代表聊天机器人被配置为执行的特定任务的可能性;以及
基于所述输入话语中的各个单词的得分,识别作为更大模板集的子集的所述模板集。
15.如权利要求11所述的计算机系统,其中,所述指令进一步使所述一个或多个处理器执行包括以下操作的处理:
生成所述第一模板,其中,生成所述第一模板包括:
针对已经向所述第一聊天机器人提供的所述一个或多个示例话语中的每个话语,生成作为包括字符串模式的正则表达式的初始模板;以及
重复执行句子层级泛化或单词层级泛化中的至少一个,直到一个或多个初始模板变为所述第一模板。
16.如权利要求15所述的计算机系统,其中,句子层级泛化或单词层级泛化中的至少一个实例涉及确定应用于两个或更多个字符串模式的更一般的模式。
17.如权利要求15所述的计算机系统,其中,生成所述第一模板进一步包括:
确定在句子层级泛化或单词层级泛化的特定实例期间得到的第一字符串模式由于所述第一字符串模式与代表不同于所述第一字符串模式所代表的任务的第二字符串模式相同而是无效的。
18.一种存储有指令的非暂态计算机可读介质,所述指令当由计算机系统内的一个或多个处理器执行时使所述一个或多个处理器执行包括以下操作的处理:
接收来自用户的输入话语;
基于模板集确定所述输入话语代表第一聊天机器人被配置为执行的任务,其中,所述确定包括:
将所述输入话语与所述模板集中的各个模板进行比较,其中,所述模板集中的第一模板是包括字符串模式的正则表达式,所述字符串模式对应于已经向所述第一聊天机器人提供的一个或多个示例话语的泛化形式,并且所述一个或多个示例话语代表所述第一聊天机器人被配置为执行的任务;
针对所述模板集中的每个模板,基于所述输入话语与该模板之间的匹配程度来计算对应得分;以及
基于计算的得分,确定在所述模板集中所述第一模板与所述输入话语最佳地匹配;以及
响应于确定所述输入话语代表所述第一聊天机器人被配置为执行的任务,将所述输入话语的至少一部分作为输入传送给所述第一聊天机器人。
19.如权利要求18所述的非暂态计算机可读介质,其中,所述第一模板包括语言词性信息,所述语言词性信息指示所述字符串模式的不同元素的词性。
20.如权利要求18所述的非暂态计算机可读介质,其中,所述指令进一步使所述一个或多个处理器执行包括以下操作的处理:
生成所述第一模板,其中,生成所述第一模板包括:
针对已经向所述第一聊天机器人提供的所述一个或多个示例话语中的每个话语,生成作为包括字符串模式的正则表达式的初始模板;以及
重复执行句子层级泛化或单词层级泛化中的至少一个,直到一个或多个初始模板变为所述第一模板。
21.一种聊天机器人系统,所述聊天机器人系统包括用于执行如权利要求1-10中任一项所述的方法的步骤的装置。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201962899691P | 2019-09-12 | 2019-09-12 | |
US62/899,691 | 2019-09-12 | ||
US17/011,296 | 2020-09-03 | ||
US17/011,296 US11694032B2 (en) | 2019-09-12 | 2020-09-03 | Template-based intent classification for chatbots |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112487157A true CN112487157A (zh) | 2021-03-12 |
Family
ID=74867930
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010953879.7A Pending CN112487157A (zh) | 2019-09-12 | 2020-09-11 | 用于聊天机器人的基于模板的意图分类 |
Country Status (2)
Country | Link |
---|---|
US (1) | US11694032B2 (zh) |
CN (1) | CN112487157A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113221582A (zh) * | 2021-04-29 | 2021-08-06 | 北京搜狗科技发展有限公司 | 一种翻译处理方法、装置和用于翻译处理的装置 |
CN117594045A (zh) * | 2024-01-18 | 2024-02-23 | 拓世科技集团有限公司 | 一种基于语音的虚拟人物模型控制方法及系统 |
Families Citing this family (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20210233097A1 (en) * | 2020-01-20 | 2021-07-29 | TapText llc | System and method for text-based delivery of sales promotions |
US11625535B1 (en) * | 2019-12-05 | 2023-04-11 | American Express Travel Related Services Company, Inc. | Computer-based systems having data structures configured to execute SIC4/SIC8 machine learning embedded classification of entities and methods of use thereof |
US11562749B2 (en) * | 2020-05-01 | 2023-01-24 | Adp, Inc. | System and method for query authorization and response generation using machine learning |
US11222075B2 (en) * | 2020-06-12 | 2022-01-11 | Earley Information Science, Inc. | Digital data processing systems and methods for digital content retrieval and generation |
US11539650B2 (en) * | 2020-07-16 | 2022-12-27 | International Business Machines Corporation | System and method for alerts for missing coverage of chatbot conversation messages |
US11551674B2 (en) * | 2020-08-18 | 2023-01-10 | Bank Of America Corporation | Multi-pipeline language processing platform |
US11756553B2 (en) * | 2020-09-17 | 2023-09-12 | International Business Machines Corporation | Training data enhancement |
US11816437B2 (en) * | 2020-12-15 | 2023-11-14 | International Business Machines Corporation | Automatical process application generation |
US20220229998A1 (en) * | 2021-01-21 | 2022-07-21 | Servicenow, Inc. | Lookup source framework for a natural language understanding (nlu) framework |
US20220245326A1 (en) * | 2021-01-29 | 2022-08-04 | Palo Alto Research Center Incorporated | Semantically driven document structure recognition |
US20230008868A1 (en) * | 2021-07-08 | 2023-01-12 | Nippon Telegraph And Telephone Corporation | User authentication device, user authentication method, and user authentication computer program |
US11763803B1 (en) * | 2021-07-28 | 2023-09-19 | Asapp, Inc. | System, method, and computer program for extracting utterances corresponding to a user problem statement in a conversation between a human agent and a user |
CA3228530A1 (en) * | 2021-08-12 | 2023-02-16 | Yoky Matsuoka | Representative task generation and curation |
US12067363B1 (en) | 2022-02-24 | 2024-08-20 | Asapp, Inc. | System, method, and computer program for text sanitization |
Family Cites Families (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8874443B2 (en) * | 2008-08-27 | 2014-10-28 | Robert Bosch Gmbh | System and method for generating natural language phrases from user utterances in dialog systems |
US9448992B2 (en) * | 2013-06-04 | 2016-09-20 | Google Inc. | Natural language search results for intent queries |
US9734193B2 (en) * | 2014-05-30 | 2017-08-15 | Apple Inc. | Determining domain salience ranking from ambiguous words in natural speech |
US10116596B2 (en) * | 2014-09-29 | 2018-10-30 | International Business Machines Corporation | Personalizing data system components and data sources as chatbots in a group chat session |
US9647968B2 (en) * | 2015-03-25 | 2017-05-09 | Pypestream Inc | Systems and methods for invoking chatbots in a channel based communication system |
US10037360B2 (en) * | 2016-06-20 | 2018-07-31 | Rovi Guides, Inc. | Approximate template matching for natural language queries |
US10599644B2 (en) * | 2016-09-14 | 2020-03-24 | International Business Machines Corporation | System and method for managing artificial conversational entities enhanced by social knowledge |
US10649985B1 (en) * | 2016-11-08 | 2020-05-12 | Premera Blue Cross | Systems and methods for processing natural language queries for healthcare data |
US10467510B2 (en) * | 2017-02-14 | 2019-11-05 | Microsoft Technology Licensing, Llc | Intelligent assistant |
US10600406B1 (en) * | 2017-03-20 | 2020-03-24 | Amazon Technologies, Inc. | Intent re-ranker |
US10902533B2 (en) * | 2017-06-12 | 2021-01-26 | Microsoft Technology Licensing, Llc | Dynamic event processing |
US10417039B2 (en) * | 2017-06-12 | 2019-09-17 | Microsoft Technology Licensing, Llc | Event processing using a scorable tree |
US10839161B2 (en) * | 2017-06-15 | 2020-11-17 | Oracle International Corporation | Tree kernel learning for text classification into classes of intent |
US10713441B2 (en) * | 2018-03-23 | 2020-07-14 | Servicenow, Inc. | Hybrid learning system for natural language intent extraction from a dialog utterance |
US11288566B2 (en) * | 2018-05-31 | 2022-03-29 | International Business Machines Corporation | Building a gossip group of domain-specific chatbots |
US11106874B2 (en) * | 2019-05-08 | 2021-08-31 | Sap Se | Automated chatbot linguistic expression generation |
-
2020
- 2020-09-03 US US17/011,296 patent/US11694032B2/en active Active
- 2020-09-11 CN CN202010953879.7A patent/CN112487157A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113221582A (zh) * | 2021-04-29 | 2021-08-06 | 北京搜狗科技发展有限公司 | 一种翻译处理方法、装置和用于翻译处理的装置 |
CN117594045A (zh) * | 2024-01-18 | 2024-02-23 | 拓世科技集团有限公司 | 一种基于语音的虚拟人物模型控制方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
US20210081615A1 (en) | 2021-03-18 |
US11694032B2 (en) | 2023-07-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11694032B2 (en) | Template-based intent classification for chatbots | |
US11195532B2 (en) | Handling multiple intents in utterances | |
CN116724305B (zh) | 上下文标签与命名实体识别模型的集成 | |
US12002456B2 (en) | Using semantic frames for intent classification | |
JP2022547631A (ja) | 自然言語処理のためのストップワードデータ拡張 | |
CN115398437A (zh) | 改进的域外(ood)检测技术 | |
JP2023530423A (ja) | 堅牢な固有表現認識のためのチャットボットにおけるエンティティレベルデータ拡張 | |
US11928430B2 (en) | Detecting unrelated utterances in a chatbot system | |
CN115398436A (zh) | 用于自然语言处理的噪声数据扩充 | |
CN116547676A (zh) | 用于自然语言处理的增强型logit | |
CN116802629A (zh) | 用于自然语言处理的多因素建模 | |
CN116583837A (zh) | 用于自然语言处理的基于距离的logit值 | |
CN116615727A (zh) | 用于自然语言处理的关键词数据扩充工具 | |
US20230100508A1 (en) | Fusion of word embeddings and word scores for text classification | |
US20220229991A1 (en) | Multi-feature balancing for natural language processors | |
CN116635862A (zh) | 用于自然语言处理的域外数据扩充 | |
CN117296058A (zh) | 作为简单有效的对抗攻击方法的变体不一致攻击(via) | |
CN118202344A (zh) | 用于从文档中提取嵌入式数据的深度学习技术 | |
CN118140230A (zh) | 对经预训练的语言模型的单个转换器层的多头网络进行微调 | |
US20230161963A1 (en) | System and techniques for handling long text for pre-trained language models | |
US20240169161A1 (en) | Automating large-scale data collection | |
CN118251668A (zh) | 用于从数据中提取问题答案对的基于规则的技术 | |
WO2023249684A1 (en) | Techniques for entity-aware data augmentation | |
CN118215920A (zh) | 用于使用散列嵌入进行语言检测的宽深网络 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |