具有基于实体的通信的互联网云托管的自然语言交互式消息传送系统的制作方法

文档序号:17537005发布日期:2019-04-29 14:05阅读:150来源:国知局
具有基于实体的通信的互联网云托管的自然语言交互式消息传送系统的制作方法

本申请要求于2016年9月16日提交的编号为201641/031569的标题为“internetcloud-hostednaturallanguageinteractivemessagingsystem”的印度临时专利的权益和优先权,该申请的全部内容出于所有目的通过引用并入本文。



背景技术:

消息传送应用(例如,messenger(信使)、即时消息传送软件,移动文本和语音消息传送通信服务、messenger、messenger和skypemessenger)是互联网连接的设备(诸如移动设备、笔记本电脑和平板电脑)上快速出现的技术。消息传送应用已获得高的渗透率和每日使用数量。但是,移动设备上的企业应用正在努力使用户定期下载和使用企业应用。



技术实现要素:

本公开描述了用于实现对话(dialog)引擎的技术。对话引擎可以管理与机器人服务器的谈话(conversation)的流程和状态。在一些示例中,对话引擎可以使用消息传送应用来确定对机器人服务器所接收到的消息的响应。

例如,方法可以包括由具有统一资源标识符(uri)的机器人服务器接收超文本传输协议(http)post调用消息。在一些示例中,httppost调用消息可以从消息传送应用服务器被引导到uri。在一些示例中,httppost调用消息可以包括来自用户的内容。该内容可以包括一个或多个单词。

该方法还可以包括识别内容的意图并识别与识别出的意图相关联的一个或多个所需实体(requiredentities)。意图可以是用户向服务器发送内容的目的。意图可以定义用户和服务器之间的谈话。在一些示例中,意图可以包括多个实体,其中多个实体中的每个实体被分配优先级,并且优先级指示实体是否是所需实体。响应于识别内容的意图,该方法还可以包括获得与意图相关联的会话,使得服务器可以访问信息。

该方法还可以包括识别一个或多个所需实体中的从内容中缺失的所需实体。在一些示例中,当服务器从用户接收到针对一个或多个所需实体中的每个实体的输入时,可以完成与意图相关联的会话。在一些示例中,该方法还可以包括存储与意图相关联的会话。会话可以包括从用户接收到的信息。

该方法还可以包括生成对httppost调用消息的响应。在一些示例中,响应可以请求缺失的所需实体。该方法还可以包括将对httppost调用消息的响应发送到消息传送应用服务器。

已经采用的术语和表达被用作描述的术语而非限制,并且不旨在使用这些术语和表达来排除所示出和描述的特征或其部分的任何等同物。但是,应该认识到的是,在所要求保护的系统和方法的范围内可以进行各种修改。因此,应该理解的是,虽然本系统和方法已经通过示例和可选特征被具体地公开,但是本领域技术人员可以采用本文所公开的概念的修改和变化,并且这些修改和变化要被认为是在由所附权利要求限定的系统和方法的范围内。

本发明内容不旨在识别所要求保护的主题的关键或必要特征,也不旨在单独用于确定所要求保护的主题的范围。应该通过参考本专利的整个说明书的适当部分、任何或所有附图以及每项权利要求来理解主题。

下面将在以下说明书、权利要求和附图中更详细地描述前述以及其它特征和示例。

附图说明

下面参考以下各图来详细描述说明性示例:

图1图示了实现用于使用消息传送应用与用户进行通信的机器人(bot)服务器的系统的示例;

图2图示了用于使用自然语言处理器来识别消息的意图的系统的示例;

图3是图示用于响应自然语言通信的处理的示例的流程图;

图4图示了使用消息传送应用在移动设备上的用户与机器人服务器之间进行的谈话的示例;

图5是图示用于发送用以从用户请求附加信息的响应的处理的示例的流程图;

图6图示了用于管理事件数据的系统的示例;

图7图示了虚拟数据库的示例;以及

图8是图示用于展现(expose)用于访问虚拟数据库的可调用方法的处理的示例的流程图。

具体实施方式

在以下描述中,出于解释的目的阐述了具体细节,以便提供对本公开的示例的透彻理解。但是,将显而易见的是,可以在没有这些具体细节的情况下实践各种示例。图和描述不旨在是限制性的。

随后的描述仅提供示例性示例,并且不旨在限制本公开的范围、适用性或配置。相反,随后对示例性示例的描述将为本领域技术人员提供用于实现示例性示例的使能描述。应该理解的是,在不脱离如所附权利要求中阐述的本公开的精神和范围的情况下,可以对元素的布置和功能进行各种改变。

在以下描述中给出了具体细节以提供对示例的透彻理解。但是,本领域普通技术人员将理解的是,可以在没有这些具体细节的情况下实践这些示例。例如,电路、系统、网络、处理和其它部件可以被示为框图形式的部件,以免以不必要的细节来模糊示例。在其它情况下,众所周知的电路、处理、算法、结构和技术可以在没有不必要的细节的情况下示出,以避免模糊示例。

此外,应该注意的是,各个示例可以被描述为处理,该处理被描绘为流程图、流图、数据流图、结构图或框图。虽然流程图可以将操作描述为顺序处理,但是许多操作可以并行执行或并发执行。此外,可以重新布置操作的次序。当处理的操作完成时,该处理终止,但是可以具有不被包括在图中的附加步骤。处理可以与方法、函数、过程、子例程、子程序等对应。当处理与函数对应时,该处理的终止可以与函数返回到调用函数或主函数相对应。

术语“机器可读存储介质”或“计算机可读存储介质”包括但不限于:便携式或非便携式存储设备、光学存储设备,以及能够存储、包含或携带(一条或多条)指令和/或数据的各种其它介质。机器可读存储介质或计算机可读存储介质可以包括非瞬态介质,其中可以存储数据并且不包括载波和/或无线地或通过有线连接传播的瞬态电子信号。非瞬态介质的示例可以包括但不限于:磁盘或磁带、诸如压缩盘(cd)或数字通用盘(dvd)的光学存储介质、闪存、存储器或存储器设备。计算机程序产品可以包括代码和/或机器可执行指令,代码和/或机器可执行指令可以表示过程、函数、子程序、程序、例程、子例程、模块、软件包、类、或者指令、数据结构或程序语句的任何组合。代码段可以通过传递和/或接收信息、数据、自变量、参数或存储器内容耦合到另一个代码段或硬件电路。信息、自变量、参数、数据等可以经由任何合适的手段(包括存储器共享、消息传递、令牌传递、网络传送等)被传递、转发或传送。

另外,示例可以由硬件、软件、固件、中间件、微代码、硬件描述语言或者其任何组合来实现。当在软件、固件、中间件或微代码中实现执行必要任务的程序代码或代码段(例如,计算机程序产品)时,该程序代码或代码段可以存储在机器可读介质中。(一个或多个)处理器可以执行这些必要任务。

在一些图中描绘的系统可以以各种配置来提供。在一些示例中,系统可以被配置为分布式系统,其中系统的一个或多个部件跨云计算系统中的一个或多个网络而分布。

a.概述

本文的示例涉及可以使用自然语言消息通过消息传送应用来对自然语言消息(例如,问题或评论)进行响应的机器人服务器。特别地,示例可以允许企业定义与用户进行通信的一个或多个机器人服务器,并以多租户、跨消息传送平台的方式大规模运行该一个或多个机器人服务器。

在一些示例中,机器人服务器可以与统一资源标识符(uri)相关联。uri可以使用字符串来识别机器人服务器。uri可以用作一个或多个消息传送应用服务器的网络钩子(webhook)。uri的形式可以包括统一资源定位符(url)和统一资源名称(urn)。机器人服务器可以被设计为从消息传送应用服务器接收消息(例如,超文本传输协议(http)post调用消息)。httppost调用消息可以从消息传送应用服务器被引导到uri。在一些示例中,该消息可以与httppost调用消息不同。例如,机器人服务器可以从短消息服务器(sms)接收消息。虽然本文的讨论将把机器人服务器接收的通信称为消息,但是本领域普通技术人员将认识到该消息可以是httppost调用消息、sms消息或两个系统之间的任何其它类型的通信。此外,无论何时机器人服务器将消息从一个部件发送到另一个部件,本领域普通技术人员将认识到实际消息可能没有被发送。替代地,可以发送来自消息的信息。

在一些示例中,机器人服务器可以在没有机器人服务器的管理员的交互的情况下处理用户交互。例如,用户可以向机器人服务器发送一个或多个消息以便实现期望的目标(有时称为意图)。消息可以包括内容(例如,文本、表情符号(emoji)、音频、图像、视频或传达消息的其它方法)。机器人服务器可以将内容转换为标准化形式(例如,针对企业服务的具有适当参数的rest调用)并生成自然语言响应。机器人服务器还可以提示用户输入附加所需参数和请求附加信息。机器人服务器也可以发起到用户的通信。

图1图示了实现用于使用消息传送应用与用户进行通信的机器人服务器120的系统的示例。在一些示例中,消息传送应用可以安装在电子设备(例如,台式计算机、膝上型电脑、移动设备110等)上。虽然本文的讨论将参考移动设备和消息传送应用,但是本领域普通技术人员将认识到的是,可以使用任何电子设备并且可以使用任何消息传送平台(例如,messenger、即时消息传送软件、移动文本和语音消息传送通信服务、messenger、messenger、skypemessenger、短消息服务(sms))。在其它示例中,消息传送应用可以通过安装在移动设备110上的浏览器(例如,google浏览器、浏览器和internetexplorer浏览器)运行。消息传送应用可以是messenger、即时消息传送软件、移动文本和语音消息传送通信服务、messenger、messenger、skypemessenger、或为用户提供用以通信的平台的任何其它消息传送应用。消息传送应用可以与消息传送应用服务器115相关联。移动设备110可以通过第一网络(例如,互联网)连接到消息传送应用服务器115。消息传送应用服务器115可以管理跨多个移动设备通过消息传送应用发送和接收的内容。内容可以包括文本、表情符号、音频、媒体(例如,图片、视频、链接)或传达消息的其它方法。机器人服务器120从messenger接收的消息的示例可以是:

消息传送应用服务器115也可以与机器人服务器120通信。消息传送应用服务器115和机器人服务器120之间的通信可以在第二网络(例如,互联网)上。第一网络和第二网络可以是相同的网络,或者它们可以是相似或完全不同的网络。消息传送应用服务器115可以使用互联网将内容(例如,消息或来自消息的信息)从移动设备110路由到机器人服务器120。内容的目的地(例如,机器人服务器120的标识)可以作为名义收件人被包括在该内容中。

机器人服务器120可以使用连接器130来接收内容。连接器130可以充当消息传送应用服务器115和机器人服务器120之间的接口。在一些示例中,连接器130可以对来自消息传送应用服务器115的内容进行规范化(normalize),使得机器人服务器120可以跨不同的消息传送应用服务器分析内容。规范化可以包括将来自每种类型的消息传送应用的内容格式化为用于处理的常见格式。在一些示例中,机器人服务器120可以包括用于消息传送应用中的每个传送应用(诸如messenger、即时消息传送软件、移动文本和语音消息传送通信服务、messenger、messenger和skypemessenger、短消息服务(sms))的一个或多个连接器。

连接器130可以将内容路由到消息进入(message-in)队列140。消息进入队列140可以按照接收的次序来存储内容。在一些示例中,连接器130可以与一个或多个消息进入队列相关联。

当消息处理器流水线(pipeline)150变得可用时,消息进入队列140可以将内容发送到消息处理器流水线150。在其它示例中,消息处理器流水线150可以从消息进入队列中提取(pull)内容。消息处理器流水线150可以使用本文描述的一个或多个创新来分析内容。例如,消息处理器流水线150可以包括会话器(sessionizer)152、用户解析器154、自然语言处理器156、对话引擎158或其任何组合中的至少一个或多个。通常,会话器152可以为用户和机器人服务器创建和管理会话。通常,用户解析器154可以确定由于使用多个消息传送应用的重叠用户而可以被组合的会话。通常,自然语言处理器156可以解析消息以确定消息的意图。意图可以包括消息的目的。例如,消息的目的可以是订购比萨、订购计算机、询问关于递送的问题等。通常,对话引擎可以协调与机器人服务器的谈话。

在内容被消息处理器流水线150分析之后,经分析的内容可以被发送到机器人代码160。机器人代码160可以由第三方编写,以基于经分析的内容和会话来确定要执行的动作。在一些示例中,会话可以包括消息的意图。机器人代码160可以将传出内容发送到消息输出(message-out)队列170。消息输出队列170可以将传出内容发送到连接器130。然后,连接器130可以将传出内容发送到由机器人代码160指示的、可以与消息传送应用服务器115相同或不同的消息传送应用服务器。然后,消息传送应用服务器115可以将传出内容转发到移动设备110上的消息传送应用。

机器人服务器120还可以与一个或多个企业服务(例如,企业服务125)、用于存储和可能分析由机器人服务器120接收的消息的存储服务器(如图6中所描述的)或用于向机器人服务器120提供内容的内容服务器进行通信。企业服务125可以与连接器130、机器人代码160或其任何组合中的至少一个或多个进行通信。企业服务125可以以与消息传送应用服务器115类似的方式与连接器130进行通信。企业服务125可以将内容发送到连接器130以与一个或多个用户相关联。企业服务125也可以将内容发送到连接器130以使机器人服务器120执行与用户相关联的动作。机器人代码160可以与企业服务125进行通信以从企业服务125获得信息和/或使企业服务125采取由机器人代码160识别的动作。

在一些示例中,机器人服务器120可以包括一个或多个计时器(timer)。在流逝一定量的时间之后,计时器可以使机器人代码160使用连接器130和消息传送应用服务器115将内容发送给用户。在一些示例中,计时器可以类似于用户或企业服务125向机器人服务器120发送内容。例如,因为来自用户的消息将被分析,所以计时器可以向机器人服务器120发送要被分析的消息。

为了说明机器人服务器120,现在将描述示例。用户可以使用消息传送应用向机器人服务器发送消息。消息可以包括问候。机器人服务器可以识别出与用户的新谈话已经开始。机器人服务器可以识别用户的一个或多个特性。例如,机器人服务器可以使用与消息传送应用服务器上的用户相关联的简档来识别用户的名称。使用该一个或多个特性,机器人服务器可以在消息传送应用上对用户进行响应。响应可以包括到用户的对从用户接收到的消息进行响应的消息。例如,响应可以包括使用用户的名称的问候。

取决于与机器人服务器相关联的企业,机器人服务器可以前进以完成企业的目标。例如,如果机器人服务器与比萨递送企业相关联,则机器人服务器可以向用户发送消息,询问用户是否想要比萨。机器人服务器和用户之间的谈话可以从这里继续,来回进行,直到机器人服务器已经完成谈话或用户停止对机器人服务器进行响应为止。

在一些示例中,机器人服务器可以发起与用户的谈话。该服务器发起的谈话可以响应于与用户的先前谈话。例如,用户可以在先前谈话中订购比萨。然后,当比萨已准备好时,机器人服务器可以发起谈话。在一些示例中,当从与机器人服务器相关联的企业接收到指示(例如,员工向机器人服务器发送比萨已准备好的消息)时,机器人服务器可以确定比萨已准备好。谈话可以包括发送给用户的指示比萨已准备好的消息。

在一些示例中,机器人服务器可以在与接收到先前消息的消息传送应用不同的消息传送应用上向用户发送消息。例如,机器人服务器可以确定使用短消息服务(sms)而不是messenger来发送消息。在这样的实现中,机器人服务器可以集成多个消息传送应用。

在一些示例中,机器人服务器可以基于计时器确定开始谈话。例如,机器人服务器可以在用户订购比萨之后确定有针对该用户的一周计时器。该一周计时器的到期可以使机器人服务器开始与用户的新谈话用于订购另一个比萨。计时器可以由企业配置并由机器人服务器实现。

在一些示例中,机器人服务器可以维护谈话之间的信息。可以使用该信息,使得每次在用户和机器人服务器之间开始新谈话时,机器人服务器不需要询问一些问题。例如,机器人服务器可以存储用户先前的比萨订单。在新谈话中,机器人服务器可以向用户发送询问用户是否想要与上次相同的订单的消息。

当识别出减慢(slowdown)时,机器人服务器120可以允许每个部件进行扩展。例如,如果机器人服务器120识别出到达连接器130的消息的数量超过阈值,则可以将附加的一个或多个连接器添加到连接器130。此外,取决于在哪里识别出减慢,可以增加消息进入队列、消息处理器流水线、机器人代码的实例和消息输出队列中的每一个的数量。在这样的实现中,可以添加附加部件而不必添加其它附加部件。例如,可以添加连接器,而不必添加机器人代码的附加实例。在一些实现中,机器人服务器120的一个或多个部件或部件的一部分可以在虚拟机上运行。通过在虚拟机上运行,可以随意发起附加的虚拟机。

在一些示例中,机器人服务器120可以将与用户相关联的信息存储在高速缓存中。高速缓存可以写入数据库以在传出消息从连接器130被发送到消息传送应用服务器之后保存该信息。在其它示例中,高速缓存可以在不同时间(例如,在特定部件之后、在每个部件之后、在一定量的时间之后、或确定何时写入数据库的任何其它度量)写入数据。

b.自然语言处理器

如上所述,消息处理器流水线可以包括自然语言处理器。自然语言处理器可以确定自然语言处理器正在处理的消息的意图。在一些示例中,意图可以是用户发送的消息的目标、原因或目的。例如,用户可以向比萨应用发送消息,该消息意图是(1)订购比萨、(2)取消订单、或(3)检查订单的状态。

在一些示例中,可以使用向量来确定消息的意图。向量可以是内容(例如,文本、音频、媒体等)的分布式表示。向量可以包括多个元素,每个元素根据模型(例如,语言模型)来表征文本。语言模型可以是函数或用于学习这种函数的算法,其捕获自然语言中单词的序列的分布的显著统计特性。在一些示例中,向量的元素可以表示由语言模型选择和确定的语义/句法信息。在一些示例中,向量可以在由语言模型定义的连续向量空间中,其中语义上类似的文本可以被映射到附近的点。本领域普通技术人员将认识到的是,存在许多方式来训练语言模型以生成文本的向量。例如,预测方法(例如,神经概率语言模型)可以用于训练语言模型。参见distributedrepresentationsofsentencesanddocuments—le&mikolov,icml2014,其全部内容并入本文。

在一些示例中,可以为自然语言处理器正在处理的消息生成第一向量。该消息可以包括内容(例如,文本、音频、媒体等)。可以将第一向量与一个或多个第二向量进行比较。在一些示例中,可以基于语言模型生成第一向量和该一个或多个第二向量两者。每个第二向量可以与意图相关联,该意图可以由一个或多个示例定义。示例可以是已经被识别为与意图相关联的内容。在一些示例中,用户可以识别出示例与意图相关联。在其它示例中,意图可以使用预测方法来确定,如上所述以训练语言模型。在这样的示例中,一旦使用预测方法确定了意图,用户就可以将所确定的意图与机器人代码相关联,使得机器人服务器可以知道如何针对所确定的意图进行谈话。

当对向量进行比较时,当第一向量和第二向量(与意图相关联)之间的距离(例如,余弦距离或欧几里德(euclidian)距离)小于预定阈值时,第一向量可以被确定为与该意图相关联。两个向量之间的余弦相似性可以是计算两个向量之间的角度的余弦的度量。

在一些示例中,可以为一个或多个意图定义一个或多个实体。在这样的示例中,该一个或多个实体可以由用户定义。在其它示例中,该一个或多个实体可以由语言模型定义。例如,当在谈话中经常使用特定短语(例如,一个或多个单词)时,可以将该特定短语识别为实体。又例如,当特定内容经常用于反映意图时,可以将该特定内容识别为实体。

当意图包括一个或多个实体时,自然语言处理器156还可以识别消息中的实体。在这样的示例中,除了上述比较之外,还可以使用该实体。例如,在意图之间进行比较之后,两个或更多个意图可以是相似的。在这样的示例中,可以选择该两个或更多个意图中的包括在消息中已经被识别出最多的实体的意图作为消息的意图。在一些示例中,特定实体被识别为比其它实体更重要。在这样的示例中,意图选择可以考虑在确定消息的意图时被分配给每个实体的权重。

在一些示例中,自然语言处理器156可以导入和/或导出知识包(knowledgepack)。知识包可以包括用于一个或多个行业、一个或多个域或一个或多个意图的其它逻辑分组的一个或多个意图。该一个或多个意图中的意图可以包括一个或多个示例、一个或多个实体、和/或意图的向量。在一些示例中,可以基于接收到的新消息来更新知识包。在一些示例中,可以跨机器人服务器维护知识包,其中来自一个机器人服务器的对知识包的更新影响其它机器人服务器的知识包。

图2图示了用于使用自然语言处理器来识别消息的意图的系统的示例。可以从用户接收消息。消息可以包括一个或多个单词。在一些示例中,消息可以被存储为消息对象210。但是,本领域普通技术人员将认识到的是,消息可以以其它方式或其它数据结构进行存储。例如,因为该一个或多个单词对于自然语言处理不是必须的,因此消息对象210可能不包括该一个或多个单词。

消息对象210可以包括消息向量212和消息中所包括的实体(例如,消息实体214)的列表。可以使用如上所述的该一个或多个单词和语言模型为消息生成消息向量212。消息向量212可以是该一个或多个单词的分布式表示。

如上所述,意图对象(例如,第一意图对象220、第二意图对象230和第三意图对象240)可以与意图相关联。意图对象可以包括意图向量(例如,第一意图向量222、第二意图向量232和第三意图向量242)。意图向量可以是被识别为与和意图向量相关联的意图相关联的一个或多个单词的分布式表示。意图对象还可以包括与意图相关联的一个或多个实体(例如,意图实体)的列表。每个意图实体可以与消息的该一个或多个单词进行比较以填充消息实体214。

在一些示例中,可以将消息向量212与第一意图对象220、第二意图对象230和第三意图对象240中的每一个进行比较。在这样的示例中,可以通过计算向量之间的距离(例如,余弦距离或欧几里德距离)来执行比较。如果计算出的意图对象的距离低于阈值,则与意图对象相关联的意图可以被确定为与消息相关联。

在一些示例中,如果多于一个计算出的距离低于阈值,则与意图对象的最低计算出的距离相关联的意图可以被确定为与消息相关联。在其它示例中,如果多于一个计算出的距离低于阈值,则可以使用消息实体214。例如,具有消息实体214中的最多实体的意图对象可以被确定为最可能的意图。在这样的示例中,与具有最多实体的意图对象相关联的意图可以被确定为与消息相关联。在一些示例中,消息对象210可能不包括消息实体214。在这样的示例中,当多于一个计算出的距离低于阈值时,可以识别消息中的实体。

图3是图示用于响应自然语言通信的处理300的示例的流程图。在一些方面,处理300可以由包括自然语言处理器的机器人服务器执行。虽然可能给出了机器人服务器的具体示例,但是应该认识到的是,处理300中可以包括其它设备。

处理300被示为逻辑流图,该逻辑流图的操作表示可以用硬件、计算机指令或其组合实现的一系列操作。在计算机指令的上下文中,操作表示存储在一个或多个计算机可读存储介质上的计算机可执行指令,该计算机可执行指令在由一个或多个处理器执行时,执行所述操作。通常,计算机可执行指令包括执行特定函数或实现特定数据类型的例程、程序、对象、部件、数据结构等。其中操作被描述的次序不旨在被解释为限制,并且任何数量的所描述的操作可以以任何次序和/或并行地组合以实现该处理。

此外,处理300可以在配置有可执行指令的一个或多个计算机系统的控制下执行,并且可以被实现为在一个或多个处理器上、由硬件、或其组合来集体执行的代码(例如,可执行指令、一个或多个计算机程序或一个或多个应用)。如上所述,代码可以例如以包括可由一个或多个处理器执行的多条指令的计算机程序的形式存储在机器可读存储介质上。机器可读存储介质可以是非瞬态的。

在步骤310处,处理300包括由具有统一资源标识符(uri)的机器人服务器接收超文本传输协议(http)post调用消息。机器人服务器可以与企业相关联。在一些示例中,httppost调用消息可以从消息传送应用服务器被引导到uri。在这样的示例中,httppost调用消息可以包括来自用户的内容。在其它示例中,内容可以由机器人服务器在除httppost调用消息之外的消息(例如,从远程服务器发送的分组)中接收。在一些示例中,内容可以包括一个或多个单词。

在步骤320处,处理300还包括确定针对内容的第一向量。在一些示例中,第一向量可以是内容的分布式表示。在这样的示例中,第一向量可以包括第一元素,第一元素中的每个第一元素根据语言模型来表征内容。在一些示例中,第一元素中的每个元素可能不是互斥的。

在步骤330处,处理300还包括识别针对与机器人服务器相关联的企业的第二向量。在一些示例中,第二向量可以与意图相关联。在这样的示例中,意图可以由一个或多个示例来定义,每个示例是被指示为与意图相关的一个或多个单词。在一些示例中,第二向量可以是该一个或多个示例的分布式表示。在这样的示例中,第二向量可以包括第二元素,第二元素中的每个第二元素根据语言模型来表征该一个或多个示例。在一些示例中,第二元素中的每个元素可能不是互斥的。

在步骤340处,处理300还包括将第一向量与第二向量中的每个第二向量进行比较。在一些示例中,比较可以包括计算第一向量和第二向量中的每个第二向量之间的距离(例如,余弦距离或欧几里德距离)。在一些示例中,处理300还可以包括识别内容中的实体。在这样的示例中,实体可以被预定义为与意图相关联。在步骤350处,处理300还包括基于比较来确定内容的意图。在一些示例中,该确定还可以基于实体。

在步骤360处,处理300还包括基于所确定的内容的意图来发送对httppost调用消息的响应。例如,机器人服务器可以基于意图对象中所包括的用户代码来生成响应。用户代码可以定义如何响应与和意图对象相关联的意图相关联的消息。

在一些示例中,处理300还可以包括接收包。在这样的示例中,包可以定义一个或多个意图。在一些示例中,一个或多个意图中的意图可以包括一个或多个实体。在一些示例中,包可以与域相关联,域包括该一个或多个意图。

c.对话引擎

如上所述,消息处理器流水线可以包括对话引擎。对话引擎可以协调与机器人服务器的谈话。在一些示例中,对话引擎可以是构建用于对消息进行响应的系统的声明方式。

对话引擎可以从自然语言处理器接收意图的标识。使用意图的标识,对话引擎可以访问与意图相关联的意图对象。意图对象可以包括与意图相关联的一个或多个实体。在一些示例中,可以为该一个或多个实体中的每个实体分配优先级。在这样的示例中,该一个或多个实体的至少一部分可以是所需实体。在对话引擎可以结束与用户的谈话之前,所需实体可以是对话引擎需要的实体。

例如,比萨应用可能需要比萨的尺寸和类型。在这样的示例中,对话引擎可以识别用户在当前谈话中接收到的当前消息是否包括比萨的尺寸和类型。如果用户接收到的当前消息不包括比萨的尺寸和类型,则对话引擎可以确定先前消息是否包括比萨的尺寸和类型中的至少一个或多个。如果对话引擎确定它没有接收到比萨的尺寸和/或类型,则对话引擎可以对当前消息生成请求缺失的所需实体的响应。在一些示例中,如果存在多个缺失的所需实体,则对话引擎可以针对缺失的所需实体中的第一个生成响应,然后稍后针对缺失的所需实体中的第二个生成消息。该处理可以继续,直到对话引擎已经接收到所有所需实体为止。

在一些示例中,对话引擎可以识别与一个或多个用户的谈话中导致谈话终止的部分。然后,对话引擎可以基于识别出的指示谈话的转折点的谈话部分来改进将来用户的对话。在一些示例中,对话引擎可以识别看起来即将被终止的谈话(例如,在谈话中确定不良情绪)。在这样的示例中,对话系统可以改变谈话的流程,可能将谈话重定向到不同的系统或者甚至是人。

图4图示了使用消息传送应用在移动设备410上的用户与机器人服务器之间进行的谈话的示例。左侧的消息(例如,消息420、440、460)可以来自用户,右侧的消息(例如,消息430、450)可以来自机器人服务器。例如,用户可以使用安装在移动设备410上的消息传送应用将第一消息420发送到消息传送应用系统。第一消息420可以包括单词“我想要比萨”。第一消息可以被发送到消息传送应用服务器,然后到机器人服务器以进行响应。

如上所述,取决于机器人服务器的设置,第一消息420可以到达连接器或负载平衡器。第一消息420可以被放入到消息进入队列中,并最终被发送到信使(messenger)处理器流水线。在信使处理器流水线中,第一消息420可以由自然语言处理器解释。自然语言处理器可以识别第一消息420的意图。例如,自然语言处理器可以识别第一消息420正在试图订购比萨。该意图可以被发送到对话引擎。对话引擎可以识别意图的一个或多个所需实体。例如,所需实体可以是比萨的类型。对话引擎可以确定消息(或先前的消息)是否已经为用户指示了比萨的类型。在确定尚未指定比萨的类型后,对话引擎可以向机器人代码发送缺失比萨的类型的指示。在一些示例中,第一消息420也可以被发送到机器人代码以确定响应。

因为对话引擎缺失比萨的类型,所以机器人代码可以生成请求比萨的类型的响应。该响应可以包括第二消息430中的单词:“您想要什么类型的比萨?”。第二消息430可以从机器人代码被发送到消息输出队列,并最终被发送到连接器以使用消息传送应用服务器被发送回安装在移动设备410上的消息传送应用。安装在移动设备410上的消息传送应用可以接收第二消息430并显示第二消息430,如图4所示。

在接收到第二消息430之后,用户可以使用移动设备410上的消息传送应用将第三消息440发送到机器人服务器。第三消息440可以包括单词“我想要比萨”。机器人服务器可以基于第三消息的内容和第三消息的上下文来确定第三消息440是新会话。例如,时间可能已经从用户接收第二消息430和用户发送第三消息440中流逝。

自然语言处理器可以识别第三消息440的意图。例如,自然语言处理器可以识别第三消息440正在试图订购比萨。该意图可以被发送到对话引擎。对话引擎可以识别意图的一个或多个所需实体。例如,所需实体可以是比萨的类型。对话引擎可以确定消息(或先前的消息)是否已经为当前会话的用户指示比萨的类型。在确定尚未指定比萨的类型后,对话引擎可以向机器人代码发送缺失比萨的类型的指示。在一些示例中,第三消息440也可以被发送到机器人代码以确定响应。机器人服务器可以类似于第一消息420来响应第三消息440(例如,通过发送询问用户想要什么类型的比萨的第四消息450)。

用户可以用第五消息460来响应第四消息450,其中第五消息460包括用户想要的比萨的类型。如上所述,机器人服务器可以接收第五消息460。但是,代替为第五消息460创建新会话,机器人服务器可以确定第五消息460是包括第三消息440和第四消息450的谈话的一部分。通过机器人服务器将三个消息分组在一起,机器人服务器的机器人代码可以通过一起分析第三消息、第四消息和第五消息来确定如何响应第五消息460。在一些示例中,意图可以包括一个所需实体(例如,比萨的类型)。在这样的示例中,在指示比萨的类型之后,机器人服务器可以结束与用户的谈话。

图5是图示用于发送用以从用户请求附加信息的响应的处理的示例的流程图。在一些方面,处理500可以由机器人服务器执行。虽然可能给出了机器人服务器的具体示例,但是应该认识到的是,处理500中可以包括其它设备。

处理500被图示为逻辑流图,该逻辑流图的操作表示可以用硬件、计算机指令或其组合实现的一系列操作。在计算机指令的上下文中,操作表示存储在一个或多个计算机可读存储介质上的计算机可执行指令,该计算机可执行指令在由一个或多个处理器执行时,执行所述操作。通常,计算机可执行指令包括执行特定函数或实现特定数据类型的例程、程序、对象、部件、数据结构等。其中操作被描述的次序不旨在被解释为限制,并且任何数量的所描述的操作可以以任何次序和/或并行地组合以实现处理。

另外,处理500可以在配置有可执行指令的一个或多个计算机系统的控制下执行,并且可以被实现为在一个或多个处理器上、由硬件或其组合来集体执行的代码(例如,可执行指令、一个或多个计算机程序或一个或多个应用)。如上所述,代码可以例如以包括可由一个或多个处理器执行的多条指令的计算机程序的形式存储在机器可读存储介质上。机器可读存储介质可以是非瞬态的。

在步骤510处,处理500包括由与统一资源标识符(uri)相关联的机器人服务器接收超文本传输协议(http)post调用消息。在一些示例中,httppost调用消息可以从消息传送应用服务器被引导到uri。在这样的示例中,httppost调用消息可以包括来自用户的内容(例如,文本、表情符号、音频、图像、视频或传达消息的其它方法)。在其它示例中,内容可以由机器人服务器在除httppost调用消息之外的消息(例如,从远程服务器发送的分组)中接收。在一些示例中,内容可以包括多个单词。

在步骤520处,处理500还包括识别内容的意图。可以如上所述识别内容的意图。在步骤530处,处理500还包括识别与识别出的意图相关联的一个或多个所需实体。在一些示例中,识别出的意图可以与意图对象相关联。意图对象可以包括一个或多个实体。一个或多个实体中的每一个可以包括优先级。优先级可以指示该一个或多个实体中的一个或多个所需实体。在步骤540处,处理500还包括识别该一个或多个所需实体中的从内容中缺失的所需实体。

在步骤550处,处理500还包括生成对httppost调用消息的响应。在一些示例中,响应可以请求缺失的所需实体。在步骤560处,处理500还包括将对httppost调用消息的响应发送到消息传送应用服务器。

d.事件数据

1.用于管理事件数据的系统

可以将与网页或移动应用相关联的事件数据发送到存储服务器以进行存储。事件数据可以描述关于网页和/或移动应用执行的一个或多个动作。例如,事件数据可以包括由机器人服务器接收的消息,如上所述。事件数据也可以包括对消息的响应。在一些示例中,事件数据可以是尚未处理以供使用的原始数据。存储服务器的队列可以接收事件数据。队列可以与上面描述的消息进入队列类似。在一些示例中,当与事件数据相关联的事件发生时,队列可以以流传输方式接收事件数据。

第一执行处理(例如,火花(spark)执行器)可以从队列中提取事件数据并将该事件数据存储在本地数据库中。本地数据库可以被包括在存储服务器中。本地数据库可以具有按时间段分区的模式。例如,本地数据库可以按日(day)分区。按日分区可以意味着传入的事件数据可以被放入到分区(或本地数据库中的位置(例如,文件))中。可以每日删除分区,使得本地数据库仅维护一定量的数据。

第一执行处理可以在事件数据存储在本地数据库中之前对事件数据执行一个或多个充实(enriching)操作。充实事件数据可以包括增强、细化或以其它方式改进事件数据。例如,充实可以纠正拼写错误或印刷错误。

第一执行处理可以将充实数据(enricheddata)发送回队列。在其它示例中,第一执行处理可以将充实数据发送到第二队列,该第二队列可以类似于第一队列。第二执行处理可以从队列(或第二队列)中提取充实数据并将充实数据存储在远程文件系统中。远程文件系统可以与存储服务器分离。

远程文件系统可以将充实数据写入到数据库(例如,一个或多个蜂巢(hive)表)中。该一个或多个蜂巢表可以在远程文件系统中被物化为一个或多个外部表。该一个或多个外部表可以与本地数据库联合以创建虚拟数据库,使得虚拟数据库包括由存储服务器接收到的所有事件数据。

当查询虚拟数据库时,可以访问一个或多个外部表和/或本地数据库以接收事件数据。在一些示例中,虚拟数据库可以确定在何处进行查询。在这样的示例中,当所请求的数据被包括在单独的数据库中时,虚拟数据库可以将查询分成两个或更多个查询。在一些示例中,虚拟数据库可以使一个或多个外部表和本地数据库对于查询虚拟数据库的用户看起来像是一个数据库。在一些示例中,可以在本地数据库中定义虚拟数据库。

图6图示了用于管理事件数据的系统的示例。该系统可以包括存储服务器630和远程文件系统680。存储服务器630可以包括队列640。队列640可以从移动应用610和/或网页620中的一个或多个接收事件数据。应该认识到的是,事件数据可以来自其它源(source)。

存储服务器630还可以包括第一执行处理650。第一执行处理650可以从队列640中提取事件数据以存储在本地数据库660中。在一些示例中,第一执行处理650可以在从队列640中提取的事件数据被存储在本地数据库660之前充实该事件数据。在这样的示例中,可以将充实数据存储在本地数据库660中。在一些示例中,在充实事件数据之后,第一执行处理650可以将充实数据发送到队列640。在其它示例中,在充实事件数据之后,第一执行处理650可以将充实数据发送到第二队列(未示出)。

本地数据库660可以包括一个或多个分区。每个分区可以用于根据特性来存储数据。例如,第一分区可以存储来自第一用户的事件数据。在这样的示例中,第二分区可以存储来自第二用户的事件数据。另外,本地数据库660可以按时间段分区。在这样的示例中,本地数据库660可以基于时间表(schedule)来删除被包括在本地数据库660中的事件数据。例如,本地数据库660可以每日删除事件数据。

在一些示例中,存储服务器630还可以包括第二执行处理670。第二执行处理670可以从队列640(或第二队列)中提取充实的事件数据(或仅事件数据)以存储在远程文件系统680中。

远程文件系统680可以与存储服务器630分离。远程文件系统680可以包括使事件数据存储到其中的远程数据库690。

图7图示了虚拟数据库762的示例。虚拟数据库762可以充当本地数据库760(类似于本地数据库660)和远程数据库(类似于远程数据库690)的接口。虚拟数据库762可以展现应用程序接口以从用户接收针对访问虚拟数据库762的查询(例如,查询764)。可以调用查询764,如同数据在虚拟数据库762上一样。在一些示例中,虚拟数据库762可以识别查询764所请求的数据的位置,并且创建针对来自本地数据库760和/或远程数据库790的数据的一个或多个查询。在这样的示例中,虚拟数据库762可以从本地数据库760和/或远程数据库790接收数据,并用数据对查询764进行响应。

2.物化视图(materializedview)

在一些示例中,上面描述的存储服务器可以被包括在客户观察和参与云服务(customerinsights&engagementcloudservice,ciecs)中。ciecs可以分析存储在存储服务器中的信息。在一些示例中,ciecs可以对源(例如,网页和/或移动应用)执行行为分析。在这样的示例中,行为分析可以分析与源的交互,包括参与(例如,用户的活动水平)、群组(cohort)分析(例如,用户的保留)和流失(churn)预测(例如,识别存在不返回风险的用户)。在一些示例中,ciecs可以进行a/b测试(例如,测试不同用户情况下的不同布局)、用户/会话分析(例如,识别与用户的会话相关联的信息)、以及预测分析(例如,基于样本,识别可以与所有数据相关联的推断)。

在一些示例中,可以使用具有固定时间的查询来计算对事件数据执行的分析。在这样的示例中,查询本身可能不改变,因为查询正在请求来自当前时间之前的一段时间的数据。但是,从查询返回的数据可能改变。例如,对一小时前的数据的查询可以取决于执行查询的时间而返回不同的数据。

为了优化对固定时间的查询,可以在数据库前面(例如,在图6中描述的本地数据库660前面)创建物化视图。物化视图可以包括描述由存储服务器接收到的事件数据的一个或多个汇总(summary)计算。在这样的示例中,当接收到新事件数据并且新事件数据被添加到数据库时,可以递增地更新汇总计算,使得不需要访问先前的事件数据。相反,用于汇总计算的一个或多个汇总值,或汇总计算本身可以被保存,并在接收到新事件数据时递增地进行更新。在这样的示例中,不为汇总计算而保存事件数据。

例如,汇总计算可以是每日新用户的数量。代替必须查询当日的事件数据,指示每日新用户数量的汇总值可以由物化视图保存。当新事件数据指示新用户时,汇总值可以递增。

在一些示例中,可以根据时间表来更新物化视图的一个或多个汇总计算。例如,代替在接收到新事件数据时更新汇总计算,可以每小时更新汇总计算。可以从根据时间表更新中受益的汇总计算的示例是漏斗(funnel)识别。当多个所需动作按顺序发生,每个动作发生在自先前动作以来的一定量的时间内时,可能发生漏斗。例如,漏斗可以要求用户选择项目并购买该项目。在这样的示例中,仅当两个动作在特定量的时间内一起发生时才识别漏斗。在这样的示例中,用以确定是否发生漏斗的查询可以包括由单个用户对多个事件的搜索。然后需要将这些事件作为事件的集合而不是各个事件来评估。

图8是图示用于展现用于访问虚拟数据库的可调用方法的处理的示例的流程图。在一些方面,处理800可以由存储服务器执行。虽然可能给出了存储服务器的具体示例,但是应该认识到的是,处理800中可以包括其它设备。

处理800被图示为逻辑流图,该逻辑流图的操作表示可以用硬件、计算机指令或其组合实现的一系列操作。在计算机指令的上下文中,操作表示存储在一个或多个计算机可读存储介质上的计算机可执行指令,该计算机可执行指令在由一个或多个处理器执行时,执行所述操作。通常,计算机可执行指令包括执行特定函数或实现特定数据类型的例程、程序、对象、部件、数据结构等。其中操作被描述的次序不旨在被解释为限制,并且任何数量的所描述的操作可以以任何次序和/或并行地组合以实现处理。

此外,处理800可以在配置有可执行指令的一个或多个计算机系统的控制下执行,并且可以被实现为在一个或多个处理器上、由硬件或其组合来集体执行的代码(例如,可执行指令、一个或多个计算机程序或一个或多个应用)。如上所述,代码可以例如以包括可由一个或多个处理器执行的多条指令的计算机程序的形式存储在机器可读存储介质上。机器可读存储介质可以是非瞬态的。

在步骤810处,处理800包括由存储服务器接收与源相关联的事件数据。在一些示例中,源可以是移动应用或网页。在这样的示例中,事件数据可以描述与源相关的一个或多个动作。

在步骤820处,处理800还包括当存储服务器接收到事件数据时将该事件数据存储在本地数据库中的位置中。在一些示例中,存储服务器可以包括本地数据库。在这样的示例中,根据第一时间表删除位置中的数据。第一时间表的示例可以是每日的。

在步骤830处,处理800还包括根据第二时间表将事件数据存储在远程数据库中。在一些示例中,远程数据库可以与存储服务器分离。在这样的示例中,第一时间表可以比第二时间表更不频繁。第二时间表的示例可以是每小时的。在一些示例中,远程文件系统可以包括远程数据库。

在步骤840处,处理800还包括向客户端应用展现用于查询虚拟数据库的第一可调用方法。在一些示例中,当事件数据在本地数据库中时,使用第一可调用方法对事件数据的查询可以从本地数据库中检索该事件数据。在这样的示例中,在事件数据从本地数据库中被删除之后,查询可以从远程数据库中检索该事件数据。

在步骤850处,处理800还包括基于事件数据来计算汇总计算。在一些示例中,当存储服务器接收到事件数据时,可以递增地更新汇总计算。在这样的示例中,可以递增地更新汇总计算,而不必针对事件数据查询数据库。在其它示例中,可以根据第三时间表来递增地更新汇总计算。例如,第三时间表可以是每小时的。汇总计算可以基于当前存储在本地数据库中的数据和当前存储在远程数据库中的数据。汇总计算可以基于当前时间之前的一段时间的数据。

在前述说明书中,参考本公开的各方面的具体示例对本公开的各方面进行了描述,但是本领域技术人员将认识到的是,本公开不限于此。上述示例的各个特征和方面可以被单独使用或联合使用。另外,在不脱离本说明书的更广泛精神和范围的情况下,示例可以用在除本文所述的环境和应用之外的任何数目的环境和应用中。对应地,本说明书和附图应当被认为是说明性的而不是限制性的。

出于说明的目的,以特定次序描述了方法。应该认识到的是,在替代示例中,可以以与所描述的次序不同的次序执行方法。还应该认识到的是,上述方法可以由硬件部件执行,或者可以以机器可执行指令的序列被实施,机器可执行指令可以用于使机器(诸如编程有指令的通用或专用处理器或逻辑电路)执行方法。这些机器可执行指令可以存储在一个或多个机器可读介质(诸如cd-rom或其它类型的光盘、软盘、rom、ram、eprom、eeprom、磁卡或光卡、闪存、或适合于存储电子指令的其它类型的机器可读介质)上。替代地,可以通过硬件和软件的组合来执行方法。

在部件被描述为被配置为执行某些操作的情况下,这种配置可以例如通过设计电子电路或其它硬件来执行操作、通过对可编程电子电路(例如,微处理器或其它合适的电子电路)进行编程来执行操作、或其任何组合来实现。

虽然本文已经详细描述了本申请的说明性示例,但是应该理解的是,可以以其它方式不同地实施和采用本发明概念,并且除了受现有技术的限制之外,所附权利要求旨在被解释为包括这样的变型。

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