基于接收方的电子消息的文本预测
背景技术:[0001]
一些计算系统提供电子消息传递(例如,电子邮件)服务,其有助于计算设备的用户之间的快速且容易的通信。起草和以其他方式编辑电子消息可能很麻烦并且花费大量时间,这可能导致电子消息的使用减少和/或信息通信效率低下。
技术实现要素:[0002]
在本公开的一般技术中,涉及基于电子消息的接收方来实现用于编辑电子消息的文本预测。描述了一种示例计算系统(例如电子邮件系统),其被配置为向正在编辑电子消息的用户提供建议文本。例如,在用户在接收方(即,收信人)中输入电子消息之后,计算系统可以预测并提供电子消息的正文的候选文本。计算系统可以基于用户使用的先前文本来预测候选文本(例如,计算系统可以利用在用户先前发送的电子消息上训练的一个或多个机器学习模型)。以这种方式,计算系统可以增加编写电子消息的速度。
[0003]
在一个实例中,一种方法包括由计算系统从与用户相关联的消息帐户接收正在编辑的电子消息的接收方的标识;由所述计算系统基于从所述消息帐户发送的先前电子消息中包含的文本,预测所述电子消息的正文的文本;以及将预测的文本输出用于显示,以供任意选择并插入到电子消息的正文中。
[0004]
在另一示例中,一种计算系统包括一个或多个用户界面组件,其被配置为接收键入的用户输入;以及一个或多个处理器。在该示例中,所述一个或多个处理器被配置为:从与用户相关联的消息帐户接收正在编写的电子消息的接收方的标识;基于从所述消息帐户发送的先前电子消息中包含的文本,预测所述电子消息的正文的文本;以及输出预测的文本用于显示,用于任意选择和插入到电子消息的正文中。
[0005]
在另一个示例中,描述了一种计算机可读存储介质,其包括指令,当执行所述指令时,使得计算系统的至少一个处理器从与用户相关联的消息帐户接收正在编写的电子消息的接收方的标识;基于从所述消息帐户发送的先前电子消息中包含的文本,预测所述电子消息的正文;以及输出预测的文本以显示,用于任意选择和插入到电子消息的正文中。
[0006]
在另一个例子中,描述了一种系统,其包括用于从与用户相关联的消息帐户接收正在编写的电子消息的接收方的标识的装置;用于基于从所述消息帐户发送的先前电子消息中包含的文本来预测所述电子消息的正文的文本的装置;以及用于输出用于显示的预测文本、用于任意选择和插入到电子消息正文中的装置。
[0007]
在整个公开中,描述了其中计算设备和/或计算系统可以分析与计算设备的用户相关联的信息(例如,电子邮件,其它通信等)的示例,仅当计算设备和/或计算系统从计算设备的用户接收到对信息进行分析的显式许可时。例如,在以下讨论的情况下,其中计算设备和/或计算系统可以收集或利用与用户和计算设备相关联的通信信息,可以向用户提供机会来提供输入以控制计算设备和/或计算系统的程序或特征是否可以收集和利用用户信息(例如,关于用户的电子邮件,用户的社交网络的信息)。社交动作或活动,职业,用户的偏好,或用户的过去和当前位置),或者指示计算设备和/或计算系统是否和/或如何可以接收
可能与用户相关的内容。此外,在计算设备和/或计算系统存储或使用某些数据之前,可以以一种或多种方式来处理这些数据,从而去除个人可识别信息。例如,可以对待用户的身份,从而不能确定关于用户的个人可识别信息,或者可以在获得位置信息的地方(例如到城市,邮政编码或州级)对用户的地理位置进行概括,从而不能确定用户的特定位置。因此,用户可以控制如何收集关于用户的信息并由计算设备和/或计算系统使用。
[0008]
在附图和下面的描述中阐述了一个或多个示例的细节。从说明书和附图以及从权利要求书中,本公开的其它特征,目的和优点将是显而易见的。
附图说明
[0009]
图1a示出根据本发明的一个或多个方面的被配置为可向编辑电子消息的用户提供预测文本建议的实例通信系统的概念图。
[0010]
图1b示出根据本公开的一个或多个方面的用于电子消息编辑的示例用户界面的概念图。
[0011]
图2是说明根据本发明的一个或多个方面的被配置为可向编辑电子消息的用户提供预测文本建议的实例计算系统的框图。
[0012]
图3a到3e是图解说明根据本发明的实例实施方案的实例机器学习模型的方面的概念图。下面在图2的模型267的上下文中描述图3a到3e。例如,在某些情况下,如下所述,机器学习的模型300可以是模型267的示例。
[0013]
图4是说明根据本发明的一个或多个方面的由被配置为可向编辑电子消息的用户提供预测文本建议的实例计算系统执行的实例操作的流程图。
具体实施方式
[0014]
图1a是说明根据本发明的一个或多个方面的被配置为可向编辑电子消息的用户提供预测文本建议的实例通信系统的概念图。图1b是示出根据本公开的一个或多个方面的用于电子消息编辑的示例用户界面的概念图。图1a的系统100包括经由网络130与计算设备110通信的消息系统160。尽管系统100被示出为分布在消息系统160和计算设备110之间,但是在其它示例中,归因于系统100的特征和技术可以由计算设备110的本地组件在内部执行。
[0015]
网络130表示用于在计算系统,服务器和计算设备之间传输数据的任何公共或专用通信网络,例如蜂窝,wi-fi和/或其它类型的网络。当计算设备110连接到网络130时,消息系统160可以经由网络130与计算设备110交换数据,以提供计算设备110可访问的消息传递服务。网络130可以包括一个或多个网络集线器,网络交换机,网络路由器或任何其他网络设备,它们可操作地相互连接,从而提供消息系统160和计算设备110之间的信息交换。计算设备110和消息系统160可以使用任何合适的通信技术通过网络130发送和接收数据。计算设备110和消息系统160可以各自使用各自的网络链路可操作地连接到网络130。将计算设备110和消息系统160连接到网络130的链路可以是以太网或其它类型的网络连接,并且这种连接可以是无线和/或有线连接。
[0016]
消息系统160表示任何合适的远程计算系统,例如一个或多个台式计算机,膝上型计算机,大型机,服务器,云计算系统等,其被配置为主存电子消息传递服务。例如,消息系
统160可以是被配置为提供电子邮件消息传递服务的一个或多个邮件服务器。计算设备110表示被配置成访问由消息系统160提供的消息传递服务的单独的移动或非移动计算设备。计算设备110的示例包括移动电话,平板计算机,膝上型计算机,台式计算机,服务器,大型机,机顶盒,电视,可佩戴设备(例如,计算机化手表,计算机化眼镜,计算机化手套等),家庭自动化设备或系统(例如,智能恒温器或安全系统),语音接口或桌面家庭助理设备,个人数字助理(pda),游戏系统,媒体播放器,电子书阅读器,移动电视平台,汽车导航或信息娱乐系统,或配置成访问电子消息传递服务的任何其它类型的移动,非移动,可佩戴和非可佩戴计算设备。
[0017]
消息系统160包括预测模块164和消息传递服务模块162;计算设备110包括用户接口组件("uic")112,用户接口("ui")模块120和消息客户端模块122。模块120,122,162和164可以使用驻留在计算设备110中和/或在计算设备110处执行的软件,硬件,固件或硬件,软件和固件的混合来执行本公开所述的操作。计算设备110和消息系统160可以利用多个处理器或多个设备,作为在底层硬件上执行的虚拟机,作为操作系统或计算平台的一个或多个服务,和/或作为计算设备110或消息系统160的计算平台的应用层处的一个或多个可执行程序来执行模块120,122,162和164。
[0018]
计算设备110的uic 112用作计算设备110的输入和/或输出设备。可以使用各种技术来实现uic 112。例如,uic 112可以用作使用存在敏感输入屏幕,麦克风技术,红外传感器技术或用于接收用户输入的其它输入设备技术的输入设备。uic 112可以用作输出设备,其被配置为使用用于向用户输出信息的任何一个或多个显示设备,扬声器技术,触觉反馈技术或其它输出设备技术向用户呈现输出。作为输入设备,uic 112检测来自计算设备110的用户的输入(例如,触摸和非触摸输入)。由用户执行的用户输入手势的示例(例如,用户用手指或触笔在uic 112的一个或多个位置处或附近触摸,指向和/或刷)。作为输出设备,uic 112以图形用户界面的形式向用户呈现信息(例如,可听,可视和/或触觉信息)。
[0019]
计算设备110的ui模块120控制uic 112,包括确定uic 112呈现什么以及在uic 112和计算设备110的其它应用或组件之间交换什么信息。例如,在控制uic 112显示什么时,ui模块120可以从计算设备110的组件(例如消息客户端模块122)接收信息,用于生成用户界面113及其元素。作为响应,ui模块120可以向uic 112输出指令和信息,该指令和信息使得uic 112根据从消息客户端模块122接收的信息来显示用户界面113的用户界面。当处理由uic 112检测到的输入时,ui模块120可以响应于在uic 112的屏幕的位置处检测到的输入而从uic 112接收信息,在uic 112的屏幕的位置处显示用户界面113的元素。ui模块120将关于由uic 112检测到的输入的信息传播到计算设备110的其它组件,用于解释输入并用于使计算设备110响应于输入而执行一个或多个功能。
[0020]
用户界面113a-113f(统称为"用户界面113")表示计算设备110的用户可以从其与计算设备110所访问的消息传递服务(例如,消息系统160所提供的消息传递服务)交互的图形用户界面。如图1a和1b所示,用户界面113中的每一个都包括当前编写的消息的视图。具体地,用户界面113a和113b包括编写的第一消息(即,第一电子消息114a)的相应视图,用户界面113c包括编写的第二消息(即,第二电子消息114b)的视图,用户界面113d和113e包括编写的第三消息(即,第三电子消息114c)的相应视图,并且用户界面113f包括编写的第四消息(即,第四电子消息114d)的视图。
[0021]
消息客户端模块122和消息传递服务模块162经由网络130通信以向计算设备110提供消息传递服务。消息传递服务的示例包括:电子邮件服务,文本消息传递服务,简单服务消息传递,社交媒体消息传递服务,语音消息传递服务,视频消息传递服务,或有助于交换人类可读电子消息的任何其它服务。如贯穿本公开所使用的,术语"电子消息"用于一般地描述可以在计算设备之间传输的任何类型的人类可读电子消息。电子消息的例子包括:即时消息,聊天消息,电子邮件(e-mail)消息,社交媒体通信,语音邮件消息,视频消息,或通过计算设备访问的任何其它类型的个人对个人通信。
[0022]
消息客户端模块122提供消息传递服务的前端、面向用户的功能,而消息传递服务模块162支持在网络130上实现消息传递服务所需的后端操作。消息客户端模块122可以用作计算设备110从其访问存储在消息系统160和/或计算设备110处的电子消息的入口。消息客户端模块122可以提供编辑接口,用户可以通过该编辑接口编写新的电子消息和/或回复或转发存储在消息系统160和/或计算设备110处的电子消息。编写新的电子消息,重放电子消息和转发电子消息可以被共同认为是编辑电子消息。消息客户端模块122可以是电子邮件应用,web应用或在计算设备110处执行的其它模块,其与消息系统160通信以向计算设备110的用户提供对消息系统160和/或计算设备110处维护的消息的访问。
[0023]
消息传递服务模块162处理经由网络130从计算设备110以及经由网络130通信的其它计算设备和消息传递系统接收的电子消息。消息客户端模块122处理经由网络130从消息系统160接收的入站电子消息,并经由网络130将出站电子消息发送到消息传递服务模块162以用于进一步处理。
[0024]
消息客户端模块122和消息传递服务模块162维护与计算设备110的用户相关联的消息传递帐户。也就是说,从计算设备110发送或由计算设备110接收的消息可以被存储在与计算设备110的用户相关联的消息传递帐户的发件箱或收件箱中。可以在计算设备110和/或消息系统160的存储器中维护发件箱和收件箱。
[0025]
在简单的情况下,当处理去往计算设备110的入站消息时,消息传递服务模块162接收(例如,经由网络130)用于处理的电子消息。消息传递服务模块162(例如,根据电子消息的元数据)确定电子消息的一个或多个接收方。如果接收方之一是与计算设备110的用户相关联的消息传递帐户,则消息传递服务模块162可以使电子消息的副本存储在与计算设备110的用户相关联的消息传递帐户的收件箱中,无论该消息传递帐户是本地存储在消息系统160还是计算设备110。
[0026]
同样,当处理源自计算设备110的出站消息时,消息传递服务模块162接收(例如,经由网络130)用于处理的电子消息。消息传递服务模块162(例如,根据电子消息的元数据)确定电子消息的一个或多个接收方,并将消息发送到与一个或多个接收方相关联的设备或消息系统。消息传递服务模块162可以使得所发送的电子消息的副本作为所发送的项目被存储在与计算设备110的用户相关联的消息传递帐户中,无论该消息传递帐户是本地存储在消息系统160还是计算设备110处。
[0027]
如上所述,消息客户端模块122可以提供编辑接口,用户可以通过该编辑接口编辑电子消息。例如,为了能够编辑第一电子消息114a,消息客户端模块122可以输出用户接口113a,该用户接口113a包括报头字段115和消息正文116中的一个或多个。报头字段115可以包括地址字段(例如,to,cc,bcc等)和主题行。消息客户端模块122可以与系统100的一个或
多个其它组件交互以帮助用户进行电子消息编辑。例如,根据本公开的一个或多个技术,消息客户端模块122可以与预测模块164交互,以基于先前发送的消息中包括的文本来自动建议消息正文的文本。
[0028]
在一些示例中,消息客户端模块122可以与预测模块164交互,以基于包括在先前发送到电子消息的接收方的消息中的文本来自动建议消息正文的文本。如用户界面113a所示,其中接收方电子邮件地址"jackie@example.com"已经被填充在报头字段115的"to"字段中,消息客户端模块122可以与预测模块164交互,以基于第一电子消息113a的接收方是jackie的标识,自动在第一电子消息113a的消息正文116中建议问候"hi jackie"。如图1a所示,消息客户端模块122可以在用户在消息正文116中输入任何文本之前建议消息正文116的文本。
[0029]
在一些示例中,消息客户端模块122可以与预测模块164交互,以基于包括在先前发送给除了电子消息的接收方之外的人(例如,帐户)的消息中的文本来自动地建议消息正文的文本。例如,在接收方电子邮件地址"jackie@example.com"已经被填充在报头字段115的"to"字段中的情况下,消息客户端模块122可以基于发送给除jackie之外的人的电子消息而自动地建议消息正文116的文本。
[0030]
在一些示例中,消息客户端模块122可以与预测模块164交互,以基于先前发送到电子消息的接收方的消息中所包括的文本和先前发送到除电子消息的接收方以外的人的消息中所包括的文本来自动建议消息正文的文本。例如,在接收方电子邮件地址"jackie@example.com"已经被填充在报头字段115的"to"字段中的情况下,消息客户端模块122可以基于发送给除jackie之外的人的电子消息和发送给jackie的电子消息自动地建议消息正文116的文本。
[0031]
消息系统160的预测模块164被配置成在电子消息编辑期间自动提供文本建议。尽管被示为消息系统160的一部分,但是在一些示例中,预测模块164的一些或全部作为计算设备110的一部分执行,其中预测模块164被配置为在电子消息编辑期间自动提供文本建议。
[0032]
为了提供文本建议,预测模块164可以接收正被编辑的电子消息的接收方(或多个接收方)的标识。接收到的接收方的标识可以包括电子邮件地址,姓名或电子消息的接收方/接收方的任何其它标识符。
[0033]
基于接收到的接收方的标识,预测模块164可以预测要插入到消息正文116中的文本的一个或多个候选部分。预测模块164可以使用任何数量的技术来预测文本的候选部分。例如,预测模块164可以基于包含在由用户发送的(即,从与用户相关联的消息传递帐户发送的)寻址到所标识的接收方的先前电子消息中的文本来预测文本的候选部分。在一些实例中,预测模块164可利用一个或多个机器学习模型来产生文本的一个或多个候选部分。在第一电子消息114a的示例中,基于被识别为jackie的接收方,预测模块164可以生成文本的以下候选部分"hi jackie","hi","hello","dear jackie"。
[0034]
预测模块164可以确定候选部分的排名得分或其它精确度或置信度的指示。在第一电子消息114a的示例中,预测模块164可以确定"hi jackie"是文本的候选部分的最高排序/最可能精确的。
[0035]
预测模块164可将文本的一个或多个候选部分输出到系统100的一个或多个其它
组件,例如消息客户端122或uic 112。在一些示例中,预测模块164可以输出文本的所有候选部分。在一些实例中,预测模块164可输出比文本的所有候选部分少的候选部分。例如,预测模块164可以仅输出n(例如,1,2,3,4,5等)个最高排序/最可能精确的文本部分。
[0036]
消息客户端122可以输出文本的一个或多个候选部分中的至少一个,以便显示给用户。例如,消息客户端122可以使uic 112输出包括文本的至少一个候选部分的用户界面。如图1a所示,uic 112可以输出用户界面113a,该用户界面113a包括最高排序/最可能是精确的文本候选部分"hi jackie"。显示的文本的候选部分的格式化可以是相同或不同的用户输入文本。例如,如用户界面113a中所示,文本的候选部分以较轻的权重类型(例如,50%灰色)显示,具有下划线,而用户输入的文本可以以较重的权重类型(例如,黑色)显示。其它格式化差异,例如粗体,斜体,突出显示,字体大小等也是可以预期的。
[0037]
计算设备110的用户可以接受或拒绝所显示的建议。例如,用户可以在uic 112处提供第一用户输入(例如,命中输入键)以接受所显示的建议。响应于接收到第一用户输入的指示,消息客户端122可以使uic 112输出具有被格式化为用户输入文本的显示的文本的候选部分的用户界面。例如,消息客户端122可以使uic 112输出用户界面113,该用户界面113以较重的权重类型示出文本的候选部分,而不用下划线。
[0038]
或者,用户可在uic 112处提供第二用户输入以拒绝所显示的建议。例如,如用户界面113b所示,uic 112可以接收包括文本"hey jackie"的第二用户输入。当该文本由用户输入时,文本"hey jackie"不被格式化为文本的候选部分,而是被格式化为常规用户输入的文本。
[0039]
预测模块164可以接收用户未接受所建议的文本的指示。在一些示例中,预测模块164还可以接收用户输入什么文本来代替所建议的文本的指示。例如,在uic 112接收到包括文本"hey jackie"的第二用户输入之后,预测模块164可以接收到这样的指示,即,当向jackie@example.com编辑电子邮件时,用户输入了与"hi jackie"相反的文本"hey jackie"。预测模块164可基于此反馈修改其操作。例如,在预测模块164使用机器学习模型来预测文本的情况下,预测模块164可以进一步基于反馈来训练机器学习模型。
[0040]
这样,或者用户下次编写到jackie@example.com的消息(或者在多轮反馈之后),预测模块164可以修改建议文本(例如,为了符合用户已经输入的文本而不是先前建议的文本)。例如,如用户界面113c所示,当用户正在编写寻址到jackie@example.com的第二电子消息114b时,预测模块164可以预测与"hi jackie"相反的文本"hey jackie"。
[0041]
电子消息可以具有多个接收方(即,可以寻址到多个人)。在这种情况下,预测模块164可以接收每个接收方的标识,并且基于用户在寻址到该组接收方的电子消息中使用的过去的文本来预测电子消息正文的文本。例如,如用户界面113d所示,用户可以编写到jackie@example.com和ben@example.com的第三电子消息114c。基于接收方(jackie和ben)的身份,预测模块164可以预测第三电子消息114c的正文116的文本"hi jackie和ben",并且可以输出预测的文本以用于可选的选择和插入。如同在单个接收方情境中一样,编写电子消息的用户可以接受或拒绝该建议。如用户界面113e所示,用户可以通过提供包括文本"hey team"的用户输入来拒绝建议。预测模块164可以从拒绝和随后的用户输入中获知,使得在用户正在编写到jackie@example.com和ben@example.com的第四电子消息114d的将来时间,预测模块164可以预测与"hi jackie和ben"相反的文本"hey team"。
[0042]
通过基于接收方的标识提供所建议的文本,示例计算系统可以提高消息传递服务的可用性。这种自动化可以促进与示例性计算系统的更有效的用户交互,从而使得示例性计算系统接收比不以这种方式选择性地提供文本建议的其他计算系统更少的错误输入或更少的输入。因此,与其它计算系统相比,示例计算系统可以执行更少的操作(或者,换句话说,利用更少的处理器周期),并且可以消耗更少的电能和/或导致电池功率节省。此外,示例性计算系统可以提供不那么令人厌烦和更加令人愉快的用户体验。
[0043]
在整个公开中,描述了其中计算设备和/或计算系统可以分析与计算设备的用户相关联的信息(例如,电子邮件,其它通信等)的示例,仅当计算设备和/或计算系统从计算设备的用户接收到对信息进行分析的显式许可时。例如,在以下讨论的情况下,其中计算设备和/或计算系统可以收集或利用与用户和计算设备相关联的通信信息,可以向用户提供机会来提供输入以控制计算设备和/或计算系统的程序或特征是否可以收集和利用用户信息(例如,关于用户的电子邮件,用户的社交网络的信息,社交动作或活动,职业,用户的偏好,或用户的过去和当前位置),或者指示计算设备和/或计算系统是否和/或如何可以接收可能与用户相关的内容。此外,在计算设备和/或计算系统存储或使用某些数据之前,可以以一种或多种方式来处理这些数据,从而去除个人可识别信息。例如,可以对待用户的身份,从而不能确定关于用户的个人可识别信息,或者可以在获得位置信息的地方(例如到城市,邮政编码或州级)对用户的地理位置进行概括,从而不能确定用户的特定位置。因此,用户可以控制如何收集关于用户的信息并由计算设备和/或计算系统使用。
[0044]
图2是说明根据本发明的一个或多个方面的实例计算系统的框图,所述实例计算系统被配置为可选择性地向编辑电子消息的用户提供预测文本建议。
[0045]
下面将图2的消息系统260描述为图1a的消息系统160的示例。图2仅示出了消息系统260的一个特定示例,并且消息系统260的许多其他示例可以在其他情况下使用,并且可以包括消息系统260中包括的组件的子集,或者可以包括图2中未示出的附加组件。
[0046]
如图2的示例所示,消息系统260包括一个或多个处理器240,一个或多个通信单元242和一个或多个存储组件248。消息系统260的存储组件248包括消息传递服务模块262,预测模块264,主题模块266,以及包括收件箱269a和发件箱269b的消息帐户268。预测模块264包括机器学习(ml)模型267。主题模块266包括ml模型271。
[0047]
通信信道250互连组件240,242和248中的每一个以用于组件间的通信(物理地,通信地和/或操作地)。在一些示例中,通信信道250可以包括系统总线,网络连接,进程间通信数据结构或用于传送数据的任何其它方法。
[0048]
一个或多个通信单元242通过在一个或多个网络上发送和/或接收网络信号,经由一个或多个有线和/或无线网络与外部设备通信。通信单元242的示例包括网络接口卡(例如,诸如以太网卡),光收发器,射频收发器,gps接收器或可发送和/或接收信息的任何其它类型的设备。通信单元242的其它示例可以包括短波无线电,蜂窝数据无线电,无线网络无线电,以及通用串行总线(usb)控制器。
[0049]
一个或多个存储组件248存储用于在消息系统260的操作期间处理的信息。在一些示例中,存储组件248是临时存储器,意味着存储组件248的主要目的不是长期存储。消息系统260上的存储组件248可以被配置用于将信息短期存储为易失性存储器,并且因此如果断电则不保留所存储的内容。易失性存储器的示例包括随机存取存储器(ram),动态随机存取
存储器(dram),静态随机存取存储器(sram)以及本领域已知的其它形式的易失性存储器。
[0050]
在一些示例中,存储组件248还包括一个或多个计算机可读存储介质。在一些示例中,存储组件248包括一个或多个非暂时性计算机可读存储介质。存储组件248可被配置为可存储比通常由易失性存储器存储的更大量的信息。存储组件248可进一步被配置为可将信息长期存储为非易失性存储器空间并在通电/断电循环之后保留信息。非易失性存储器的示例包括磁硬盘,光盘,软盘,闪存,或电可编程存储器(eprom)或电可擦除可编程(eeprom)存储器的形式。存储组件248可存储与消息帐户268,模块262和264以及ml模型267相关联的程序指令和/或信息(例如,数据)。存储组件248可包括被配置为可存储与消息帐户268,模块262和264以及ml模型267相关联的数据或其它信息的存储器。
[0051]
一个或多个处理器240可以实现与消息系统260相关联的功能和/或执行指令。处理器240的示例包括应用处理器,显示控制器,辅助处理器,一个或多个传感器集线器,以及被配置成用作处理器,处理单元或处理设备的任何其它硬件。消息帐户268,模块262和264以及ml模型267可以包括可由处理器240操作以执行消息系统260的各种动作,操作或功能的指令。例如,处理器240可以检索和执行由存储组件248存储的指令,这些指令使得处理器240执行这里描述的归因于消息帐户268,模块262和264以及ml模型267的操作。所述指令在由处理器240执行时可致使消息系统260将信息存储在存储组件248内,例如,存储在消息帐户268处。
[0052]
消息传递服务模块262可以包括图1a的消息传递服务模块162的所有功能,并且可以执行与消息传递服务模块162类似的操作,以便配置消息系统260来提供基于网络的消息传递服务。消息传递服务模块262处理经由网络(例如网络130)接收的电子消息。消息传递服务模块262维护与计算设备110的用户相关联的消息帐户268。消息传递服务模块262接收到的寻址到消息帐户268的消息被存储在消息帐户268的收件箱269a中。而由消息传递服务模块262接收的从消息帐户268发送的消息被存储在发件箱269b中。消息帐户268的副本可以被复制并本地存储在其他计算设备,例如计算设备110。也就是说,对于消息传递服务模块262对消息帐户268执行的任何动作,消息传递服务模块262可以使客户端(例如消息客户端模块122)执行与存储在别处并且远离消息系统260的消息传递帐户268的副本类似的动作。
[0053]
预测模块264可以包括图1a的预测模块164的所有功能,并且可以执行与预测模块164类似的操作。如上所述并且根据本公开的一个或多个技术,预测模块264可以基于电子消息的接收方自动地为电子消息正文提供文本建议。尽管被示出和描述为是作为远程消息传递系统的消息系统260的一部分,但是预测模块264中的一些或全部可以本地驻留在计算设备(例如图1a的计算设备110)上,并且可以从计算设备执行。
[0054]
预测模块264可使用ml模型267来产生文本的候选部分。例如,预测模块264可以向ml模型267提供当前正被编辑的消息的接收方(或多个接收方)的标识。基于接收方的标识,ml模型267可以生成为消息正文预测的文本的一个或多个候选部分。
[0055]
在一些示例中,文本的候选部分可以包括消息的问候语。问候语可以包括或不包括接收方的姓名。例如,在接收方的姓名是charlie的情况下,问候语可以包括单词charlie(或其变体)(例如,"hi charlie","hello charlie","sup chuck","charlie"等),或者可以不包括单词charlie(或其变体)(例如,"hi","hello","sup","heyyy"等)。问候语可以包
括或可以不包括除了接收方的姓名或称呼之外的一个或多个单词。
[0056]
ml模型267可以通过为问候语数据库中的多个问候语计算得分来生成问候语。例如,ml模型267可以生成第一问候语(例如,"hi")的得分,第二问候语(例如,"hello")的得分,第三问候语(例如,"dear")的得分,
……
和第n问候语的得分。每个得分可以指示它们相应的问候语将被消息的编写者接受的可能性。ml模型267可以选择具有最有利得分的问候语(即,具有被消息的编写者接受的最高可能性的问候语)作为文本的候选部分。
[0057]
ml模型267可以使用任何合适的技术来计算得分。作为一个例子,ml模型267可以基于编写者已经使用问候语的频率来计算得分。例如,ml模型267可以计算比编写者使用频率更低的问候语更有利的问候语得分。作为另一个例子,ml模型267可以基于编写者使用该问候语的新近度来计算得分。例如,ml模型267可以计算比编写者在过去进一步使用的问候语更新近使用的问候语的更有利的得分。
[0058]
ml模型267所使用的频率和/或新近性度量可以是基于接收方的。作为一个示例,ml模型267可以计算比编写者与消息的接收方使用频率更低的问候语对于编写者与消息的接收方使用频率更高的问候语更有利的得分。作为另一个例子,ml模型267可以计算比编写者最近与消息的接收方一起使用的更有利的问候语得分。
[0059]
在一些示例中,文本的候选部分可以包括除了消息的问候语之外的文本。例如,如果用户频繁地开始发往具有"hi team,请记住这周提交您的tps报告"的特定接收方集合的消息。
[0060]
ml模型267可以是机器学习的模型(例如,神经网络,长期-短期存储器模型,或任何其它类型的模型)。ml模型267可以开发规则或以其它方式学习在消息正文(例如,寻址到特定接收方集合的消息)中通常使用的文本。利用先前从用户获得的使用和分析他们的电子消息的明确许可,用于训练ml模型267的文本的训练语料库可以包括用户过去的电子消息。消息系统260进一步为用户提供撤销同意书以利用和分析他们的电子消息的方式,并且作为响应,消息系统260停止分析那些撤销同意书的消息。
[0061]
如上所述,ml模型267可以通过为问候语数据库中的多个问候语计算得分来生成问候语。ml模型267,或系统100的另一组件,可以更新或修改问候语数据库中的条目。例如,ml模型267可以分析先前由当前消息的编写者发送的消息,以识别编写者使用的问候语,并相应地更新数据库。作为一个示例,如果所标识的问候语已经被包括在数据库中,则ml模型267可以更新所标识的问候语的一个或多个试探法(例如,所标识的问候语的使用频率,所标识的问候语的使用新近等)。作为另一个例子,如果所标识的问候语尚未包括在数据库中,则ml模型267可以为数据库中的所标识的问候语创建新的条目。
[0062]
ml模型267可以周期性地执行数据库更新。例如,ml模型267可以基于由编写者在特定时间间隔(例如,每天,每周,每月等)发送的附加消息或者在由编写者发送的一定数量的消息(例如,每一个,五个,十个,二十个,五十个消息等)之后发送的附加消息来更新数据库。
[0063]
图3a描绘根据本发明的实例实施方案的实例机器学习模型的概念图。如图3a所示,在一些实施方式中,训练机器学习模型300以接收一个或多个类型的输入数据,并且作为响应,提供一个或多个类型的输出数据。因此,图3a示出了执行推断的机器学习模型300。
[0064]
输入数据可以包括与实例或示例相关联的一个或多个特征。在一些实施方式中,
可以将与实例或实例相关联的一个或多个特征组织成特征向量。在一些实施方式中,输出数据可以包括一个或多个预测。预测也可被称为推断。因此,给定与特定实例相关联的特征,机器学习模型300可基于特征输出对该实例的预测。
[0065]
机器学习模型300可以是或包括各种不同类型的机器学习模型中的一个或多个。特别地,在一些实施方式中,机器学习模型300可以执行分类,回归,聚类,异常检测,推荐生成和/或其它任务。
[0066]
在一些实施方式中,机器学习模型300可以基于输入数据执行各种类型的分类。例如,机器学习模型300可以执行二进制分类或多类分类。在二进制分类中,输出数据可以包括将输入数据分类为两个不同类中的一个。在多类分类中,输出数据可以包括将输入数据分类为多于两个类别中的一个(或多个)。分类可以是单标记或多标记。机器学习模型300可以执行离散分类,其中输入数据被简单地分类为一个或多个类或类别。
[0067]
在一些实施方式中,机器学习模型300可以执行分类,其中机器学习模型300为一个或多个类中的每一个提供描述被认为输入数据应该被分类到相应类中的程度的数值。在一些情况下,由机器学习模型300提供的数值可以被称为"置信度得分",其表示与将输入分类到相应类中相关联的相应置信度。在一些实施方式中,可以将置信度得分与一个或多个阈值进行比较,以呈现离散的分类预测。在一些实施方式中,可以仅选择具有相对最大置信度得分的特定数量的类(例如,一个)来呈现离散的分类预测。
[0068]
机器学习模型300可以输出概率分类。例如,机器学习模型300可以在给定采样输入的情况下预测一组类上的概率分布。因此,不是仅输出样本输入应该属于的最可能的类,而是机器学习模型300可以为每个类输出样本输入属于该类的概率。在一些实施方式中,在所有可能的类上的概率分布可以求和为1。在一些实施方式中,可以使用softmax函数或其它类型的函数或层来将分别与可能的类相关联的一组实数值压制为范围(0,1)中的一组实数值,其总和为1。
[0069]
在一些示例中,由概率分布提供的概率可以与一个或多个阈值进行比较,以呈现离散的分类预测。在一些实施方式中,可以仅选择具有相对最大预测概率的特定数量的类(例如,一个)来呈现离散的分类预测。
[0070]
在机器学习模型300执行分类的情况下,可以使用监督学习技术来训练机器学习模型300。例如,机器学习模型300可以在包括被标记为属于(或不属于)一个或多个类的训练示例的训练数据集中被训练。下面在图3b到3e的描述中提供关于监督训练技术的进一步细节。
[0071]
在一些实施方式中,机器学习模型300可以执行回归以提供连续数值形式的输出数据。连续数值可对应于任何数量的不同度量或数字表示,包括例如货币值,得分或其它数字表示。作为示例,机器学习模型300可以执行线性回归,多项式回归或非线性回归。作为示例,机器学习模型300可以执行简单回归或多元回归。如上所述,在一些实施方式中,softmax函数或其它函数或层可用于将分别与两个或更多个可能的类相关联的一组实数值压缩为总和为1的范围(0,1)中的一组实数值。
[0072]
机器学习模型300可以执行各种类型的聚类。例如,机器学习模型300可以识别输入数据最可能对应的一个或多个先前定义的聚类。机器学习模型300可以识别输入数据内的一个或多个聚类。也就是说,在输入数据包括多个对象,文档或其它实体的情况下,机器
学习模型300可以将包括在输入数据中的多个实体分类成多个聚类。在机器学习模型300执行聚类的一些实施方式中,机器学习模型300可以使用无监督学习技术来训练。
[0073]
机器学习模型300可以执行异常检测或离群值检测。例如,机器学习模型300可以识别不符合(例如,如先前从先前输入数据所观察到的)预期模式或其它特性的输入数据。作为示例,异常检测可以用于欺诈检测或系统故障检测。
[0074]
在一些实施方式中,机器学习模型300可以以一个或多个推荐的形式提供输出数据。例如,机器学习模型300可以被包括在推荐系统或引擎中。例如,给定描述某些实体的先前结果(例如,表示成功或享受的量的得分,等级或评级)的输入数据,机器学习模型300可以输出一个或多个附加实体的建议或建议,所述附加实体基于先前的结果预期具有期望的结果(例如,引发表示成功或享受的得分,等级或评级)。作为一个示例,给定描述计算设备(例如图1的计算设备110)的情境的输入数据,消息系统(例如图1的消息系统160)可以输出用户可能希望插入到电子消息中的预测文本的建议或推荐。
[0075]
在某些情况下,机器学习模型300可以充当环境内的代理。例如,可以使用加强学习来训练机器学习的模型300,这将在下面进一步详细讨论。
[0076]
在一些实施方式中,机器学习模型300可以是参数模型,而在其它实施方式中,机器学习模型300可以是非参数模型。在一些实施方式中,机器学习模型300可以是线性模型,而在其它实施方式中,机器学习模型300可以是非线性模型。
[0077]
如上所述,机器学习模型300可以是或包括各种不同类型的机器学习模型中的一个或多个。以下提供这种不同类型的机器学习模型的示例以用于说明。可以使用(例如,组合)下面描述的一个或多个示例模型来响应于输入数据提供输出数据。也可以使用除了下面提供的示例模型之外的其它模型。
[0078]
在一些实施方式中,机器学习模型300可以是或包括一个或多个分类器模型,例如线性分类模型;二次分类模型等。机器学习模型300可以是或包括一个或多个回归模型,例如简单线性回归模型;多元线性回归模型;logistic回归模型;逐步回归模型;多元自适应回归样条函数;局部估计的散点图平滑模型等。
[0079]
在一些示例中,机器学习模型300可以是或包括一个或多个基于决策树的模型,例如分类和/或回归树;迭代二分法3决策树;c4.5决策树;卡方自动交互检测决策树;决策残端;条件决策树等。
[0080]
机器学习模型300可以是或包括一个或多个内核机器。在一些实施方式中,机器学习模型300可以是或包括一个或多个支持向量机。机器学习模型300可以是或包括一个或多个基于实例的学习模型,例如学习矢量量化模型;自组织地图模型;局部加权学习模型等。在一些实施方式中,机器学习模型300可以是或包括一个或多个最近的邻居模型,例如k最近的邻居分类模型;k-最近邻回归模型等。机器学习模型300可以是或包括一个或多个贝叶斯模型,例如,下一贝叶斯模型;高斯朴素贝叶斯模型;多项朴素贝叶斯模型;平均单相关性估计;贝叶斯网络;贝叶斯信念网络;隐马尔可夫模型等。
[0081]
在一些实施方式中,机器学习模型300可以是或包括一个或多个人工神经网络(也简称为神经网络)。神经网络可以包括一组连接的节点,其也可以被称为神经元或感知器。神经网络可以被组织成一个或多个层。包括多层的神经网络可以被称为"深度"网络。深度网络可以包括输入层,输出层和位于输入层和输出层之间的一个或多个隐藏层。神经网络
的节点可以是连接的或非完全连接的。
[0082]
机器学习模型300可以是或包括一个或多个前馈神经网络。在前馈网络中,节点之间的连接不形成循环。例如,每个连接可以将来自较早层的节点连接到来自较晚层的节点。
[0083]
在一些情况下,机器学习模型300可以是或包括一个或多个递归神经网络。在一些情况下,递归神经网络的至少一些节点可以形成循环。递归神经网络对于处理本质上连续的输入数据尤其有用。特别地,在一些情况下,递归神经网络可以通过使用递归或定向循环节点连接将来自输入数据序列的先前部分的信息传递或保持到输入数据序列的后续部分。
[0084]
在一些示例中,顺序输入数据可以包括时间序列数据(例如,在不同时间捕获的传感器数据对比时间或图像)。例如,递归神经网络可以分析传感器数据与时间的关系,以检测或预测扫掠方向,执行手写识别等。顺序输入数据可以包括句子中的单词(例如,用于自然语言处理,语音检测或处理等);音乐作品中的音符;由用户采取的顺序动作(例如,检测或预测顺序应用程序使用);顺序对象状态等。
[0085]
示例性递归神经网络包括长短期(lstm)递归神经网络;门控重复单元;双向递归神经网络;连续时间递归神经网络;神经历史压缩器;回波状态网络;艾尔曼网络;约旦网络;递归神经网络;霍普菲尔德网络;完全循环网络;序列到序列配置等。
[0086]
在一些实施方式中,机器学习模型300可以是或包括一个或多个卷积神经网络。在一些情况下,卷积神经网络可以包括一个或多个卷积层,其使用学习的滤波器在输入数据上执行卷积。
[0087]
滤波器也可以被称为内核。卷积神经网络对于视觉问题尤其有用,例如当输入数据包括诸如静止图像或视频的图像时。然而,卷积神经网络也可以用于自然语言处理。
[0088]
在一些示例中,机器学习模型300可以是或包括一个或多个生成网络,例如生成对手网络。生成网络可用于生成新数据,例如新图像或其它内容。
[0089]
机器学习模型300可以是或包括自动编码器。在一些情况下,自动编码器的目的是学习一组数据的表示(例如,低维编码),通常用于降维的目的。例如,在某些情况下,自动编码器可以设法对输入数据进行编码,并且提供根据编码重构输入数据的输出数据。近来,自动编码器概念已经变得更广泛地用于学习数据的生成模型。在一些情况下,自动编码器可以包括除了重构输入数据之外的附加损失。
[0090]
机器学习模型300可以是或包括一个或多个其它形式的人工神经网络,例如,深玻尔兹曼机;深度信念网络;堆叠式自动编码器等。本公开描述的任何神经网络可以被组合(例如,堆叠)以形成更复杂的网络。
[0091]
可以使用一个或多个神经网络来基于输入数据提供嵌入。例如,嵌入可以是从输入数据抽象成一个或多个学习维度的知识的表示。在一些情况下,嵌入可以是用于识别相关实体的有用源。在一些情况下,可以从网络的输出提取嵌入,而在其它情况下,可以从网络的任何隐藏节点或层(例如,网络的接近最终层但不是最终层)提取嵌入。嵌入可用于执行自动建议下一视频,产品建议,实体或对象识别等。在某些情况下,嵌入对于下游模型是有用的输入。例如,嵌入可用于概括下游模型或处理系统的输入数据(例如,搜索查询)。
[0092]
机器学习模型300可以包括一个或多个聚类模型,例如,k均值聚类模型;k-中值聚类模型;期望最大化模型;层次聚类模型等。
[0093]
在一些实施方式中,机器学习模型300可以执行一个或多个维度缩减技术,例如主
成分分析;核主成分分析;基于图的核主成分分析;主成分回归;偏最小二乘回归;sammon映射;多维缩放;投影寻踪;线性判别分析;混合判别分析;二次判别分析;广义判别分析;灵活判别分析;自动编码等。
[0094]
在一些实施方式中,机器学习模型300可以执行或经受一种或多种增强学习技术,例如马尔可夫决策过程;动态规划;q函数或q学习;值函数逼近;深层q-网络;可微神经计算机;异步优势行动者-批评;确定性政策梯度等。
[0095]
在一些实施方式中,机器学习模型300可以是自回归模型。在一些情况下,自回归模型可指定输出数据线性地取决于其自身的先前值和随机项。在一些情况下,自回归模型可以采用随机差分方程的形式。一个示例性自回归模型是wavenet,其是用于原始音频的生成模型。
[0096]
在一些实施方式中,机器学习的模型300可以包括或形成多模型整体的一部分。作为一个实例,可以执行自举聚集,这也可以被称为"装袋(bagging)"。在引导聚集中,训练数据集被分成多个子集(例如,通过替换的随机采样),并且多个模型分别在多个子集上被训练。在推断时间,多个模型的相应输出可以被组合(例如,通过平均,投票或其它技术),并被用作整体的输出。
[0097]
一个示例集合是随机森林,其也可以被称为随机决策森林。随机森林是用于分类,回归和其它任务的整体学习方法。通过在训练时间产生多个决策树来产生随机森林。在一些情况下,在推断时间,可以将作为各个树的类(分类)或平均预测(回归)的模式的类用作森林的输出。随机决策林可以修正决策树过拟合其训练集的倾向。
[0098]
另一个示例性集成技术是堆叠,在某些情况下,其可以被称为堆叠概括。堆叠包括训练组合器模型以混合或以其它方式组合若干其它机器学习模型的预测。因此,可以基于训练数据来训练多个机器学习的模型(例如,相同或不同类型的)。此外,可以训练组合器模型以将来自其它机器学习模型的预测作为输入,并且作为响应,产生最终的推断或预测。在一些情况下,单层逻辑回归模型可以用作组合器模型。
[0099]
另一个示例性集成技术是提升。提升可以包括通过迭代地训练弱模型然后添加到最终的强模型来递增地构建集合。例如,在一些情况下,可以训练每个新模型以强调先前模型被误解(例如,误分类)的训练示例。例如,可以增加与每个这样的错误解释的例子相关联的重量。提升的一个常见实施方式是adaboost,其也可被称为自适应提升。其它示例性提升技术包括lpboost;totalboost;brownboost;xgboost;madaboost,logitboost,梯度提升等。此外,上述模型(例如,回归模型和人工神经网络)中的任何一个可以被组合以形成整体。作为示例,集合可以包括顶层机器学习模型或试探函数,以组合和/或加权形成集合的模型的输出。
[0100]
在一些实施方式中,多个机器学习的模型(例如,形成集合的模型)可以被联合链接和训练(例如,通过误差顺序地通过模型整体的反向传播)。然而,在一些实施方式中,仅联合训练的模型的子集(例如,一个)用于推断。
[0101]
在一些实施方式中,机器学习模型300可用于预处理输入数据以用于随后输入到另一模型中。例如,机器学习模型300可以执行降维技术和嵌入(例如,矩阵分解,主成分分析,奇异值分解,word2vec/glove和/或相关方法);聚类;下游消费的均匀分类与回归。上面已经讨论了许多这些技术,下面将进一步讨论。
[0102]
如上所述,机器学习模型300可以被训练或配置为接收输入数据,并且作为响应,提供输出数据。输入数据可以包括输入数据的不同类型,形式或变化。作为示例,在各种实施方式中,输入数据可以包括描述用户最初选择的内容(或内容的一部分)的特征,例如,用户选择的文档或图像的内容,指向用户选择的链接,用户选择内与设备或云上可用的其它文件有关的链接,用户选择的元数据等。另外,在用户许可的情况下,输入数据包括用户使用的情境,或者从应用本身或者从其它源获得。使用情境的示例包括共享的宽度(公开地共享,或与大的组共享,或私有地共享,或特定的人共享),共享的情境等。当用户允许时,附加输入数据可以包括设备的状态,例如设备的位置,设备上运行的应用等。
[0103]
在一些实施方式中,机器学习模型300可以接收和使用其原始形式的输入数据。在一些实施方式中,可以对原始输入数据进行预处理。因此,除了原始输入数据之外或作为原始输入数据的替代,机器学习模型300可以接收和使用预处理的输入数据。
[0104]
在一些实施方式中,预处理输入数据可以包括从原始输入数据提取一个或多个附加特征。例如,可以将特征提取技术应用于输入数据以生成一个或多个新的附加特征。示例特征提取技术包括边缘检测;转角检测;斑点检测;脊检测;尺度不变特征变换;运动检测;光流;霍夫变换等。
[0105]
在一些实施方式中,所提取的特征可以包括输入数据到其它域和/或维度的变换或从输入数据到其它域和/或维度的变换导出。作为例子,所提取的特征可以包括输入数据到频域的变换或者从输入数据到频域的变换导出。例如,可以对输入数据执行小波变换和/或快速傅立叶变换以生成附加特征。
[0106]
在一些实施方式中,所提取的特征可以包括从输入数据或输入数据的某些部分或维度计算的统计量。示例统计包括输入数据或其部分的模式,平均值,最大值,最小值或其它度量。
[0107]
在一些实施方式中,如上所述,输入数据可以在本质上是顺序的。在一些情况下,可以通过采样或以其它方式分割输入数据流来生成顺序输入数据。作为一个示例,可以从视频中提取帧。在一些实施方式中,可以通过总结使顺序数据是非顺序的。
[0108]
作为另一示例性预处理技术,可以输入部分输入数据。例如,可以通过内插和/或外插来产生附加的合成输入数据。
[0109]
作为另一示例性预处理技术,可以对输入数据中的一些或全部进行缩放,标准化,标准化,一般化和/或规则化。示例性正则化技术包括脊回归;最小绝对收缩和选择算子(lasso);弹性网;最小角度回归;交叉验证;l1正则化;l2正则化等。作为一个例子,可以通过从每个单独的特征值减去给定维度特征值上的平均值,然后除以标准偏差或其它度量来归一化一些或全部输入数据。
[0110]
作为另一示例预处理技术,可以量化或离散化一些或全部输入数据。在一些情况下,包括在输入数据中的定性特征或变量可以被转换为定量特征或变量。例如,可以执行一次热编码。
[0111]
在一些示例中,在输入到机器学习模型300之前,可以对输入数据应用降维技术。上面提供了降维技术的几个例子,包括例如主成分分析;核主成分分析;基于图的核主成分分析;主成分回归;偏最小二乘回归;sammon映射;多维缩放;投影寻踪;线性判别分析;混合判别分析;二次判别分析;广义判别分析;灵活判别分析;自动编码等。
[0112]
在一些实施方式中,在训练期间,输入数据可以以任何数量的方式有意地变形以增加模型健壮性,普遍性或其它质量。用于使输入数据变形的示例性技术包括添加噪声;改变颜色,色调或色调;放大率;分割;扩增等。
[0113]
响应于输入数据的接收,机器学习模型300可以提供输出数据。输出数据可以包括不同类型,形式或变化的输出数据。作为示例,在各种实施方式中,输出数据可以包括本地存储在用户设备上或云中的内容,该内容可以与初始内容选择一起相对共享。
[0114]
如上所述,在一些实施方式中,输出数据可以包括各种类型的分类数据(例如,二进制分类,多类分类,单标签,多标签,离散分类,回归分类,概率分类等),或者可以包括各种类型的回归数据(例如,线性回归,多项式回归,非线性回归,简单回归,多元回归等)。在其它情况下,输出数据可以包括聚类数据,异常检测数据,推荐数据,或以上讨论的任何其它形式的输出数据。
[0115]
在一些实施方式中,输出数据可以影响下游过程或决策。作为一个示例,在一些实施方式中,输出数据可以由基于规则的调节器解释和/或作用。
[0116]
本公开提供了系统和方法,其包括或以其他方式利用一个或多个机器学习的模型来建议本地存储在使用设备上或云中的内容,该内容可基于初始内容选择的特征与初始内容选择一起相对共享。上述输入数据的任何不同类型或形式可以与上述机器学习模型的任何不同类型或形式组合,以提供上述输出数据的任何不同类型或形式。
[0117]
本公开的系统和方法可以由一个或多个计算设备实现或以其它方式在一个或多个计算设备上执行。示例性计算设备包括用户计算设备(例如,膝上型计算机,台式计算机和诸如平板电脑,智能电话,可佩戴计算设备等的移动计算设备);嵌入式计算设备(例如,嵌入在车辆,照相机,图像传感器,工业机器,卫星,游戏控制台或控制器内的设备,或家用电器,例如冰箱,恒温器,能量表,家用能量管理器,智能家用助理等);服务器计算设备(例如,数据库服务器,参数服务器,文件服务器,邮件服务器,打印服务器,web服务器,游戏服务器,应用服务器等);专用的,专门的模型处理或训练设备;虚拟计算设备;其他计算设备或计算基础设施;或其组合。
[0118]
图3b示出了计算设备310的概念图,该计算设备310是图2的消息系统260的示例。计算设备310包括处理组件302,存储器组件304和机器学习模型300。计算设备310可以在本地(即,在设备上)存储和实现机器学习的模型300。因此,在一些实施方式中,机器学习模型300可以被存储在嵌入式设备或诸如移动设备的用户计算设备处和/或由嵌入式设备或诸如移动设备的用户计算设备本地实现。通过在嵌入式设备或用户计算设备处的机器学习模型300的本地实现获得的输出数据可用于改善嵌入式设备或用户计算设备(例如,由嵌入式设备或用户计算设备实现的应用)的性能。
[0119]
图3c示出了能够通过网络与包括机器学习模型的示例服务器计算系统进行通信的示例客户端计算设备的概念图。图3c包括通过网络330与服务器设备360通信的客户端设备310a。客户端设备310a是图1的计算设备110的示例,服务器设备360是图1的消息系统160和图2的消息系统260的示例,并且网络330是图1的网络130的示例。服务器设备360存储并实现机器学习模型300。在一些情况下,通过在服务器设备360处的机器学习模型300获得的输出数据可以被用于改进其他服务器任务,或者可以被其他非用户设备用于改进由这样的其他非用户设备执行的服务,或者用于这样的其他非用户设备。例如,输出数据可以改进由
服务器设备360为用户的计算设备或嵌入式计算设备执行的其它下游处理。在其它情况下,通过在服务器设备360处实现机器学习模型300而获得的输出数据可以被发送到用户计算设备,嵌入式计算设备或诸如客户端设备310a的一些其它客户端设备并由其使用。例如,可以说服务器设备360作为服务执行机器学习。
[0120]
在其它实施方式中,机器学习模型300的不同的相应部分可以被存储在用户计算设备、嵌入式计算设备、服务器计算设备等的某种组合中和/或由用户计算设备、嵌入式计算设备、服务器计算设备等的某种组合来实现。换句话说,机器学习模型300的部分可以全部或部分地分布在客户端设备310a和服务器设备360中。
[0121]
设备310a和360可以使用一个或多个机器学习平台,框架和/或库来执行图形处理技术或其它机器学习技术,例如tensorflow,caffe/caffe2,theano,torch/pytorch,mxnet,cntk等。设备310a和360可以分布在不同的物理位置并且经由包括网络330的一个或多个网络连接。如果被配置为分布式计算设备,则设备310a和360可以根据顺序计算体系结构,并行计算体系结构或其组合来操作。在一个示例中,可以通过使用参数服务器来控制或引导分布式计算设备。
[0122]
在一些实施方式中,机器学习模型300的多个实例可被并行化以提供增加的处理吞吐量。例如,机器学习模型300的多个实例可以在单个处理设备或计算设备上并行化,或者在多个处理设备或计算设备上并行化。
[0123]
实现机器学习模型300或本公开的其它方面的每个计算设备可以包括能够实现本公开描述的技术的性能的多个硬件组件。例如,每个计算设备可以包括存储机器学习模型300的一些或全部的一个或多个存储器设备。例如,机器学习模型300可以是存储在存储器中的结构化数字表示。一个或多个存储器设备还可包含用于实施机器学习模型300或执行其它操作的指令。示例性存储器设备包括ram,rom,eeprom,eprom,闪存设备,磁盘等及其组合。
[0124]
每个计算设备还可以包括实现机器学习模型300的一些或全部和/或执行其它相关操作的一个或多个处理设备。示例处理设备包括以下中的一个或多个:中央处理单元(cpu);视觉处理单元(vpu);图形处理单元(gpu);张量处理单元(tpu);神经处理单元(npu);神经处理引擎;cpu,vpu,gpu,tpu,npu或其他处理设备的核心;专用集成电路(asic);现场可编程门阵列(fpga);协处理器;控制器;或上述处理装置的组合。处理设备可以嵌入在其它硬件组件内,例如图像传感器,加速度计等。
[0125]
硬件组件(例如,存储器装置和/或处理装置)可遍布多个物理上分布式计算装置和/或虚拟分布式计算系统。
[0126]
图3d示出了与包括模型训练器的示例训练计算系统通信的示例计算设备的概念图。图3d包括通过网络330与训练设备370通信的客户端设备310b。客户端设备310b是图1的计算设备110的示例,而网络330是图1的网络130的示例。在此描述的机器学习模型300可以在训练计算系统(例如训练设备370)处被训练,然后被提供用于在一个或多个计算设备(例如客户端设备310b)处存储和/或实现。例如,模型训练器372在训练设备370处本地执行。然而,在一些示例中,包括模型训练器372的训练设备370可以被包括在客户端设备310b或实现机器学习的模型300的任何其他计算设备中,或者与客户端设备310b或实现机器学习的模型300的任何其他计算设备分离。
[0127]
在一些实施方式中,机器学习模型300可以以离线方式或在线方式来训练。在离线训练(也称为批量学习)中,机器学习模型300在静态训练数据集的整体上被训练。在在线学习中,随着新的训练数据变得可用(例如,当模型被用于执行推断时),机器学习的模型300被连续地训练(或重新训练)。
[0128]
模型训练器372可以执行对机器学习模型300的集中式训练(例如,基于集中式存储的数据集)。在其它实施方式中,诸如分布式训练,联合学习等分散训练技术可用于训练,更新或个性化机器学习模型300。
[0129]
可以根据各种不同的训练类型或技术中的一个或多个来训练这里描述的机器学习模型300。例如,在一些实施方式中,机器学习模型300可以由模型训练器372使用监督学习来训练,其中机器学习模型300在包括具有标签的实例或示例的训练数据集上被训练。标签可由专家手动应用,通过人群来源产生,或由其它技术(例如,通过基于物理学的或复杂的数学模型)提供。在一些实施方式中,如果用户已经提供同意,则训练示例可以由用户计算设备提供。在一些实施方式中,该过程可以被称为个性化模型。
[0130]
图3e示出了训练过程390的概念图,训练过程390是在包括具有标签393的示例性输入数据392的训练数据391上训练机器学习模型300的示例训练过程。训练过程390是一个示例训练过程;也可以使用其它训练过程。
[0131]
在用户许可使用这样的数据进行训练时,由训练过程390使用的训练数据391可以包括共享流(例如,共享在一起的内容项,已经被识别为属于一起的捆绑的内容片,例如,来自知识图中的实体等)的匿名使用日志。在一些实施方式中,训练数据391可以包括已经被分配了对应于输出数据394的标签393的输入数据392的示例。
[0132]
在一些实施方式中,可以通过优化目标函数(例如目标函数395)来训练机器学习模型300。例如,在一些实施方式中,目标函数395可以是或包括损耗函数,该损耗函数比较(例如,确定)由模型从训练数据生成的输出数据和与训练数据相关联的标签(例如,地面真实标签)(之间的差)。例如,损失函数可以估计输出数据和标记之间的平方差的和或平均值。在一些示例中,目标函数395可以是或包括描述某一结果或输出数据的成本的成本函数。目标函数395的其它示例可以包括基于容限的技术,例如,三重态损失或最大容限训练。
[0133]
可以执行各种优化技术中的一种或多种来优化目标函数395。例如,优化技术可以最小化或最大化目标函数395。示例性优化技术包括基于hessian的技术和基于梯度的技术,例如坐标下降;梯度下降(例如,随机梯度下降);亚梯度方法等。其它优化技术包括黑盒优化技术和试探法。
[0134]
在一些实施方式中,可以结合优化技术(例如,基于梯度的技术)来使用误差的后向传播来训练机器学习模型300(例如,当机器学习模型是诸如人工神经网络的多层模型时)。例如,可以执行传播和模型参数(例如,权重)更新的迭代循环来训练机器学习模型300。示例反向传播技术包括截断的反向传播时间,levenberg-marquardt反向传播等。
[0135]
在一些实施方式中,可以使用无监督学习技术来训练这里描述的机器学习模型300。无监督学习可以包括从未标记的数据推断描述隐藏结构的函数。例如,可以不在数据中包括分类或类别。无监督学习技术可用于产生能够执行聚类,异常检测,学习潜在变量模型或其它任务的机器学习模型。
[0136]
机器学习模型300可以使用半监督技术来训练,该半监督技术结合了监督学习和
非监督学习的方面。机器学习模型300可以通过进化技术或遗传算法来训练或以其他方式生成。在一些实施方式中,可以使用强化学习来训练这里描述的机器学习模型300。在强化学习中,代理(例如,模型)可以在环境中采取动作并且学习以最大化奖励和/或最小化由这样的动作导致的惩罚。强化学习与监督学习问题的不同之处在于,没有呈现正确的输入/输出对,也没有明确校正次优选动作。
[0137]
在一些实施方式中,可在训练期间执行一个或多个概括技术以改进机器学习模型300的概括。概括技术可以帮助减少机器学习模型300对训练数据的过度拟合。示例性概括技术包括丢包技术;重量衰减技术;批量归一化;早停;子集选择;分步选择等。
[0138]
在一些实施方式中,本公开描述的机器学习模型300可以包括或以其他方式受多个超参数的影响,所述超参数例如学习速率,层数,每层中的节点数,树中的叶子数,聚类数等。超参数会影响模型的性能。可以手工选择超参数,或者可以通过应用技术来自动选择超参数,该技术诸如是网格搜索;黑盒优化技术(例如,贝叶斯优化,随机搜索等);基于梯度的优化等。用于执行自动超参数优化的示例性技术和/或工具包括hyperopt;auto-weka;spearmint;度量优化引擎(moe)等。
[0139]
在一些实施方式中,当训练模型时,可以使用各种技术来优化和/或调整学习速率。用于执行学习速率优化或适配的示例性技术和/或工具包括adagrad;自适应矩估计(adam);adadelta;rmsprop等。
[0140]
在一些实施方式中,转移学习技术可用于提供初始模型,从该初始模型开始训练这里描述的机器学习模型300。
[0141]
在一些实施方式中,这里描述的机器学习模型300可以被包括在计算设备上的计算机可读代码的不同部分中。在一个示例中,机器学习模型300可以被包括在特定应用程序或程序中,并且由这种特定应用程序或程序使用(例如,排他地)。因此,在一个示例中,计算设备可以包括多个应用,并且一个或多个这样的应用可以包含其自己的相应机器学习库和机器学习模型。
[0142]
在另一个示例中,这里描述的机器学习模型300可以被包括在计算设备的操作系统中(例如,在操作系统的中央智能层中),并且可以被与操作系统交互的一个或多个应用调用或以其他方式使用。在一些实施方式中,每个应用可以使用应用编程接口(api)(例如,所有应用之间的公共api)与中央智能层(以及存储在其中的模型)通信。
[0143]
在一些实施方式中,中央智能层可以与中央设备数据层通信。中央设备数据层可以是用于计算设备的集中式数据储存库。中央设备数据层可以与计算设备的多个其他组件通信,例如,一个或多个传感器,情境管理器,设备状态组件和/或附加组件。在一些实施方式中,中央设备数据层可以使用api(例如,专用api)与每个设备组件通信。
[0144]
这里讨论的技术涉及服务器,数据库,软件应用程序和其它基于计算机的系统,以及采取的动作和发送到这样的系统和从这样的系统发送的信息。基于计算机的系统的固有灵活性允许在组件之间和组件之间的任务和功能的各种可能的配置,组合和划分。例如,这里讨论的过程可以使用单个设备或组件或多个设备或组件组合工作来实现。
[0145]
数据库和应用可以在单个系统上实现或分布在多个系统上。分布式组件可以顺序地或并行地操作。
[0146]
此外,在此描述的机器学习技术易于互换和组合。尽管已经描述了某些示例性技
术,但是存在许多其他技术,并且可以与本公开的方面结合使用。
[0147]
本公开内容已经提供了对示例性机器学习模型和相关技术的简要概述。对于更多的细节,读者可回顾以下参考文献:机器学习概率观点(murphy);机器学习规则:ml工程的最佳实践(zinkevich);深度学习(goodfellow);强化学习:介绍(sutton);人工智能:现代方法(norvig)。
[0148]
除了上面的描述之外,可以向用户提供允许用户做出关于本公开描述的系统,程序或特征是否以及何时能够收集用户信息(例如,关于用户的社交网络,社交动作或活动,职业,用户的偏好,或用户的当前位置的信息),以及用户是否从服务器发送内容或通信的选择的控制。此外,在存储或使用某些数据之前,可以以一种或多种方式处理这些数据,从而去除个人可识别信息。例如,可以对待用户的身份,从而不能为用户确定个人可识别的信息,或者可以在获得位置信息的地方(例如城市,邮政编码或州级)概括用户的地理位置,从而不能确定用户的特定位置。因此,用户可以控制收集关于用户的什么信息,如何使用该信息以及向用户提供什么信息。
[0149]
图4是示出根据本公开的一个或多个方面的由示例计算系统执行的示例操作的流程图,所述示例计算系统被配置为向基于包括在先前电子消息中的文本编辑电子消息的用户提供预测的文本建议。下面在图1a和1b的系统100的情境中描述图4。
[0150]
根据本公开的技术,系统100可以接收正被编辑的电子消息的接收方的标识(402)。例如,消息传递服务模块262可以从消息客户端模块122接收电子邮件地址,用户名,实名或与消息帐户相关联的用户正在编辑的电子消息的地址的其它标识。在一些示例中,消息传递服务模块262可以在接收与正被编辑的电子消息正文的编写相关联的用户输入之前接收该接收方的标识。
[0151]
系统100可至少部分地基于从消息帐户发送的先前电子消息中包含的文本来预测正被编辑的电子消息正文的文本的候选部分(404)。例如,预测模块164可以调用机器学习模型(例如,图2的ml模型267)来生成用于正文的文本的一个或多个候选部分。如上所述,预测模块164可以基于电子消息中的文本来生成文本的候选部分,该电子消息被寻址到:所标识的接收方,除所标识的接收方之外的人(例如,帐户),或者所标识的接收方和除所标识的接收方之外的人两者。
[0152]
系统100可输出文本的预测候选部分以供显示,用于任选选择(406)。例如,消息传递客户端122可以使用户界面组件112输出用户界面113a,该用户界面113a包括用于插入到正文116中的任意选择的精确文本"hi jackie"。如上所述,消息客户端122可以通过与用户输入的文本不同地格式化文本来传达文本是用于任意选择。
[0153]
系统100可以确定是否用户输入以选择文本的预测候选部分(408)。例如,消息客户端122可以确定用户界面组件122是否已经接收到用户输入以选择文本的预测候选部分。
[0154]
如果系统100接收到用户输入以选择文本的预测候选部分(408,“是”分支),则系统100可输出文本的预测候选部分以供显示,以插入到正被编辑的电子消息的正文中(410)。例如,消息客户端122可以使用户界面组件112输出具有被格式化为用户输入文本的文本的预测候选部分的用户界面。
[0155]
如果系统100没有接收到选择文本的预测候选部分的用户输入(408,"否"分支),则系统100可以更新用于预测文本的候选部分的预测模型(412)。例如,预测模块264还可以
基于用户输入的文本代替预测文本来训练ml模型267。
[0156]
作为示例而非限制,这种计算机可读存储介质可以包括ram,rom,eeprom,cd-rom或其它光盘存储,磁盘存储,或其它磁存储设备,闪存,或可以用于以指令或数据结构的形式存储所需程序代码并且可以由计算机访问的任何其它存储介质。而且,任何连接都被适当地称为计算机可读介质。例如,如果使用同轴电缆,光纤电缆,双绞线,数字用户线(dsl)或诸如红外,无线电和微波的无线技术从网站,服务器或其它远程源发送指令,则同轴电缆,光纤电缆,双绞线,dsl或诸如红外,无线电和微波的无线技术被包括在介质的定义中。然而,应当理解,计算机可读存储介质和介质以及数据存储介质不包括连接,载波,信号,或其它瞬态介质,而是指向非瞬态,有形存储介质。如这里所使用的,盘和盘包括压缩盘(cd),激光盘,光盘,数字通用盘(dvd),软盘和蓝光盘,其中盘通常磁性地再现数据,而盘用激光光学地再现数据。上述的组合也应该包括在计算机可读介质的范围内。
[0157]
指令可以由一个或多个处理器执行,例如一个或多个数字信号处理器(dsp),通用微处理器,专用集成电路(asic),现场可编程逻辑阵列(fpga)或其它等效集成或离散逻辑电路。因此,这里使用的术语"处理器"可以指任何前述结构或适于实现这里描述的技术的任何其它结构。此外,在一些方面中,本公开所描述的功能性可在专用硬件和/或软件模块内提供。而且,可以在一个或多个电路或逻辑元件中完全实现这些技术。
[0158]
本公开的技术可以在各种设备或装置中实现,包括无线手机,集成电路(ic)或一组ic(例如,芯片组)。在本公开中描述了各种组件,模块或单元,以强调被配置成执行所公开的技术的设备的功能方面,但是不一定需要通过不同的硬件单元来实现。相反,如上所述,各种单元可以与适当的软件和/或固件一起组合在硬件单元中或由包括如上所述的一个或多个处理器的互操作硬件单元的集合提供。
[0159]
已经描述了各种实施例。这些和其它实施例在所附权利要求的范围内。