Message recommendation system based on context and time prediction

By applying a machine learning model based on time prediction and context in the messaging system, the problem of inefficiency in message management in the prior art is solved, intelligent priority of messages and resource conservation are achieved, and user experience and system performance are improved.

CN113383354BActive Publication Date: 2025-01-14MICROSOFT TECHNOLOGY LICENSING LLC
View PDF 2 Cites 0 Cited by

Patent Information

Application Number
CN201980074557.0
Authority / Receiving Office
CN · China
Patent Type
Patents(China)
Current Assignee / Owner
Priority Date
2018-11-13
Filing Date
2019-11-05
Publication Date
2025-01-14
Estimated Expiration
2039-11-05

AI Technical Summary

Technical Problem

Existing messaging systems are unable to effectively manage and prioritize messages, resulting in users being overwhelmed when processing emails and chats, unable to properly manage messages or conversations, and consuming a lot of computing resources.

Method used

Through a machine learning model based on time prediction, importance and context, the user predicts the action time of each message in real time, and recommends and prioritizes messages based on this, reducing the amount of messages that users need to view and improving resource utilization efficiency.

Benefits of technology

It realizes intelligent management of messages, reduces the amount of messages that users need to view, reduces the consumption of processor cycle, network services, memory usage, data storage capacity, power consumption and network bandwidth, and improves user experience and system resource utilization efficiency. .

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN113383354B_ABST
    Figure CN113383354B_ABST
Patent Text Reader

Abstract

A messaging system configured to recommend messages is provided. The messaging system machine trains a predictive model associated with a user based on past viewing and response times for past messages. During runtime, the messaging system generates a predicted user action time for each new message based on the predictive model; and tags each new message with a corresponding predicted user action time. Based on an amount of available time, a predicted user action time for each new message, and an importance for each new message, the messaging system determines a set of recommended new messages that the user should read and respond to during the available time, whereby a sum of the predicted user action times for the set of recommended new messages is equal to or less than the available time. The set of recommended new messages is visually distinguished for the user.
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] The subject matter disclosed herein generally relates to a special purpose machine that facilitates message recommendation, including computerized variations of such special purpose machines and improvements to such variations, and to techniques by which such special purpose machines are improved over other special purpose machines that facilitate message recommendation. Specifically, the present disclosure addresses systems and methods for training a prediction model, using the prediction model to determine a time prediction for each message, and recommending messages based in part on the time prediction. Background Art

[0002] Typically, messaging systems (e.g., email systems, chat systems) present messages to users in chronological order. For example, messages are presented in descending order based on the time they were received. Typically, the only indication that a message may be important is if the sender has indicated that the message should be marked as important (e.g., selected a high priority indicator). This can cause users to become overwhelmed with email and unable to properly manage their messages or conversations (e.g., based on available time or context). BRIEF DESCRIPTION OF THE DRAWINGS

[0003] Some embodiments are illustrated by way of example and not limitation in the figures of the accompanying drawings.

[0004] Figure 1 is a block diagram illustrating an exemplary environment for managing messages by recommending messages based on time prediction, importance, and context according to an exemplary embodiment.

[0005] Figure 2 is a block diagram illustrating components within a messaging system according to an exemplary embodiment.

[0006] Figure 3 is a flow chart of an exemplary method for training a predictive model according to an exemplary embodiment.

[0007] Figure 4 is a flow chart of an exemplary method for tagging messages using temporal predictions in accordance with an exemplary embodiment.

[0008] Figure 5 is a flow chart of an exemplary method for presenting priority messages based on context and temporal prediction in accordance with an exemplary embodiment.

[0009] Figure 6 An exemplary screenshot of a messaging user interface showing a flagged message is illustrated.

[0010] Figure 7 An exemplary screenshot of a messaging user interface showing priority email is illustrated.

[0011] Figure 8An exemplary screenshot of a messaging user interface showing a time allocation interface is illustrated.

[0012] Fig. 9 An exemplary screenshot of a messaging user interface showing an alternative time allocation interface is illustrated.

[0013] Fig.10 is a schematic diagram of a machine in the exemplary form of a computing system according to an example embodiment within which a set of instructions may be executed to cause the machine to perform any one or more of the methodologies discussed herein. DETAILED DESCRIPTION

[0014] The following description describes the system, method, technology, instruction sequence and computing machine program product of the exemplary embodiment of the present theme of illustration.In the following description, for the purpose of explanation, many specific details are set forth in order to provide the understanding of the various embodiments of the present theme.However, it will be apparent to those skilled in the art that the embodiments of the present theme can be put into practice without some or other details in these specific details.Example only represents possible variation.Unless otherwise clearly stated, structure (e.g., structural component, such as module) is optional and can be combined or subdivided, and operation (e.g., in flow, algorithm or other functions) can be changed in order or combined or subdivided.

[0015] Exemplary methods (e.g., algorithms) and systems (e.g., special machines) facilitate message management by recommending messages based on time prediction, importance, and context. According to an exemplary embodiment, the messaging system runs machine learning predictions on a combination of monitored user activity and user email data, predicts user action times on each message in real time, and shows the predicted action times to the user to assist in their time management. In some embodiments, the messaging system determines the importance level for each email and recommends or prioritizes messages based on importance and / or the amount of time the user has to view the message. In some embodiments, the messaging system also recommends messages based on context. For example, if a user has a meeting in 20 minutes, the messaging system pops messages related to the meeting to the top of the list of messages to be viewed. These recommended / prioritized messages can be visually distinguished from other messages (e.g., highlighted).

[0016] As a result, one or more of the methods described herein facilitate solving the technical problem of message management in a networked system. Thus, one or more of the methods described herein can eliminate the need for certain efforts or computing resources that would otherwise be involved in viewing and responding to messages. Specifically, instead of a user having to browse or read each message, an exemplary embodiment recommends messages to a user, thereby allowing the user to, for example, ignore unimportant messages. As a result, the resources used by one or more machines, databases, or devices (e.g., within an environment) can be reduced by reducing the messages viewed by a user. Examples of such computing resources include processor cycles, network traffic, memory usage, data storage capacity, power consumption, network bandwidth, and cooling capacity.

[0017] Figure 1 is a block diagram illustrating an exemplary environment 100 for managing messages using a messaging system 102 that makes recommendations based on time predictions, importance, and context. In an exemplary embodiment, the messaging system 102 includes a training system 104 configured to build and train a predictive model; and a runtime system 106 configured to analyze new messages at runtime to determine a predicted action time to respond based on importance and, in some cases, context, and to rank and recommend messages (e.g., prioritize messages). Figure 2 The messaging system 102 including the training system 104 and the runtime system 106 will be discussed in more detail.

[0018] The messaging system 102 is coupled to one or more client devices (e.g., client device 110) via a network 108. One or more portions of the network 108 may be an ad hoc network, an intranet, an extranet, a virtual private network (VPN), a local area network (LAN), a wireless LAN (WLAN), a wide area network (WAN), a wireless WAN (WWAN), a metropolitan area network (MAN), a portion of the Internet, a portion of a public switched telephone network (PSTN), a cellular telephone network, a wireless network, a Wi-Fi network, a WiMax network, a satellite network, a cable network, a broadcast network, another type of network, or a combination of two or more such networks. Any one or more portions of the network 108 may communicate information via a transmission or signal medium. As used herein, a "transmission medium" refers to any intangible (e.g., transient) medium capable of communicating (e.g., transmitting) instructions executed by a machine (e.g., by one or more processors of such a machine), and includes digital or analog communication signals or other intangible media to facilitate communication of such software.

[0019] Client device 110 is a device for users who send and receive messages through messaging system 102. For example, a user at client device 110 can access his messages via a specially configured user interface. A specially configured user interface provides users with the option of managing their messages intelligently. For example, a user can specify the amount of time that he can use to view and respond to messages. In response, messaging system 102 recommends that a user can view one or more messages and respond to the one or more messages within a given amount of time based on importance and in some cases context. In some embodiments, client device 110 calls messaging system 102 to cause presentation of a user interface (e.g., to obtain data to display a user interface). In an alternative embodiment, some of the functions of messaging system 102 (discussed below) can be performed by similar components on client device 110.

[0020] Client device 110 may include, but is not limited to, a smartphone, a tablet computer, a laptop computer, a multiprocessor system, a microprocessor-based or programmable consumer electronics product, a game console, a set-top box, or any other device used by a user to communicate on network 108. In an exemplary embodiment, client device 110 includes a display module (not shown) to display information (e.g., in the form of a specially configured user interface). In some embodiments, client device 110 may include one or more of a touch screen, a camera, a keyboard, a microphone, and a global positioning system (GPS) device.

[0021] exist Figure 1 Shown in or with Figure 1 Any associated system or machine (e.g., system, device, server) may include or otherwise be implemented on a dedicated (e.g., specialized or non-generic) computer that has been modified (e.g., configured or programmed by software, operating system, firmware, middleware, or other programs such as one or more software modules of an application) to perform one or more of the functions described herein for the system or machine. For example, the following reference Fig.10 A special-purpose computer system capable of implementing any one or more of the methods described herein has been discussed, and such a special-purpose computer can therefore be a unit for executing any one or more of the methods discussed herein. In the technical field of such a special-purpose computer, a special-purpose computer that has been modified to perform the function discussed herein by the structure discussed herein has been improved in technology compared to other special-purpose computers that lack the structure discussed herein or otherwise cannot perform the function discussed herein. Therefore, a special-purpose machine configured according to the system and method discussed herein provides an improvement in the technology of similar special-purpose machines.

[0022] In addition, Figure 1 Any two or more of the systems or machines illustrated in the environment 100 may be combined into a single system or machine, and the functionality described herein for any single system or machine may be subdivided within multiple systems or machines. In addition, any number and type of client devices 110 may be embodied within the environment 100. Furthermore, some components or functionality of the environment 100 may be combined or located elsewhere in the environment 100. For example, some of the functionality of the messaging system 102 may be embodied within the client device 110.

[0023] Figure 2 1 is a block diagram illustrating an exemplary embodiment of components within a messaging system 102. In an exemplary embodiment, the messaging system 102 performs operations to generate and train a predictive model, and uses the predictive model and monitored user activity to predict the time required to resolve each message, and recommend messages based on, for example, the amount of time available to view messages. To implement these operations, the messaging system 102 includes a training system 104 and a runtime system 106, each of which includes (or is associated with) supporting engines or components, all of which are configured to communicate with each other (e.g., via a bus, shared memory, or switch), according to an exemplary embodiment.

[0024] In an exemplary embodiment, the training system 104 uses offline and online training based on data extracted from each user's past messages (e.g., emails, chats), monitored past activities (e.g., read messages, replied to messages, sent messages, ignored messages), and the user's relationships with others (e.g., reporting lines, such as direct managers, frequent correspondents). After the predictive model is trained and reaches an acceptable level of accuracy, the model is provided to the runtime system 106 and is used to analyze incoming messages, which will be discussed in more detail below. In an exemplary embodiment, the predictive model is updated regularly (e.g., once a week) based on past data (e.g., including the most recent week's data). To implement these operations, the training system 104 includes a data engine 202, an analysis engine 204, and a training engine 206.

[0025] The data engine 202 manages the data used to train the prediction model. In an exemplary embodiment, the data engine 202 extracts data by querying user activities (e.g., querying the "Exchange Substrate Service") and the message storage service. For example, the data engine 202 uses MARS (Exchange Map Reduce System) to extract raw data for each message. The raw data includes, for example, a user identifier, a message identifier, the length of the message body, whether it is "mentioned" (e.g., a user is mentioned in a message), whether the message is marked as high importance, whether the message is sent to a distribution list, and the like. The raw data is provided to the analysis engine 204 for processing.

[0026] The data engine 202 also detects information that is used to generate attributes that are ground truth for each user. In an exemplary embodiment, when a user clicks a button or selects a message on a messaging client (e.g., Outlook), the data engine 202 captures the corresponding signal. For example, when a user selects a message to read, the data engine will detect a reading pane start signal. Similarly, when the user finishes reading a message (e.g., by selecting to close the message), the data engine 202 detects a reading pane end signal. In another example, the data engine detects when a user clicks a compose message button (e.g., a reply, reply all, forward, or new message selection / button) and when the user clicks send - capturing this information as a signal.

[0027] The analysis engine 204 processes the raw data and signals for model training. In an exemplary embodiment, the analysis engine 204 calculates features (e.g., calculates bucket feature values, such as message body length, whether the user is mentioned in the message, whether the sender is in the report line, whether the sender is a frequent communicator, whether the message is marked as high importance, user classification mode (e.g., historical action distribution), historical response speed, expected concentration ratio of mail) and labels that may need to be input for model training (reading and reply time for each message of each user). In addition, the analysis engine 204 removes outlier data to denoise the input stream of raw data, and removes duplicate data or partial data (if any). In some embodiments, the analysis engine 204 determines an interpersonal relationship score, which is input into the prediction model to predict user action time. For example, if the sender is someone the user usually responds to or is a direct manager, the analysis engine 204 applies a higher score than someone the user rarely responds to or never responds to.

[0028] In an exemplary embodiment, analysis engine 204 uses the captured signal to calculate the actual action time for each message. For example, analysis engine 204 analyzes the read pane start signal and the read pane end signal to generate a view message signal, and the view message signal captures the duration of the user's stay on each message. Similarly, analysis engine 204 uses the write message signal and the send signal to determine the write message signal, and the write message signal captures the duration of the user writing each message. In another example, the read pane start signal and the send signal can be used to determine the read / reply signal (for example, capture the duration of the user reading and replying the message). These other signals (for example, view message signal, write message signal, read / reply signal) are referred to as "basic fact labels".

[0029] The training engine 206 generates and trains the prediction model. In an exemplary embodiment, based on the user reader relationship / reply distribution, the training engine 206 clusters users into multiple categories (e.g., users who are large message users, users who rarely interact with messages). For each category, the training engine 206 trains a prediction model (e.g., an SVM regression model) by taking input features (e.g., user identifier, message identifier, user reading time, user reply time, message body length, personnel relationship score, whether it is "mentioned", whether the message is marked as high importance, whether the message is sent to a distribution list, whether it is in a centralized inbox) for all users in the category and predicting the total action time required for each message for users in each category (e.g., using tensorflow SVM regression grouping).

[0030] In an exemplary embodiment, the training engine 206 uses one or more monitored actual action times (e.g., signals) determined by the analysis engine 204 for each message. This will give the training engine 206 a ground truth label compared to the predicted action time. In one embodiment, for all messages for all users in a particular category, the loss function is determined using the L2 norm of the total distance between the predicted action time and the ground truth label (e.g., actual read time plus reply time, if any). The training engine 206 attempts to reduce this loss function.

[0031] In some embodiments, the training system 104 trains a prediction model for each specific user. For example, a user may be initially clustered into one of the categories. Once the prediction model is trained for the category (or the prediction model for the category is determined to be applicable to the user), the user's individual action time / ground truth label is compared to the predicted action time to determine the loss function. The training system 104 then attempts to train the prediction model to reduce the loss function for the user individually. Therefore, the prediction model includes a set of parameters based on the label associated with the user.

[0032] After a reasonable prediction accuracy is obtained, the training engine 206 uses the prediction model in the runtime system 106. Each incoming message is then analyzed using the prediction model to predict the action time to respond to the message. The runtime system 106 also ranks and prioritizes messages based on importance and / or context. In some cases, the runtime system 106 recommends one or more messages to the user based on the amount of available time the user has (e.g., specified by the user or detected by the runtime system 106). To achieve these operations, the runtime system 106 includes a message engine 208, an extraction engine 210, a modeling engine 212, and a recommendation engine 214.

[0033] The message engine 208 manages new messages at the messaging system 102. The message engine 208 is a message entity that stores information for each message. In an exemplary embodiment, the message engine 208 receives messages, determines recipients, and routes the messages accordingly (e.g., to the appropriate Outlook client).

[0034] When the messaging engine 208 receives a new message, the messaging engine 208 automatically triggers an extraction engine 210 (e.g., a Griffin real-time reaction processor-GASv2 processor) to extract message attributes from the new message. In some embodiments, the extracted attributes are received as part of the attributes of the message (e.g., in a header), and are therefore defined in a schema. In an exemplary embodiment, the extraction engine 210 extracts message features or attributes (e.g., user identifier, message identifier, message body length, whether it is "mentioned", whether the message is marked as high importance, whether the message is sent to a distribution list, whether it is in a centralized inbox) from the new message. The extracted message features are then provided to the modeling engine 212.

[0035] The modeling engine 212 takes the message attributes as input and applies the prediction model to determine the predicted user action time for the new message. The predicted user action time is the predicted amount of time that the messaging system 102 believes the user will spend reading the message and performing the corresponding action (e.g., replying to the message, closing the message). In an exemplary embodiment, the modeling engine 212 detects the message features extracted for the new message and obtains the corresponding value for each feature. Each value is calculated in real time. For example, when the message arrives, the training system 104 "listens" to (one or more) message arrival events and extracts the required relevant information based on the corresponding logic code to calculate the value. Then, the modeling engine 212 multiplies the value of the message feature by the corresponding parameter of the prediction model. For example, the algorithm for predicting the action time can be: (parameter A×feature 1)+(parameter B×feature 2)+..., where, for example, feature 1 is a value corresponding to how long the message is, feature 2 is a value corresponding to whether the user is mentioned in the message, feature 3 is a value corresponding to whether the sender is in the report line, and so on. The result is the predicted user action time for the new message. In the exemplary embodiment, modeling engine 212 operates in sub-second (eg, near real-time).

[0036] The modeling engine 212 sends the result back to the message engine 208, and the message engine 208 appends the predicted user action time to the message (eg, as another attribute of the message). In some embodiments, the message engine 208 also causes the predicted time to be displayed to the user.

[0037] In some embodiments, the modeling engine 212 also generates a next action prediction. Thus, for a particular user, the modeling engine 212 determines the probability that the user will typically read the message and / or reply or forward the message. For example, a high volume message reader will have a higher next action prediction that the high volume message reader will read the message.

[0038] The recommendation engine 214 facilitates message prioritization and recommendation. In an exemplary embodiment, the recommendation engine 214 ranks new messages based on importance (e.g., message importance prediction). The importance of a message is based on features / attributes, such as whether the message is marked as important, whether the message is from a manager, whether the message is from a sender that the user communicates with regularly, etc. In one embodiment, the recommendation engine 214 makes API calls to a separate system that determines the importance of each message based on the features / attributes of each message.

[0039] In embodiments where the user specifies the amount of time they have available to view and respond to messages (e.g., 30 minutes), the recommendation engine 214 utilizes the message importance prediction and the user action prediction time for each message and filters out the highest numbered message or messages for the user where the total time required for the recommended messages is within the available time specified by the user. In these embodiments, the runtime system 106 (e.g., the message engine 208) distinguishes these recommended messages by pinning them to the top of the message list or visually distinguishing them (e.g., marking the message label red). In embodiments where the message is important but will exceed the amount of available time established by the user, the recommendation engine 214 raises the message priority but does not visually distinguish the message (e.g., does not highlight the message).

[0040] In some embodiments, the recommendation engine 214 performs time-based predictions on other aspects of the message and makes context-based message recommendations. Thus, when the user enables a time- and context-aware view of the message, the recommendation engine 214 performs a context-based recommendation process to pin context-aware messages to the top of the list within a specific time frame. In various embodiments, the context-based recommendation can be based on one or more of location awareness, time awareness, human awareness, and person awareness.

[0041] Location awareness considers the user's location at a specific time (e.g., airport, hotel, home) or the location the user will travel to within a specific time frame (e.g., within the next 30 minutes), and prioritizes messages related to these locations during the predicted time frame of the user's travel to these locations. For example, if the user has a flight within an hour, the recommendation engine 214 identifies messages related to the corresponding itinerary (e.g., flight messages, hotel messages) and prioritizes these messages on the list. In one embodiment, the recommendation engine 214 understands the user's location based on a calendar or virtual assistant (e.g., Cortana) that manages time and event reminders (e.g., based on departure time features).

[0042] Time awareness takes into account upcoming meetings and prioritizes messages associated with those meetings. For example, prioritizes meeting-topic-related messages during the predicted time frame that the user is preparing for the meeting (e.g., within an hour of the meeting).

[0043] Human perception takes into account user actions relative to documents. In these embodiments, if a user closes a particular document, document-related messages (e.g., having the same or similar documents / attachments) are prioritized.

[0044] People awareness takes into account the sender of the message. In some cases, messages from senders that are relevant to a meeting that the user will attend are prioritized. For example, messages from the meeting organizer of the user's next meeting (e.g., within an hour) are prioritized on the list. In another embodiment, messages from direct managers or significant others of the user are also prioritized.

[0045] Any one or more components (e.g., modules, engines) described herein can be implemented using separate hardware (e.g., one or more processors of a machine) or a combination of hardware and software. For example, any component described herein can physically include an arrangement of one or more processors, or configure (e.g., among one or more processors of a machine) a processor to perform the operations described herein for the module. Therefore, the different components described herein can include and configure different arrangements of processors at different time points or a single arrangement of processors at different time points. Each component (e.g., module) described herein is an example of a unit for performing the operations described herein for the component. In addition, any two or more of these components can be combined into a single component, and the functions described herein for a single component can be subdivided in multiple components. In addition, according to various exemplary embodiments, the components described herein as being implemented in a single machine, database, or device can be distributed across multiple machines, databases, or devices. The messaging system 102 may include other components that are not related to the exemplary embodiments not shown or discussed. In addition, one or more components of the messaging system 102 may be located at one or more client devices.

[0046] Figure 3 is a flow chart of an exemplary method 300 for training a prediction model according to an exemplary embodiment. The operations in the method 300 may be performed by the messaging system 102 (eg, the training system 104) using the above reference Figure 2 The method 300 is performed by the components (e.g., modules, engines) described herein. In an exemplary embodiment, the operations are performed offline and are repeated periodically (e.g., weekly) using updated data to maintain the current prediction model for each category or user. Therefore, the method 300 is described by way of example with reference to the messaging system 102. However, it should be appreciated that at least some of the operations of the method 300 may be deployed on various other hardware configurations or performed by similar components residing elsewhere. For example, some of the operations may be performed at the client device 110.

[0047] In operation 302, the data engine 202 extracts attributes for training a predictive model. In an exemplary embodiment, the data engine 202 extracts data by querying user activity and message storage services and extracting raw data associated with each message. The raw data includes, for example: user identifier, message identifier, message body length, person relationship score (e.g., is the sender or direct manager with whom the user usually communicates), whether it is "mentioned" (e.g., the user is mentioned in a message), whether the message is marked as high importance, whether the message is sent to a distribution list, etc.

[0048] In operation 304, the data engine 202 captures signals for generating attributes, which are basic facts for each user. In an exemplary embodiment, when a user makes a selection (e.g., clicks a button) on a message user interface or selects to read on a message client (e.g., Outlook), the data engine 202 captures corresponding signals, such as, for example, a reading pane start signal, a reading pane end signal, and a compose message signal.

[0049] In operation 306, the analysis engine 204 analyzes the attributes and signals for model training. In an exemplary embodiment, the analysis engine 204 calculates features (e.g., calculating bucket feature values) and labels (e.g., the reading and reply time of each user for each message) that may be needed as input for model training by the training engine 206. In some embodiments, the analysis engine 204 also determines the personnel relationship score. In addition, the analysis engine 204 uses the captured signals to calculate the actual action time for each message (e.g., a view message signal that captures the length of time the user stays on the message, a write message signal that captures the length of time the user spends writing the message, and a read / reply signal that captures the length of time the user spends reading and replying to the message). These additional signals (e.g., view message signals, write message signals, read / reply signals) are referred to as "basic fact labels."

[0050] In operation 308, the training engine 206 trains a prediction model (e.g., a regression model). In some cases, the training engine 206 generates a prediction model; in other cases, the training engine 206 updates an existing prediction model. A different prediction model can be associated with each category, each category clustering users with similar message profiles (e.g., quick replies to messages, slow readers) or associating with individual users. In a category embodiment, the training engine 206 clusters users into categories (e.g., slow readers, fast reply users) based on user reader relationship / reply distribution. For each category, the training engine 206 trains a prediction model using input features (e.g., user identifier, message identifier, message body length, person relationship score, whether it is "mentioned", whether the message is marked as high importance, whether the message is sent to a distribution list, whether it is in a centralized inbox), and predicts the total operation time required for each message for users in each category.

[0051] In an exemplary embodiment, training engine 206 uses one or more of the monitored actual action times (e.g., signals) determined by analysis engine 204 for each message (e.g., ground truth labels). In one embodiment, a loss function is determined using the L2 norm of the total distance between the predicted action time and the ground truth labels (e.g., actual read time plus reply time, if any) for all users in a particular category. Training engine 206 attempts to reduce the loss function when training the prediction model.

[0052] In a user-specific embodiment, the training engine 206 trains a prediction model for each specific user. For example, a user may first be clustered into one of the categories. Once the prediction model is trained for the category, the user's individual action time / ground truth label is compared to the predicted action time for the category to determine the loss function. The training engine 206 then attempts to train the prediction model independently to reduce the loss function for a specific user.

[0053] In operation 310, the trained model is provided to the runtime system 106. This occurs after the training engine 206 achieves reasonable prediction accuracy (eg, the loss function is within a threshold).

[0054] Figure 4 4 is a flow chart of an exemplary method 400 for tagging messages using temporal prediction according to an exemplary embodiment. The operations in the method 400 may be performed by the messaging system 102 using the method described above with reference to Figure 2102. The method 400 is described in detail with reference to the messaging system 102 by way of example. However, it should be appreciated that at least some of the operations of the method 400 may be deployed on various other hardware configurations or performed by similar components residing elsewhere. For example, some of the operations may be performed at the client device 110.

[0055] In operation 402, the message engine 208 receives a new message. When the message engine 208 receives the new message, the message engine 208 automatically triggers the extraction engine 210 to perform an extraction process.

[0056] In operation 404, the extraction engine 210 extracts message features / attributes from the new message. In some embodiments, the extraction engine 210 extracts message information such as the message content (e.g., title, body) and the sender of the message, as well as other message attributes (e.g., whether there is an attachment, whether it is marked as high importance, whether a user is mentioned in the message). The extraction engine 210 then extracts message features based on this information.

[0057] In operation 406, the modeling engine 212 applies a prediction model corresponding to the user (e.g., the message recipient) to predict the user action time. The modeling engine 212 takes the message features from the extraction engine 210 as input and applies the prediction model. The result is the predicted user action time for the message. The modeling engine 212 sends the result back to the message engine 208.

[0058] In operation 408, the message engine 208 tags the message with a tag indicating the predicted user action time. In an exemplary embodiment, the predicted user action time is attached to the message as another attribute of the message.

[0059] Figure 5 is a flow chart of an exemplary method 500 for presenting prioritized messages based on time prediction and context according to an exemplary embodiment. The operations in the method 500 may be performed by the messaging system 102 (eg, the runtime system 106) using the above referenced Figure 2 The method 500 is performed by the components (e.g., modules, engines) described herein. Therefore, the method 500 is described by way of example with reference to the messaging system 102. However, it should be appreciated that at least some of the operations of the method 500 may be deployed on various other hardware configurations, or performed by similar components residing elsewhere. For example, some of the operations may be performed at the client device 110.

[0060] In operation 502, the messaging system 102 receives a trigger to activate time management message recommendations for a user. For example, the user selects a "smart time" icon on their messaging user interface. The user can also specify the amount of time available to read and reply to messages. Activation of the time management recommendation option causes the messaging system 102 to recommend messages based on available time and importance of the message. In some cases, the user can also activate a context-based recommendation trigger that enables recommendations based on time availability, importance, and context of the message.

[0061] In operation 504, the recommendation engine 214 accesses tags indicating predicted action times for the user's messages. Thus, the recommendation engine 214 identifies a predicted user action time for each new (eg, unread) message.

[0062] In operation 506, the recommendation engine 214 determines an importance prediction for each message. In one embodiment, the recommendation engine 214 makes an API call to a separate system that determines the importance of each message based on the characteristics / attributes of each message (e.g., being marked as important or associated with a high-value relationship, such as from a manager or spouse). In other embodiments, the recommendation engine 214 performs the determination of importance for each message.

[0063] In operation 508, the recommendation engine 214 ranks the messages according to their importance. Thus, when a user enables a time-aware (e.g., smart curation) view of messages, the recommendation engine 214 performs a recommendation process to pin to the top of the list the most important messages that the user can read (and in some cases respond to) within the indicated available amount of time.

[0064] In operation 510, the messaging system 102 determines whether a context-based recommendation trigger is received, such as in operation 502. If a context-based recommendation trigger is received, the recommendation engine 214 performs a context-based analysis of the message in operation 512. In various embodiments, the context-based recommendation can be based on one or more of location awareness, time awareness, human awareness, and people awareness.

[0065] In some cases, the recommendation engine 214 accesses a scheduling assistant (e.g., in a calendar or scheduling application of a scheduling system) to identify upcoming appointments or events. Using the upcoming appointments and events, the recommendation engine 214 identifies messages related to the upcoming appointments and events (e.g., indicated in the subject line or content of the message).

[0066] In operation 514, the recommendation engine 214 determines the recommended / prioritized messages. In embodiments where the user specifies an amount of time they have available to view and respond to messages (e.g., 30 minutes), the recommendation engine 214 utilizes the message importance prediction and the user action prediction time for each message, ranks the messages based on importance and user action prediction time taking into account the indicated available time, and determines the highest number of one or more messages for the user where the total time required to recommend the messages is within the user-specified available time. In embodiments where context-based recommendation triggers are also activated, the recommendation engine 214, in some embodiments, obtains ranked messages (taking into account the indicated available time based on importance and user action prediction time) and further filters (e.g., selects the most important messages in the context) these messages based on context (e.g., location-aware, time-aware, human-aware, and person-aware).

[0067] In operation 516, the prioritized messages are visually distinguished (or caused to be visually distinguished) on a specially configured user interface displayed to the user. In these embodiments, the runtime system 106 (e.g., the message engine 208) distinguishes these recommended messages by pinning them to the top of the message list or visually distinguishing them (e.g., marking the message label in red).

[0068] Figure 6 An exemplary screenshot of a message user interface showing a tagged message 600 is illustrated. The tagged message 600 includes a predicted user action time "tag" 604, which indicates the amount of time it is predicted for a user to read and, in some cases, respond to the message. In this example, the predicted user action time is 5 minutes.

[0069] Figure 7 An exemplary screenshot of a message user interface showing prioritized messages is illustrated. Figure 7 In the example of , the user has triggered smart time selection 702, which triggers smart time management of messages. Smart time selection 702 includes a field 704 for entering the amount of available time that the user has to read and respond to the message. In some embodiments, field 704 includes a drop-down menu from which the user selects the amount of available time. In other embodiments, field 704 includes an input field in which the user can specify (e.g., enter) the amount of available time. In this example, the user has indicated that they have 15 minutes to read and respond to the message.

[0070] In response to activation of smart time selection 702, messaging system 102 (e.g., recommendation engine 214) determines the most important messages that the user can respond to within the indicated available amount of time. As shown, recommendation engine 214 identifies three messages and promotes them to the top of message list 706. The three recommended messages are visually distinguished from non-recommended messages (e.g., shown below on message list 706) by each recommended message (e.g., indicated by a red unread bar 708 and / or surrounded by a red box 710). The user is also shown an estimated amount of time 712 (e.g., 15 minutes) for viewing the recommended messages.

[0071] Figure 8 An exemplary screenshot of a message user interface showing a time allocation interface 800 is illustrated. In some embodiments, when the user activates the messaging system (e.g., activates an email system) after the extended amount of time or at startup, the recommendation engine 214 provides a notification in the time allocation interface 800. The time allocation interface 800 indicates a plurality of important unread messages and the estimated amount of time required to view these important unread messages. The time allocation interface 800 can also suggest a time frame in which the user may want to view these messages. For example, the time frame is determined based on the messaging system's perception of a calendar event (e.g., a meeting) scheduled for the user. If the user selects a block time (e.g., during the indicated time frame) for viewing important messages, the messaging system 102 "schedules" the viewing time in the user's calendar.

[0072] Fig. 9 An exemplary screenshot of a message user interface showing an alternative time allocation interface 900 is illustrated. The alternative time allocation interface 900 is provided at the end of the workday or when the user attempts to close the messaging application (e.g., close the email application). The alternative time allocation interface 900 provides an indication of the number of important messages that have not yet been read. The alternative time allocation interface 900 also indicates the predicted amount of time that may be required to read and respond to the remaining unread important messages. In some embodiments, the alternative time allocation interface 900 may also suggest one or more time frames during which the user may want to view these unread important messages.

[0073] Fig.10 1000 is a block diagram illustrating components of a machine 1000 that can read instructions 1024 from a machine storage medium 1022 and perform, in whole or in part, any one or more of the methods discussed herein, according to some exemplary embodiments. Fig.10The machine 1000 is shown in the exemplary form of a computing device (e.g., a computer) in which instructions 1024 (e.g., software, a program, an application, an applet, an app, or other executable code) may be executed in whole or in part to cause the machine 1000 to perform any one or more of the methodologies discussed herein.

[0074] For example, instruction 1024 may cause machine 1000 to execute Figure 4 and Figure 5 The instructions 1024 are capable of transforming a general-purpose, unprogrammed machine 1000 into a specific machine (eg, a specially configured machine) that is programmed to perform the functions described and illustrated in the manner described.

[0075] In alternative embodiments, the machine 1000 operates as a standalone device or may be connected (e.g., networked) to other machines. The machine 1000 may be a server computer, a client computer, a personal computer (PC), a tablet computer, a laptop computer, a netbook, a set-top box (e.g., STB), a personal digital assistant (PDA), a cellular phone, a smart phone, a web appliance, a network router, a network switch, a network bridge, a power adapter, or any machine 1000 capable of executing instructions 1024 sequentially or otherwise, which specify actions to be taken by the machine 1000. In addition, although only a single machine 1000 is illustrated, the term "machine" should also be taken to include a collection of machines that individually or collectively execute instructions 1024 to perform any one or more of the methods discussed herein.

[0076] The machine 1000 includes: a processor 1002 (e.g., a central processing unit (CPU), a graphics processing unit (GPU), a digital signal processor (DSP), an application-specific integrated circuit (ASIC), a radio frequency integrated circuit (RFIC), or any suitable combination thereof); a main memory 1004 and a static memory 1006, which are configured to communicate with each other via a bus 1008. The processor 1002 may include microcircuits that can be temporarily or permanently configured by some or all of the instructions 1024, so that the processor 1002 can be configured to perform any one or more of the methods described herein in whole or in part. For example, a collection of one or more microcircuits of the processor 1002 can be configured to execute one or more modules (e.g., software modules) described herein.

[0077] The machine 1000 may also include a graphics display 1010 (e.g., a plasma display panel (PDP), a light emitting diode (LED) display, a liquid crystal display (LCD), a projector, a cathode ray tube (CRT), or any other display capable of displaying graphics or video). The machine 1000 may also include an alphanumeric input device 1012 (e.g., a keyboard or keypad), a cursor control device 1014 (e.g., a mouse, a touch pad, a trackball, a joystick, a motion sensor, an eye tracking device, or other pointing instrument), a storage unit 1016, a signal generating device 1018 (e.g., a sound card, an amplifier, a speaker, a headphone jack, or any suitable combination thereof), and a network interface device 1020.

[0078] The storage unit 1016 includes a machine storage medium 1022 on which are stored instructions 1024 embodying any one or more of the methodologies or functions described herein. The instructions 1024 may also reside, in whole or in part, within the main memory 1004, within the processor 1002 (e.g., within a cache of the processor), or both, before or during execution by the machine 1000. Thus, the main memory 1004 and the processor 1002 may be considered machine storage media 1022 (e.g., tangible and non-transitory machine-readable media).

[0079] In some exemplary embodiments, the machine 1000 may be a portable computing device and have one or more additional input components (e.g., sensors or meters). Examples of such input components include an image input component (e.g., one or more cameras), an audio input component (e.g., a microphone), a direction input component (e.g., a compass), a position input component (e.g., a global positioning system (GPS) receiver), an orientation component (e.g., a gyroscope), a motion detection component (e.g., one or more accelerometers), an altitude detection component (e.g., an altimeter), and a gas detection component (e.g., a gas sensor). Input collected by any one or more of these input components may be accessed and used by any module described herein.

[0080] Executable instructions and machine storage media

[0081] Various memories (i.e., 1004, 1006 and / or the memory of the processor(s) 1002) and / or storage unit 1016 may store one or more sets of instructions and data structures (e.g., software) 1024 embodying or utilized by any one or more of the methodologies or functions described herein. These instructions, when executed by the processor(s) 1002, cause various operations to implement the disclosed embodiments.

[0082] As used herein, the terms "machine storage medium," "device storage medium," "computer storage medium" (collectively referred to as "machine storage medium 1022") mean the same thing and may be used interchangeably in this disclosure. The term refers to a single or multiple storage devices and / or media (e.g., a centralized or distributed database and / or associated caches and servers) that store executable instructions and / or data, as well as a cloud-based storage system or a storage network comprising multiple storage devices or devices. Accordingly, the term should be understood to include, but is not limited to: solid-state memory and optical and magnetic media, including memory internal or external to the processor. Specific examples of machine storage medium 1022 include non-volatile memory, such as semiconductor memory devices, such as erasable programmable read-only memory (EPROM), electrically erasable programmable read-only memory (EEPROM), FPGAs, and flash memory devices; magnetic disks, such as internal hard disks and removable disks; magneto-optical disks; and CD-ROM and DVD-ROM disks. The terms "machine storage media," "computer storage media," and "device storage media" specifically exclude carrier waves, modulated data signals, and other such media, at least some of which will be encompassed by the term "signal media" discussed below. In this sense, machine storage media are non-transitory.

[0083] Signal medium

[0084] The term "signal medium" or "transmission medium" should be taken to include any form of modulated data signal, carrier wave, etc. The term "modulated data signal" means a signal that has one or more of its characteristics set or changed in such a manner as to encode information in the signal.

[0085] Computer readable medium

[0086] The terms "machine-readable medium," "computer-readable medium," and "device-readable medium" mean the same thing and are used interchangeably in this disclosure. The terms are defined to include both machine storage media and signal media. Thus, the terms include both storage devices / medium and carrier waves / modulated data signals.

[0087] The instructions 1024 may also be sent or received over the communication network 1026 using a transmission medium via the network interface device 1020 and utilizing any of a number of well-known transmission protocols (e.g., HTTP). Examples of the communication network 1026 include a local area network (LAN), a wide area network (WAN), the Internet, a mobile telephone network, a plain old telephone service (POTS) network, and wireless data networks (e.g., Wi-Fi, LTE, and WiMAX networks). The term "transmission medium" or "signal medium" shall be taken to include any intangible medium that is capable of storing, encoding, or carrying the instructions 1024 to be executed by the machine 1000, and includes digital or analog communication signals or other intangible media to facilitate the communication of such software.

[0088] Throughout the specification, multiple instances can implement components, operations or structures described as single instances. Although the individual operations of one or more methods are illustrated and described as separate operations, one or more individual operations can be performed simultaneously, and it is not necessary to perform the operations in the illustrated order. The structure and function presented as separate components in the exemplary configuration can be implemented as a combined structure or component. Similarly, the structure and function presented as a single component can be implemented as a separate component. These and other variations, modifications, additions and improvements fall within the scope of the subject matter in this article.

[0089] Certain embodiments are described herein as including logic or multiple components, modules, or mechanisms. A module may constitute a software module (e.g., a code embodied in a machine storage medium 1022 or a signal medium) or a hardware module. A "hardware module" is a tangible unit capable of performing certain operations and may be configured or arranged in a physical manner. In various exemplary embodiments, one or more computer systems (e.g., a stand-alone computer system, a client computer system, or a server computer system) or one or more hardware modules of a computer system (e.g., a processor 1002 or a group of processors 1002) may be configured by software (e.g., an application or application portion) to operate as a hardware module for performing certain operations described herein.

[0090] In some embodiments, the hardware module can be implemented mechanically, electronically, or any suitable combination thereof. For example, the hardware module may include a dedicated circuit or logic that is permanently configured to perform certain operations. For example, the hardware module may be a dedicated processor, such as a field programmable gate array (FPGA) or an ASIC. The hardware module may also include programmable logic or circuits that are temporarily configured by software to perform certain operations. For example, the hardware module may include software contained in a general-purpose processor or other programmable processor. It will be appreciated that the decision to mechanically implement the hardware module in a dedicated and permanently configured circuit or in a temporarily configured circuit (e.g., configured by software) may be driven by cost and time considerations.

[0091] Accordingly, the phrase "hardware module" should be understood to include a tangible entity, which is an entity that is physically constructed, permanently configured (e.g., hardwired) or temporarily configured (e.g., programmed) to operate in a particular way or perform certain operations described herein. As used herein, a "hardware-implemented module" refers to a hardware module. Considering embodiments in which a hardware module is temporarily configured (e.g., programmed), each hardware module does not need to be configured or instantiated at any time. For example, in the case where a hardware module includes a general-purpose processor that is configured by software to become a special-purpose processor, the general-purpose processor can be configured as different special-purpose processors (e.g., including different hardware modules) at different times. Software can therefore configure the processor, for example, to constitute a specific hardware module at one time, and to constitute different hardware modules at different times.

[0092] The various operations of the exemplary methods described herein may be performed at least in part by one or more processors that are temporarily configured (e.g., by software) or permanently configured to perform the related operations. Whether temporarily configured or permanently configured, such processors may constitute processor-implemented modules that operate to perform one or more operations or functions described herein. As used herein, "processor-implemented modules" refer to hardware modules implemented using one or more processors.

[0093] Similarly, the methods described in this article can be implemented at least in part by a processor, which is an example of hardware. For example, at least some operations of a method can be performed by one or more processors or modules implemented by the processor. In addition, one or more processors can also support the execution of related operations in a "cloud computing" environment or as "software as a service" (SaaS). For example, at least some operations can be performed by a group of computers (as an example of a machine including a processor), which can be accessed via a network (e.g., the Internet) and via one or more appropriate interfaces (e.g., application program interface (API)).

[0094] The execution of certain operations can be distributed among one or more processors, not only residing in a single machine, but can be deployed across multiple machines. In some exemplary embodiments, one or more processors or processor-implemented modules can be located in a single geographic location (e.g., in a home environment, an office environment, or a server farm). In other exemplary embodiments, one or more processors or processor-implemented modules can be distributed across multiple geographic locations.

[0095] Some parts of this specification can be presented according to the algorithm or symbolic representation of the operation of the data of the bit or binary digital signal stored in the machine memory (e.g., computer memory). These algorithms or symbolic representations are examples of the technology used by ordinary technicians in the field of data processing to convey the essence of their work to other technicians in the field. As used in this article, "algorithm" is a self-consistent sequence of operations or similar processes that lead to a desired result. In this context, algorithms and operations involve the physical manipulation of physical quantities. Usually, but not necessarily, such an amount can take the form of an electrical, magnetic or optical signal that can be stored, accessed, transmitted, combined, compared or otherwise manipulated by a machine. Mainly for general purposes, it is sometimes convenient to use words such as "data", "content", "bit", "value", "element", "symbol", "character", "item", "number", "digital", etc. to refer to such signals. However, these words are only convenient labels and should be associated with appropriate physical quantities.

[0096] Unless expressly stated otherwise, discussions herein using words such as "process," "calculate," "compute," "determine," "present," "display," and the like may refer to the actions or processes of a machine (e.g., a computer) that manipulate or transform data represented as physical (e.g., electrical, magnetic, or optical) quantities within one or more memories (e.g., volatile memory, non-volatile memory, or any suitable combination thereof), registers, or other machine components that receive, store, transmit, or display information. Furthermore, unless expressly stated otherwise, as is common in patent documents, the terms "a" or "an" are used herein to include one or more instances. Finally, unless expressly stated otherwise, as used herein, the conjunction "or" refers to a non-exclusive "or."

[0097] Example

[0098] Example 1 is a system for providing message recommendations. The system includes: one or more processors; and a storage medium storing instructions, which when executed by the one or more hardware processors cause the one or more hardware processors to perform operations including: machine training a predictive model associated with a user based in part on past viewing and response times for viewing and responding to messages; generating a predicted user action time for each new message of the user based on the predictive model during runtime; marking each new message received for the user with a corresponding predicted user action time; accessing the user's available time through a networked system, the available time indicating the amount of time available for the user to read and respond to the new message; determining the importance of each new message; determining a set of recommended new messages that the user should read and respond to during the available time based on the available time, the predicted user action time for each new message, and the importance of each new message, the sum of the predicted user action times for the set of recommended new messages being equal to or less than the available time; and causing an indication of the set of recommended new messages to be presented on a user interface, the set of recommended new messages being visually distinguished from non-recommended new messages.

[0099] In Example 2, the subject matter of Example 1 can optionally include: wherein the operation further includes: before determining the set of recommended new messages, ranking the new messages based on the importance of each new message.

[0100] In Example 3, the subject matter of Examples 1-2 can optionally include: wherein the operation further includes: determining the context for each new message, wherein determining the set of recommended new messages further includes: determining based on the available time, the predicted user action time for each new message, the importance of each new message, and the context for each new message.

[0101] In Example 4, the subject matter of Examples 1-3 can optionally include: wherein determining the context of each new message includes: analyzing at least some of the new messages for one of location awareness, time awareness, human awareness, or personnel awareness.

[0102] In Example 5, the subject matter of Examples 1-4 can optionally include: wherein determining the context of each new message includes: accessing a virtual assistant that manages time and event reminders for the user.

[0103] In Example 6, the subject matter of Examples 1-5 can optionally include: wherein accessing the available time of the user includes: receiving an indication of the available time from a smart time selection of the messaging user interface via a specially configured messaging user interface.

[0104] In Example 7, the subject matter of Examples 1-6 can optionally include: wherein determining the importance of each new message includes: making an API call to a separate system that determines the importance of each message based on characteristics / attributes of each of the new messages.

[0105] In Example 8, the subject matter of Examples 1-7 can optionally include: wherein the machine training of the prediction model includes: generating the cluster based on that the message reading and response behaviors of the cluster including one or more users of the user are similar; capturing reading and reply signals for the cluster from the reading and replying of past messages by the cluster; analyzing the reading and reply signals to generate basic fact labels for each past message of the cluster; determining a loss function by comparing the basic fact labels for each past message with the predicted user action time for the past messages; and adjusting parameters of the prediction model to reduce the loss function.

[0106] In Example 9, the subject matter of Examples 1-8 can optionally include: wherein the operation further includes: verifying that the loss function is below a predetermined threshold; and in response to verifying that the loss function is below the predetermined threshold, providing the prediction model to a runtime system for application during runtime.

[0107] Example 10 is a method for providing message recommendations. The method includes: machine training a predictive model associated with a user based in part on past viewing and response times for viewing and responding to messages by a hardware processor; generating a predicted user action time for each new message for the user based on the predictive model during runtime; marking each received new message for the user with a corresponding predicted user action time; accessing the user's available time, the available time indicating an amount of time available for the user to read and respond to the new message; determining the importance of each new message; based on the available time, the predicted user action time for each new message, and the importance of each new message, determining a set of recommended new messages that the user should read and respond to during the available time, the sum of the predicted user action times for the set of recommended new messages being equal to or less than the available time; and causing an indication of the set of recommended new messages to be presented on a user interface, the set of recommended new messages being visually distinguishable from non-recommended new messages.

[0108] In Example 11, the subject matter of Example 10 can optionally include: prior to determining the set of recommended new messages, ranking the new messages based on importance of each new message.

[0109] In Example 12, the subject matter of Examples 10-11 can optionally include: determining a context for each new message, wherein determining a set of recommended new messages further includes: determining based on the available time, the predicted user action time for each new message, the importance of each new message, and the context for each new message.

[0110] In Example 13, the subject matter of Examples 10-12 can optionally include: wherein determining the context of each new message includes: analyzing at least some of the new messages for one of location awareness, time awareness, human awareness, or people awareness.

[0111] In Example 14, the subject matter of Examples 10-13 can optionally include: wherein determining the context of each new message includes: accessing a virtual assistant that manages time and event reminders for the user.

[0112] In Example 15, the subject matter of Examples 10-14 can optionally include: wherein accessing the available time of the user includes: receiving an indication of the available time from a smart time selection of the messaging user interface via a specially configured messaging user interface.

[0113] In Example 16, the subject matter of Examples 10-15 can optionally include: wherein determining the importance of each new message includes: making an API call to a separate system that determines the importance of each message based on characteristics / attributes of each of the new messages.

[0114] In Example 17, the subject matter of Examples 10-16 can optionally include: wherein the machine training of the prediction model includes: generating the cluster based on that the message reading and response behaviors of the cluster including one or more users of the user are similar; capturing reading and reply signals for the cluster from the reading and replying of past messages by the cluster; analyzing the reading and reply signals to generate basic fact labels for each past message of the cluster; determining a loss function by comparing the basic fact labels for each past message with the predicted user action time for the past messages; and adjusting parameters of the prediction model to reduce the loss function.

[0115] In Example 18, the subject matter of Examples 10-17 can optionally include: verifying that the loss function is below a predetermined threshold; and in response to verifying that the loss function is below the predetermined threshold, providing the predictive model to a runtime system for application during runtime.

[0116] Example 19 is a machine storage medium for providing message recommendations. The machine storage medium configures one or more processors to perform operations including: machine training a predictive model associated with a user based in part on past viewing and response times for viewing and responding to messages; generating a predicted user action time for each new message for the user based on the predictive model during runtime; marking each new message received for the user with a corresponding predicted user action time; accessing the user's available time, the available time indicating the amount of time the user has available to read and respond to the new message; determining the importance of each new message; based on the available time, the predicted user action time for each new message, and the importance of each new message, determining a set of recommended new messages that the user should read and respond to during the available time, the sum of the predicted user action times for the set of recommended new messages being equal to or less than the available time; and causing an indication of the set of recommended new messages to be presented on a user interface, the set of recommended new messages being visually distinguished from non-recommended new messages.

[0117] In Example 20, the subject matter of Example 19 can optionally include: wherein the operation further includes: determining a context for each new message, wherein determining a set of recommended new messages further includes: determining based on the available time, the predicted user operation time for each new message, the importance of each new message, and the context for each new message.

[0118] Although an overview of the subject matter has been described with reference to specific exemplary embodiments, various modifications and changes may be made to these embodiments without departing from the broader scope of embodiments of the invention. For example, one of ordinary skill in the art may mix and match the various embodiments or features thereof, or make them optional. For convenience only, the term "invention" may be used herein to refer to such embodiments of the invention, either individually or collectively, without intending to actively limit the scope of the application to any single invention or current concept (when more than one is actually disclosed).

[0119] It is believed that the embodiments illustrated herein have been described in sufficient detail to enable those skilled in the art to practice the disclosed teachings. Other embodiments may be used and derived therefrom, so that structural and logical substitutions and changes may be made without departing from the scope of the present disclosure. Therefore, the detailed description should not be understood in a limiting sense, and the scope of the various embodiments is limited only by the appended claims and the full range of equivalents to which these claims are assigned.

[0120] In addition, multiple instances may be provided as a single instance for the resources, operations, or structures described herein. In addition, the boundaries between various resources, operations, modules, engines, and data stores are somewhat arbitrary, and specific operations are shown in the context of specific illustrative configurations. Other allocations of functions can be envisioned and may fall within the scope of various embodiments of the present invention. Typically, structures and functions presented as separate resources in an exemplary configuration may be implemented as combined structures or resources. Similarly, structures and functions presented as single resources may be implemented as separate resources. These and other variations, modifications, additions, and improvements fall within the scope of embodiments of the present invention as represented by the appended claims. Therefore, the specification and drawings should be considered illustrative rather than restrictive.

Claims

1. A system for recommending messages, comprising: one or more hardware processors; as well as A memory storing instructions that, when executed by the one or more hardware processors, cause the one or more hardware processors to perform operations including: generating, during runtime, a predicted user action time for each new message for a user based on a predictive model associated with the user, the predictive model being machine trained based in part on past view and response times for viewing and responding to messages; tagging each new message received for the user with a corresponding predicted user action time; accessing the user's available time, the available time indicating an amount of time the user has available to read and respond to the new message; identifying, via a scheduling assistant, one or more upcoming events for the user; identifying messages related to the one or more upcoming events based on the context of each new message; ranking the new messages based on the available time, the predicted user action time for each new message, and the importance for each new message; filtering the ranked messages based on the identified messages related to the one or more upcoming events to determine a set of recommended new messages that the user should read and respond to during the available time, the set of recommended new messages including at least some of the identified messages that are contextually important and related to the one or more upcoming events, a sum of the predicted user action times for the set of recommended new messages being equal to or less than the available time; as well as An indication of the set of recommended new messages is caused to be presented on a user interface, and the set of recommended new messages is visually distinguished from non-recommended new messages.

2. The system according to claim 1, wherein: Generating the predicted user action time includes: detecting one or more message features extracted from the new message; determining, in real time, a value for each extracted message feature; multiplying each value of the extracted one or more message features by a corresponding parameter of the predictive model; and The results of the multiplications are summed.

3. The system according to claim 1, wherein: The operation also includes: determining a context for each new message, wherein determining a set of recommended new messages also includes: determining based on the available time, the predicted user action time for each new message, the importance of each new message, and the context for each new message.

4. The system according to claim 1, wherein: Determining the context of each new message includes analyzing at least some of the new messages for one of location awareness, time awareness, human awareness, or people awareness.

5. The system according to claim 1, wherein: Determining the context of each new message includes accessing a virtual assistant that manages time and event reminders for the user.

6. The system according to claim 1, wherein: Accessing the available times of the user includes receiving, via a specially configured messaging user interface, an indication of the available times from a smart time selection of the messaging user interface.

7. The system according to claim 1, wherein: Determining the importance of each new message includes making an API call to a separate system that determines the importance of each of the new messages based on characteristics / attributes of each of the new messages.

8. The system according to claim 1, wherein: The machine training of the prediction model comprises: generating the cluster based on that message reading and response behaviors of the cluster of one or more users including the user are similar; capturing read and reply signals for the cluster from reading and replying to past messages by the cluster; analyzing the read and reply signals to generate a ground truth label for each of the past messages of the cluster; determining a loss function by comparing the ground truth label for each of the past messages with a predicted user action time for the past messages; and The parameters of the prediction model are adjusted to reduce the loss function.

9. The system according to claim 8, wherein: The operations also include: verifying that the loss function is below a predetermined threshold; and Responsive to the verification that the loss function is below the predetermined threshold, providing the predictive model to a runtime system for application during runtime.

10. A method for recommending a message, comprising: generating, during runtime, a predicted user action time for each new message for the user based on a predictive model associated with the user, the predictive model being machine trained based in part on past view and response times for viewing and responding to messages; marking each new message received for the user with a corresponding predicted user action time; accessing the user's available time, the available time indicating an amount of time the user has available to read and respond to the new message; identifying, via a scheduling assistant, one or more upcoming events for the user; identifying messages related to the one or more upcoming events based on the context of each new message; ranking the new messages based on the available time, the predicted user action time for each new message, and the importance for each new message; filtering the ranked messages based on the identified messages related to the one or more upcoming events to determine a set of recommended new messages that the user should read and respond to during the available time, the set of recommended new messages including at least some of the identified messages that are contextually important and related to the one or more upcoming events, a sum of the predicted user action times for the set of recommended new messages being equal to or less than the available time; as well as An indication of the set of recommended new messages is caused to be presented on a user interface, and the set of recommended new messages is visually distinguished from non-recommended new messages.

11. The method according to claim 10, wherein: Generating the predicted user action time includes: detecting one or more message features extracted from the new message; determining, in real time, a value for each extracted message feature; multiplying each value of the extracted one or more message features by a corresponding parameter of the predictive model; and The results of the multiplications are summed.

12. The method according to claim 10, wherein: Accessing the available times of the user includes receiving, via a specially configured messaging user interface, an indication of the available times from a smart time selection of the messaging user interface.

13. The method according to claim 10, wherein: Determining the importance of each new message includes making an API call to a separate system that determines the importance of each of the new messages based on characteristics / attributes of each of the new messages.

14. The method according to claim 10, wherein: The machine training of the prediction model comprises: generating the cluster based on that message reading and response behaviors of the cluster of one or more users including the user are similar; capturing read and reply signals for the cluster from reading and replying to past messages by the cluster; analyzing the read and reply signals to generate a ground truth label for each of the past messages of the cluster; determining a loss function by comparing the ground truth label for each of the past messages with a predicted user action time for the past messages; and The parameters of the prediction model are adjusted to reduce the loss function.

15. A machine storage medium storing instructions that, when executed by one or more processors of a machine, cause the one or more processors to perform operations comprising: generating, during runtime, a predicted user action time for each new message for the user based on a predictive model associated with the user, the predictive model being machine trained based in part on past view and response times for viewing and responding to messages; marking each new message received for the user with a corresponding predicted user action time; accessing the user's available time, the available time indicating an amount of time the user has available to read and respond to the new message; identifying, via a scheduling assistant, one or more upcoming events for the user; identifying messages related to the one or more upcoming events based on the context of each new message; ranking the new messages based on the available time, the predicted user action time for each new message, and the importance for each new message; filtering the ranked messages based on the identified messages related to the one or more upcoming events to determine a set of recommended new messages that the user should read and respond to during the available time, the set of recommended new messages including at least some of the identified messages that are contextually important and related to the one or more upcoming events, a sum of the predicted user action times for the set of recommended new messages being equal to or less than the available time; as well as An indication of the set of recommended new messages is caused to be presented on a user interface, and the set of recommended new messages is visually distinguished from non-recommended new messages.

Citation Information

Patent Citations

  • Email Personalization

    US20180048595A1

  • Personalized message priority classification

    WO2018137668A1