基于消息贴纸的建议响应的制作方法

文档序号:18031148发布日期:2019-06-28 22:40阅读:392来源:国知局
基于消息贴纸的建议响应的制作方法

本申请要求2016年9月20日提交的标题为“基于消息贴纸的建议响应”,美国临时专利申请no.62/397,316的优先权,该申请通过引用整体并入本文。



背景技术:

数字设备的普及和便利以及因特网通信的广泛使用已经使用户设备之间的通信变得无处不在。用户可以使用他们的用户设备来彼此之间发送在设备上显示或以其他方式输出的各种形式的媒体,该媒体包括文本,表情符号,图像,视频和动画。例如,用户可以输入文本并选择图像或其他媒体形式,通过通信网络将它们发送到另一用户的设备。

这里提供的背景描述是为了总体上呈现本公开的背景。目前列举的发明人的工作,在本背景技术部分中描述的范围,以及在提交时可能不具备现有技术资格的描述的各方面,既不明确也不暗示地被承认为针对本公开的现有技术。



技术实现要素:

本申请的实施方式涉及基于在消息应用中提供的消息贴纸(messagestickers)的自动建议响应。在一些实施方式中,用于在消息应用中提供消息建议的计算机实施的方法包括,检测第一用户设备通过通信网络向第二用户设备发送的第一消息,以编程方式分析所述第一消息,以确定与所述第一消息相关联的语义概念,至少部分地基于所述语义概念来识别一个或多个消息贴纸,以及发送使所述一个或多个消息贴纸显示在用户界面中的指令,所述用户界面被显示在所述第二用户设备上。

本文描述了该方法的各种实施方式和示例。例如,在一些实施方式中,所述第一消息是所述第一用户设备的第一用户与所述第二用户设备的第二用户之间在所述消息应用中的通信的一部分,所述方法还包括:以编程方式分析所述通信,以确定与所述通信相关联的一个或多个附加语义概念,其中识别所述一个或多个消息贴纸还基于所述一个或多个附加语义概念。在一些实施方式中,识别所述一个或多个消息贴纸包括,基于所述语义概念,确定一个或多个建议响应;将与多个消息贴纸相关联的一个或多个描述符与所述一个或多个建议响应进行比较;以及基于所述比较,从所述多个消息贴纸中选择所述一个或多个消息贴纸。

在一些示例中,基于所述比较,从所述多个消息贴纸中选择所述一个或多个消息贴纸包括:检查所述一个或多个描述符与所述一个或多个建议响应之间的对应关系,其中所述对应关系包括,所述一个或多个描述符的词与所述一个或多个建议响应的词之间的字母匹配,和/或所述一个或多个描述符与所述一个或多个建议响应之间的语义相似性;以及确定所述一个或多个消息贴纸具有所述一个或多个描述符与所述一个或多个建议响应之间的所述对应关系。在进一步的示例中,所述一个或多个消息贴纸包括多个消息贴纸,并且还包括,基于所述多个消息贴纸中的每个消息贴纸的描述与所述一个或多个建议响应之间的一个或多个对应关系,确定所述多个消息贴纸的各自的排名,其中,发送使所述多个消息贴纸被显示的指令包括,发送指示所述多个消息贴纸的所述排名的指令。

在一些实施方式中,基于所述比较从所述多个消息贴纸中选择所述一个或多个消息贴纸包括:确定所述一个或多个描述符与所述一个或多个建议响应之间的相似性得分,以及基于所述一个或多个消息贴纸的所述相似性得分,选择所述一个或多个消息贴纸。在一些实施方式中,一个或多个消息贴纸中的至少一个消息贴纸包括,要显示的图像数据和有效识别所述至少一个消息贴纸的贴纸标识(id)。

方法还包括,在一些实施方式中,通过所述一个或多个消息贴纸的特定消息贴纸的用户输入来接收选择,以及响应于接收到所述选择,在所述消息应用中向所述第一用户设备提供所述特定消息贴纸,其中提供所述特定消息贴纸包括以下中的一个或多个:通过所述通讯网络,将所述消息贴纸的贴纸id发送到所述第一用户设备,以及通过所述通信网络,将所述消息贴纸的图像数据发送到所述第一用户设备。在一些实施方式中,识别所述一个或多个消息贴纸包括,确定所述第一消息是所述第一用户设备和所述第二用户设备之间的在所述消息应用中的对话的一部分,所述方法还包括至少部分地基于先前在对话中接收的一个或多个消息中的一个或多个语义概念,识别所述一个或多个消息贴纸。

在一些实施方式中,用于在消息应用中提供消息建议,所述方法包括检测第一用户设备通过通信网络向第二用户设备发送的第一消息,其中所述第一消息包括消息贴纸。方法包括以编程方式分析所述消息贴纸,以确定与所述第一消息相关联的语义概念,至少部分地基于所述语义概念,确定一个或多个建议响应,以及发送使所述一个或多个建议响应由所述第二用户设备显示的指令。

本文描述了该方法的各种实施方式和示例。例如,在一些实施方式中,建议响应包括至少一个建议消息贴纸响应,所述至少一个建议消息贴纸响应包括消息贴纸。在一些实施方式中,确定所述一个或多个建议响应还包括,将与多个消息贴纸相关联的一个或多个描述符与所述一个或多个建议响应进行比较,以及基于所述比较,从所述多个消息贴纸中选择所述至少一个建议消息贴纸响应。在一些示例中,方法还包括确定所述消息贴纸存储在所述第二用户设备上。

在一些实施方式中,方法还包括基于接收到的给所述第二用户设备的用户输入,接收对所述一个或多个建议响应的至少一个建议响应的选择,以及响应于接收所述选择,通过所述通信网络将所述至少一个建议响应发送到所述第一用户设备。在一些示例中,所述消息贴纸与图像数据和贴纸标识(id)相关联。

在一些实施方式中,一种系统,用于在消息应用中提供消息建议,包括存储器以及至少一个处理器,用于访问所述存储器以及用于进行操作。操作包括在第二用户设备接收第一用户设备通过通信网络发送的第一消息,获得与所述第一消息相关联的建议响应,其中所述建议响应是基于通过以编程方式分析所述第一消息而确定的语义概念。操作包括至少部分地基于所述建议响应,识别一个或多个消息贴纸,其中所述一个或多个消息贴纸存储在所述第二用户设备上,以及使得所述一个或多个消息贴纸显示在用户界面中,所述用户界面被显示在所述第二用户设备上。

本文描述了该系统的各种实施方式和示例。例如,在一些实施方式中,获得所述建议响应的操作包括从服务器设备接收所述建议响应,其中所述服务器设备以编程方式分析所述第一消息,以确定所述语义概念,以及基于从所述语义概念到存储的建议响应的库的映射,确定所述建议响应。在一些实施方式中,操作还包括获得与存储在所述第二用户设备上的多个消息贴纸相关联的多个语义概念,以及将所述多个语义概念与所述建议响应进行比较,其中,至少部分地基于所述建议响应来识别所述一个或多个消息贴纸包括,基于所述比较,从所述多个语义概念中选择所述一个或多个消息贴纸。

在一些系统的实施方式中,进一步的操作包括,基于接收到的给所述第二用户设备的用户输入,接收对所述一个或多个建议响应的至少一个建议响应的选择,以及响应于接收所述选择,通过所述通信网络将所述至少一个建议响应发送到所述第一用户设备。在一些示例中,所述一个或多个消息贴纸的至少一个消息贴纸包括,要显示的图像数据和识别所述至少一个消息贴纸的贴纸标识(id)。

附图说明

图1是可用于本文描述的一个或多个实施方式的示例系统和网络环境的框图;

图2是示出根据一些实施方式的实施本文描述的一个或多个特征的示例系统的框图;

图3是示出根据一些实施方式的用于向已接收的消息贴纸提供建议响应的示例方法的流程图;

图4是示出根据一些实施方式的响应于已接收的消息来提供消息贴纸建议的示例方法的流程图;

图5是示出根据一些实施方式的响应于已接收的消息来提供消息贴纸建议的另一示例方法的流程图;

图6-7是根据一些实施方式的显示了用户界面的示例的图形表示,在用户界面中,响应于接收消息贴纸而提供建议响应。

图8-9是根据一些实施方式的显示了用户界面的示例的图形表示,用户界面提供包括位置建议的建议响应;

图10-11是根据一些实施方式的用户界面的示例的图形表示,用户界面显示对接收的图像的建议响应;和

图12是可用于本文描述的一个或多个实施方式的示例设备的框图。

具体实施方式

这里描述的一个或多个实施方式涉及基于在消息应用中提供的消息贴纸的自动建议响应。在一些实施方式中,设备检测通过通信网络从第一用户的第一设备发送到第二用户的第二设备的消息。该消息由设备以编程方式分析,以确定与该消息相关联的语义概念。至少部分地基于语义概念来识别一个或多个消息贴纸,并且在第二设备上的用户界面中显示该一个或多个消息贴纸,作为第二用户可选择的建议响应。响应于例如通过用户输入来选择建议的消息贴纸,所选择的消息贴纸作为对话中的消息的响应被传送到,例如,第一设备,以及该消息被发送的对话中的任何其他设备。例如,在第一设备上执行的消息应用中,发送的消息贴纸显示为响应消息。

在各种实施方式中,基于被确定存在于消息中的语义概念,为接收的消息确定建议响应。获得与多个消息贴纸相关联的诸如描述和关键字的描述符,将描述符与建议响应进行比较,并且基于该比较,从多个消息贴纸中选择建议的消息贴纸。在各种实施方式中,消息贴纸与要显示的图像数据相关联,并且与用于识别消息贴纸的贴纸标识(id)相关联,和/或与用于识别贴纸集合或组的贴纸集id相关联,消息贴纸被包括在该贴纸集合或组内。

在一些实施方式中,服务器设备可以存储消息贴纸,可以确定对接收到的消息的消息响应,可以确定与接收到的消息的建议响应相对应的消息贴纸,并且可以将消息贴纸发送到第二设备以显示为建议响应。在一些实施方式中,接收到的消息的建议响应由服务器设备确定并发送到第二设备,并且第二设备可以确定与接收到的消息的建议响应相对应的本地存储的消息贴纸,并显示这样的消息贴纸作为建议响应。

在进一步的实施方式中,所接收的消息包括一个或多个消息贴纸。例如,通过获得与标准化消息贴纸相关联的描述符(例如,描述和/或关键字),可以为消息贴纸识别语义概念。基于所接收的消息贴纸的语义概念来确定一个或多个建议响应,其中建议响应可以是文本,图像和/或可以包括消息贴纸。建议响应可以由第二用户设备显示以供第二用户选择,并且所选择的建议响应被发送到对话中的第一用户设备和/或其他用户设备。

在一些实施方式中,所描述的计算机实施的方法,系统和/或计算机可读介质,能够在设备处,例如,通过通信网络,从用户操作的第二设备接收消息,并且自动生成建议响应,用户可以选择建议响应发送,以响应接收到的消息。所接收的消息可以包括一个或多个消息贴纸,和/或所生成的建议响应可以包括可由第二设备发送的一个或多个消息贴纸。

在一些实施方式中,在用户设备之间对话期间的很多时候,用户可能无法提供足够的注意力或焦点来用相关的响应去响应所接收的消息,和/或可能无法向设备提供详细的用户输入来创造这样的相关响应。在一些示例中,用户可能正在进行或处于,用户无法提供或很难提供适当的响应的活动或环境中。例如,用户可能没有机会浏览可用贴纸列表并选择贴纸以发送给对话中的其他用户。

本文描述的一个或多个特征有助于为用户提供自动消息建议以响应消息,消息建议包括消息贴纸建议和针对所接收的消息贴纸的消息建议。例如,基于用户设备之间的消息对话中的已接收消息,自动建议一个或多个建议的消息响应,以及用户可以简单地从建议中选择响应以便在对话中发布。这样的建议允许用户简单且快速地响应所接收的消息,减少用户输入并减少在设备上编写响应的时间,从而减少设备资源的消耗,该设备资源另外将被用来启用和处理来自用户的添加的输入以编写响应和/或参与由电子设备保持的对话。

在此描述的一个或多个特征有益于,响应于在设备上获得消息而基于消息贴纸提供自动消息建议。这里描述的一个或多个特征允许用户在对话和其他设备通信中容易且快速地使用消息贴纸,而不管消息中使用的语言,设备偏好等。在电子消息中发送消息贴纸允许用户在通过用户设备提供的聊天和其他通信中向其他用户表达自己。例如,如果用户接收到在用户设备之间的消息对话中接收的消息贴纸,则基于消息贴纸来建议一个或多个自动消息响应(例如,文本响应,消息贴纸响应或其他类型的内容响应),并且用户可以简单地从建议中选择期望的响应。在另一示例中,如果用户在设备对话中接收到消息(例如,文本消息或其他类型的内容消息),则基于该消息建议一个或多个自动消息贴纸响应,并且用户可以从建议中简单地选择期望的消息贴纸响应发送到其他用户设备。

此外,所描述的消息响应建议与所接收的消息相关。例如,使用语义概念和建议响应的预定义关联,映射模型,机器学习模型等使得能够针对在消息中检测到的概念确定相关的消息建议。与标准化消息贴纸相关联的描述和关键字的使用,允许相关的消息贴纸被确定并呈现为对消息的建议响应,并且允许针对消息中接收到的消息贴纸确定相关的响应建议。这样的相关的建议允许用户简单且快速地响应所接收的消息,减少用户输入并减少在设备上编写响应的时间,从而减少设备资源的消耗,该设备资源另外将被用来启用和处理来自用户的添加的输入以编写响应而非选择不太相关的建议,或者减少将被用来显示大量可能的响应(例如,包括不太相关的建议)所需的资源。此外,这些特征能够减少设备资源的消耗,该设备资源另外将被用来启用和处理来自用户的添加的输入以编写响应,搜索,编辑或完成建议的响应,和/或参与由电子设备保持的对话。

因此,一个或多个所描述的实施方式的技术效果是,以较少的计算时间和用于获得结果的资源,实现设备实施的对话中的响应的创建和传输。例如,所描述特征的技术效果是,与不提供如上所述的一个或多个所描述特征的系统相比,在创建和发送消息响应的系统处理资源的消耗上的减少。

在这里讨论的某些实施方式可以收集或使用关于用户的个人信息(例如,用户数据,关于用户的社交网络的信息,用户的地点和在该地点的时间,用户的生物特征信息,用户的活动和人口统计信息)的情况下,向用户提供一个或更多机会控制是否收集个人信息,是否存储个人信息,是否使用个人信息,以及如何收集关于用户,存储和使用的信息。也就是说,这里讨论的系统和方法在接收到相关用户的明确授权时才收集,存储和/或使用用户个人信息。例如,向用户提供对程序或特征是否收集关于该特定用户或与该程序或特征相关的其他用户的用户信息的控制。要为被收集个人信息的每个用户呈现一个或多个允许控制与该用户相关的信息收集的选项,以提供关于是否收集信息以及关于信息的哪些部分被收集的许可或授权。例如,可以通过通信网络向用户提供一个或多个这样的控制选项。另外,某些数据可以在存储或使用之前以一种或多种方式处理,以便移除个人可识别信息。作为一个示例,可以对用户的身份处理,以便不能确定个人可识别信息。作为另一示例,用户的地理地点可以被概括在更大的区域,使得不能确定用户的特定地点。

“贴纸”或“消息贴纸”向消息应用的用户供应与其他用户交互的直观可视的机制。贴纸包括由设备显示的视觉内容,例如图像像素内容,动画,视频,并且可以包括其他类型的内容,例如文本,音频数据等。例如,贴纸可以基于一个或多个角色,并且可以使用角色来表达各种情绪。贴纸也可以基于主题,例如电影主题(例如,“天空和星星”影片贴纸),卡通角色,体裁(例如,食物,饮料,舞蹈等),消息(“给我打电话”),等等。在一些实施方案中,贴纸可大于表情符号。在一些实施方式中,除静态图像之外或作为静态图像的替代,贴纸可以包括运动和/或音频。在一些实施方式中,当贴纸在消息应用中被接收后,贴纸可以以更大的尺寸(例如,全屏,或消息应用的用户界面的大部分)显示,并且例如,在自收到贴纸以来已经过去的特定时间后可以折叠成更小的尺寸。在一些实施方式中,贴纸可以被显示为例如,在消息应用中的对话之上的覆盖层。贴纸可以使用户能够减少输入文本所花费的时间,并且可以使得通过消息应用的通信更容易和/或更快。

在一些实施方式中,消息贴纸包括指示消息贴纸的视觉显示外观的图像数据(例如,像素数据)。消息贴纸还可以与例如元数据的贴纸信息相关联。例如,消息贴纸可以被包括在,例如“贴纸集”的一组相关的消息贴纸中。消息贴纸可以与诸如标识贴纸的贴纸标识(id),以及标识贴纸所属的贴纸集的贴纸集id的元数据相关联。消息贴纸可以与包括贴纸的一个或多个缩略图版本,例如,图像数据的较低分辨率或较小版本的元数据相关联。消息贴纸可以与包括描述符的元数据相关联,如下面的示例中所述,描述符是例如与贴纸相关的描述(例如,文本描述)和/或与贴纸相关的一个或多个关键字。在一些实施方式中,消息贴纸和贴纸集由一个或多个提供者定义,创建和/或提供,提供者可以以标准化格式维护贴纸,例如,维护贴纸图像数据和元数据。在一些实施方式中,用户设备的用户不能直接修改消息贴纸数据,用户设备的用户可以从提供者获得修改后的消息贴纸数据。

这里提到的图像是数字图像,数字图像具有含有一个或多个像素值(例如,颜色值,亮度值等)的像素。图像可以是静止图像或单个图像,或者可以是包括在一系列图像中的图像,例如,视频帧的视频序列中的帧,或者不同类型的图像序列或图像动画中的图像。例如,这里描述的实施方式可以与单个图像,图像的视频序列或动画图像(例如,电影图,动画图形交换格式图像(gif)或其他动画)一起使用。

图1示出了用于提供消息服务的示例环境100的框图,该消息服务能够实现自动辅助代理,并且在一些实施例中提供自动辅助代理,例如机器人。示例性环境100包括消息服务器101,一个或多个客户端设备115a,115n,服务器135和网络140。用户125a-125n可以与各自的客户端设备115a,115n相关联。服务器135可以是第三方服务器,例如,由与提供消息服务的一方不同的另一方控制的服务器。在各种实施方式中,如下面进一步详细描述的,服务器135可以实施机器人服务。在一些实施方式中,环境100可以不包括图1中所示的一个或多个服务器或设备,或者可以包括图1中未示出的其他服务器或设备。在图1和其余的附图中,引用编号之后的字母,例如“115a”,表示对具有该特定引用编号的元素的引用。文本中没有后续字母的引用编号,例如“115”,表示对带有该引用编号的元素的实施方式的总体引用。

在所示实施方式中,消息服务器101,客户端设备115和服务器135经由网络140通信地耦合。在各种实施方式中,网络140可以是传统类型的,有线的或无线的,以及可以具有包括星形配置,令牌环配置或其他配置的许多不同的配置。此外,网络140可以包括局域网(lan),广域网(wan)(例如,因特网),和/或多个设备可以通过其进行通信的其他互连数据路径。在一些实施方式中,网络140可以是对等网络。网络140还可以耦合到或包括电信网络的部分,用于以各种不同的通信协议发送数据。在一些实施方式中,网络140包括用于发送和接收数据的通信网络,或蜂窝通信网络,发送和接收数据包括经由短消息服务(sms),多媒体消息服务(mms),超文本传输协议(http),直接数据连接,电子邮件等。尽管图1示出了耦合到客户端设备115,消息服务器101和服务器135的一个网络140,但实际上,一个或多个网络140可以耦合到这些实体。

消息服务器101可以包括处理器,内存(memory)和网络通信能力。在一些实施方式中,消息服务器101是硬件服务器。在一些实施方式中,消息服务器101可以植入虚拟化环境中,例如,消息服务器101可以是虚拟机,该虚拟机在可以包括一个或多个其他虚拟机的硬件服务器上执行。消息服务器101经由信号线102通信地耦合到网络140。信号线102可以是例如以太网,同轴电缆,光纤电缆等的有线连接,或例如wi-fi,蓝牙或其他无线技术的无线连接。在一些实施方式中,消息服务器101经由网络140向客户端设备115a-115n,服务器135和机器人113中的一个或多个发送数据,以及从客户端设备115a-115n,服务器135和机器人113中的一个或多个接收数据。在一些实施方式中,消息服务器101包括消息应用103a,消息应用103a提供客户端功能以使用户(例如,任何用户125)能够与其他用户和/或与机器人交换消息。消息应用103a可以是服务器应用,客户端-服务器应用的服务器模块,或分布式应用(例如,在一个或多个客户端设备115上具有对应的客户端消息应用103b)。

消息服务器101还可以包括数据库199,数据库199可以存储经由消息服务器101交换的消息,一个或多个机器人的数据和/或配置,以及与一个或多个用户125相关联的用户数据,所有这些数据都在各个用户的明确许可下存储。在一些实施例中,消息服务器101可以包括一个或多个辅助代理,例如机器人107a和111。在其他实施例中,辅助代理可以在客户端设备115a-n上实施,而不在消息服务器101上实施。

消息应用103a可以是可由处理器操作的代码和例程,以使得能够在用户125和一个或多个机器人105,107a,107b,109a,109b,111和113之间交换消息。在一些实施方式中,可以使用包括现场可编程门阵列(fpga)或专用集成电路(asic)的硬件来实施消息应用103a。在一些实施方式中,可以使用硬件和软件的组合来实施消息应用103a。

在各种实施方式中,当与客户端设备115相关联的各个用户提供了用于存储消息的同意,数据库199可以存储在一个或多个客户端设备115之间交换的消息。在一些实施方式中,当与客户端设备115相关联的各个用户提供了用于存储消息的同意,数据库199可以存储在一个或多个客户端设备115与一个或多个机器人之间交换的消息,该一个或多个机器人在不同设备,例如,另一客户端设备,消息服务器101和服务器135等上实施。在一个或多个用户不提供同意的实施方式中,由这些用户接收和发送的消息不被存储。

在一些实施方式中,可以对消息加密,例如,使得仅消息的发送者和接收者可以查看加密的消息。在一些实施方式中,消息被存储。在一些实施方式中,数据库199可以进一步存储例如机器人107a,机器人111等的一个或多个机器人的数据和/或配置。在一些实施方式中,当用户125提供了用于存储用户数据(诸如社交网络数据,联系信息,图像等)的同意,数据库199还可以存储与提供这样的同意的各个用户125相关联的用户数据。

在一些实施方式中,消息应用103a/103b可以提供使用户125能够创建新机器人的用户界面。在这些实施方式中,消息应用103a/103b可以包括使用户创建的机器人能够被包括在消息应用103a/103b的用户之间的对话中的功能。

客户端设备115可以是包括内存和硬件处理器的计算设备,例如,相机,膝上型计算机,平板计算机,移动电话,可穿戴设备,移动电子邮件设备,便携式游戏机,便携式音乐播放器,阅读器设备,头戴式显示器或能够无线访问网络140的其他电子设备。

在所示实施方式中,客户端设备115a经由信号线108耦合到网络140,并且客户端设备115n经由信号线110耦合到网络140。信号线108和110可以是例如以太网的有线连接,或例如wi-fi,蓝牙或其他无线技术的无线连接。客户端设备115a,115n(例如,用户设备)分别由用户125a,125n访问。图1中的客户端设备115a,115n作为示例被使用。虽然图1示出了两个客户端设备115a和115n,但是本公开适用于具有一个或多个客户端设备115的系统架构。

在一些实施方式中,客户端设备115可以是用户125佩戴的可穿戴设备。例如,客户端设备115可以作为带扣(例如,手环)的一部分,珠宝的一部分或一副眼镜的一部分被包括在内。在另一示例中,客户端设备115是智能手表。在各种实施方式中,用户125可以在设备的显示器上查看来自消息应用103a/103b的消息,可以经由设备的扬声器或其他输出设备等来访问消息。例如,用户125可以在智能手表或智能手环的显示器上查看消息。在另一示例中,用户125可以经由耦合到客户端设备115或耦合到客户端设备115的部分的耳机(未示出),客户端设备115的扬声器,客户端设备115的触觉反馈元件等来访问消息。

在一些实施方式中,消息应用103b存储在客户端设备115a上。在一些实施方式中,消息应用103b(例如,瘦客户端应用,客户端模块等)可以是存储在客户端设备115a上的客户端应用,该客户端应用具有存储在消息服务器101上的对应的消息应用103a(例如,服务器应用,服务器模块等)。例如,消息应用103b可以将用户125a在客户端设备115a上创建的消息发送到存储在消息服务器101上的消息应用103a。

在一些实施方式中,消息应用103a可以是存储在消息服务器101上的独立应用。用户125a可以使用客户端设备115a上的浏览器或其他软件,经由网页访问消息应用103a。在一些实施方式中,在客户端设备115a上实施的消息应用103b可以包括与消息服务器101中包括的模块相同或相似的模块。在一些实施方式中,例如,在对等配置或一个或多个客户端设备115包括能够与其他客户端设备115交换消息的功能的其他配置中,消息应用103b可以作为独立客户端应用来实施。在这些实施方式中,消息服务器101可以包括有限的消息功能或没有消息功能(例如,客户端认证,备份等)。在一些实施方式中,消息服务器101可以实施一个或多个机器人,例如机器人107a和机器人111。

响应建议生成器150是用于基于输入到响应建议生成器150的特定语义概念而生成相关响应的模块。这里描述了使用响应建议生成器150的一些示例。在各种实施方式中,响应建议生成器150是单独的设备或并入到环境100的例如消息服务器101或其他服务器的一个或多个其他设备中。

服务器135可以包括处理器,内存和网络通信能力。在一些实施方式中,服务器135是硬件服务器。服务器135经由信号线128通信地耦合到网络140。信号线128可以是例如以太网,同轴电缆,光纤电缆等的有线连接,或例如wi-fi,蓝牙或其他无线技术的无线连接。在一些实施方式中,服务器135经由网络140向消息服务器101和客户端设备115中的一个或多个发送数据,以及从消息服务器101和客户端设备115中的一个或多个接收数据。虽然服务器135被示为一个服务器,但是各种实施方式可以包括一个或多个服务器135。服务器135可以将一个或多个机器人实施为服务器应用或服务器模块,例如机器人109a和机器人113。

在各种实施方式中,服务器135可以是管理消息服务器101的相同实体的一部分,例如,消息服务的提供者。在一些实施方式中,服务器135可以是第三方服务器,例如,由与提供消息应用103a/103b的实体不同的实体控制的服务器。

在一些实施方式中,环境100的一个或多个组件提供或托管机器人。机器人是在一个或多个计算机上实施的自动服务,用户通过例如文本的用户输入,诸如通过消息应用103a/103b或其他应用等与该自动服务交互。以下更详细地描述机器人。

在一些实施方式中,消息应用103a/103b还可以经由用户界面向用户125提供一个或多个建议,例如,建议响应。在一些实施方式中,响应于例如,经由按钮或其他用户界面元素的用户输入,提供建议响应。建议响应可以使得交互更快,例如,通过减少或消除用户键入响应的需要。例如,当客户端设备缺少文本输入功能时(例如,不包括键盘或麦克风的智能手表),建议响应可以使用户能够快速且容易地响应消息。例如,当用户选择建议响应时(例如,通过在触摸屏上选择相应的用户界面元素),建议响应还可以使用户能够快速地响应消息。可以使用被训练为生成响应的预测模型,例如,机器学习模型,来生成建议响应。

例如,消息应用103a/103b可以实施例如深度学习模型的机器学习,机器学习可以增强用户与消息应用103的交互。在一些实施方式中,机器学习可以在环境100的一个或多个组件上实施。机器学习模型可以使用合成数据来训练,而不使用用户信息,合成数据例如是由计算机自动生成的数据。在一些实施方式中,可以例如基于样本数据来训练机器学习模型,对于该样本数据,已经从用户明确地获得了利用用户数据进行训练的许可。例如,样本数据可以包括接收的消息和针对接收的消息发送的响应。基于样本数据,机器学习模型可以预测对所接收消息的响应,然后可以将该响应作为建议响应来提供。

例如,通过减少用户编写对所接收的消息的响应的负担,通过提供对基于所接收的消息和用户的情境定制的响应的选择,来增强用户交互。例如,当用户同意后,可以基于例如,对话中的较早消息,不同对话中的消息等的用户的先前活动来定制建议响应。例如,这种活动可以被用于确定用户的适当的建议响应,例如,基于用户的交互风格的幽默的响应,正式的响应等。在另一示例中,当用户指定一个或多个偏好语言和/或区域时,消息应用103a/103b可以用该用户的偏好语言生成建议响应。在各种示例中,建议响应可以是文本响应,图像,多媒体等。

在一些实施方式中,机器学习可以在消息服务器101上,在客户端设备115上或者在消息服务器101和客户端设备115两者上实施。在一些实施方式中,可以在客户端设备115上实施简单的机器学习模型(例如,允许在客户端设备的内存,存储器和处理限制内的模型操作),并且可以在消息服务器101上实施复杂的机器学习模型。如果用户未同意使用机器学习技术,则不实施这些技术。在一些实施方式中,用户可以选择性地同意仅在客户端设备115上实施的机器学习。在这些实施方式中,机器学习可以在客户端设备115上实施,使得机器学习模型的更新或机器学习模型使用的用户信息在本地存储或使用,并且不被共享给诸如消息服务器101,服务器135或其他客户端设备115的其他设备。下面描述机器学习实施方式的一些其他示例。

对于同意接收例如基于机器学习技术的建议的用户,可以由消息应用103提供建议。例如,建议可以包括,内容(例如,电影,书籍等)的,日程表(例如,用户日历上的可用时间)的,事件/场所(例如,餐馆,音乐会等)等的建议。在一些实施方式中,如果参与对话的用户同意使用对话数据,则建议可以包括对传入消息的基于对话内容的建议响应。

例如,如果已同意基于对话内容的建议的两个用户的第一用户,发送消息“你想去吃点什么吗?意大利菜怎么样?”那么响应可以被建议给第二用户,例如“@助理,午餐,意大利菜,2位用餐。”在这个示例中,建议响应包括机器人(由符号@和机器人句柄助理来识别)。如果第二用户选择此响应,则助理机器人被添加到对话中,并且消息被发送到机器人。然后,可以在对话中显示来自机器人的响应,并且两个用户中的任何一个可以向机器人发送进一步的消息。在该示例中,不向助理机器人提供对对话内容的访问,并且由消息应用103生成建议响应。

在某些实施方式中,可以基于机器人是否已经存在于对话中或者是否能够被并入对话中来定制建议响应的内容。例如,如果确定旅行机器人可以并入到消息应用中,则对去法国的机票成本问题的建议响应可能是“让我们问旅行机器人!"

在不同的实施方式中,例如建议响应的建议可以包括以下中的一个或多个:文本(例如,“太棒了!”),表情符号(例如,笑脸,昏昏欲睡的脸等),图像(例如,来自用户的照片库的照片),基于模板生成的文本,该文本具有被插入模板的字段中的用户数据(例如,如果用户提供对用户数据的访问,“她的号码是<电话号码>”,其中根据用户数据填写字段“电话号码”),链接(例如,统一资源定位符),消息贴纸等。在一些实施方式中,建议响应可以被格式化和/或样式化,例如,使用颜色,字体,布局等。例如,包括了电影推荐的建议响应可以包括关于电影的描述性文本,来自电影的图像以及购买门票的链接。在不同的实施方式中,建议响应可以以不同类型的用户界面元素被呈现,例如文本框,信息卡等。

在不同的实施方式中,向用户给予他们是否接收建议(例如,建议响应),他们接收什么类型的建议,建议的频率等的控制。例如,用户可以彻底地拒绝接收建议,或者可以选择特定类型的建议,或仅在一天中的某些时间接收建议。在另一示例中,用户可以选择接收个性化建议。在该示例中,基于用户关于其数据的使用和机器学习技术的使用的偏好,机器学习可以用于提供建议。

图2是示出可以实施本文描述的一个或多个特征的一个示例系统的框图。在一些实施方式中,图2中示出的一个或多个模块是消息应用103a/103b的组件,和/或在系统的其他组件中实施。在一些实施方式中,图2中所示的一个或多个模块是服务器系统的组件,例如,一个或多个单独的服务器或单个服务器的组件。

第一用户202可以操作第一用户设备204。在各种实施方式中,第一用户设备204例如是图1的客户端设备115,或者是服务器设备。第二用户206可以操作第二用户设备208,第二用户设备208可以是客户端设备115或者可以是服务器设备。

服务器接口210可以在服务器设备或客户端设备上提供,并且可以接收由第一用户设备204和/或第二用户设备208发送的消息,可以将这样的消息转发到一个或多个接收方设备。例如,服务器接口210可以是消息服务器101和消息应用103a/103b的组件,并且可以被提供来控制消息功能。

在一些实施方式中可以使用贴纸建议模块212。贴纸建议模块212可以接收消息和消息贴纸信息(例如,贴纸元数据),与其他模块通信以获得附加信息,以及向服务器接口210发送建议信息,使得建议信息被诸如第一用户设备204和第二用户设备208的用户设备经由服务器接口210获得(例如,第一和第二用户设备检索建议信息和/或服务器接口210将建议信息发送到第一和第二用户设备)。例如,建议信息可以包括建议回复和/或建议消息贴纸,建议回复是对用户设备接收的消息贴纸的响应,建议消息贴纸用于回复用户设备接收的消息。

在一些实施方式中,贴纸数据模块214可以存储与标准化消息贴纸相关的贴纸数据(例如,元数据),该标准化消息贴纸已经被发布到许多设备并且可以由包括第一用户设备204和第二用户设备208的设备访问。贴纸数据模块214可以包括在环境100的一个或多个模块中。例如,贴纸数据可以包括用于可用消息贴纸集的描述符(例如,描述和关键字)。在一些示例中,消息贴纸可以各自与该消息贴纸的标识相关联,例如,贴纸标识(id),贴纸标识指示单独的消息贴纸的身份。一些实施方式可以将消息贴纸组织成贴纸集,并且各个贴纸集可以具有标识,例如贴纸集id。此外,一些实施方式可以提供消息贴纸(和/或贴纸集)的版本号,其中版本号可以与存储的参考版本号进行比较,该参考版本号指示已经发布的贴纸的最新版本。

在一些实施方式中,特定消息贴纸可以与贴纸id,一个或多个贴纸集id(指示包括特定消息贴纸的贴纸集)和版本号(指示特定消息贴纸的版本,例如,指示发布并提供给用户的时间或顺序)。在一些实施方式中,可以在消息贴纸的一个或多个标准列表上参考贴纸id和/或贴纸集id,该标准列表可以从各种提供者处获得,例如,贴纸id,其他参数和相关图像数据可通过因特网下载,各自的贴纸id参考特定图像数据(和/或其他数据),该特定图像数据(和/或其他数据)为了相关联的贴纸id被显示在使用贴纸id在设备上。

贴纸数据模块214可以为相关联的单独的贴纸和/或为贴纸集存储例如描述和关键字的描述符。例如,贴纸数据模块可以存储贴纸id以及那些贴纸id的相关联的描述。描述可以被认为用来提供存在于相关联的贴纸中(或与相关联的贴纸相关)的一个或多个语义概念。例如,描述可以是与相关联的贴纸有关的文本。例如,描述可以是,指示消息贴纸的视觉外观的文本(例如,一个或多个单词或短语),与消息贴纸相关联的动作,包括该消息贴纸的类别,情绪状态或内涵,命令,声明,评述或感叹,俗语或谚语,符号或与消息贴纸相关联的其他概念。在一些示例中,描述可以包括“烹饪”,“交通”,“起床啦”,“在路上”,“给我打电话”,“无聊”,“咖啡”,“再见”,“爱”,“凉柠檬水”,“呕”等。例如,在一些实施方式中,消息贴纸描述被输出为音频(例如,由录制的语音或语音合成器说出)以指示接收该消息贴纸。

一个或多个关键字也可以与消息贴纸相关联。与描述类似,关键字可以被认为是描述消息贴纸的视觉外观的一个或多个方面的语义概念,例如,消息贴纸的主题的类型或类别,与消息贴纸的主题相关的动作,心情,情绪等,等等。在一些实施方式中,例如,关键字被用于进行分组,归类,或相反地对消息贴纸进行组织。在一些示例中,搜索关键字以定位相关联的特定消息贴纸,该特定消息贴纸与特定搜索项或查询相关,或与如下所述的特定的生成的建议响应或概念相关。

在一些实施方式中,用户设备可以直接从贴纸数据模块214接收贴纸数据,如图2中所示的第二用户设备208和贴纸数据模块214之间的连接所示。

响应建议生成器216可以是在一些系统实施方式中提供的模块,以基于输入到响应建议生成器216的特定语义概念生成相关响应。例如,建议生成器216可以访问数据库218,并使用存储在数据库中的一个或多个模型和/或存储在数据库中的访问数据,来确定建议响应。例如,数据库218可以存储知识库或知识图,知识库或知识图可以包括不同语义概念的分类学,并提供语义概念之间的层级关系和连接。

数据库218可以包括指示对特定概念的适当响应的已存储的,已构造的图。数据库218还可以包括定义的语法,定义的语法可以提供规则,该定义的规则指示用于特定语义概念的特定响应。例如,输入到响应建议生成器216的文本关键字和描述可以用作指示概念的标签,并且这些标签可以由建议生成器216输入到数据库218的这些图和语法中,以确定对那些关键字和描述的相应的响应建议。生成的响应建议可以返回到贴纸建议模块212。

在一些实施方式中,例如通过贴纸建议模块212对生成的响应建议进行排序,并且经由服务器接口210将特定数量的排名靠前的响应建议发送到一个或多个用户设备204和/或208,以在用户设备上显示或相反地在用户设备上输出。在一些实施方式中,来自响应建议生成器216的所接收的建议响应被匹配到特定贴纸(例如,与贴纸的例如关键字和/或描述的描述符匹配),其中匹配的贴纸被认为是建议的贴纸并且可以例如,基于它们的相关联的建议响应的等级和/或基于匹配的贴纸与它们的相关联的建议响应的对应关系的强度来排名。特定数量的排名最高的消息贴纸建议可以经由服务器接口210发送到一个或多个用户设备204和/或208以在用户设备上显示或相反地在用户设备上输出。可以通过用户设备处的用户输入来选择这些响应建议和/或贴纸建议中的一个或多个,以将一个或多个消息发送到其他设备,其中一个或多个消息包括由被选择的建议所指示的内容。

图3是示出根据一些实施方式的用于向接收的消息贴纸提供一个或多个响应建议的示例方法300的流程图。在一些实施方式中,方法300例如在服务器系统,例如,如图1所示的消息服务器101上实施。在一些实施方式中,方法300中的一些或全部在诸如图1中所示的一个或多个客户端设备115的系统上和/或在服务器系统和一个或多个客户端系统两者上实施。在所描述的示例中,实施的系统包括一个或多个处理器或处理电路,以及一个或多个诸如数据库或其他可访问存储的存储设备。在一些实施方式中,一个或多个服务器和/或客户端的不同组件进行方法300的不同块或其他部分。

在框302中,检查是否已获得用户同意(例如,用户许可)以在方法300的实施中使用用户数据。例如,用户数据可以包括由用户例如,使用消息应用103发送或接收的消息,用户偏好,用户生物特征信息,用户特征(身份,姓名,年龄,性别,职业等),关于用户的社交网络和联系人的信息,社交和其他类型的动作和活动,用户创建或提交的内容,评级,和意见,用户的当前地点,历史用户数据,用户生成、接收和/或访问的图像,用户查看或共享的视频等。在一些实施方式中,本文描述的方法的一个或多个块可以使用这样的用户数据。

如果已经从方法300中可以使用用户数据的相关用户获得用户同意,则在块304,确定本文方法的块可以通过对如针对那些块所描述的用户数据的合理使用来实施,并且该方法继续到块308。

如果尚未获得用户同意,则在块306中确定将在不使用用户数据的情况下实施块,并且该方法继续到块308。在一些实施方式中,如果尚未获得用户同意,则将不使用用户数据来实施块,而是使用通用,合成和/或可公开访问的数据来实施块。

这里描述的例如与图3有关的一些实施方式,可以基于获得标准化消息贴纸来提供建议的消息响应,标准化消息贴纸例如是具有特定相关图像数据和贴纸id的消息贴纸,因为该消息贴纸来自特定官方来源。可以在各种情境下提供建议响应。例如,响应于例如通过消息应用103在服务器和/或从任何客户端设备115的特定用户(例如,用户125a)的客户端设备115a处接收消息贴纸,可以提供建议响应。例如,消息应用103a/103b可以是即时消息应用,社交网络应用,电子邮件应用,多媒体消息应用等。

如果已经从特定用户和发送和/或接收图像的一个或多个其他用户获得了同意,则无需用户输入或干预,就可以自动地生成建议响应并自动地提供给特定用户。例如,如果消息应用是即时消息应用,则消息贴纸可以作为用户(例如,客户端)设备的特定用户125a与用户设备的一个或多个其他用户125之间的即时消息通信的一部分被接收,例如,在具有两个参与者的消息会话(例如,聊天)中,在包括两个以上参与者的群组消息会话中,等等。

在各种实施方式中,一个或多个用户可以是机器人。在一些实施方式中,机器人可以是以软件和/或硬件实施的自动代理。在一些实施方式中,机器人可以表示摄像机(例如,安全摄像机,网络摄像机,监视摄像机等),器具(例如,智能冰箱,警报设备,工业器具等),成像设备(例如,显微镜,医学成像设备等),或与摄像机(例如,安全摄像机,网络摄像机,监视摄像机等),器具(例如,智能冰箱,警报设备,工业器具等),成像设备(例如,显微镜,医学成像设备等)相关联,并通过消息应用103发送一个或多个图像。在包括一个或多个用户为机器人的实施方式中,从机器人的所有者或操作者获得同意以使用机器人生成的消息。在一些实施方式中,可以将同意指定为机器人,摄像机,器具等的配置参数,并且在机器人与消息应用103交互时,将同意提供给消息应用103a/103b。

在一些实施方式中,可以专门向已经同意访问用户数据的那些用户提供建议响应。在一些实施方式中,可以自动地或基于用户输入来提供建议响应,例如,可以向用户提供用于请求建议的用户界面。

在块308中,接收到消息贴纸,例如,通过通信网络,该消息贴纸已经从第一设备的第一用户发送到第二设备的第二用户。在各种实施方式中,消息贴纸可以是图像,例如,静态图像(例如,照片,表情符号或其他图像),动态图片或动画图像(例如,包括动作的图像,包括动画和音频的贴纸,等),视频,音频消息的音频数据等。在一些实施方式中,所接收的消息贴纸被包括在消息中,该消息还包括有一个或多个其他类型的内容(例如,文本,表情符号,视频,音频等)。消息贴纸可以是标准化消息图像,例如,如上所描述的,已经从特定源(例如,网络服务,公司,或其他组织)发布并且具有特定贴纸id和/或贴纸集id的图像。

在一些实施方式中,所接收的消息贴纸包括指示消息贴纸的视觉显示外观的图像数据(例如,像素数据),以及包括与消息贴纸相关联的元数据,例如贴纸id,贴纸集id等。在一些实施方式中,所接收的消息贴纸包括关联的元数据中的一些或全部,该关联的元数据没有图像数据和/或一些元数据,例如,其中可以从存储设备获得图像数据和未接收的关联的元数据。在一些实施方式中,所接收的消息贴纸包括图像数据,该图像数据没有一些或所有关联的元数据,例如,其中可以从存储设备获得与图像数据相关联的元数据。

在一些示例中,消息贴纸由第一设备发送,第一设备是一个或多个客户端设备115(或其他设备),或者由发送消息的机器人发送,并且消息贴纸由第二设备经由网络140接收,第二设备是客户端设备115(或其他设备)。在一些示例中,在第一设备和第二设备之间的通信中发送消息贴纸。在另一示例中,通信是两个参与者的一对一(1:1)消息会话,并且消息贴纸由特定用户的客户端设备接收。在另一示例中,通信是群组消息会话,并且消息贴纸由群组消息会话中的参与者的两个或更多个客户端设备接收。

在一些实施方式中,消息贴纸是从存储器获得,例如,客户端设备115的本地存储器(例如,内存,存储驱动器等)和/或客户端设备可通过网络140访问的远程存储(例如,远程客户端设备,服务器设备或存储设备的存储驱动器)。例如,在一些实施方式中,第一设备将消息贴纸存储在存储设备上,并且第二设备从存储设备获得消息贴纸。

在涉及图2的系统200的示例中,消息贴纸可以由第一用户202使用第一用户设备204发送。在一些实施方式中,消息贴纸被包括在消息中,该消息可以包括例如除了消息贴纸之外的文本或其他数据。

在一些示例实施方式中,在块308中,由第一用户设备204发送的消息贴纸由服务器,例如,如图2所示的服务器接口210接收。然后,服务器接口210将所接收的消息贴纸发送到预期接收者(例如,发送到第二用户设备208),并且一个或多个服务器模块也可以如方法300的一个或多个块中那样处理所接收的消息贴纸的副本。在一些实施方式中,在块308中,消息贴纸由客户端设备,例如,第二用户设备208接收,并且客户端设备可以如方法300的一个或多个块中那样处理所接收的消息贴纸。一些实施方式可以使用服务器和客户端设备两者来处理方法300的一个或多个块。

在块310中,从接收到的贴纸消息确定贴纸id信息和贴纸版本信息。例如,可以确定识别特定消息贴纸的贴纸id,以及识别消息贴纸所属的消息贴纸集合的贴纸集id。贴纸版本信息可以包括如上所述的消息贴纸的版本号。在一些实施方式中,例如,参考图2,服务器接口210将消息贴纸的副本转发到贴纸建议模块212。在这样的实施方式的一些示例中,在检测到所接收的消息是消息贴纸或包括消息贴纸之后,贴纸建议模块212从消息贴纸中提取贴纸id,贴纸集id和版本信息。在一些实施方式中,这三个参数唯一地定义消息贴纸。

在一些实施方式中,贴纸id信息,版本信息和/或其他信息可以通过接收的第二设备从消息贴纸中的接收数据获得。

在块312中,确定消息贴纸的一个或多个描述符。例如,描述符可以包括与消息贴纸相关联的描述和一个或多个关键字。例如,描述符可以嵌入或包括在消息贴纸中,或者可以存储在单独的存储器中并基于贴纸参数访问,贴纸参数例如为消息贴纸的贴纸id,贴纸集id,版本id和/或其他贴纸参数。在一些实施方式中,例如,参考图2,消息贴纸的描述符存储在贴纸数据模块214中。例如,贴纸建议模块212可以使用消息贴纸的贴纸参数作为搜索标准来访问贴纸数据模块214,并且从贴纸数据模块214找到并检索与消息贴纸相关联的描述符。在一些实施方式中,消息贴纸的其他参数可用于唯一地标识贴纸数据模块214中的描述符,例如消息贴纸的位置区,位置区例如可以从消息贴纸和/或其他数据来源确定。

在块314中,基于消息贴纸的描述符确定或生成一个或多个建议响应。建议响应可以是文本响应,或者在一些实施方式中,可以是(或包括)其他形式的媒体内容(例如,音频,图像,视频等)。在一些实施方式中,基于语义概念生成建议响应,例如,通过使用概念和预定义响应之间存储的关联,通过使用基于概念和概念与响应的如在一个或多个图中定义的关系提供响应的模型,通过使用机器学习模型等。在一些实施方式中,类似于下面关于图4和图5所描述的,一个或多个建议响应被确定为消息贴纸。例如,可以基于语义概念到特定建议响应的映射来生成建议响应。例如,可以从存储的建议响应的集合或库中获得建议响应,例如,存储的建议响应是合成响应,或者如果已经获得用户同意,则存储的建议响应是在先前设备通信中(例如,使用消息应用)从实际用户获得的响应。

所接收的消息贴纸的描述符(例如,描述和关键字)可以用作语义概念,和/或概念可以从描述符获得,以确定这样的响应。例如,描述中的词可以提供作为单独的概念提供,并且每个关键字可以被认为是单独的概念,用于使用定义的关系来确定建议响应。在一些示例中,可以在与预定义响应相关联的预定义消息的列表中搜索匹配的字符串,该字符串包括描述和/或关键字的词,以及选择与该字符串最匹配的消息(例如,具有最大数目的匹配字母,在匹配过程中具有最高的相似性得分等),以确定相关联的建议响应。

在块314的一些实施方式中,例如,参考图2,贴纸建议模块212可以将描述符发送到响应建议生成器216。建议生成器216可以咨询数据库218,以基于描述符确定建议响应(例如,文本响应),并将确定的响应发送到贴纸建议模块212,该数据库218包括知识图,语法和/或其他定义的关系。在一些示例中,类似于下面针对图4的块416所描述的,建议生成器216可以使用概念和建议响应之间的预定义关联,一个或多个映射模型,和/或一个或多个机器学习模型,来确定来自概念的建议响应。例如,建议生成器216可以基于用作概念的描述符,使用一个或多个映射模型和/或机器学习模型来确定响应。

在一些示例中,消息贴纸可以描绘请求或指示接收用户应该呼叫正在发送消息贴纸的人的图像。消息贴纸可能具有“给我打电话”的相关描述。该描述可以作为标签输入到建议生成器216,并且建议生成器216可以基于所访问的关系,知识图,数据库,模型和其他数据来确定一个或多个建议响应。例如,建议生成器216可以将包括“我愿意”和“稍后”的响应输出到贴纸建议模块,该响应是在与输入标签相关联或基于输入标签的数据库中定义的响应,和/或类似于下面描述的,从映射模型或机器学习模型获得的响应。

在另外的示例中,笑脸图像的消息贴纸可以具有“快乐”的描述以及“笑”和“脸”两个关键词。这些描述符(标签)可以作为单独的语义概念输入到建议生成器216,并且建议生成器216可以基于这些单独的语义概念和/或基于这些语义概念中的两个或更多个的组合,来确定一个或多个建议响应。例如,建议生成器216可以将包括“谢谢”,“与你相同”和“漂亮微笑”的响应输出到贴纸建议模块,该响应是基于输入概念的组合与数据库相关联或在数据库中定义的响应,和/或类似于如下所述的由映射模型或机器学习模型输出的响应。

在一些实施方式中,所生成的建议响应中的一个或多个是或包括一个或多个消息贴纸。例如,建议的消息贴纸响应可以通过贴纸建议模块212或第二用户设备,使用与可用消息贴纸相关联的描述符以及找到消息贴纸与如上所述生成的建议响应的对应关系来确定,例如,建议的消息贴纸响应可以如下面参考图4(例如,消息标签响应存储在服务器上)和图5(例如,消息标签响应存储在第二用户设备上)所描述的类似地被确定。在一些实施方式中,将从消息确定的语义概念直接与存储的语义概念进行比较,该存储的语义概念与一个或多个特定消息贴纸响应相关联,使得如果消息语义概念对应(例如,匹配或类似)于存储的语义概念,可以为块314选择相关联的消息贴纸响应,例如,类似于下面针对图4所描述的。例如,在一些实施方式中,存储的语义概念可以包括可用消息贴纸的描述符。

在一些实施方式中,所确定的建议响应可以包括响应于由第二用户设备接收的一个或多个先前消息的建议响应。例如,一个或多个先前消息(例如,包括消息贴纸)已经在相同消息对话中被接收,在该相同消息对话中接收到块308的消息,例如,在第一用户设备和第二用户设备之间已经交换消息的对话。响应于第二用户设备接收那些先前消息,可能先前已为第二用户设备生成了一个或多个建议响应,并且一个或多个建议响应可能已被存储在可访问存储器中。一个或多个这样的先前生成的建议响应可以被检索,并被包括在为当前接收的消息所确定的建议响应中。在一些实施方式中,在块314中针对一个或多个先前接收的消息贴纸生成一个或多个建议响应,并将该一个或多个建议响应包括在针对当前接收的消息所确定的建议响应集合中。类似地,可能已经存储了先前接收的消息贴纸的描述符(例如,在相同对话中接收的),并且这些语义概念可以用于在块416中确定消息建议。

在块316中,将建议响应中的至少一个提供给作为消息贴纸的接收者的第二用户。在一些实施方式中,这些提供的建议响应被发送到第二用户设备。例如,参考图2,建议响应可以从贴纸建议模块212经由服务器接口210发送到第二用户设备208。在一些示例中,指令与建议响应一起发送到第二用户设备208,使得第二用户设备显示建议响应。一些实施方式或情况可能具有消息贴纸和建议响应的多个接收者。

所提供的建议响应可以由第二用户设备显示和/或另外由第二用户设备输出(例如,音频输出)。在一些实施方式中,在块314中确定的建议响应被排序,并且向第二用户提供特定数量的排名靠前的建议响应。例如,在一些实施方式中,基于描述符与用于确定建议响应的数据实体(例如,预定义消息)的匹配的接近程度对建议响应进行排序。

在块318中,接收对一个或多个所显示的建议响应的选择。例如,选择可以是基于用户在用户设备处提供的用户输入,例如,通过诸如接收用户触摸的触摸屏或触控板的输入设备,接收语音命令的麦克风,按钮,鼠标或接收用户操纵的操纵杆等。在一些实施方式中,例如,参考图2,第二用户206在第二用户设备208处提供用户输入。在一些实施方式中,例如,基于用户偏好,用户情境(例如,地理位置,时间或日期等,如果已经获得用户同意),或其他预定条件,自动选择(无需用户输入)一个或多个建议响应。

在块320中,将所选择的建议响应作为一个或多个消息输出到一个或多个接收者设备。例如,消息可以通过网络140经由消息服务器101发送到一个或多个其他客户端设备115和/或直接发送到另一个客户端设备115。在一些实施方式中,将消息发送到发送了在块308中获得的图像的用户设备。例如,参考图2,第二用户设备208将所选择的响应发送到第一用户设备204。在一些实施方式中,消息被发送到参与聊天对话或会话的多个用户设备,该多个用户设备包括第一用户设备204。然后,该方法可以在例如如果已经获得了另一图像的一些实施方式中返回到块308。

图4是示出根据一些实施方式的响应于已接收的消息来提供一个或多个消息贴纸建议的示例方法400的流程图。在一些实施方式中,方法400例如在服务器系统,例如,如图1所示的消息服务器101上实施。在一些实施方式中,方法400中的一些或全部在诸如图1中所示的一个或多个客户端设备115的系统上和/或在服务器系统和一个或多个客户端系统两者上实施。在所描述的示例中,实施系统包括一个或多个处理器或处理电路,以及一个或多个诸如数据库或其他可访问存储的存储设备。在一些实施方式中,一个或多个服务器和/或客户端的不同组件可以进行方法400的不同块或其他部分。

在框402中,检查是否已获得在方法400的实施中使用用户数据的用户同意(例如,用户许可)。例如,用户数据可以包括由用户例如,使用消息应用103发送或接收的消息,用户偏好,用户生物特征信息,用户特征(身份,姓名,年龄,性别,职业等),关于用户的社交网络和联系人的信息,社交和其他类型的动作和活动,用户创建或提交的内容,评级,和意见,用户的当前地点,历史用户数据,用户生成、接收和/或访问的图像,用户查看或共享的视频等。在一些实施方式中,本文描述的方法的一个或多个块可以使用这样的用户数据。

如果已经从在方法400中可以使用用户数据的相关用户获得用户同意,则在块404,确定本文方法的块可以通过对如针对那些块所描述的用户数据的合理使用来实施,并且该方法继续到块408。

如果尚未获得用户同意,则在块406中确定将在不使用用户数据的情况下实施块,并且该方法继续到块408。在一些实施方式中,如果尚未获得用户同意,则不使用用户数据来实施块,而使用通用,合成和/或可公开访问的数据来实施块。

这里描述的例如与图4有关的一些实施方式,可以提供建议的标准化消息贴纸,以用作对接收消息的响应。可以在各种情境下提供建议的消息贴纸。例如,响应于例如通过消息应用103在服务器和/或从任何客户端设备115的特定用户(例如,用户125a)的客户端设备115a处接收消息,可以提供建议的消息贴纸。例如,消息应用103a/103b可以是即时消息应用,社交网络应用,电子邮件应用,多媒体消息应用等。

在发送和/或接收图像的一个或多个其他用户和特定用户同意的情况下,可以生成建议的消息贴纸并将其自动提供给特定用户。例如,如果消息应用是即时消息应用,则消息可以作为特定用户125a与用户设备的一个或多个其他用户125之间的即时消息通信的一部分被接收,例如,在具有两个参与者的消息会话(例如,聊天)中,在包括两个以上参与者的群组消息会话中,等等。在各种实施方式中,类似于如图3所描述的,一个或多个用户可以是机器人。

在一些实施方式中,可以专门向已经提供了访问用户数据的同意的那些用户提供建议的消息贴纸。在一些实施方式中,可以自动地或基于用户输入来提供建议的消息贴纸,例如,可以向用户提供用于请求建议的用户界面。

在块408,接收消息,例如,通过通信网络,该消息已经从第一用户发送到第二用户。在各种实现中,消息可以是文本消息,图像(例如,静态图像,动态图片或动画图像等),视频,音频消息的音频数据等。在一些实施方式中,例如,类似于如图3所描述的,消息可以包括消息贴纸。在一些实施方式中,内容的这些类型中的两种或更多种的组合可以包括在消息中。

在一些示例中,消息可能已经由第一设备发送,或者由发送消息的机器人发送,第一设备是一个或多个客户端设备115(或其他设备),而且消息可以由第二设备经由网络140接收,第二设备是客户端设备115(或其他设备)。在进一步的示例中,在有两个参与者的一对一(1:1)消息会话中,消息由特定用户的客户端设备接收。在进一步的示例中,在群组消息会话中,消息由群组消息会话中的参与者的两个或更多个客户端设备接收。在一些实施方式中,消息是从存储器获得,例如,客户端设备115的本地存储器(例如,内存,存储驱动器等)和/或客户端设备可通过网络140访问的远程存储器(例如,远程客户端设备,服务器设备或存储设备的存储驱动器)。例如,在一些实施方式中,第一设备将消息存储在存储设备上,并且第二设备从存储设备获得消息。在一些情况或实施方式中,消息被包括在通信中,该通信还包括例如从第一用户设备提供给第二用户设备的一个或多个其他消息或数据。

在涉及图2的系统200的示例中,接收的消息由第一用户202使用第一用户设备204发送。在一些实施方式中,在块408中,由第一用户设备204发送的消息由例如图2中所示的第二用户设备208的客户端设备接收,和/或由例如图2所示的服务器接口210的服务器设备接收。例如,类似于上面对图3所描述的,服务器接口210可以从第一用户设备接收消息并将消息转发给第二用户设备208,以及将该消息的副本提供给贴纸建议模块212。

在块410,来自第二用户的用户输入请求显示第二用户能够选择的一个或多个贴纸建议。例如,在一些实施方式中,块410在第二用户设备208上实施,其中用户输入被提供给第二用户设备208以命令显示用户界面(例如,窗口或其他显示区域),该用户界面显示消息贴纸列表。如下所述,响应于所接收的消息(或者新指定的接收用户),用户能够从列表中选择一个或多个消息贴纸进行发送。在一些实施方式中,响应于例如在块408中接收消息和/或基于存储的用户偏好,而不是响应于在块410中接收的用户输入,系统命令自动显示一个或多个贴纸建议中的一些或全部。

在块412,响应于块410的用户输入,提供对贴纸建议的请求,其中该请求包括识别或指示当前存储在第二用户设备208上的消息贴纸数据的贴纸信息(例如,元数据)。例如,参考图2,可以将请求从第二用户设备208发送到服务器接口210。在一些实施方式中,例如,如果所接收的消息之前没有提供给贴纸建议模块212,则该请求还可以包括所接收的消息。

在一些实施方式中,贴纸信息包括所有消息贴纸或指定消息贴纸集的贴纸id,贴纸集id和版本信息的列表,所有消息贴纸或指定消息贴纸集安装在第二用户设备208上并可用于在第二用户设备208上显示和传输。在一些实施方式中,响应于安装附加消息贴纸等的第二用户设备,在其他时间或在非响应于块410的用户输入的其他条件下,例如,在第二用户设备启动时,提供对贴纸建议的请求。

在块414,确定存储在第二用户设备上的消息贴纸的一个或多个例如描述和/或关键字的描述符。例如,描述符可以嵌入或包括在消息贴纸中,或者可以存储在单独的存储中并基于贴纸参数被访问,贴纸参数包括消息贴纸的贴纸id,贴纸集id,版本id和/或其他贴纸参数。在一些实施方式中,例如,参考图2,消息贴纸的描述符存储在贴纸数据模块214中。例如,贴纸建议模块212可以使用消息贴纸的贴纸参数作为搜索标准来访问贴纸数据模块214,并且找到并检索与第二用户设备208的消息贴纸相关联的描述符。

在一些实施方式中,类似于对图3所描述的,消息贴纸的其他参数可用于唯一地标识贴纸数据模块214中的描述符。在一些实施方式中,在第二用户设备启动时或在其他时间或响应于预定义条件(例如,在块408中接收消息,在块410中接收用户输入,或其他条件),进行对第二用户设备上的消息贴纸的描述符的确定。

在块416中,基于所接收的消息确定或生成一个或多个建议响应。在一些实施方式中,基于被确定与所接收的消息相关联的语义概念来生成建议响应,被确定与所接收的消息相关联的语义概念例如是,被确定包括在文本数据,图像数据或消息的其他数据中的语义概念。例如,可以基于语义概念到特定建议响应的映射来生成建议响应。例如,可以从存储的建议响应的集合或库中获得建议响应,例如,存储的建议响应是合成响应,或者如果已经获得用户同意,则存储的建议响应是在先前设备通信中(例如,使用消息应用)从实际用户获得的响应。

消息可用于提供一个或多个概念,该一个或多个概念用于确定建议响应。例如,可以解析或提取消息中的词,并将词作为概念提供,用于使用定义的关系确定响应。在一些实施方式中,在消息中包括的图像或视频的图像内容中检测到的标签作为概念被提供(例如,由用户添加到图像以描述图像内容特征的标签,和/或使用一个或多个图像检测或图像识别技术自动检测以确定图像内容的特征的标签)。在一些实施方式中,还可以为包括在与第二用户设备的通信中的一个或多个附加消息确定语义概念,其中这些语义概念也可以用于确定建议响应。

可以基于所确定的语义概念生成建响应。例如,类似于上面对图3所描述的,可以使用概念和预定义响应之间的存储的关联,基于概念提供响应的模型,以及在一个或多个图中定义的它们与响应的关系等来生成建议响应。在一个例子中,收到的“生日快乐!”的消息与“谢谢”的建议响应相关联。在块416的一些实施方式中,例如,参考图2,贴纸建议模块212可以将所接收的消息和/或描述符发送到响应建议生成器216,以确定语义概念和建议响应。在一些示例中,建议生成器216可以咨询数据库218,以基于该消息确定响应(例如,文本响应),数据库218包括映射模型,知识图,语法和/或其他定义的关系。

例如,映射模型可用于将概念映射到消息建议。在一些示例中,映射模型可以包括机器学习模型。例如,映射模型可以包括基于图形的机器学习模型,该机器学习模型可以包括基于训练数据被训练的模型。在接收要生成消息建议的概念之前,可以在训练阶段基于训练数据生成基于图形的模型。在接收到概念后,例如,在块416中,在模型已经训练之后的推理阶段,可以使用模型生成消息建议。在一些示例中,训练数据可以是消息数据,该消息数据包括概念和对那些概念的响应。例如,消息数据可以是合成数据,例如,基于没有人类用户是参与者的模拟对话。在另外的示例中,训练数据可以包括同意为训练目的提供数据的用户之间交换的图像和消息。训练数据在使用之前被处理,以移除用户标识符和其他信息。

在进一步的示例中,映射模型可以包括响应于特定概念提供消息建议的一个或多个语法(例如,每个语法是管理消息建议的组成的一组特定规则)。语法可以使用建议生成器216可访问的存储的分层的概念分类。在一些示例中,可以预定义数个语法并将语法存储在可访问存储中,以允许建议生成器216基于与存储在分类中的特定相关概念匹配的消息概念,来确定消息建议。

如果特定概念与语法指定的概念相关,例如,在层次结构中比指定概念高或低,则某些语法可用于该特定概念。在示例中,存储的语法可以指定,如果概念c是所引用的分类的层次中的指定概念“dog”的子概念,则该语法提供的消息建议可以用于概念c。例如,该语法可以指定输出“可爱[c]”的建议响应,其中[c]是概念c。

在一些实施方式中,建议生成器216使用其他类型的机器学习模型,以基于所接收的消息和/或基于描述符来确定响应。例如,在接收要生成消息建议的概念之前,可以在训练阶段基于训练数据来训练机器学习模型。在接收到概念后,例如,在块416中,在机器学习模型已经训练之后的推理阶段,可以使用机器学习模型生成消息建议。在一些示例中,类似于如上所述的,如果已经获得了使用数据的用户同意,则训练数据可以是消息数据,该消息数据包括概念和对那些概念的响应。下面参考图12描述机器学习模型的进一步地示例。

在一些实施方式中,在块416的所确定的建议响应包括响应于由第二用户设备接收的一个或多个先前消息的建议响应。例如,一个或多个先前消息(例如,包括消息贴纸)可能已经在相同消息对话中被接收,在该相同消息对话中接收到块408的消息,例如,已经在第一用户设备和第二用户设备之间交换消息的对话。响应于第二用户设备接收那些先前消息,可能先前已为第二用户设备生成了一个或多个建议响应,并且一个或多个建议响应已被存储在可访问存储中。一个或多个这样的先前生成的建议响应可以被检索,并被包括在为当前接收的消息所确定的建议响应中。

在一些实施方式中,在块416中针对一个或多个先前接收的消息生成一个或多个建议响应,并将该一个或多个建议响应包括在针对当前接收的消息所确定的建议响应的集合中。类似地,在先前接收的消息中,语义概念可能先前已被检测到(例如,在同一对话中被接收)并被存储,并且这些语义概念可以用于在块416中确定消息建议。

在一些实施方式中,基于消息建议与消息的语义概念的对应关系的强度,消息建议相对于彼此进行排序。在一些示例中,对应关系的强度可以基于消息概念与用于确定相关联的建议响应的存储的概念之间的匹配的接近度,和/或在指示对先前消息的先前响应的训练数据中消息建议作为响应的发生频率。

在块418中,基于贴纸信息(例如,描述符)与在块416中确定的建议响应的比较和匹配,来确定和排序一个或多个建议的消息贴纸。在参考图2的一些实施方式中,响应建议生成器216和/或贴纸建议模块212可以确定和排序建议的消息贴纸。

在一些实施方式中,将第二用户设备上的消息贴纸的描述符与生成的建议响应进行比较,并且如果任何描述符对应于建议响应,则选择与匹配的描述或关键字对应的消息贴纸作为建议的消息贴纸。在一些实施方式中,对于对应关系检查匹配,例如,相同序列中的词的字母之间的匹配,和/或相同序列中的多个词的匹配。在一些实施方式中,对于对应关系使用或允许精确和不精确匹配,以及可以检查描述符和建议响应之间的相似性(例如,可以忽略由词的过去时和复数形式引起的差异等)。在一些示例中,可以针对建议响应确定描述符的相似性得分(例如,针对每个建议响应的每个描述符),相似性得分指示描述符与建议响应之间的相似性的程度。例如,相似性得分可以基于匹配的特定顺序的字母的数目或百分比。

在一些实施方式中,系统检查作为对应关系的语义相似性,例如,使用可访问的词典,同义词词典,知识图和/或其他参考信息,来确定描述符的含义和建议响应是否相同。在一些实施方式中,基于针对消息贴纸的每个描述符所确定的单独的相似性得分,可以确定该消息贴纸和建议响应的贴纸相似性得分。例如,贴纸相似性得分可以是为描述符所确定的单独的相似性得分的总和。

在一些实施方式中,例如基于相似性得分,为建议响应选择与该建议响应具有最高相似性的消息贴纸。在一些示例中,为响应选择对于建议响应具有最高相似性得分的消息贴纸。在进一步的示例中,可以基于相似性的程度来选择消息贴纸,其中基于例如与建议响应中的词对应的消息贴纸的描述符中的词(例如,如本文所述的匹配或相似的词)越多,和/或在描述符与建议响应之间的语义相似性的确定中的最高分,可以确定更高的相似性。在一些实施方式中,多个消息贴纸被确定为对应于特定消息建议,例如,与消息建议具有最高相似性的特定数目的消息贴纸。

在一些实施方式中,将在所接收的消息(消息概念)中确定的语义概念与存储的语义概念进行比较,该存储的语义概念已经与特定的建议的消息贴纸响应直接相关联。这些建议的贴纸已经与存储的概念相关联地存储,作为对存储的概念的建议响应。例如,类似于本文所述的,可以检查消息概念与存储的概念的对应关系(例如,检查匹配,语义相似性,部分匹配等),以及如果消息概念匹配或对应于存储的概念,则为块418选择与所存储的概念相关联的建议贴纸响应。例如,在一些实施方式中,存储的语义概念可以包括可用消息贴纸的描述符。

所确定的建议消息贴纸可以相对于彼此排序。例如,排名中的消息贴纸的放置或排名可以基于与该消息贴纸相关联的消息建议相对于其他消息建议的排名。在进一步的示例中,建议的消息贴纸的排名是基于建议的消息贴纸与其相关联的建议响应之间的对应关系强度。例如,排名中的消息贴纸的放置或排名可以基于相关联的建议响应与该消息贴纸的描述符之间的匹配(对应关系)的数目。

在一些示例中,匹配的数目可以是描述符中的词或短语与建议响应的词相匹配的数目。在一些示例中,如果建议响应的词与第一消息贴纸的关键字之间有5个匹配,则第一消息贴纸具有比第二消息贴纸更强(例如,更高)的排名,第二消息贴纸有3个与建议响应的词相匹配的关键字。

在一些实施方式中,置信度分数被用于确定建议响应和消息贴纸之间的对应关系(例如,确定语义含义的对应关系),并且这些分数被用于,基于消息贴纸与建议响应之间的对应关系的置信度,对消息贴纸进行排名。在一些实施方式中,将特定数目的排名靠前的消息贴纸确定为建议的消息贴纸。例如,在参考图2的一些实施方式中,响应建议生成器216可以将该特定数目的排名靠前的消息贴纸发送到贴纸建议模块212。

在块420中,向第二用户提供至少一个建议的消息贴纸。在一些实施方式中,建议的消息贴纸被发送到第二用户设备。在一些示例中,发送特定数目的排名靠前的建议的消息贴纸。例如,参考图2,建议的消息贴纸可以从贴纸建议模块212经由服务器接口210发送到第二用户设备208。在一些示例中,指令与消息贴纸一起发送到第二用户设备208,使得第二用户设备显示消息贴纸。在一些实施方式或情况下,可能有多个接收消息和建议的消息贴纸的接收方设备。所提供的建议的消息贴纸可以由第二用户设备例如在用户界面中显示,如第二用户在块410中所请求的。例如,排名靠前的消息贴纸可以以基于它的排名的顺序或配置来显示。

在块422中,接收对所显示的建议的消息贴纸的一个或多个的选择。例如,选择可以是基于用户在用户设备处提供的用户输入,例如,通过诸如接收用户触摸的触摸屏或触控板的输入设备,接收语音命令的麦克风,按钮,鼠标或接收用户操纵的操纵杆等。在一些实施方式中,参考图2,第二用户206在第二用户设备208处提供用户输入。在一些实施方式中,例如,基于用户偏好,用户情境(例如,地理位置,时间或日期等,如果已经获得用户同意),或其他预定条件,自动选择(无需用户输入)一个或多个建议的消息贴纸。

在块424中,将所选择的建议的消息贴纸作为一个或多个消息输出到一个或多个接收者设备。例如,包括所选消息贴纸的消息可以通过网络140经由消息服务器101发送到一个或多个其他客户端设备115和/或直接发送到另一个客户端设备115。在一些实施方式中,将消息发送到发送过块408中获得的图像的用户设备。例如,参考图2,第二用户设备208将所选择的消息贴纸发送到第一用户设备204。然后,该方法可以在例如如果已经获得了另一图像的一些实施方式中返回到块408。

图5是示出根据一些实施方式的响应于已接收的消息来提供一个或多个消息贴纸建议的另一示例方法500的流程图。在一些实施方式中,方法500例如在服务器系统,例如,如图1所示的消息服务器101上实施。在一些实施方式中,方法500中的一些或全部在诸如图1中所示的一个或多个客户端设备115的系统上和/或在服务器系统和一个或多个客户端系统两者上实施。在所描述的示例中,实施系统包括一个或多个处理器或处理电路,以及一个或多个诸如数据库或其他可访问存储的存储设备。在一些实施方式中,一个或多个服务器和/或客户端的不同组件可以进行方法500的不同块或其他部分。

在框502中,检查在方法500的实施中是否已获得使用用户数据的用户同意(例如,用户许可)。例如,用户数据可以包括由用户例如,使用消息应用103发送或接收的消息,用户偏好,用户生物特征信息,用户特征(身份,姓名,年龄,性别,职业等),关于用户的社交网络和联系人的信息,社交和其他类型的动作和活动,用户创建或提交的内容,评级,和意见,用户的当前地点,历史用户数据,用户生成、接收和/或访问的图像,用户查看或共享的视频等。在一些实施方式中,本文描述的方法的一个或多个块可以使用这样的用户数据。

如果已经从方法500中可以使用用户数据的相关用户获得用户同意,则在块504,确定本文方法的块可以通过对如针对那些块所描述的用户数据的合理使用来实施,并且该方法继续到块508。

如果尚未获得用户同意,则在块506中确定将在不使用用户数据的情况下实施块,并且该方法继续到块508。在一些实施方式中,如果尚未获得用户同意,则不使用用户数据来实施块,而使用通用或可公开访问的数据来实施块。

这里描述的例如与图5有关的一些实施方式,可以提供建议的标准化消息贴纸,以用作对接收消息的响应。可以在各种情境下提供建议的消息贴纸。例如,响应于例如通过消息应用103在服务器和/或从任何客户端设备115的特定用户(例如,用户125a)的客户端设备115a处接收消息,可以提供建议的消息贴纸。例如,消息应用103a/103b可以是即时消息应用,社交网络应用,电子邮件应用,多媒体消息应用等。

如果已经从特定用户和发送和/或接收图像的一个或多个其他用户获得了同意,可以生成建议的消息贴纸并将其自动提供给特定用户。例如,如果消息应用是即时消息应用,则消息可以作为特定用户125a与用户设备的一个或多个其他用户125之间的即时消息通信的一部分被接收,例如,在具有两个参与者的消息会话(例如,聊天)中,在包括两个以上参与者的群组消息会话中,等等。在各种实施方式中,类似于如图3所描述的,一个或多个用户可以是机器人。

在一些实施方式中,可以专门向已经同意访问用户数据的那些用户提供建议的消息贴纸。在一些实施方式中,可以自动地或基于用户输入来提供建议的消息贴纸,例如,可以向用户提供用于请求建议的用户界面。

在块508,接收消息,该消息已经从第一用户,例如,通过通信网络发送到第二用户。在各种实施方式中,消息可以是文本消息,图像(例如,静态图像,动态图片或动画图像等),视频,音频消息的音频数据等。在一些实施方式中,例如,类似于如图3所描述的,消息可以包括消息贴纸。在一些实施方式中,内容的这些类型中的两种或更多种的组合被包括在消息中。

在一些示例中,消息可能已经由第一设备发送,或者由发送消息的机器人发送,第一设备是一个或多个客户端设备115(或其他设备),而且消息可以由第二设备经由网络140接收,第二设备是客户端设备115(或其他设备)。在进一步的示例中,在具有两个参与者的一对一(1:1)消息会话中,消息由特定用户的客户端设备接收。

在进一步的示例中,在群组消息会话中,消息由群组消息会话中的参与者的两个或更多个客户端设备接收。在一些实施方式中,消息是从存储获得,例如,客户端设备115的本地存储器(例如,内存,存储驱动器等)和/或客户端设备可通过网络140访问的远程存储器(例如,远程客户端设备,服务器设备或存储设备的存储驱动器)。例如,在一些实施方式中,第一设备将消息存储在存储设备上,并且第二设备从存储设备获得消息。

在涉及图2的系统200的示例中,接收的消息由第一用户202使用第一用户设备204发送。在一些实施方式中,在块408中,由第一用户设备204发送的消息由例如图2中所示的第二用户设备208的客户端设备接收,和/或由例如图2所示的服务器接口210的服务器设备接收。例如,类似于上面对图3所描述的,服务器接口210可以从第一用户设备接收消息并将消息转发给第二用户设备208,以及将该消息的副本提供给贴纸建议模块212。

在块510中,针对可用消息贴纸确定描述符(例如,描述和/或关键字)的列表。例如,在一些实施方式中,列表可以包括可以由第一用户设备204和第二用户设备208使用的所有可用消息贴纸(或其子集)的描述和关键字。在一些实施方式中,用于提供该信息的消息贴纸是具有最新版本号的消息贴纸。例如,描述符可以存储在存储器中,例如,如上所述的贴纸数据模块214中。在一些实施方式中,服务器(例如,服务器接口210或贴纸建议模块212)可以访问贴纸数据模块214以获得描述符列表。在一些实施方式中,描述符(例如,描述符可以包括从描述中确定的词)被分组为单个描述符列表。例如,如果尚未对缓存的消息贴纸更改版本号,一些实施方式可以将描述符列表缓存在执行设备(例如,在一些实施方式中的服务器)的内存中。

在块512中,基于所接收的消息确定或生成一个或多个建议响应。在一些实施方式中,基于在所接收的消息中检测到的语义概念,例如,类似于如上所述的,语义概念到特定的建议响应的映射,来生成建议响应。建议生成器216可以咨询数据库218,基于消息,例如,类似于对图4的块416所描述的,使用存储的关联,映射模型和/或机器学习模型,来确定建议响应(例如,文本响应)。在一些示例中,可以从存储的建议响应的集合或库中获得建议响应,例如,存储的建议响应是合成响应,或者如果已经获得用户同意,则存储的建议响应是在先前设备通信中(例如,使用消息应用)从实际用户获得的响应。

在一些实施方式中,一个或多个建议响应也可以是基于在块510中确定的可用消息贴纸的描述符列表。例如,可以以描述符列表中存在的一个或多个描述符(例如,关键字或描述)的形式生成一个或多个建议响应。在一些实施方式中,例如,参考图2,贴纸建议模块212可以将描述符列表发送到响应建议生成器216。列表中的贴纸描述符可以用作或用于提供一个或多个概念,该一个或多个概念被匹配到如上所述确定的建议响应中的概念。例如,如果建议响应被确定为“可爱的狗!”,建议模块212或建议生成器216可以检查描述符列表以找到与该建议响应中的词匹配或部分匹配的关键字。例如,关键字“狗”,关键字“可爱的”和描述“可爱的狗”可以在列表中找到(作为单独的描述符),这些匹配该建议响应。然后可以以这些匹配的描述符的形式生成另外的建议响应,例如,建议响应可以是“狗”,并且另一个建议响应可以是“可爱的”。在一些实施方式中,“可爱的狗!”的建议响应可以被修改为“可爱的狗”,它与描述符列表中的描述相匹配。

在一些实施方式中,在接收到的消息中检测到的语义概念可以直接与贴纸描述符列表进行比较,并且与检测到的概念匹配的描述符(例如,如本文所述的,部分地或精确地匹配,和/或语义地匹配)作为建议响应被生成。

在块514中,向第二用户提供至少一个建议响应。在一些实施方式中,提供的建议响应从服务器设备发送到第二用户设备。例如,参考图2,建议响应可以从贴纸建议模块212经由服务器接口210发送到第二用户设备208。在一些实施方式或情况下,可能有多个接收建议响应的接收方设备。一些实施方式可以替代地或附加地向第二用户设备发送在接收的消息中确定的语义概念,例如,如下所述的,以允许第二用户设备将这样的语义概念与存储的关联进行比较。

在一些实施方式中,建议响应由第二设备显示为响应选项(例如,文本响应),响应选项可以由第二用户设备处的用户输入来选择,以使第二用户设备发送与所选择的响应选项相对应的消息。例如,除了建议的消息贴纸响应被如下所述地确定和显示之外,还可以显示和选择这样的建议响应。

在块516,来自第二用户的用户输入请求提供第二用户能够选择的一个或多个贴纸建议。例如,在一些实施方式中,块516由第二用户设备208实施,其中用户输入被提供给第二用户设备208以命令显示用户界面(例如,窗口或其他显示区域),该用户界面显示消息贴纸列表。

在块518中,响应于块516的用户输入,为第二用户设备上可用的消息贴纸(例如,“设备描述符”)确定描述符(例如,关键字和描述)。例如,第二用户设备可以扫描存储在第二用户设备上的消息贴纸,并为这些消息贴纸确定描述和关键字。在一些实施方式中,类似于如上所述的,第二用户设备可以从诸如贴纸数据模块214的数据源检索描述符,例如,通过直接访问贴纸数据模块214,或通过服务器接口210和/或贴纸建议模块212。在一些实施方式中,块518在其他时间或在其他条件下进行,例如,在第二用户设备启动时,响应于第二用户设备安装附加消息贴纸等,而不是响应于块516的用户输入。

在块520中,将第二用户设备上的消息贴纸的设备描述符与在块512中例如由第二用户设备确定的建议响应进行比较,并且一个或多个设备描述符与一个或多个建议响应相匹配。例如,如果建议响应是从如上所述的可用消息贴纸的描述符列表获得的建议描述符的形式,则可以将这些接收的描述符与存储在第二用户设备上的消息贴纸的设备描述符进行比较。例如,消息贴纸的描述符可以被认为是与该消息贴纸相关联的语义概念。

在一些实施方式中,匹配是对应关系,对应关系该包括近似地或不精确地匹配。例如,如果存在相匹配的字母的阈值百分比,如果在匹配过程中存在超过阈值的相似性得分或置信度得分,则可以忽略词的过去时和复数形式等。在一些实施方式中,对应关系是被检查过的语义相似性,例如,使用可访问的词典,同义词词典,知识图和/或其他参考信息,来确定描述符的含义和建议响应是否相同,类似于如本文确定对应关系的其他块和方法中所述的。

在块522中,基于块520的比较来确定和提供,例如在第二用户设备上显示的一个或多个建议的消息贴纸。在参考图2的一些实施方式中,第二用户设备208可以确定和排序一个或多个建议的消息贴纸。例如,已被确定为对应于用于所接收消息的建议响应(例如,建议文本响应)的具有描述符的消息贴纸,可以被包括在建议消息贴纸集合中。

在一些实施方式中,将第二用户设备上的消息贴纸的设备描述符与生成的建议响应进行比较,并且如果任何设备描述符对应于(例如,匹配)建议响应,则选择与匹配的设备描述符对应的消息贴纸作为建议的消息贴纸。对于对应关系检查匹配,例如,相同序列中的词的字母之间的匹配,和/或相同序列中的多个词的匹配。在一些实施方式中,对于对应关系使用或允许精确和不精确匹配,以及可以检查设备描述符和建议响应之间的相似性(例如,可以忽略由词的过去时和复数形式引起的差异等)。在一些示例中,可以针对建议响应确定设备描述符的相似性得分(例如,针对每个建议响应的每个设备描述符),相似性得分指示描述符与建议响应之间的相似性的程度。例如,相似性得分可以基于匹配的特定顺序的字母的数目或百分比。

在一些实施方式中,系统检查作为对应关系的语义相似性,例如,使用可访问的词典,同义词词典,知识图和/或其他参考信息,来确定设备描述符的含义和建议响应是否相同。在一些实施方式中,基于针对消息贴纸的每个描述符所确定的单独的相似性得分,可以确定该消息贴纸和建议响应的贴纸相似性得分。例如,贴纸相似性得分可以是为描述符所确定的单独的相似性得分的总和。

在一些实施方式中,例如基于相似性得分,为建议响应选择与该建议响应具有最高相似性的消息贴纸。在一些示例中,为响应选择对于建议响应具有最高相似性得分的消息贴纸。在进一步的示例中,可以基于相似性的程度来选择消息贴纸,其中基于例如与建议响应中的词对应的消息贴纸的设备描述符中的词越多,和/或在设备描述符与建议响应之间的语义相似性的确定中的更高分,可以确定更高的相似性。在一些实施方式中,多个消息贴纸被确定为对应于特定消息建议,例如,与消息建议具有最高相似性的特定数目的消息贴纸。

在一些实施方式中,将在所接收的消息(消息概念)中确定的语义概念提供给第二用户设备,并且第二用户设备可以将这些消息概念与存储的语义概念进行比较,该存储的语义概念已经与特定的建议的消息贴纸响应直接相关联。这些建议的贴纸已经与存储的概念相关联地存储,作为对存储的概念的建议响应。例如,类似于本文所述的,可以检查消息概念与存储的概念的对应关系(例如,检查匹配,语义相似性,部分匹配等),以及如果消息概念匹配或对应于存储的概念,则为块418选择与所存储的概念相关联的建议贴纸响应。在一些示例中,第二设备上的消息贴纸的设备描述符可以用作存储的语义概念。

所确定的建议消息贴纸可以相对于彼此排序。例如,排序中的消息贴纸的放置或排名可以基于与该消息贴纸相关联的消息建议相对于其他消息建议的排名。在进一步的示例中,建议的消息贴纸的排名可以是基于建议的消息贴纸与其相关联的建议响应之间的对应关系强度。例如,排序中的消息贴纸的放置或排名可以基于相关联的建议响应与该消息贴纸的设备描述符之间的匹配(对应关系)的数目。

在一些示例中,匹配的数目可以是设备描述符中的词或短语与建议响应的词相匹配的数目。在一些示例中,如果建议响应的词与第一消息贴纸的设备描述符之间有多个匹配,则第一消息贴纸具有比第二消息贴纸更强(例如,更高)的排名,第二消息贴纸有与建议响应的词相匹配的单个设备描述符。

在一些实施方式中,置信度分数被用于确定建议响应和消息贴纸之间的对应关系(例如,确定语义含义的对应关系),并且这些分数被用于,基于消息贴纸与建议响应之间的对应关系的置信度,对消息贴纸进行排名。在一些实施方式中,将特定数目的排名靠前的消息贴纸确定为建议的消息贴纸,并由第二设备提供。例如,在参考图2的一些实施方式中,使得第二客户端设备例如在用户界面中,如第二用户在块516中所请求的,显示特定数量的排名靠前的消息贴纸。例如,排名靠前的消息贴纸可以以基于它的排名的顺序或配置来显示。

在块524中,显示的建议的消息贴纸中的一个或多个的选择被接收,例如,响应于所接收的消息(或响应于新指定的接收用户)而发送。例如,选择可以是基于用户在用户设备处提供的用户输入,例如,通过诸如接收用户触摸的触摸屏或触控板的输入设备,接收语音命令的麦克风,按钮,鼠标或接收用户操纵的操纵杆等。在一些实施方式中,参考图2,第二用户206在第二用户设备208处提供用户输入。在一些实施方式中,例如,基于用户偏好,用户情境(例如,地理位置,时间或日期等,如果已经获得用户同意),或其他预定条件,自动选择(无需用户输入)一个或多个建议的消息贴纸。

在块526中,将所选择的建议的消息贴纸作为一个或多个消息输出到一个或多个接收者设备。例如,包括所选消息贴纸的消息可以通过网络140经由消息服务器101发送到一个或多个其他客户端设备115和/或直接发送到另一个客户端设备115。在一些实施方式中,将消息发送到发送过块408中获得的图像的用户设备。例如,参考图2,第二用户设备208将所选择的消息贴纸发送到第一用户设备204。然后,该方法可以在例如如果已经接收了另一消息的一些实施方式中返回到块508。

在一些实施方式中,个性化或定制贴纸可用于为了本文的实施方式而描述的建议消息贴纸响应。在一些示例中,如对应的标准化贴纸,定制贴纸可以具有类似的贴纸id和贴纸集id,并且还可以与特定用户定制的图像数据相关联。例如,当在用户的设备上显示时,这种定制的消息贴纸可以与定制的图像数据一起显示,并且可以与其他设备上的标准图像数据一起显示(或者如果适用的话,为那些用户设备定制地显示)。例如,定制的图像数据可以与存储在用户使用的设备上的标准化贴纸信息相关联地存储。在一些实施方式中,定制的消息贴纸可以作为用户的设备的新贴纸被存储并被显示。

在本文描述的任何实施方式中,包含关于贴纸集和单独贴纸的信息的元数据文件可以由系统维护,例如,以允许引用与消息贴纸相关的一致数据。例如,关于贴纸集的元数据可以存储在全局元数据文件(或其他数据集合)中。在一些示例中,全局元数据文件可以存储在贴纸数据模块214中。元数据可以包括如上所述的贴纸id,贴纸集id和版本号。在一些实施方式中,贴纸元数据被指定为一旦被全局元数据文件引用就不能改变。在一些实施方式中,客户端设备被通知要更新消息贴纸,该消息贴纸具有比存储在客户端设备处的版本更新的版本。

一些实施方式可以允许用户下载与用户的设备的能力相关的消息贴纸和贴纸集,例如,低分辨率(例如,dpi)设备可以下载低分辨率贴纸集并且不需要下载不是更高分辨率的贴纸集。

可以为消息贴纸维护当前版本数据。在一些实施方式中,可以使用版本轮询(polling)。最新版本的消息贴纸可以引用最新版本的全局元数据文件,其中全局元数据文件可以引用用户使用的每个贴纸集的版本。在一些实施方式中,客户端设备可以确定何时和/或以何频率来轮询消息贴纸的最新版本。客户端设备可以为版本已更改的贴纸集请求新的元数据或消息贴纸。在一些实施方式中,如果在贴纸数据模块214中添加,移除或更新消息贴纸,则已下载该贴纸的用户可能需要重新下载包括有该消息贴纸的整个贴纸集。

在一些实施方式中,一个或多个客户端设备负责管理设备自己的版本化贴纸。在一些情况下,例如,在更新贴纸集的时间段期间,客户端设备可以发送和接收引用先前版本或者设备当前不具有的版本的消息贴纸的消息。在前一种情况下,客户端设备可以保留先前存储的消息贴纸的版本,以便设备可以渲染引用旧版本的贴纸消息,而无需重新下载这些消息贴纸。如果设备没有存储较新版本的消息贴纸,则在一些实施方式中,当设备接收到引用较新的贴纸集版本的贴纸消息时,设备可以首先下载消息贴纸数据(例如,图像数据)来显示,然后可以触发贴纸版本同步以便检索更新的元数据和/或其他数据(例如,消息贴纸的缩略图版本)。

在一些实施方式中,通过引用来发送消息贴纸。例如,不用发送实际消息贴纸数据(例如,用于贴纸图像或动画的像素数据或帧),而可以发送贴纸id信息,例如贴纸id,贴纸集id和版本号等参数。这可以减少发送贴纸消息的延迟并减少消息有效载荷大小。利用这些参数,客户端设备可以确定设备是否具有存储在设备本地缓存或其他本地存储器中的特定消息贴纸,或者设备是否需要从存储该消息贴纸的不同设备检索(例如,下载)该消息贴纸和元数据。在一些示例中,如果要检索消息贴纸,则可以使用参数的值生成用于检索消息贴纸的url或其他网络地址。

一些实施方式可以进行消息贴纸的验证和测试,以便例如验证贴纸消息的保真度以及对贴纸数据模块中存储的数据的引用的保真度。测试可以被进行,例如,对消息贴纸目录或其他数据集合的更改进行测试。例如,可以检查以下内容,当前版本数据是否引用现有贴纸集元数据文件,全局元数据文件是否引用存在的贴纸集版本,可下载贴纸集是否包括集合中每个消息贴纸的缩略图图像,消息贴纸图像数据是否被适当地调整大小(例如,根据预定义的大小的低分辨率或高分辨率)等。

实施方式通常涉及消息应用。某些实施方式可以自动分析一个或多个消息对话和/或用户信息的图像内容,以自动地向消息应用内的用户提供消息建议。在某些示例中,自动建议可以提供一个或多个适当的响应,该响应将由用户选择来在消息应用中响应,和/或可以代表用户自动发送一个或多个适当的响应。在某些其他示例中,建议可以自动将特定的非消息功能合并到消息应用中。

虽然前面的描述包括响应于接收消息或消息贴纸而提供消息建议的技术,但是可以响应于在对话中接收的任何类型的媒体内容来提供消息建议。例如,这样的内容可以包括贴纸(例如,在聊天应用中),动画图像(例如,动态图片,gif图像等)和视频。此外,虽然前面的描述将消息建议描述为文本响应或贴纸响应,但是,例如,基于对所接收的消息或贴纸的分析也可以建议其他类型的响应。例如,其他响应可以包括,建议图像,建议动画图像(例如,动态图片,gif图像等),建议视频和建议音频片段或剪辑中的一个或多个。

为了提供这些建议,建议生成器216可以进行例如将所接收的项目(例如,文本,图像,视频,贴纸,动画图像等)中的所识别的概念与不同类型的响应中的概念进行比较,并选择合适的响应,如本文中参考消息建议所描述的。在用户提供同意的不同实施方式中,可以基于情境选择或优先化响应的类型,例如,响应于传入的贴纸,可以选择贴纸作为建议的消息,响应于输入图像,可以选择视频作为建议响应等。

某些实施方式实现了与人类用户和/或聊天机器人的消息传递。在某些实施方式中,可以基于聊天机器人是否参与消息对话来定制自动消息建议。在一些示例中,如果在消息对话中不存在聊天机器人,则可以提供第一组自动消息建议,而如果在消息对话中存在聊天机器人,则可以提供第二组自动消息建议,其中第一组和第二组响应至少部分不同。例如,这些实施方式可以采用聊天机器人遵循的对话规则,并基于规则向用户建议消息。这可以减轻用户在以聊天机器人容易理解的语言和形式与聊天机器人通信时可能遇到的挑战。

一些实施方式可以包括,基于与用户的位置相关的区域,市场和国家中的至少一个中的其他消息,来确定一个或多个趋势响应(例如,包括由许多不同用户发送的流行消息内容的消息响应)。一个或多个确定的消息建议可以包括一个或多个趋势响应。在一些实施方式中,例如,地理位置,假日或事件等的用户情境,用于生成并确定用于呈现的一个或多个消息建议。

确定建议响应可以是进一步基于使用机器学习来为用户开发个性化模型。确定建议响应可以是基于用户的偏好和/或用户在通信中的先前动作(如果已经获得用户同意使用这样的动作和数据)。例如,用户偏好可以包括白名单和/或黑名单,白名单指示可以包括的特定词(或其他媒体内容项目),黑名单指示不能包括在消息建议中的特定词。如果已经获得用户同意,则可以基于用户在先前场合提供的标点符号使用,表情符号使用或其他内容中的一个或多个来生成或修改消息建议。

用于提供消息建议的模型可以由客户端设备115和/或消息服务器101实施。在一些实施方式中,可以加密对话,使得仅对话中的参与者的客户端设备可以访问对话内容。在这些实施方式中,由各个客户端设备实施的模型可以用于提供消息建议,并且不使用由服务器实施的模型。还可以使用由客户端设备实施的模型,例如,当用户未提供对使用服务器实施的模型的同意时。在一些实施方式中,客户端实施的模型可以是基于服务器实施的模型或源于服务器实施的模型。在一些实施方式中,可以使用服务器模型,并且不使用客户端模型,例如,当客户端设备缺乏实施客户端模型的能力时。在一些实施方式中,可以使用客户端模型和服务器模型的组合。

尽管本文中描述的示例利用了以英语示出的概念,但是可以以任何语言提供建议,例如,为客户端设备115配置的语言,区域或其他地理,基于用户偏好选择的语言等。在一些实施方式中,在用户同意分析对话的情境的情况下,可以检测在用户参与的各种对话(例如,在最近的消息中)中使用的语言,并且以该语言提供消息建议。

图6示出了响应于接收消息贴纸而具有消息建议的示例用户界面600。用户界面600可以显示在用户设备上,例如,一些实施方式中的显示在客户端设备上。在图6所示的示例中,使用在第一用户设备上显示的用户界面600的第一用户通过网络发送消息“什么事?”602到第二用户设备。第二用户604用消息贴纸606进行响应,该消息贴纸606被第一用户设备接收并显示在用户界面600中。在图6所示的示例中,消息贴纸是包括样式化文本“给我打电话”以及电话描述的图像。

响应于接收到消息贴纸,在第一用户界面中提供一个或多个建议响应。例如,建议响应可以包括文本响应“呼叫”610和另一个文本响应“我不能”(612)。用户界面600允许第一用户从建议响应610和612中进行选择,或者使用消息框620来编写他们自己的响应,在消息框620中第一用户可以输入文本或其他信息,或者选择要发送的其他内容项。在图6所示的示例中,一个或多个建议响应可以是基于接收到消息贴纸606。在一些实施方式中,如果第一用户同意,则可以为第一用户个性化建议响应。例如,可以基于第一用户对不同响应的使用频率,第一用户的对话风格(例如,幽默的,正式的等)来确定建议响应。在一些示例中,第一用户702是人类用户。在一些实施方式中,第一用户702可以是机器人。

图7示出了从图7得到的示例用户界面700,并且,当第一用户选择例如图6的元素610的建议响应时,可以显示该示例用户界面700。图7的用户界面包括上面结合图6描述的元素602-606和620。为了便于说明,图7中省略了一些附图标记。在用户选择元素610时,响应“呼叫”702被发送到第二用户设备。

图8示出了具有建议响应的示例用户界面800,该建议响应包括一个或多个消息贴纸。在图8所示的示例中,第一用户发送消息“嗨?”802到第二用户设备。第二用户804通过发送消息“让我们见面!“806来响应第一用户设备,消息“让我们见面!”806显示在用户界面800中。

响应于接收到消息,在第一用户界面800中提供包括消息贴纸的一个或多个建议响应。例如,建议响应包括消息贴纸响应810,812和814,每个消息贴纸响应810,812和814指示如果选择该消息贴纸响应则将发送的消息贴纸的显示外观(例如,图像数据)。用户界面允许用户从建议响应中选择特定的消息贴纸或使用消息框820编写他们自己的响应,在消息框820中用户可以输入文本和/或其他信息,例如,从消息应用中可用的一个或多个贴纸中选择。在图8所示的示例中,消息贴纸响应810,812和814可以由系统选择并且基于对话情境作为建议响应提供。例如,基于所接收的消息806,可以确定第一用户选择消息贴纸响应810,812和814的可能性高。

在一些实施方式中,如果用户已经同意,则可以为第一用户个性化作为建议响应被包括的消息贴纸。例如,可以基于在用户的设备(例如,客户端设备115)上本地可用的贴纸集,用户已经购买的贴纸集,接收消息806时在用户之间流行的贴纸集,第一用户的位置,第一用户的语言设置,用户通过消息应用进行通信时使用的语言,各种贴纸集的流行度等,来确定建议的消息贴纸。

图9示出了从图8得到的示例用户界面900,并且用户界面900可以在用户选择例如图8的建议消息贴纸响应814的建议响应时显示。图9的用户界面包括上面结合图8描述的元素802-806和820。为了便于说明,图9中省略了一些附图标记。在用户选择元素814时,包括消息贴纸814的响应902被发送到第二用户设备。

图10示出了具有消息建议的示例用户界面1000,该消息建议包括一个或多个位置建议。位置建议可以是基于通信中发送的一个或多个消息。在图10所示的示例中,在第一用户设备上使用用户界面1000的第一用户向第二用户设备发送消息“嗨”(1002)。第二用户1004用消息“你在哪里?”(1006)来响应该消息,消息“你在哪里?”(1006)已经从第二用户设备发送到第一用户设备并显示在用户界面1000中。

基于对该消息情境的分析,如果用户已经同意了这种分析,则确定位置响应是否合适。在一些实施方式中,例如,基于确定对话是关于位置的,例如,对话中的消息包括特定短语(存储在可访问存储器中并与之比较),诸如“你在哪里”,“让我们见面,”等,确定位置响应是适当的。在一些实施方式中,可以分析对话情境以确定对话是关于具体位置的。例如,如果对话中的消息是“今晚的比赛在哪里?”,则建议响应可以是与用户的城市相关联的体育场。在另一个示例中,如果对话中的消息是“吉姆的房子在哪里?”,则建议响应可以是与用户相关联的地址簿中的联系人“吉姆”相关联的地址。在一些实施方式中,例如基于对话中的一个或多个实体,例如,“让我们在xyz咖啡店会面”,可以触发位置建议。

当确定位置响应是合适的并且用户已经同意获得并共享用户位置时,消息应用可以提供共享用户位置的建议响应。例如,在图10中,使得各自对应于建议响应的用户界面元素1010,1012和1014被显示在用户界面1000中。第一用户可以选择元素1010,1012和1014中的任何一个来响应消息1006。替代地,用户可以使用消息框1020编写消息,在消息框1020中用户可以输入文本和/或其他信息。

在一些实施方式中,如果用户选择元素1010,则例如使用gps,蜂窝三角测量或涉及第一用户设备的其他机制来获得用户的位置。在一些实施方式中,响应于用户对元素1010的选择,可以基于用户的位置确定指向地图的链接(例如,url)并且在消息中发送该链接。在一些实施方式中,响应于用户对元素1010的选择,将图像或示意图作为消息发送,该图像或示意图示出了指示第一用户设备的位置的地图。

在一些实施方式中,消息应用可以利用第一用户设备的当前地理坐标来查找地图和其他位置信息源(例如,可通过网络和因特网访问的),以获得地名(例如,“xyz咖啡店”,“橄榄球场”,等等),然后地名可以作为建议答复被提供。例如,第一用户设备通过参考具有第一用户设备的当前位置的地图和位置信息,并且找到设备当前所在的机构的名称,已经确定了该示例中的元素1012。如果用户选择元素1012,则可以发送包括文本“xyz咖啡店”的响应。

在一些实施方式中,在选择元素1012时,可以发送格式化的响应,例如,响应可以被格式化为包括关于xyz咖啡店的信息(例如,图像,电话号码,营业时间等)的卡。在一些实施方式中,在选择元素1012时,可以发送包括指向“xyz咖啡店”的链接的响应(以便例如,使得通过网络接收“xyz咖啡店”的网站或社交媒体账户的数据并显示“xyz咖啡店”的网站或社交媒体账户),其中该链接被显示并且可以通过接收响应的设备上的用户输入来选择。

在各种实施方式中,可以用语言,例如,对话的语言,或基于用户的位置或其他因素确定的语言,来提供位置建议。在不同的实施方式中,可以通过使用可以分析多种语言的字符串的机器学习模型来确定对话情境。在一些实施方式中,可以将除英语之外的语言的对话翻译成英语以供机器学习模型处理。在一些实施方式中,可以在检测到的语言的本土语料库上训练机器学习模型。

图11示出了从图10得到的示例用户界面1100,并且,当用户选择例如图10的元素1010的建议响应时显示该示例用户界面1100。图11的用户界面包括上面结合图10描述的元素1002-1006和1020。为了便于说明,图11中省略了一些附图标记。在用户选择元素1010时,发送地图1102(例如,缩略图,交互式地图等)作为响应,其中地图可以例如用所示的指针以图形方式指示用户的位置。如果已经获得用户同意而使用这样的数据,则一些实施方式可以为消息应用的对话中指示的未来会面地点,事件或其他位置提供地理位置的建议,并且响应于位置建议的选择,这些位置可以在消息界面中显示。

机器人实施方式

可以利用本文描述的一个或多个特征来实施一个或多个机器人,例如,机器人可以由图1的环境100的一个或多个组件实施或访问。机器人是在一个或多个计算机上实施的自动服务,用户通过例如文本,诸如通过消息应用103a/103b或其他应用等与该自动服务交互。机器人可以由机器人提供者实施,使得机器人可以与各种消息应用的用户交互。在一些实施方式中,消息应用103a/103b的提供者还可以提供一个或多个机器人。在一些实施方式中,由消息应用103a/103b的提供者提供的机器人可以被配置为使得机器人可以包括在例如由其他提供者提供的其他消息应用中。

机器人可以提供优于其他模式的若干优点。例如,机器人可以允许用户尝试新服务(例如,出租车预订服务,餐馆预订服务等),而无需在客户端设备上安装应用或访问网站。此外,用户可以通过文本与机器人交互,与通过网站,软件应用,例如交互式语音响应(ivr)服务的电话呼叫,或与服务交互的其他方式使用的服务相比,通过文本与机器人交互需要最少的学习或不需要学习。在消息服务或应用中并入机器人还可以允许用户与其他用户在消息服务中进行协作,以完成诸如旅行计划,购物,安排事件,获取信息等的各种任务,并消除诸如在各种应用(例如,出租车预订应用,餐馆预订应用,日历应用等)之间或网站之间切换来完成任务的繁琐操作。

机器人可以被实施为计算机程序或应用(例如,软件应用),计算机程序或应用被配置为经由消息应用103a/103b与一个或多个用户(例如,用户125a-n中任一个)交互,以提供信息或者在消息应用103中进行具体动作。作为一个示例,信息检索机器人可以在因特网上搜索信息并在消息应用内呈现最相关的搜索结果。作为另一个示例,旅行机器人可以具有经由消息应用103进行旅行安排的能力,例如,通过在消息应用内实现购买旅行和旅馆票,在消息应用内进行酒店预订,在消息应用中进行租赁汽车预订。作为另一个示例,出租车机器人可以具有例如,向用户地点(当用户125允许访问位置信息时,由出租机器人从客户端设备115获得)呼叫出租车的能力,而无需调用或呼叫单独的出租车预订应用。作为另一示例,教练/辅导机器人可以辅导用户在消息应用内在某些主题上指导用户,例如,通过询问可能出现在考试中的问题并提供关于用户的响应是否正确的反馈。作为另一示例,游戏机器人可以在消息应用内以用户的对手或队友玩游戏。作为另一个示例,商业机器人可以提供来自具体商家的服务,例如,通过从商家的目录中检索产品信息并通过消息应用实现购买。作为另一示例,接口机器人可以接合远程设备或车辆,使得消息应用的用户可以与远程设备或车辆聊天,从远程设备或车辆中检索信息和/或向远程设备或车辆提供指令。

机器人的能力可能包括理解用户的意图并执行该意图。可以通过分析和理解用户的对话及对话的情境来理解用户的意图。机器人还可以基于随时间演变的对话来理解对话的情境变化或用户的情绪变化和/或意图变化。例如,如果用户a建议会面喝咖啡,但如果用户b声明他不喜欢咖啡,则机器人可以向用户b分配对于咖啡的负面情绪分数,并且可能不建议咖啡店来会面。

实施可以与消息应用103a/103b的用户通信的机器人可以提供许多优点。传统上,用户可以利用软件应用或网站来进行诸如支付账单,订购食物,预订门票等活动。这种实施方式的问题在于,为了进行多种活动,要求用户安装或使用多个软件应用和网站。例如,用户可能必须安装不同的软件应用来支付公用事业账单(例如,来自公用事业公司),购买电影票(例如,来自票务服务提供商的订票应用),进行餐厅预订(例如,来自各个餐厅),或者可能需要访问每个活动的各个网站。这种实施方式的另一个问题是用户可能需要学习复杂的用户界面,例如,使用多个用户界面元素实施的用户界面,例如窗口,按钮,复选框,对话框等。

因此,一个或多个所描述的实施方式的优点在于,单个应用使得用户能够进行涉及与任何数量的当事方的交互的活动,而不需要访问单独的网站或安装和运行软件应用,具有减少客户端设备上的内存,存储器和处理资源的消耗的技术效果。所描述的实施方式的优点在于,例如,无需学习复杂的用户界面,对话界面使得用户更容易和更快地完成这样的活动,具有减少计算资源消耗的技术效果。所描述的实施方式的另一个优点是,实施机器人可以使各种参与实体能够以较低的成本提供用户交互,这具有减少部署用于实现用户交互的计算资源的需求的技术效果,部署用于实现用户交互的计算资源例如是使用一个或多个通信服务器实施的免费号码,托管在一个或多个web服务器上的网站,托管在电子邮件服务器上的客户支持电子邮件等。所描述的特征的另一技术效果是减少了跨通信网络完成用户任务所需的系统处理和传输资源的消耗问题。

虽然本文中的某些示例描述了机器人与一个或多个用户之间的交互,但是各种类型的交互,诸如机器人和用户125之间的一对一交互,机器人与两个或更多用户之间的一对多交互(例如,在群组消息对话中),多个机器人和用户之间的多对一交互,以及多个机器人和多个用户之间的多对多交互,是可能的。此外,在一些实施方式中,机器人还可以被配置为经由消息应用103,经由机器人之间的直接通信或它们的组合,与另一机器人(例如,机器人107a/107b,109a/109b,111,113等)交互。例如,餐馆预订机器人可以与特定餐馆的机器人交互以便预订餐桌。

在某些实施例中,机器人可以使用对话界面来使用自然语言来与用户进行对话交互。在某些实施例中,机器人可以使用基于模板的格式来创建与用户交互的句子,例如,响应于对餐馆地址的请求,使用诸如“餐馆r的位置是l”的模板。在某些情况下,使用户能够选择机器人交互格式,例如,机器人是否使用自然语言与用户交互,机器人是否使用基于模板的交互等。

在机器人使用自然语言进行对话交互的情况下,机器人交互的内容和/或风格可以基于以下中的一个或多个动态地变化:使用自然语言处理所确定的对话的内容,对话中的用户的身份,以及一个或多个对话的情境(例如,关于用户的交互的历史信息,基于社交图的对话中的用户之间的关系),外部条件(例如,天气,交通),用户的日程安排,与用户相关联的相关情境等。在这些情况下,机器人交互的内容和风格基于只有参与对话的用户已经同意的这些因素而变化。

作为一个示例,如果对话的用户被确定正在使用正式语言(例如,没有或最少的俚语或表情符号),则机器人也可以使用正式语言在该对话内进行交互,反之亦然。作为另一示例,如果对话中的用户(基于当前和/或过去的对话)被确定是表情符号的重度用户,则机器人还可以使用一个或多个表情符号与该用户交互。作为另一示例,如果对话中的两个用户被确定在社交图中关系较远(例如,在他们之间具有两个或更多个中间节点,表示例如他们是朋友的朋友的朋友),那么机器人可以在该对话中使用更正式的语言。在参与对话的用户未同意机器人利用诸如用户的社交图,日程表,位置或与用户相关联的其他情境等因素的情况下,机器人的交互的内容和风格可以是默认风格,例如,不需要使用这些因素的中性风格。

此外,在一些实施方式中,一个或多个机器人可以包括参加与用户的来回对话的功能。例如,如果用户例如提供输入“@moviebot你能推荐一部电影吗?”,来请求有关电影的信息,则机器人“moviebot”可能会回应:“你喜欢喜剧吗?”然后,用户可能响应,例如,“不”,机器人可能响应响应“好的。科幻电影‘太空与星星’获得了很好的评价。要我为你订票吗?”然后用户可能指示”是的,我可以在下午6点之后去。请检查史蒂夫是否可以加入”。在用户同意机器人访问关于他们的联系人的信息并且朋友史蒂夫同意接收来自机器人的消息时,机器人可以向用户的朋友史蒂夫发送消息,并且进行进一步的动作来预订适当时间的电影票。

在某些实施例中,参与对话的用户能够调用特定机器人或执行特定任务的机器人,例如,通过键入机器人名称或机器人句柄(例如,出租车,@taxibot,@movies等),通过使用语音命令(例如,“调用bankbot”等),通过激活用户界面元素(例如,用机器人名称或句柄标记的按钮或其他元素)等。一旦调用机器人,用户125就可以以类似于向其他用户125发送消息的方式,经由消息应用103a/103b向机器人发送消息。例如,为了订辆出租车,用户可以键入“@taxibot给我找辆出租车”;为了预订酒店,用户可以键入“@hotelbot在我附近的中餐馆预订4人位。"

在某些实施例中,机器人可以在没有被特别调用的情况下自动地在消息对话内建议信息或动作。也就是说,用户可能不需要专门调用机器人。在这些实施例中,如果已经获得用户同意,则机器人可以依赖于对持续或离散时间点上的对话的分析和理解。对话的分析可以用于理解具体的用户需求并且识别何时应该由机器人建议帮助。作为一个示例,如果确定用户需要信息(例如,基于用户向另一用户询问问题,基于多个用户指示他们没有某些信息),机器人可以搜索一些信息并建议答案。作为另一个示例,如果确定多个用户已经表达了对吃中国食物的兴趣,则机器人可以自动地建议在用户附近的一组中国餐馆,并包括诸如位置,评级和到餐馆网站的链接的可选信息。

在某些实施例中,可以对消息对话中的一个或多个用户进行自动建议以调用一个或多个机器人,而不是自动调用机器人或等待用户明确地调用机器人。在这些实施例中,如果已经获得用户同意,则可以持续地或在离散时间点上分析对话,并且可以使用对话的分析来理解具体的用户需求,以及识别在对话中何时应该建议机器人。例如,消息对话中的特定关键词,短语,或词或短语的交换可以由参与消息对话的设备上执行的程序来检测,其中这样的关键词或短语可以指示调用机器人并将机器人添加到消息对话。

在机器人可以在没有被明确地调用的情况下在消息对话内自动建议信息或动作的实施例中,例如,如果参与消息对话的一个或多个用户不同意机器人进行对用户对话的分析,则禁用这样的功能。此外,还可以基于用户输入来临时禁用这种功能。例如,当用户指示对话是私密的时,暂停对对话情境的分析,直到用户为要激活的机器人提供输入。此外,可以例如使用用户界面元素,向对话中的参与者提供分析功能被禁用的指示。

在各种实施方式中,机器人可以以各种配置实施。例如,如图1所示,机器人105在客户端设备115a上实施。在该示例中,机器人可以是客户端设备115a本地的软件应用中的模块。例如,如果用户已经在客户端设备115a上安装了出租车呼叫应用,则可以将机器人功能作为模块并入了出租车呼叫应用中。在该示例中,用户可以例如通过发送消息“@taxibot给我找辆出租车”来调用出租车机器人。消息应用103b可以自动地启动出租车呼叫应用中的机器人模块。以这种方式,机器人可以在客户端设备上本地实施,使得用户可以经由消息应用103与机器人进行对话。

在图1所示的另一示例中,机器人107a被示出在客户端设备115a上实施,机器人107b被示为在消息服务器101上实施。在该示例中,机器人可以被实施为,例如客户端-服务器计算机程序,该程序中具有机器人107a(服务器模块)和机器人107b(客户端模块)中的每一个提供的部分机器人功能。例如,如果机器人是具有句柄@calendar的安排机器人,则用户125a可以通过键入“@calendar提醒我晚上去洗衣服”来安排提醒,这可以由机器人107b(客户端模块)处理。继续该示例,如果用户125a告诉机器人“检查吉姆是否可以在4点有空见面”,则机器人107a(服务器模块)可以联系用户吉姆(或吉姆的安排机器人)以交换消息,并向用户125提供响应。

在另一示例中,机器人109a(服务器模块)在服务器135上实施,机器人109b(客户端模块)在客户端设备115上实施。在该示例中,机器人功能由在客户端设备115和服务器135上实施的模块提供,服务器135与消息服务器101不同。在一些实施方式中,机器人可以被实施为分布式应用,例如,该分布式应用具有分布在多个客户端设备和服务器(例如,客户端设备115,服务器135,消息服务器101等)上的模块。在一些实施方式中,机器人可以被实施为服务器应用,例如,在消息服务器101上实施的机器人111和在服务器135上实施的机器人113。

诸如仅客户端,仅服务器,客户端-服务器,分布式等的不同实施方式可以提供不同的优点。例如,仅客户端实施方式允许在本地提供机器人功能,例如,没有网络访问,这在某些情境中可能是有利的,某些情境例如是,当用户在网络覆盖区域之外或在具有低或有限网络带宽的任何区域中时。包括一个或多个服务器的诸如仅服务器,客户端-服务器或分布式配置的实施方式,可以允许某些功能,例如,可能无法在客户端设备上本地提供的金融交易,票证预订等。

虽然图1示出了与消息应用103不同的机器人,但是在一些实施方式中,一个或多个机器人可以被实施为消息应用103的一部分。在将机器人实施为消息应用103的一部分的实施方式中,在实施机器人之前获得用户许可。例如,在将机器人实施为消息应用103a/103b的一部分的情况下,消息应用103a/103b可以提供可以进行某些活动的机器人,例如,翻译传入和传出消息的翻译机器人,在用户的日历上安排事件的安排机器人,等。在此示例中,仅在用户的特定权限下激活翻译机器人。如果用户未同意,则不实施消息应用103a/103b内的机器人(例如,禁用,移除等)。如果用户同意,则机器人或消息应用103a/103b可以有限地使用经由消息应用103a/103b在用户之间交换的消息,以提供特定功能,例如翻译,等。

在一些实施方式中,与消息应用103a/103b的提供者和用户125不同的第三方可以提供能够经由消息应用103a/103b与用户125通信的用于特定目的的机器人。例如,出租车服务提供商可以提供出租车机器人,票务服务可以提供可以预订活动门票的机器人,银行机器人可以提供进行金融交易的能力等。

在经由消息应用103实施机器人时,仅在特定的用户授权时允许机器人与用户通信。例如,如果用户调用机器人,则机器人可以例如基于用户调用机器人的动作来回复。在另一示例中,用户可以指示可以联系用户的特定机器人或特定类型的机器人。例如,用户可以允许旅行机器人与她通信,但不提供购物机器人的授权。在该示例中,消息应用103a/103b可以允许旅行机器人与用户交换消息,但是过滤或拒绝来自购物机器人的消息。

此外,为了提供一些功能(例如,订出租车,进行航班预订,联系朋友等),机器人可以请求用户允许机器人访问用户数据,例如位置,支付信息,联系人清单等。在这种情况下,向用户呈现允许或拒绝对机器人的访问的选项。如果用户拒绝访问,则机器人可以经由消息进行响应,该消息例如是“抱歉,我无法为您预订出租车”。此外,用户可以在有限的基础上提供对信息的访问,例如,用户可以仅在机器人的特定调用时允许出租车机器人访问当前位置,而不是其他情况。在不同的实施方式中,用户可以控制机器人可以访问的信息的类型,数量和粒度,以及为用户提供(例如,经由用户界面)在任何时间改变这些许可的能力。在一些实施方式中,可以处理用户数据,以便例如,在机器人可以访问数据之前,移除个人可识别信息,将信息限制到特定数据元素等。此外,用户可以通过消息应用103a/103b和一个或多个机器人来控制用户数据的使用。例如,用户可以指定提供金融交易的能力的机器人在交易完成之前需要用户授权,例如,机器人可以发送消息“电影太空和星星的门票是每张12美元。我要继续预订吗?”或“这件衬衫的最优惠价格是125美元,包括运费。我要从尾号为1235的信用卡中扣款吗?”等。

这里描述的实施方式一般涉及消息应用。某些实施方式可以自动分析一个或多个消息对话的图像内容和/或用户信息,以自动地向消息应用内的用户提供消息建议。在某些示例中,自动建议可以提供一个或多个适当的响应,该响应将由用户选择以在消息应用中进行响应,和/或可以代表用户自动发送一个或多个适当的响应。在某些其他示例中,建议可以自动将特定的非消息功能合并到消息应用中。

前面的描述包括响应于接收到消息而提供消息建议的技术。可以响应于在对话中接收的任何类型的媒体内容来提供消息建议。例如,这样的内容可以包括贴纸(例如,在聊天应用中),动画图像(例如,动态图片,gif图像等),视频,和音频数据(例如,片段或剪辑)。例如,基于对所接收消息的分析,可以建议各种类型的消息建议。例如,其他响应可以包括,建议图像,建议贴纸,建议动画图像(例如,动态图片,gif图像等)和建议视频。为了提供这些建议,建议模块212可以例如将所接收的项目(例如,文本,图像,视频,贴纸,动画图像等)中的所识别的概念与不同类型的响应中的概念进行比较,并选择合适的响应,如上参考包括文本和/或消息贴纸的消息建议所描述的。在用户提供同意的不同实施方式中,可以基于情境来选择或优先化响应的类型,例如,可以选择与接收的消息类型相同的响应类型;例如,响应于传入的消息贴纸,可以选择消息贴纸作为建议消息,响应于传入的图像,可以选择视频作为建议响应等。

某些实施方式实现了与人类用户和/或聊天机器人的消息传递。在某些实施方式中,可以基于聊天机器人是否参与消息对话来定制自动消息建议。在一些示例中,如果在消息对话中不存在聊天机器人,则可以提供第一组自动消息建议,而如果在消息对话中存在聊天机器人,则可以提供第二组自动消息建议,其中第一组和第二组响应至少部分不同。例如,这些实施方式可以采用聊天机器人遵循的对话规则,并基于规则向用户建议消息。这可以减轻用户在以聊天机器人容易理解的语言和形式与聊天机器人进行交流时可能遇到的挑战。

一些实施方式可以包括,基于与用户的位置相关的区域,市场和国家中的至少一个中的其他消息,来确定一个或多个趋势响应(例如,包括由许多不同用户发送的流行消息内容的消息响应)。一个或多个确定的消息建议可以包括一个或多个趋势响应。在一些实施方式中,例如,地理位置,假日或事件等的用户情境用于生成并确定用于呈现的一个或多个消息建议。

确定建议响应可以是进一步基于使用机器学习来为用户开发个性化模型。确定建议响应可以是基于用户的偏好和/或用户在通信中的先前动作(如果已经获得用户同意使用这样的动作和数据)。例如,用户偏好可以包括白名单和/或黑名单,白名单指示可以包括的特定词,黑名单指示不能包括在消息建议中的特定词。如果已经获得用户同意,则可以基于用户在先前场合提供的标点符号使用,表情符号使用或其他内容中的一个或多个来生成或修改消息建议。

用于提供消息建议的模型,例如,映射模型(机器学习模型,语法,关联等),消息建议模型等,可以由客户端设备115和/或消息服务器101实施。在一些实施方式中,可以加密对话,使得仅对话中的参与者的客户端设备可以访问对话内容。在这些实施方式中,由各个客户端设备实施的模型可以用于提供消息建议,并且不使用由服务器实施的模型。还可以使用由客户端设备实施的模型,例如,当用户未同意使用服务器实施的模型时。在一些实施方式中,客户端实施的模型可以是基于服务器实施的模型或源于服务器实施的模型。在一些实施方式中,例如,当客户端设备缺乏实施客户端模型的能力时,可以使用服务器模型,并且不使用客户端模型。在一些实施方式中,可以使用客户端模型和服务器模型的组合。

尽管本文中描述的示例利用了以英语示出的概念,但是可以以任何语言提供建议,例如,为客户端设备115配置的语言,区域或其他地理,基于用户偏好选择的语言等。在一些实施方式中,在用户同意分析对话的情境的情况下,可以检测在用户参与的各种对话(例如,在最近的消息中)中使用的语言,并且以该语言提供消息建议。

图12是可用于实施本文描述的一个或多个特征的示例设备1200的框图。在一个示例中,设备1200可以用于实施客户端设备,例如,图1中所示的客户端设备115中的任何一个。替代地,设备1200可以实施服务器设备,例如,图1的消息服务器101,概念识别器120,内容分类器130和查询合成器132。设备1200可以是任何适合的计算机系统,服务器或其他电子或如上所述的硬件设备。

这里描述的一个或多个方法可以在独立程序中运行,该独立程序可以在任何类型的计算设备上运行,方法可以在在web浏览器上运行的程序中运行,在移动计算设备(例如,手机,智能手机,平板电脑,可穿戴设备(手表,臂带,珠宝,头饰,虚拟现实护目镜或眼镜,增强现实护目镜或眼镜等),笔记本电脑等)上运行的移动应用(“app”)中运行。在一个示例中,可以使用客户端/服务器架构,例如,移动计算设备(作为客户端设备)将用户输入数据发送到服务器设备并且从服务器接收用于输出(例如,用于显示)的最终输出数据。在另一示例中,可以在移动计算设备上的移动应用(和/或其他应用)内进行所有计算。在另一个示例中,可以在移动计算设备和一个或多个服务器设备之间分配计算。

在一些实施方式中,设备1200包括处理器1202,内存1204和输入/输出(i/o)接口1206。处理器1202可以是一个或多个处理器和/或处理电路,以执行程序代码和控制设备1200的基本操作。“处理器”包括处理数据、信号或其他信息的任何适合的硬件和/或软件系统,机制或组件。处理器包括具有通用中央处理单元(cpu),多个处理单元,用于实现功能的专用电路的系统或其他系统。处理不必限于特定的地理地点,或具有时间限制。例如,处理器可以“实时”,“离线”,“批处理模式”等进行其功能。处理的部分可由不同的(或相同的)处理系统在不同的时间和不同的地点进行。计算机可以是与内存通信的任何处理器。

内存1204一般在设备1200中提供以供处理器1202访问,并且内存1204可以是适合存储由处理器执行的指令,并且与处理器1202分开设置和/或与处理器1202集成的任何适合的处理器可读存储介质,诸如随机存取存储器(ram),只读存储器(rom),电可擦除只读存储器(eeprom),闪存等。内存1204可以存储在服务器设备1200上由处理器1202运行的软件,软件包括操作系统1208,消息应用1216和诸如数据显示引擎,网络托管引擎,图像显示引擎,通知引擎,社交网络引擎等的其他应用1214。应用数据1210可以存储在内存1204中,并且输入到消息应用1216和/或1214和/或从消息应用1216和/或1214输出。例如,应用数据可以包括这里描述的数据,例如交换的消息,图像,数据库数据,配置数据,用户偏好等。

在一些实施方式中,消息应用1216可以包括使处理器1202能够进行本文描述的功能的指令,例如,图2的方法中的一些或全部。例如,消息应用1216可以提供如本文所述的消息建议。在一些实施方式中,消息应用1216包括一个或多个模块,诸如贴纸建议模块1216a,响应建议模块1216b,贴纸数据模块1216c和用户交互模块1216d,和/或这些模块在与设备1200通信的其他应用或设备中实施。还可以或替代地包括其他应用1214(或引擎),例如,图像编辑应用,媒体显示应用,通信应用,网络托管引擎或应用等。这里公开的一个或多个方法可以在若干环境和平台中操作,例如,作为可以在任何类型的计算设备上运行的独立计算机程序,作为具有网页的web应用,作为在移动计算设备上运行的移动应用(“app”),等。操作系统1208和应用1216和1214中的一个或多个可以例如响应于用户输入来提供被显示的用户界面,以显示可选择的选项或控件,并基于所选择的选项显示数据。

在一些实施方式中,机器学习应用1230存储在内存1204中。在各种实施方式中,机器学习应用1230可以利用贝叶斯分类器,支持向量机,神经网络或其他学习技术。在一些实施方式中,机器学习应用1230可以包括训练模型1234,推理引擎1236和数据1232。在一些实施方式中,数据1232可以包括训练数据,例如,用于生成训练模型1234的数据。例如,训练数据可以包括任何类型的数据,例如文本,图像,音频,视频等。训练数据可以从任何来源获得,例如,专门标记为用于训练的数据存储库,提供许可以用作机器学习的训练数据的数据等。在一个或多个用户允许使用其各自的用户数据来训练机器学习模型,例如,训练的模型1234的实施方式中,训练数据可以包括这样的用户数据。在用户允许使用其各自的用户数据的实施方式中,数据1232可以包括诸如图像(例如,照片或其他用户生成的图像),通信(例如,电子邮件;诸如文本消息,语音,视频等的聊天数据),文件(例如电子表格,文本文件,演示文稿等)的许可数据。

在一些实施方式中,数据1232可以包括收集的数据,诸如,地图数据,图像数据(例如,卫星图像,俯视图像等),游戏数据等。在一些实施方式中,训练数据可以包括为了训练而生成的合成数据,诸如不是基于正在训练的情境中的用户输入或活动的数据,例如,从模拟对话生成的数据,计算机生成的图像,等等。在一些实施方式中,机器学习应用1230排除数据1232。例如,在这些实施方式中,训练模型1234可以例如在不同的设备上生成,并且提供作为机器学习应用1230的一部分。在各种实施方式中,训练模型1234可以被提供为数据文件,该数据文件包括模型结构或形式以及相关联权重。推理引擎1236可以读取用于训练模型834的数据文件,并基于训练模型1234中指定的模型结构或形式来实施具有节点连接,层和权重的神经网络。

机器学习应用1230还包括训练模型1234。在一些实施方式中,训练模型可以包括一个或多个模型形式或结构。例如,模型形式或结构可以包括任何类型的神经网络,例如线性网络,实施多个层的深度神经网络(例如,在输入层和输出层之间的“隐藏层”,每个层是线性网络),卷积神经网络(例如,将输入数据分割或分块成多个部分或区块的网络,使用一个或多个神经网络层分别地处理每个区块,并且聚合来自每个区块的处理的结果),序列到序列神经网络(例如,诸如句子中的词,视频中的帧等作为输入顺序数据,并产生结果序列作为输出的网络)等。

模型形式或结构可以指定各种节点之间的连接以及节点到层中的组织。例如,第一层(例如,输入层)的节点可以接收数据作为输入数据1232或应用数据1210。例如,这样的数据可以包括,例如当训练模型用于图像分析时,每节点的一个或多个像素。按照模型形式或结构中指定的连接性,后续中间层可以接收先前层的节点的输出作为输入。这些层也可以称为隐藏层。最后一层(例如,输出层)产生机器学习应用的输出。例如,取决于特定的训练模型,输出可以是用于图像的一组标签,允许将图像与其他图像(例如,图像的特征向量)进行比较的图像的表示,响应于输入句子的输出句子,输入数据的一个或多个类别等。在一些实施方式中,模型形式或结构还指定每层中的节点的数量和/或类型。

在不同的实施方式中,训练模型1234可以包括多个节点,多个节点按照模型结构或形式排列成层。在一些实施方式中,节点可以是没有内存的计算节点,例如,被配置为处理一个输入单元以产生一个输出单元。由节点执行的计算可以包括,例如,将多个节点输入中的每一个乘以权重,获得加权和,以及利用偏置或截距值(interceptvalue)调整加权和以产生节点输出。在一些实施方式中,由节点进行的计算还可以包括将阶梯/激活函数应用于调整后的加权和。在一些实施方案中,阶梯/激活函数可为非线性函数。在各种实施方式中,这种计算可以包括诸如矩阵乘法之类的操作。在一些实施方式中,多个节点的计算可以并行进行,例如,使用多核处理器的多个处理器核,使用gpu的单独处理单元,或专用神经电路。在一些实施方式中,节点可以包括内存,例如,可以能够在处理后续输入时存储和使用一个或多个较早的输入。例如,具有内存的节点可以包括长短期存储器(lstm)节点。lstm节点可以使用内存来维持允许节点像有限状态机(fsm)那样工作的“状态”。具有这种节点的模型可用于处理顺序数据,例如句子或段落中的词,视频中的帧,语音或其他音频等。

在一些实施方式中,训练模型1234可以包括用于各个节点的嵌入或加权。例如,模型可以被发起为被组织成如模型形式或结构指定的层的多个节点。在初始化时,可以将各个权重应用于按照模型形式连接的每对节点之间的连接,例如,神经网络的连续层中的节点。例如,可以随机分配各个权重,或者将其初始化为默认值。然后可以例如使用数据1232来训练模型以产生结果。

例如,训练可以包括采用监督学习技术。在监督学习中,训练数据可以包括多个输入(例如,一组图像)和每个输入的对应预期输出(例如,每个图像的一个或多个标签)。基于模型的输出与预期输出的比较,自动调整权重的值,例如,以提高模型在提供类似输入时产生预期输出的概率的方式。

在一些实施方式中,训练可以包括采用无监督学习技术。在无监督学习中,可以仅提供输入数据,并且模型被训练以区分数据,例如,将输入数据聚类成多个组,其中每个组包括以某种方式相似的输入数据。例如,可以训练模型以区分图像,使得模型将抽象图像(例如,合成图像,人类绘制的图像等)与自然图像(例如,照片)区分开。

在另一个示例中,使用无监督学习训练的模型可以基于输入句子中的词的使用来聚类词。在一些实施方式中,可以使用无监督学习来产生知识表示,例如,可以由机器学习应用1230使用的知识表示。在各种实施方式中,训练模型包括对应于模型结构的一组权重或嵌入。在省略数据1232的实施方式中,机器学习应用1230可以包括基于例如,由机器学习应用1230的开发者,第三方等,先前训练的训练模型1234。在一些实施方式中,训练模型1234可以包括例如,从提供权重的服务器下载的固定的一组权重。

机器学习应用1230还包括推理引擎1236。推理引擎1236被配置为将训练模型1234应用于诸如应用数据1210的数据,以提供推断。在一些实施方式中,推理引擎1236可以包括将由处理器1202执行的软件代码。在一些实施方式中,推理引擎1236可以指定电路配置(例如,用于可编程处理器,用于现场可编程门阵列(fpga)等),使得处理器1202能够应用训练模型。在各种实施方式中,推理引擎1236包括软件指令,硬件指令或它们的组合。在一些实施方式中,推理引擎1236提供应用程序编程接口(api),以便例如将训练模型1234应用于应用数据1210以生成推理,api可以由操作系统1208和/或其他应用1214和/或1216使用以调用推理引擎1236。

机器学习应用1230可以提供若干技术优势。例如,当基于无监督学习生成训练模型1234时,训练模型1234可以由推理引擎1236应用以从例如应用数据1210的输入数据产生知识表示(例如,数字表示)。例如,被训练用于图像分析的模型可以产生具有比输入图像(例如,10mb)更小的数据大小(例如,1kb)的图像的表示。在一些实施方式中,这样的表示可以有助于降低生成输出(例如,标签,分类,描述图像的句子等)的处理成本(例如,计算成本,内存用量等)。在一些实施方式中,可以将这样的表示作为输入提供给不同的机器学习应用,该机器学习应用从推理引擎1236的输出中产生输出。在一些实施方式中,由机器学习应用1230生成的知识表示可以被提供给例如通过网络进行进一步处理的不同设备。在这样的实施方式中,提供知识表示而不是图像可以提供技术益处,例如,以更低的成本实现更快的数据传输。在另一示例中,被训练用于聚类文档的模型可以从输入文档中产生文档聚类。文档聚类(clusters)可以适合于进一步处理(例如,确定文档是否与主题相关,确定文档的分类类别等),而无需访问原始文档,因此节省了计算成本。

在一些实施方式中,机器学习应用1230可以以离线方式实施。在这些实施方式中,训练模型1234可以在第一阶段生成,并且作为机器学习应用1230的一部分被提供。在一些实施方式中,机器学习应用1230可以以在线方式实施。例如,在这样的实施方式中,调用机器学习应用1230的应用(例如,操作系统1208,一个或多个其他应用1214等)可以利用机器学习应用1230产生的推断,例如向用户提供推断,并且可以生成系统日志(例如,如果用户允许,则由用户基于推断而采取的动作;或者如果被用作进一步处理的输入,则进一步处理的结果)。系统日志可以周期性地产生,例如,每小时,每月,每季度等,并且可以在用户许可的情况下用于更新训练模型1234,例如,更新训练模型1234的嵌入。

在一些实施方式中,机器学习应用1230可以以能够适应要执行机器学习应用1230的设备1200的特定配置的方式来实施。例如,机器学习应用1230可以确定利用例如处理器1202的可用计算资源的计算图。例如,如果机器学习应用1230被实现为多个设备上的分布式应用,则机器学习应用1230可以以优化计算的方式确定要在各个设备上执行的计算。在另一示例中,机器学习应用1230可以确定处理器1202包括具有特定数量的gpu核(例如,1,000)的gpu,并相应地实施推理引擎(例如,作为1,000个单独的进程或线程)。

在一些实施方式中,机器学习应用1230可以实施训练模型的组合体。例如,训练模型1234可以包括多个训练模型,每个训练模型适用于相同的输入数据。在这些实施方式中,机器学习应用1230可以例如基于可用计算资源,先前推断的成功率等,选择特定的训练模型。在一些实施方式中,机器学习应用1230可以执行推理引擎1236,使得多个训练模型被应用。在这些实施方式中,机器学习应用1230可以例如,使用对来自正在应用的每个训练模型的单独的输出进行评分的投票技术,或者通过选择一个或多个特定输出,来组合来自正在应用的单独的模型的输出。此外,在这些实施方式中,机器学习应用对于正在应用的单独的训练模型可以应用时间阈值(例如,0.5ms),并且仅利用在时间阈值内可用的那些单独的输出。在时间阈值内未接收的输出可以不被利用,例如,被丢弃。例如,在例如通过操作系统1208或一个或多个应用1214和/或1216调用机器学习应用的同时,当指定了时间限制时,这种方法可能是合适的。

在不同的实施方式中,机器学习应用1230可以产生不同类型的输出。例如,机器学习应用1230可以提供表示或聚类(例如,输入数据的数字表示),标签(例如,用于包括图像,文档等的输入数据),短语或句子(例如,描述图像或视频,适合用作对输入句子的响应等),图像(例如,由机器学习应用响应于输入而产生),音频或视频(例如,响应于输入视频,机器学习应用1230可以产生具有特定效果的输出视频,例如,当使用来自漫画书或特定艺术家等的训练数据对训练模型1234训练时,则输出以漫画书或特定艺术家的风格来渲染的视频)。在一些实施方式中,机器学习应用1230可以基于由例如操作系统1208或一个或多个应用1214和/或1216调用应用而指定的格式,来产生输出。在一些实施方式中,调用应用可以是另一个机器学习应用。例如,这样的配置可以用在生成对抗网络(generativeadversarialnetworks)中,其中使用来自机器学习应用1230的输出来训练调用机器学习应用,反之亦然。

内存1204中的任何软件可替代地存储在任何其他适合的存储地点或计算机可读介质上。此外,内存1204(和/或其他连接的存储设备)可以存储一个或多个消息,消息贴纸和贴纸信息(例如,元数据),消息贴纸描述和关键字,一个或多个分类法,电子百科全书,词典,同义词词典,消息数据,语法,用户偏好和/或在本文描述的特征中使用的其他指令和数据(例如,在一些实施方式中,这样的指令和/或数据可以包括在应用数据1210中)。内存1204和任何其他类型的存储器(磁盘,光盘,磁带或其他有形介质)可以被认为是“存储器”或“存储设备”。

i/o接口1206可以提供使服务器设备1200与其他系统和设备进行接合的功能。接合的设备可以作为设备1200的一部分包括在内,或者可以与设备1200分离并互相通信。例如,网络通信设备,存储设备(例如,内存和/或数据库106),以及输入/输出设备可以经由i/o接口1206进行通信。在一些实施方式中,i/o接口可以连接到接口设备,诸如,输入设备(键盘,指示设备,触摸屏,麦克风,相机,扫描仪,传感器等)和/或输出设备(显示设备,扬声器设备,打印机,电机等)。

可以连接到i/o接口1206的接口设备的一些示例可以包括,显示设备1220,显示设备1220可以用于显示例如图像,视频的内容和/或如本文所述的输出应用的用户界面。显示设备1220可以经由本地连接(例如,显示总线)和/或经由网络的连接而连接到设备1200,并且可以是任何合适的显示设备。显示设备1220可以包括任何合适的显示设备,例如lcd,led或等离子显示屏,crt,电视,监视器,触摸屏,3d显示屏,或其他可视显示设备。例如,显示设备1220可以是在移动设备上提供的平面显示屏,在护目镜设备中提供的多个显示屏,或者用于计算机设备的监视屏。

i/o接口1206可以与其他输入和输出设备接合。一些示例包括可以捕获图像的一个或多个相机。一些实施方式可以提供用于捕获声音的麦克风(例如,作为捕获图像,语音命令等的一部分),用于输出声音的音频扬声器设备,或其他输入和输出设备。

为了便于说明,图12为处理器1202,内存1204,i/o接口1206,以及软件块1208,1214和1216中的每一个示出了一个块。这些块可以代表一个或多个处理器或处理电路,操作系统,内存,i/o接口,应用和/或软件模块。在其他实施方式中,设备1200可以不具有所有所示的组件和/或可以具有其他元件,该其他元件包括其他类型的元件,其他元件可以替代本文所示的那些元件,或者除了本文所示的那些元件之外还包括其他元件。虽然一些组件被描述为进行如本文的一些实施方式中描述的块和操作,但环境100,设备1200,类似系统的任何合适的组件或组件的组合,或与这种系统相关联的任何合适的一个或多个处理器可进行所描述的块和操作。

这里描述的方法可以通过可以在计算机上执行的计算机程序指令或代码来实施。例如,代码可以由一个或多个数字处理器(例如,微处理器或其他处理电路)实施,并且可以存储在包括非暂时性计算机可读介质(例如,存储介质)的计算机程序产品上,非暂时性计算机可读介质包括例如,磁,光,电磁或半导体存储介质,包括半导体或固态存储器,磁带,可移动计算机磁盘,随机存取存储器(ram),只读存储器(rom),闪存,刚性磁盘,光盘,固态存储器驱动器等。程序指令还可以包含在电子信号中并作为电子信号提供,例如以从服务器(例如,分布式系统和/或云计算系统)递送的软件即服务(saas)的形式。或者,一种或多种方法可以用硬件(逻辑门等)或硬件和软件的组合来实施。示例硬件可以是可编程处理器(例如现场可编程门阵列(fpga),复杂可编程逻辑设备),通用处理器,图形处理器,专用集成电路(asic)等。可以将一个或多个方法作为在系统上运行的应用的一部分或组件来进行,或者作为与其他应用和操作系统一起运行的应用或软件来进行。

以下示例中总结了其他实施方式。

示例1:一种计算机实施的方法,用于在消息应用中提供消息建议,所述方法包括,检测第一用户设备通过通信网络向第二用户设备发送的第一消息;以编程方式分析所述第一消息,以确定与所述第一消息相关联的语义概念;至少部分地基于所述语义概念来识别一个或多个消息贴纸;以及发送使所述一个或多个消息贴纸显示在用户界面中的指令,所述用户界面被显示在所述第二用户设备上。

示例2:如示例1的计算机实施的方法,其中,所述第一消息是所述第一用户设备的第一用户与所述第二用户设备的第二用户之间在所述消息应用中的通信的一部分,所述方法还包括:以编程方式分析所述通信,以确定与所述通信相关联的一个或多个附加语义概念,其中识别所述一个或多个消息贴纸还基于所述一个或多个附加语义概念。

示例3:如示例1和2中任一所述的计算机实施的方法,其中,识别所述一个或多个消息贴纸包括,基于所述语义概念,确定一个或多个建议响应;将与多个消息贴纸相关联的一个或多个描述符与所述一个或多个建议响应进行比较;以及基于所述比较,从所述多个消息贴纸中选择所述一个或多个消息贴纸。

示例4:如示例3所述的计算机实施的方法,其中,所述一个或多个消息贴纸包括多个消息贴纸,并且还包括,基于所述多个消息贴纸中的每个消息贴纸的描述与所述一个或多个建议响应之间的一个或多个对应关系,确定所述多个消息贴纸的各自的排名,其中,发送使所述多个消息贴纸被显示的指令包括,发送指示所述多个消息贴纸的所述各自的排名的指令。

示例5:如示例3和4中任一所述的计算机实施的方法,其中,基于所述比较,从所述多个消息贴纸中选择所述一个或多个消息贴纸包括:检查所述一个或多个描述符与所述一个或多个建议响应之间的对应关系,其中所述对应关系包括至少以下之一:所述一个或多个描述符的词与所述一个或多个建议响应的词之间的字母匹配,以及所述一个或多个描述符与所述一个或多个建议响应之间的语义相似性;以及确定所述一个或多个消息贴纸具有所述一个或多个描述符与所述一个或多个建议响应之间的所述对应关系。

示例6:如示例1-5中任一所述的计算机实施的方法,其中,基于所述比较从所述多个消息贴纸中选择所述一个或多个消息贴纸包括:确定所述一个或多个描述符与所述一个或多个建议响应之间的相似性得分;以及基于所述一个或多个消息贴纸的所述相似性得分,选择所述一个或多个消息贴纸。

示例7:如示例1-6中任一所述的计算机实施的方法,其中,所述一个或多个消息贴纸中的至少一个消息贴纸包括,要显示的图像数据和有效识别所述至少一个消息贴纸的贴纸标识(id)。

示例8:如示例1-7中任一所述的计算机实施的方法,其中,还包括:通过所述一个或多个消息贴纸的特定消息贴纸的用户输入来接收选择;以及响应于接收到所述选择,在所述消息应用中向所述第一用户设备提供所述特定消息贴纸,其中提供所述特定消息贴纸包括以下中的一个或多个:通过所述通讯网络,将所述消息贴纸的贴纸id发送到所述第一用户设备;以及通过所述通信网络,将所述消息贴纸的图像数据发送到所述第一用户设备。

示例9:如示例1-8中任一所述的计算机实施的方法,其中,识别所述一个或多个消息贴纸包括,确定所述第一消息是所述第一用户设备和所述第二用户设备之间的在所述消息应用中的对话的一部分,所述方法还包括:至少部分地基于先前在所述对话中接收的一个或多个消息中的一个或多个语义概念,识别所述一个或多个消息贴纸。

示例10:一种计算机实施的方法,用于在消息应用中提供消息建议,所述方法包括:检测第一用户设备通过通信网络向第二用户设备发送的第一消息,其中所述第一消息包括消息贴纸;以编程方式分析所述消息贴纸,以确定与所述第一消息相关联的语义概念;至少部分地基于所述语义概念,确定一个或多个建议响应;以及发送使所述一个或多个建议响应由所述第二用户设备显示的指令。

示例11:如示例10所述的计算机实施的方法,其中,所述一个或多个建议响应包括至少一个建议消息贴纸响应,所述至少一个建议消息贴纸响应包括消息贴纸。

示例12:如示例11所述的计算机实施的方法,其中,确定所述一个或多个建议响应还包括:将与多个消息贴纸相关联的一个或多个描述符与所述一个或多个建议响应进行比较;以及基于所述比较,从所述多个消息贴纸中选择所述至少一个建议消息贴纸响应。

示例13:如示例11-12中任一项所述的计算机实施的方法,其中,还包括:确定所述消息贴纸存储在所述第二用户设备上。

示例14:如示例10-13中任一项所述的计算机实施的方法,其中,所述方法还包括:基于接收到的給所述第二用户设备的用户输入,接收对所述一个或多个建议响应的至少一个建议响应的选择;以及响应于接收所述选择,通过所述通信网络将所述至少一个建议响应发送到所述第一用户设备。

示例15:如示例10-14中任一项所述的计算机实施的方法,其中,所述消息贴纸与图像数据和贴纸标识(id)相关联。

示例16:一种系统,用于在消息应用中提供消息建议,其特征在于,包括:

存储器;以及至少一个处理器,用于访问所述存储器,以及用于进行以下操作,包括:在第二用户设备接收第一用户设备通过通信网络发送的第一消息;获得与所述第一消息相关联的建议响应,其中所述建议响应是基于通过以编程方式分析所述第一消息而确定的语义概念;至少部分地基于所述建议响应,识别一个或多个消息贴纸,其中所述一个或多个消息贴纸存储在所述第二用户设备上;以及使得所述一个或多个消息贴纸显示在用户界面中,所述用户界面被显示在所述第二用户设备上。

示例17:如示例16所述的系统,其中,获得所述建议响应的操作包括:从服务器设备接收所述建议响应,其中所述服务器设备以编程方式分析所述第一消息,以确定所述语义概念,以及基于从所述语义概念到存储的建议响应的库的映射,确定所述建议响应。

示例18:如示例16-17中任一项所述的系统,其中,所述至少一个处理器还被用于进行以下操作,包括:获得与存储在所述第二用户设备上的多个消息贴纸相关联的多个语义概念;以及将所述多个语义概念与所述建议响应进行比较,其中,至少部分地基于所述建议响应来识别所述一个或多个消息贴纸包括,基于所述比较,从所述多个语义概念中选择所述一个或多个消息贴纸。

示例19:如示例16-18中任一项所述的系统,其中,所述至少一个处理器还进行以下操作,包括:基于接收到的給所述第二用户设备的用户输入,接收对所述一个或多个建议响应的至少一个建议响应的选择;以及响应于接收所述选择,通过所述通信网络将所述至少一个建议响应发送到所述第一用户设备。

示例20:如示例16-19中任一项所述的系统,其中,所述一个或多个消息贴纸的至少一个消息贴纸包括,要显示的图像数据和识别所述至少一个消息贴纸的贴纸标识(id)。

尽管说明书已经描述了关于说明书的特定实施方式,但是这些特定实施方式仅仅是说明性的而非限制性的。在示例中示出的概念可以应用于其他示例和实施方式。

在这里讨论的某些实施方式可能收集或使用关于用户的个人信息(例如,用户数据,关于用户的社交网络的信息,用户的位置和时间,用户的生物识别信息,用户的活动和人口统计信息)的情况下,向用户提供一个或更多机会控制是否收集个人信息,是否存储个人信息,是否使用个人信息,以及如何收集关于用户,存储和使用的信息。也就是说,这里讨论的系统和方法在接收到相关用户的明确授权时才收集,存储和/或使用用户个人信息。另外,某些数据可以在存储或使用之前以一种或多种方式处理,以便移除个人可识别信息。作为一个示例,可以对用户的身份处理,以便不能确定个人可识别信息。作为另一示例,用户的地理地点可以被概括在更大的区域,使得不能确定用户的特定。

注意,如本领域技术人员已知的,本公开中描述的功能块,操作,特征,方法,设备和系统可以被集成或划分为系统,设备和功能块的不同组合。可以使用任何合适的编程语言和编程技术来实施特定实施方式的例程。可以采用不同的编程技术,例如程序性或面向对象。例程可以在单个处理设备或多个处理器上执行。虽然步骤,操作或计算可以以特定顺序呈现,但是可以在不同的特定实施方式中改变顺序。在一些实施方式中,可以同时进行在本说明书中按顺序示出的多个步骤或操作。

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