End-to-end email tag prediction

The automatic end-to-end email tagging system addresses the challenge of information overload by using a prediction model for consistent tagging, reducing processing time and enhancing email organization within organizations.

JP2025087724APending Publication Date: 2025-06-10ORACLE INT CORP
View PDF 8 Cites 0 Cited by

Patent Information

Application Number
JP2025024369
Authority / Receiving Office
JP · JP
Patent Type
Applications
Current Assignee / Owner
Priority Date
2019-12-09
Filing Date
2025-02-18
Publication Date
2025-06-10

AI Technical Summary

Technical Problem

As the volume of email within an organization increases, users spend more time processing daily email communication, leading to information overload, and existing solutions fail to consistently classify emails across the organization.

Method used

The system provides automatic end-to-end tagging of email messages by using a prediction model that identifies applicable tags based on email information, allowing users to edit and retrain the model, ensuring consistent tagging across the organization.

Benefits of technology

This solution reduces the time spent on email processing by automating consistent tagging, minimizing information overload, and allowing for standardized classification of emails within a group.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 2025087724000001_ABST
    Figure 2025087724000001_ABST
Patent Text Reader

Abstract

To provide a system for automatic end-to-end tagging of email messages, a method and a non-transitory computer readable medium.SOLUTION: While a message is being composed at a sending email client, an email server may receive email information that is used as an input to a predictive model. The predictive model identifies tags that are available to a specific user group or email list that apply to the email message. The predicted tags are sent back to the email client. The tags may be embedded in the email message with other user-defined tags. As the message is passed through the email server, a tag predictive server may use any changes made to the predicted tags to retrain the model. When the message is received, a second email client may further edit the tags, and use any changes again to retrain the model.SELECTED DRAWING: Figure 1
Need to check novelty before this filing date? Find Prior Art

Description

Background Art

[0001] Background Modern Internet and network communications have increased exponentially over the past 20 years. Currently, members of an organization can communicate instantaneously through several different parallel communication channels, including email, instant messaging, text messaging, conversation channels, social media, and / or the like. This communication has led to increased accessibility of information, as well as an unprecedented level of collaboration and teamwork among dispersed employees. Most in-person meetings have been replaced by electronic communication, which is often more efficient, concise, and effective.

[0002] Despite the continued emergence of various communication means, the primary method of business communication remains email within an organization. Despite the improved productivity resulting from instant email communication, several problems remain that limit the improvements that could otherwise be made. Specifically, as the volume of email within an organization increases, users may be required to spend increasingly more time opening, reading, filing, addressing, or otherwise processing the large volume of daily email communication. Even when limited to a specific organization, such as a small number of members participating in a group project, the vast amount of email received daily can immediately lead to information overload.

[0003] In the past, users who received emails have used several techniques in an attempt to organize and reduce this deluge of email communication. For example, one email client allows users to classify received emails into various folders. Also, one email client uses static labels or tags that are manually assigned to classify emails according to a particular topic. One previous solution used logical formulas to set rules for automatically classifying emails based on the subject line or word sequences within the body of the email when it is received. However, each of these solutions does not automatically classify emails in a consistent manner across the organization and does not apply tags in an end-to-end manner from the email sender to the email recipient. As a result, different category assignments will be manually made for each inbox within the organization. SUMMARY OF THE INVENTION

[0004] Summary The system provides automatic end-to-end tagging of email messages. While the message is being composed in the sending email client, the server can receive email information that is used as input to a prediction model. This model identifies tags that are applicable to a particular user group or email list for the email message. These predicted tags are returned to the email client and the tags may be embedded in the email along with other tags defined by the user. When the message is sent through the email server, the system can retrain the model using any changes made to the predicted tags. When the message is received by a second email client, the recipient can further edit the tags and can retrain the model using any changes again.

[0005] When an email message is composed in the sending email client, a set of predicted tags may be requested from the system. The email message is a mailing list or It may be associated with a user group such as another organizational group, etc., and this group may have its own set of available tags that evolve with group messages over time. The system can use email information (e.g., body, subject, email recipients, etc.) as input to a model that has an output corresponding to each available tag. The model may generate a score for each tag and use a threshold to select a set of predicted tags from the group's available tags. The sending email client may display the predicted tags in the user interface along with the subject, recipient list, etc. Next, the user may edit the predicted tags, select the predicted tags, deselect the predicted tags, and / or add new user tags. When adding new tags, the system may provide an auto - complete function that matches the typed prefix with available tags not provided as predicted tags.

[0006] When an email message is sent, the selected / deselected / user tags may be sent along with the email message. For example, the tags may be embedded in the header of the email message. When the message is received by the email server, the system may use the model to analyze the email tags again. If predicted tags are not selected / provided, the system may use the email information to generate a set of predicted tags at the email server. Next, these predicted tags may be added to the email before being transferred to the receiving email client. If new tags are added by the user or existing tags are edited by the user, the model may then be retrained using the email information and the changed tags as training pairs.

[0007] When an email is received by the receiving - side email client, the receiving - side user may reuse the user interface to edit, add, and / or delete tags received with the email message. Once these edits are complete, the system may reuse any changes made by the receiving - side user to generate a new training set for the tag prediction model. This enables tags to be assigned, propagated, and / or edited from the start to the end of the email message's life cycle. The sender and / or the receiver can use a common set of tags so that the classification of emails can be standardized within a group. Also, the tag prediction model trained and utilized for sending emails may be used to tag messages in additional communication channels such as Slack (registered trademark) channels, social media feeds, instant messaging, etc.

[0008] Some implementations of the tag prediction model may generate a word - embedding matrix populated with email information. Each of several different convolutional filters with different window sizes may be executed against the columns of the word - embedding matrix. A max - pooling operation may be performed on the results from the convolutional filters to populate a result vector. The model may also further include a set of parallel operations that also use the word - embedding matrix. An attention matrix may be generated from the word - embedding matrix, and another max - pooling operation may be used to associate specific tags with portions of the input text. A second result vector can be generated by multiplying the resulting attention vector by the transpose of the word - embedding matrix. Next, by combining these two result vectors as a fully - connected layer, a final score for each of the available tags can be provided.

[0009] A further understanding of the nature and advantages of the various embodiments can be obtained by reference to the remainder of the specification and the drawings, in which like reference numerals are used throughout several views to indicate corresponding parts. In some cases, a sub-label is associated with the reference numeral to indicate one of a plurality of like components. When reference numerals are referred to without specifying an existing sub-label, it is intended to refer to all of such plurality of like components.

Brief Description of the Drawings

[0010]

Figure 1

Figure 2A

Figure 2B

Figure 2C

Figure 2D

Figure 3

Figure 4

Figure 5

Figure 6

Figure 7A

Figure 7B

Figure 7C

Figure 8

Figure 9

Figure 10

Figure 11

Figure 12

Figure 13

Figure 14

Figure 15

Mode for Carrying Out the Invention

[0011] Detailed Description This specification describes embodiments for implementing a collaborative email tag prediction module for email and other communication channels. The central server may include a machine learning model that learns to predict tags based on an input set provided to the system. The input set may include email information such as the text or body of the email, the subject of the email, the attachments of the email, the identities of the sender / receiver of the email, etc. This input text may be analyzed together with information such as mailing lists or group memberships. This information may be used to classify messages into existing groups or organizations. This group or organization may have an existing set of organizational tags that can be used to classify messages sent within the organization. Messages are identified by their content and can be classified into specific groups. For example, messages sent via email can be grouped with messages sent through channels such as SLACK (registered trademark) channels, social media threads, instant messaging conversations, etc. The tag prediction process may use a model specific to each group or subgroup, and the model may be continuously trained to refine a predefined list of tags and predict the tags associated with each message. These tags may be automatically provided to the user when the message is first created. Then, the user can have the option to add, delete, or modify the proposed list of tags. The tag prediction process may provide auto-complete predictions from a predefined list of tags for the organization when the user is making such edits. After the user edits are complete, the changes can be used to further train the model to continuously evolve with the user's preferences over time within the organization. When an email is sent, the server can identify any differences between the predicted tags and those actually used by the user. Finally, when an email message is received, the receiving user may add, delete, and / or modify the tags within the message, and these changes can be used to further train the model again.

[0012] Figure 1 shows a system architecture 100 for implementing dynamic tag prediction according to some embodiments. The systems described herein may be classified as "end-to-end" tag prediction systems that can predict and / or refine tags when a message is created by a sender, when the message is transmitted between the sender and the recipient, and when the message is read and received by the recipient. This can be contrasted with existing systems that provide tags or other classification methods that are used exclusively by the sender or the recipient. For example, prior to the present disclosure, an email client enabled a user to classify or tag the email upon receipt. However, there was no mechanism to automatically propose tags when the message was being created by the sender, no mechanism to predict tags specific to a particular organization or user group, and no mechanism to propagate tags from the sender to the recipient in a uniform manner for messages sent across an entire organization.

[0013] As further described below, the methods and systems described herein may be applied to any communication channel. More specifically, the methods and systems described herein may be applied to multiple types of communication channels such that tags can be shared regardless of communication compatibility between the channels. Throughout the present disclosure, email messages may be used as a specific example of messages created by the sender's and recipient's email clients and sent through an email server. A tag prediction server monitors messages when they are created, read, and / or transmitted through the email server to perform tag prediction / proposal and continuously train the group model It can be refined. However, the use of email messages, email clients, and email servers is provided for illustrative purposes only and is not intended to be limiting. Other embodiments may freely use any kind of communication channel.

[0014] System architecture 100 may include a client device referred to as a sending client device 102. The sending client device 102 may include any digital device capable of sending an email message, including but not limited to smartphones, digital assistants, laptop computers, desktop computers, tablet computers, smart home devices, virtual / augmented reality devices, etc. The sending client device 102 may include an email client 104 including a software process that provides a user interface through which messages can be sent / received and message creation, reading, editing, storage, classification, etc. can be performed. The email client 104 may be a stand-alone application (e.g., an "app") operating on a smartphone, as well as an application, browser-based application, and / or any other software process operating on a desktop computer.

[0015] System architecture 100 may also include a receiving client device 108. The receiving client device 108 may also include an email client 110. The receiving client device 108 and / or the email client 110 may be configured as described above for the sending client device 102 and / or the email client 104.

[0016] In addition, the system architecture 100 may include an email server 106. The email server (or "mail server") 106 may include any server that processes and distributes email messages over a network. The email server 106 may receive an email message 116 created and sent from an email client 104 on a sending client device 102. The email server 106 can identify the recipient of the email message 116 and send the email message 116 to the recipient. For example, the email server 106 can forward the email message 116 to an email client 110 on a receiving client device 108. In some embodiments, the email server 106 may store email messages for each email client 104, 110 such that the email messages may be downloaded by the email clients 104, 110 between communication sessions.

[0017] System architecture 100 may also include a tag prediction server 112. The tag prediction server 112 may include a tag prediction model 114. As will be described in detail below, the tag prediction model 114 may be configured to receive email information such as the body text of the email message 116, the subject of the email message 116, the sender / receiver of the email message 116, and / or any other metadata that may be attached to or describe the email message 116. The tag prediction model 114 can analyze the email information and, in its output, provide a set of proposed tags to be applied to the email message 116. The set of proposed tags may be provided to the email client 104 when the email message 116 is created. As will be described below, the proposed tags may be selected / deselected by the user and / or otherwise modified before the email message 116 is sent. When the email message 116 is sent, a plurality of tags 118 may be embedded as part of the email message 116 when the email message 116 is transmitted between the sending-side client device 102 and the email server 106.

[0018] When an email message 116 is received at the email server 106, the tag prediction server 112 can consider a plurality of tags 118 sent from the sending client device 102. Next, the tag prediction server 112 may identify the difference between the tags proposed by the tag prediction model 114 and the tags selected by the user. The tag prediction server 112 may also identify tags added / removed by the user. Next, the tag prediction server 112 may generate a training pair composed of the email information and the plurality of tags 118. The email information may be used as an input configured to provide the output of the plurality of tags 118 for a training session. In addition to or instead of this, the tag prediction server 112 may also modify the tags 118 provided by the sending client device 102. For example, the tag prediction server 112 may add, delete, and / or modify the plurality of tags 118 to generate a modified plurality of tags 119 that are transmitted together with the email message 116 from the email server 106 to the receiving client device 108.

[0019] When the email message 116 is received by the email client 110 on the receiving client device 108, the email client 110 may allow the user to view and / or modify the plurality of tags 119 received from the email server 106. In a process similar to what was enabled on the sending client device 102, the receiving client device 108 may allow the user to add tags, delete tags, modify tags, and / or do similar things. Any changes made to the tags 119 may be returned to the tag prediction server 112 for retraining the tag prediction model 114.

[0020] The process described by the system architecture 100 shown in FIG. 1 provides end-to-end tag prediction that solves the above technical problems. Specifically, the model may be trained for each individual user group. Thereby, the tags applied to the emails sent within the user group can be kept uniform across the group. The sender and the recipient may use a common set of tags that become well-known and uniform across the group. Further, the model may be trained over time to be highly specific to the language, email habits, terminology, and / or communication style of the users within the group. In addition, the tags may be defined by the sender, modified at the central server, and further refined by the recipient for each individual email message. Instead of different tags being applied on the sender side while different tags are applied on the recipient side, this system architecture 100 enables the tags to be kept uniform throughout the life cycle of the email message. Since the tags are embedded in the email message when the email message is created, sent, processed, and / or received, the training opportunity is enhanced at each stage when the message is sent through the system. Overall, this provides a uniform, predictable, and adaptive tagging system that minimizes the required user effort.

[0021] FIG. 2A shows a user interface 200 that can be part of an email client 104 in a sending-side client device 102 according to some embodiments. The interface 200 may include user controls, a search function, an area for displaying the email header and / or the first line, an area for displaying the body of the selected email, etc., which are typical of modern email clients such as mailbox configurations (e.g., inbox, sent mail, drafts, etc.). In the example of FIG. 2A, the user has already provided an input that generates a display for creating a new email. This display is for the electronic It may include fields for specifying email recipients (such as "To", "CC", "BCC", etc.), fields for specifying the subject line, and / or fields for providing the body of the email. In some embodiments, the user may provide a mapping of email recipients to a mailing list or group membership. As will be described in detail below, the tags applied by the system may be selected from a group of available tags specific to a particular mailing list or group membership. The email body may include text, attachments, graphics, multimedia, and / or any other type of digital information that can be embedded in and / or attached to the email message.

[0022] In addition to the conventional displays and user controls that may be provided as part of an email client, the interface 200 may include an additional control or set of controls that enables the user to view and edit a set of predicted, selected, and / or user-specified tags for an email message. These tags 202 may be displayed along with the email recipient and the subject of the email message. As will be described in detail below, the initial tags 202 may be automatically provided from a tag prediction server. When the user creates an email, an action may trigger the email client to capture the email information, send the email information to the tag prediction server, and receive a set of predicted tags for the email message.

[0023] Several different actions may trigger the system to generate prediction tags. In some embodiments, the email information sent to the tag prediction server may include the subject, set of recipients, email body, any attachments, and / or any other metadata or descriptive information of the email message. When this information changes, the email information may be sent to the server so that it can be processed by the tag prediction model to generate a set of prediction tags. In some embodiments, tag 202 may be generated each time the email information is changed on the client device. In some embodiments, tag 202 may be generated upon expiration of a timer (e.g., every 30 seconds, every 60 seconds, etc.). In some embodiments, tag 202 may be generated when the email message is complete (e.g., when the user clicks "send"). The set of prediction tags 202 may be displayed within the tag field as shown in FIG. 2A when received from the tag prediction server.

[0024] Tag 202 may indicate the subject matter being addressed by the email message. For example, a message created in interface 200 may be related to several predefined tags previously assigned to this particular user group. For example, an email message may be related to "Meetings" when requesting a video conference. This may also be related to "Proj 233" when referring to this particular project in the email body. The message may also be related to "Procurement" when requesting procurement options for a particular widget. Finally, the message may be related to "New Mexico" when referring to the distributor at this location. Each of these tags may be automatically predicted using the tag prediction model from a set of global tags assigned to this group. These tags 202 may serve as a starting point for the user to refine the tags ultimately applied to this email message.

[0025] Figure 2B is a diagram showing how user interface 200 can be used to add new tags and delete existing tags according to some embodiments. After receiving a set 202 of predicted tags as a starting point, a user may desire to further refine the tags assigned to an email message. The user can be provided with a control 204 so that the user can enter text representing new tags to be applied to the current email message. In some embodiments, the system may provide an auto-complete function that helps guide the user to existing tags for a particular user group. As will be described in detail below, the server can select that initial set of predicted tags from a set of global tags available for this user group. Each of these available tags may correspond to an output of a tag prediction model. However, the output of the model may generate a score for each of the available tags, and the server may send only those tags having a score above a certain threshold. This ensures that predicted tags are associated with a particular email message by a minimum confidence score. The remaining available tags that are scored below the minimum confidence score may still be available as tags that can be applied to the current email message, even if they were not initially predicted to be applicable.

[0026]

[0027] ​When the user begins to type information into control 204, the system can execute an auto-complete function that first references tags within the list of available tags that were not selected as predicted tags by the tag prediction server. In this example, when the user begins to type the text "Wid…", the system searches the list of available tags that were not selected as predicted tags and can identify any of the remaining available tags that match the prefix typed by the user. For example, control 204 can provide text that finishes or auto-completes the text typed by the user, such as the "Widgets" and "Widths" tags among the list of available tags. Next, instead of the user manually typing the rest of the tag text, the user can select one of the auto-complete options.

[0028] In some embodiments, the system may allow the user to add new tags that are not part of the list of available tags. The auto-complete function indicated by control 204 can provide auto-complete options. If the user continues to type and the typed prefix does not match any of the available tags, the system may define a new tag added by the user. As described below, this new tag may be added to the list of available tags for the user group when the model is retrained. Additionally, the user can delete or "unselect" one or more of the predicted tags provided by the tag prediction server. In this example, the user may wish to remove the "Meetings" tag 203 from the list. The user may feel that this tag is unnecessary or was incorrectly assigned to this particular email message. The user may simply click on tag 203 to remove this tag from the list.

[0029] Figure 2C shows the user interface 200 after user changes have been made to the list of tags 202, according to some embodiments. As previously described, the original list of predicted tags shown in Figure 2A has been changed by adding the "Widgets" tag and deleting the "Meetings" tag. When a tag is removed from the list of predicted tags provided by the server, it can be referred to as a non - selected tag (i.e., a tag that was originally provided in the predicted tag list and was not selected by the user as applicable to this email message), and the tags remaining in the list of predicted tags can be referred to as selected tags (i.e., tags that were originally provided in the predicted tag list and were selected by the user as applicable to this email message). Additionally, any tags added manually or by the auto - complete function by the user can be called user tags. This terminology can distinguish between tags added by the user that were not initially predicted by the model and tags initially predicted by the model and saved / removed from the list.

[0030] Figure 2D is a diagram showing how the user interface 200 can be used to apply tags to specific text selections, according to some embodiments. In the above example, the entire email information may be analyzed by the model, and the predicted tags provided by the model may be applicable to the entire email message. However, some embodiments may enable a more fine - grained association between text segments within the email message and tags.

[0031] In this example, the user can highlight a specific segment of text, such as the "video conference" text string within the body of an email message. In response to the highlighting or selection of this text string, the interface 200 can generate a pop-up control 208 that enables the user to select one of the tags available from the tag prediction server for this user group. In some embodiments, the selected text may be sent to the tag prediction model, and a new set of predicted tags specific to that text selection may be provided. In this example, the tag prediction model can provide a set of tags applicable to this specific text selection, including tags such as "Video Conference", "WebEx", and / or "Web Cam". As described previously for the auto-complete function, the user can select one of the predicted tags to be applied to that specific text selection from the control 208. Additionally, if the desired tag is not available in the control 208, the user may type a new tag that can be added to the group of available tags for this user group or mailing list. The auto-complete function may be activated when the user types a new tag, and then it can provide available tags that were not initially displayed as suggested tags in the control 208. Thus, new tags may be added using the auto-complete function or by typing an entirely new tag as previously described in relation to FIG. 2B. After a tag is selected, an icon for the tag 203 may be added to the tag 202 within the tag list of the interface 200. When the user clicks on the tag 203, the "Video Conference" text is highlighted in the interface 200, and the connection between the tag 203 and the specific selected text becomes visually apparent.

[0032] Figure 3 shows a flowchart 300 of a process executed by an email client to display a set of prediction tags for user editing, according to some embodiments. This method may include receiving email information (302). The email information may be automatically loaded or provided by the user when the email is created. For example, the user can provide a subject, a set of recipients, attachments, the body of the email, and so on. When the email information is provided by the user, this information may then be provided to a tag prediction server (304).

[0033] In some embodiments, the tag prediction model may need to be sufficiently trained before it can be used to reliably predict tags from the email information. The model may be trained manually using a set of training data. The model may also be trained during use as emails are sent through the system. A determination can be made as to whether the tag prediction model is enabled, operating, and / or sufficiently trained to generate a reliable set of tag predictions (306). The model may be considered trained after a predetermined number of training data sets have been processed, at the end of a predetermined period, etc. After such an end, etc.

[0034] If the model has not yet been trained, the system may proceed without providing a set of predicted tags as a starting point for the user. However, the interface may still allow the user to add their own tags to each email message. As shown in Figure 3, these user tags may be specified using the shorthand "t_user" to designate tags entered by the user. These tags may be new to the system, or they may be selected from available tags that were not previously predicted. In some embodiments, when new user tags are provided to the system, the output of the model may be updated so that the set of available tags increases based on how the new tags are added.

[0035] If the model has been previously well-trained, the model can provide a set of predicted tags from the set of available tags, as described below. The user interface may load the set of predicted tags (310), and as a result, these tags are displayed with the email as it is being created in real time. As mentioned above, the interface may allow the user to update the tag list for adding new tags to the list, removing existing tags from the list ("deselecting"), etc. (312). Additionally, the auto-complete function may interface with the tag prediction server to provide auto-complete options taken from a global list of available tags for a particular user group (314).

[0036] After user tags are added and prediction tags are selected / deselected, a final list of tags may be presented to populate the tag field in the email before email transmission (316). This final set of tags sent from the email client of the sending-side client device may include user tags (t_user), tags that remain selected from the prediction tag list (t_sel), and / or tags that are removed / deselected from the prediction tag list (t_unsel). Optionally, some tags may be associated with a specific text selection (318). Any tags not associated with a specific text selection may be considered generally applicable to the email information.

[0037] This method may also include sending the email to an email server (320). Some embodiments may modify the conventional email structure that existed prior to this disclosure to add an additional field for tags. Specifically, all of the t_user, t_sel, and t_unsel tags may be included in the header of the email so that the server can utilize all of them. This tag structure indicates how the initial set of prediction tags from the tag prediction model was modified by the user. The model may be trained using the differences between these two tag sets so that the model adapts to the user's preferences over time. Additionally, tags associated with a specific text selection may include the tag text and the start / end criteria within the email information that define the text selection.

[0038] Figure 4 shows a functional diagram 400 of operations performed by a tag prediction server to generate a set of predicted tags from a set of available tags, according to some embodiments. This diagram 400 shows how the sending-side client device 102 interacts with the tag prediction server 112 when an email is created and sent. The email client 104 can send the above-described email information 402 to the tag prediction server 112. The email information 402 may be provided as an input to the tag prediction model 114. The tag prediction model 114 can have multiple outputs, each corresponding to a single available tag in the system. When an input set of email information 402 is provided to the tag prediction model 114, the output corresponding to each available tag can generate a confidence score. For example, the confidence score can include a decimal value between 0.0 and 1.0. The confidence score can increase as the associated available tag correlates more closely with the email information 402. Specific details of how the tag prediction model 114 operates are described in detail below with reference to FIGS. 8-11.

[0039] In this example, the number of available tags 406 in the system can include m tags. Instead of providing all m available tags 406, the system may apply a threshold to the confidence scores provided by the tag prediction model. k available tags 406 that exceed the confidence score threshold may be provided to the email client 104 as predicted tags 412. The number k of predicted tags 412 can be less than the number m of available tags 406. The predicted tags 412 may be initially displayed as tags for the email information, as described above with respect to FIG. 2A. The user may choose to retain some of the predicted tags 412, which can be referred to as selected tags 414. The user may also choose to delete some of the predicted tags 412, which can be referred to as non-selected tags 416. Both the selected tags 414 and the non-selected tags 416 may be embedded in the email message when the email message is sent.

[0040] The tag prediction model 114 may be specific to a particular user group, such as an organization or a sub-organization within an operating environment. For example, different tag prediction models 114 may be trained for different project groups. Different tag prediction models 114 may be trained for different organizations according to the organizational chart. Different tag prediction models 114 may be trained for different user roles or security authorization groups. In one common example, different tag prediction models 114 may be trained for specific mailing lists. If the user organization can construct mailing lists, a specific tag prediction model 114 may be trained for each mailing list such that each mailing list constructs its own set of available tags that grows over time to meet the needs of the members of the mailing list. In short, the tag prediction model 414 may be trained to be specific to any grouping of users.

[0041] Since the tag prediction model can easily issue several requests simultaneously, some embodiments may include a memory mechanism that stores the state of available tags for each email message. In addition, an individual user can create multiple email messages simultaneously. Thus, the email information 402 may be provided to the hash process 404. The hash process can create a unique key based on any part of the email information 402. To account for multiple emails from the same sender, the hash process 404 can use a combination of the sender email ID, the subject of the email, the mailing list, the timestamp, a portion of the email body, and / or any other information to generate a unique hash key for each email to populate the hash map 408. The hash map 408 may include the hash key for each open email message that uses a specific tag prediction model 114.

[0042] The hash map 408 can map for each open electronic mail message to the representation of available tags. These may be represented as individual weighted tries generated based on the remaining m - k available tags. A trie is a special version of a tree data structure where each node corresponds to a part of a prefix, and tags may be constructed by traversing paths within the trie. The trie may be weighted such that one path is weighted more heavily than other paths. These weights may be determined based on confidence scores derived from the tag prediction model 114.

[0043] These tags may be made available for use in the above auto - complete function. It is to be recalled that, for example, when a user starts typing in a pop - up window in the email client 104, the system can request an auto - complete entry when a tag is created. For example, the email information 402 may be provided to the hash process 404, and the hash process may generate a key corresponding to the open email message. The hash map 408 can receive the key generated by the hash process 404 and retrieve the corresponding weighted trie 410 associated with the open email message. The email message 116 may then include user tags 418 generated by the auto - complete function and any user tags 420 added by the user initially.

[0044] When the user sends the email message 116, each of the above tag types 414, 416, 418, 420 may be embedded as part of the header of the email message 116. Additionally, the email information 402 may be provided to the hash process 404 such that the corresponding key and the corresponding weighted trie 410 within the hash map 408 can be purged from the memory system.

[0045] FIG. 5 shows a flowchart 500 of a method for processing tags in an email message when the email message is sent through an email server according to some embodiments. As described in FIG. 1, when an email is received by the email server 106, the email server 106 can send the email information and / or tags to the tag prediction server 112. Next, the tag prediction server can execute this method to update the tags in the email message and / or further train the tag prediction model.

[0046] This method may first include determining whether the tag prediction model is enabled (502). If the model is not enabled, further processing of the tags and / or email information may not be necessary. Any tags embedded in the email message may be considered user tags manually added by the user because the tag prediction model was not active. The user tags may be assigned as the final tags of the email message (504), and the tag prediction server 112 may send an instruction to the email server 106 that the email message 116 may be delivered to the receiving client device 108 (526). In some embodiments, the user tags may be used as a training dataset together with the email information to train the tag prediction model and / or to build a set of available tags for a user group.

[0047] When the tag prediction model is enabled (i.e., sufficiently trained), it may be determined whether predicted tags are provided to the email client when an email message is created (506). For example, if the number of selected tags added to the number of non - selected tags is greater than 0, the predicted tags are provided to the email client and presented first as a starting point for the user. If the predicted tags are not provided, it can be assumed that the tag prediction model was not available when the message was being composed. For example, the tag prediction model may have been unavailable due to network outage, software or client updates, model training, etc. Thus, some embodiments may perform the tag prediction process at this point (508). This can generate a set of predicted tags that may be added to the set of user tags provided with the email message. For example, any tags added by the user may be combined with the predicted tags by the tag prediction model, and the union of these two tag sets may be stored as the final tags for the email message (510). The set of predicted tags may then be embedded in the email header along with the user tags, and the email may be sent with the updated set of tags (526).

[0048] More generally, it may be determined that the prediction tags were provided to the email client when the email message was being created (506). Next, it may be determined whether the user added any additional tags to the set of selected / non-selected tags predicted by the tag prediction model (512). If user tags are provided, this may indicate that the model needs to be retrained to more closely match the user's preferences / actions. Training pairs may be constructed using the email information and the combination of user tags and predicted tags (514). Next, this training pair may be provided to the tag prediction model during future training sessions. The final tag set for the email can be set as the user tags and the selected tags (516), and the email may be sent with this final set of tags (526).

[0049] If no user tags were added when the email message was created (512), it may be determined whether the user chose to maintain any of the predicted tags, i.e., whether the number of selected tags is greater than zero (518). If it is shown that there are no selected tags and the user did not maintain any of the predicted tags, it can be assumed that the user did not consider the predicted tags. In some embodiments, the user may be required to actively select tags from the predicted tag list before they are used as tags for the email. In this case, the system does not gain the benefit of discarding non-selected tags. Instead, the final tags may be set as non-selected tags (520). In fact, the system can assign all of the predicted tags to the email if none of them are selected by the user. This may indicate that the user did not adequately consider the predicted tags, and thus there is no need to train the model using the fact that they were not actively selected by the user.

[0050] If the selected tags are assigned to an email message, the selection of the tags may be used to further train the model. This helps the model adjust the confidence threshold and / or adjust the confidence scores generated by the model so that future predicted tag sets are more likely to match the selected tag sets chosen by the user. In other words, this training set makes it more likely that future users will select all of the predicted tags applicable to an email message. The training pairs are defined (522) using the email information and the set of selected tags and may be used to train the model during future training sessions. The final set of tags for the email message may be set as the selected tags for the user (524), and the email message may be sent along with this final set of tags (526).

[0051] This process shows why in some embodiments non-selected tags can be embedded in the email header along with the selected tags. Non-selected tags are not necessarily applicable to the email message indicated by the user, but may still be used by this process initiated by the email server. If the non-selected tags are not stored in the email header, they may not be available for use in this process to further train the model.

[0052] FIG. 6 shows a flowchart 600 of a method for interacting with tags using a receiving client device 108 according to some embodiments. This process may be very similar to the process described in FIG. 3 with respect to the sending client device. In this case, the receiving client device 108 can receive an email along with a set of tags (602). It may be determined whether the email client is compatible with the tagging system described above (604). If the email client is not compatible The combination may discard tag information in the header and / or may not be displayed within the user interface, and the email may be displayed normally without tags (608). This can ensure that emails sent from a tag-compatible system remain backward compatible with other email clients / systems that do not use this tagging system.

[0053] When the email client is compatible with the tag system (604), the tags may be displayed within the user interface as shown below in FIGS. 7A - 7C, and the user may modify, add, and / or subtract from the current tag set (606). Note that the tags initially presented to the receiving email client are first predicted by the tag prediction model, selected / deselected by the sending user, augmented with auto-complete and / or other user-generated tags, and may be sent through the email server. At the email server, the tag prediction server may be accessed again, and the tags may be further refined to include additional predicted tags as described above.

[0054] When the tag is received by the receiving - side email client, the receiving - side user can make further modifications to the tag set. For example, the receiving - side user may add tags, delete tags, modify existing tags, and / or change the tag list. This may include using the above - mentioned auto - complete function to select new tags from the existing list of available tags for this particular user group. After the tag has been changed by the receiving - side user, the receiving - side client device 108 can return the email received with the changed tag to the tag prediction server 112 (610). The tag prediction server 112 can then retrain the model using the changes made to the tag by the receiving - side client device 108 (612). Thus, the model may be retrained based on changes made in the sending - side client device 102, the email server 106, and / or the receiving - side client device 108 in order to provide end - to - end management of the common set of tags assigned to each email message passing through the system.

[0055] FIG. 7A shows a user interface 700 implemented in a receiving - side email client according to some embodiments. The user interface 700 may include any of the common features described in relation to FIG. 2A. The user interface 700 may enable a user to select an email from a list of emails in the inbox and display the content of the email in a display area shown in FIG. 7A. As part of this display area, the email can display a recipient list, sender, subject, and / or other conventional email information. Additionally, if the email client has compatibility with the tag system, the received email may also display a field with tags 702 previously assigned by the sending - side email client and / or the tag prediction server when the email was created and / or sent through the email server. These tags 702 can function as a starting point for the receiving - side user to view and / or edit the tags of the email.

[0056] Figure 7B shows how the user interface 700 can be used to modify a set of tags 702, according to some embodiments. In fact, the same process described for the sending email client can be performed in the receiving email client to edit, add, and / or delete tags from the set of tags 702. For example, the receiving user may recognize that the sending user has incorrectly identified the project to which this email should apply, i.e., that this email should apply to project 235 instead of project 233. The user can select the tag "Pr oj233" and delete the suffix part "3" of the tag. At this point, the email client can send a request to the tag prediction server asking it to provide an auto-complete list based on the prefix remaining in the tag. For example, other projects starting with "23" may be presented to the user or displayed in a drop-down menu 702. Additionally, although not explicitly shown in Figure 7B, the user may add new user tags and / or delete any existing tags that were part of the received email message.

[0057] FIG. 7C is a diagram showing how a user interface can be used to view specific text associated with specific tags within an email message. It will be recalled that the sender and / or tag prediction server may assign tags that are generally applicable to the email message. The sender and / or tag prediction server may also assign tags that are particularly applicable to text selections within the email message. In the example of FIG. 2D, a "WebEx" tag was added by the sending user so as to be particularly applicable to the text selection "video conference". To view this relationship, the receiving user can select the WebEx tag 704 using an input device such as a mouse, finger tap, and / or the like. When the tag 704 is selected, the interface 702 can automatically highlight the corresponding text selection 706. This enables the user to visually identify any selected text within the email message that is particularly associated with those tags by selecting each of the tags 702.

[0058] As described above, the corresponding text selection 706 can be manually assigned by the user when sending and / or receiving an email message. However, some embodiments may use a tag prediction model to automatically assign the selected text 706 to the corresponding tag 704. As will be described in more detail below, the tag prediction model may include an operation of generating an attention vector that characterizes the contribution of each word or phrase when assigning a confidence score to each tag that can be used. The attention vector may be analyzed for each tag predicted by the tag prediction model to assign a specific text selection to each tag. In this example, the user can select the WebEx tag 704, and the selected text shown in FIG. 7C may be highlighted as an automatic selection made by the tag prediction model rather than a selection made manually by the user.

[0059] FIG. 8 is a diagram showing how a tag prediction model generates a set of confidence scores for tags that can be used based on input email information in some embodiments. The tag prediction model can use a convolutional neural network. This neural network can be considered to receive a block of text as input and generate a score for each of the tags that can be used within the output vector. In this example, the text 801 provided to the neural network may include the phrase "there is a proposal by the dev team for containerizing certain services." This is a simplified example, and it should be noted that real-world examples may use much longer text blocks typically found in email messages. Also, assume that there are Tn usable tags within the system for this particular user group. The usable tag database may be constructed by recognizing and recording any tags provided to the system by either an administrator or a user. The output of the neural network may be an array of length Tn, and each entry in the array contains a confidence score indicating the level to which the associated tag is relevant to the text. The neural network can view this process as finding a solution to a classification problem.

[0060] Before processing the text through the neural network, the tag prediction model preprocesses the text Token 801 may be converted into a two-dimensional (2D) vector such as word embedding matrix 802. The word embedding matrix 802 converts the text 801 into a numerical representation that can be understood by a neural network. The word embedding matrix 802 significantly improves the efficiency of the neural network and functions like a fully connected layer. Each word may be mapped into a d-dimensional vector space. The vector space mathematically represents how closely related the words in the text 801 are based on the proximity of the associated vectors within the vector space. For example, words with similar meanings are oriented in a similar direction in the vector space, and words with opposite meanings are oriented in opposite directions. If there are n words in the input text, the degree of the word embedding matrix 802 is n×d.

[0061] The neural network may be composed of a plurality of convolutional filters 804, 806, 808. Each of the convolutional filters 804, 806, 808 can consider a sliding window of the text within the word embedding matrix 802. In fact, each filter can consider different length n-grams formed by adjacent words in the text 801. In this example, the first filter 804 may have a window length of 2 words, the second filter 806 may have a window length of 3 words, and the third filter 808 may have a window length of 4 words. It should be noted that additional filters with longer window lengths, not explicitly shown in FIG. 8, may be used. Each cell within the convolutional filters 804, 806, 808 may contain a value that is multiplied by each value in the corresponding row within the word embedding matrix 802. The multiplication results are accumulated by the convolution operation. For example, a window size of 2 results in n-1 items for each column of the convolutional neural network. Each set of columns shown in FIG. 8 for the convolutional filters 804, 806, 808 may be regarded as a matrix obtained as a result of the convolution operation of each filter.

[0062] After the convolutional filter operates on and generates the resulting matrix, a max pooling operation may be performed to combine the filter results. In some embodiments, this operation may examine each element in each of the resulting matrices and identify the maximum value from the resulting matrix at each position. This maximum value may be accumulated and used as the final layer 810 of a neural network that may be of length 3L, where L is the size of filters 804, 806, 808.

[0063] FIG. 9 is a diagram illustrating a second operation performed by a tag prediction model to generate a confidence score for a useable tag, according to some embodiments. This second operation uses the same word embedding matrix 802 as described above. Instead of using convolutional filters having window lengths of 2, 3, 4, etc., this second operation uses convolutional filters of length 1. This filter can process each single word at a time as a 1-gram token. The number of filters of length 1 can be represented by m. The results of the filtering operation may be used to populate a matrix referred to as an "attention matrix" of dimension n×m.

[0064] Next, a max pooling operation may be performed on the attention matrix to generate an attention vector (904). The max pooling operation can be performed on each row within the attention matrix to identify the maximum value and store the maximum value in the attention vector. The resulting attention matrix has dimension n×1. The original word embedding matrix 802 may be transposed such that the original n×d matrix becomes a d×n matrix (906). The resulting transposed word embedding matrix may be multiplied by the attention vector to generate an embedded attention vector 910 of dimension d×1 (908).

[0065] This attention mechanism enables the model to predict the specific text that each tag may be related to makes it possible. Since the attention vector corresponds to each of the tag outputs of the tag prediction model, it represents the relative importance of each word. In fact, the attention vector may include larger values for certain areas of the text that contribute most to a particular tag. Some embodiments can further use the attention vector to identify segments of text relevant to each particular tag. As described above, some embodiments enable a user to select a tag and view highlighted text contributing to the tag. This text may be set by the user or may be automatically predicted by the tag prediction model.

[0066] Figure 10 shows, for some embodiments, how the result vectors obtained from two operations performed by a tag prediction model can be combined into a final result set 1010. The embedded attention vector 910 of length d can be concatenated at the end of the vector from the final layer 810 described in FIG. 8 to form a single vector. This concatenated vector may represent the second-to-last layer within a neural network of length 3L + d.

[0067] The concatenated vector may then be used to form the final layer 1010 of the neural network. Each cell in the final layer 1010 may correspond to a single usable tag within the system. Thus, the final layer 1010 may have a length Tn corresponding to the usable tags. The final layer 1010 may be considered a fully connected layer since each cell in the second-to-last concatenated layer has a connection of Tn to the final layer 1010. The function for converting the concatenated layer to the final layer 1010 may include multiplying the concatenated vector by a matrix w containing weight values set during the training process. Some embodiments can also add a bias value to each multiplication result. The bias value may be set through the learning process or may be initialized to a random value close to 0.0. The final vector obtained from this matrix multiplication process is the resulting final layer 1010 and contains within each cell a numerical value representing the above confidence score.

[0068] In some different steps of the above process, tags selected and defined by the user may be provided together with the email text as training pairs for the neural network. For training the neural network, the email text may be provided as input. Additionally, the values in the final layer 1010 of the neural network may be set according to the selected tags. For the tags selected by the user as related to the email, the values at the corresponding locations in the final layer 1010 may be set to 1.0. All non - selected (e.g., unrelated) tags may be set to 0.0. Next, the training process may set the values of the bias, the weights in the above matrix, and the values of the convolutional filters.

[0069] FIG. 11 shows an extended system architecture 1100 including additional communication channels according to some embodiments. As previously described, the email communication channel is just one example of many different communication channels that can utilize the tag prediction server 112. The same principles, methods, functions, and models described above may be used in conjunction with other communication channels without limitation. Thus, the entire above description may equally apply to social media channels 1104, instant messaging channels 1106, SLACK (registered trademark) channels 1102, and / or any other communication methods. For example, instead of providing email information to the tag prediction server 112, other communication channels may provide text bodies representing instant messages, message conversations, threads, comments, etc. Each of these text bodies may then receive tags in the same way that the email message receives predicted tags as described above.

[0070] In addition, each of the various communication channels may operate in cooperation with each other using the same tag set and / or the same tag prediction model. For example, the model may be trained using email messages, instant messages, social media posts, and channel conversations regardless of the specific source. When a user sends an email and refines the tags predicted by the tag prediction model, the model may be trained so that the new predicted tags can be provided for instant messages using the same tag prediction model. The database of tags for each user group may be shared among each of these multiple channels.

[0071] FIG. 12 is a diagram showing a method of tagging an email when the email is sent and received through an email system according to some embodiments. This method can be executed using the system described in FIG. 1. Each of the steps described below is described in detail in the above various drawings and sections of the present disclosure. Therefore, each of the steps described below may include any of the features related to these steps described elsewhere in this specification.

[0072] This method may include receiving email information from a first email client (1202). In some embodiments, the email information may be associated with an email message sent from a first email client to a second email client. The first email client may be a sending email client, and the second email client may be a receiving email client. The email information may include any metadata or descriptive information such as the email body, subject, header, recipient list, etc. The email may be sent from the first email client to a tag prediction server that operates the tag prediction model. The email information may be sent when the email message is being created and before being sent from the first email client.

[0073] This method may also include a step (1204) of providing the email information to a model. The model can generate scores for a plurality of tags. The model may be a convolutional neural network with a plurality of filters having varying window sizes as described in FIGS. 8-11. The tags may be loaded from a set of available tags that are specific to a particular organization, user group, sub-organization, or other grouping of users and / or email messages.

[0074] This method may further include identifying a subset of the plurality of tags (1206) based at least in part on the scores. The subset may include the set of predicted tags. The scores of the available tags may be compared to a threshold, and tags exceeding the threshold may be used as the predicted tags. The subset of available tags used as predicted tags may be related to the ideas or concepts represented in the email information. The scores may represent a confidence score in the relationship between the corresponding tag and the email message. In some embodiments, the subset of the plurality of tags may also include one or more tags associated with a specific text selection within the email message. The specific text selection can be identified using the attention vector / matrix described in FIG. 10.

[0075] This method may further include sending the set of predicted tags to a first email client (1208). These predicted tags may be displayed in a user interface for the user as shown in FIGS. 2A-2D. The user may be enabled to edit, modify, add, delete, and / or change the predicted tags. For example, the user can delete some of the predicted tags, which can form a group of selected tags and a group of unselected tags from the predicted tags. The user may also In addition, new tags that are not part of the prediction tag list may be added. In some embodiments, tags among the plurality of tags that were not selected as part of the subset may be referenced at the server to perform an auto-complete function. Once the final tag list is set by the user, the tags may be embedded as part of the email, such as within the email header. Next, the tags may be sent to the email server along with the email, and the email server may forward the email to the recipient email client. As detailed above, the server may optionally re-train the model and / or modify the tag list when the email is sent through the email server and received at the recipient email client.

[0076] Each set of the above tags may include any number of tags. Thus, in some cases, a set of tags may include a single tag, multiple tags, or no tags. A subset of tags may include all of the tags from the parent set. For example, the process may identify all of the available tags as prediction tags if the score indicates so.

[0077] It should be understood that the specific steps shown in FIG. 12 provide a specific method of tagging an email when the email is sent and received through an email system according to various embodiments. Other sequences of steps may be performed according to alternative embodiments. For example, alternative embodiments of the present invention may perform the steps outlined in a different order. Further, the individual steps shown in FIG. 12 may include multiple sub-steps that can be performed in various sequences depending on the need for the individual steps. Additionally, additional steps may be added or removed depending on the specific application. Those skilled in the art will recognize numerous variations, modifications, and alternatives.

[0078] Each method described in this specification can be implemented by a computer system. Each step of these methods may be automatically executed by the computer system and / or may be provided with input / output that requires a user. For example, a user may provide input for each step of the method, and each of these inputs may be provided in response to a specific output generated by the computer system that requires such input. Each input may be received in response to the corresponding required output. Further, the input may be received from the user, may be received as a data stream from another data system, may be retrieved from a memory location, may be retrieved via a network, may be requested from a web service, and / or may be otherwise. Similarly, the output may be provided to the user, may be provided as a data stream to another computer system, may be stored in a memory location, may be sent via a network, may be provided to a web service, and / or may be otherwise. That is, each step of the methods described in this specification is something that a computer system can execute and may require any number of inputs to the computer system, outputs from the computer system, and / or requests to / from the computer system that may or may not require a user. Steps that do not require a user can be said to be automatically executable by the computer system without human intervention. Thus, in light of the present disclosure, each step of each method described in this specification may be modified to include input and output to / from the user, or may be automatically performed by the computer system without human intervention if the processor makes any determination. Further, some embodiments of each method described in this specification may be implemented as a set of instructions stored on a tangible non-transitory storage medium to form a tangible software product.

[0079] FIG. 13 is a simplified diagram of a distributed system 1300 for implementing one of the embodiments. is shown. In the illustrated embodiment, the distributed system 1300 includes one or more client computing devices 1302, 1304, 1306, and 1308, which are configured to execute and operate client applications such as web browsers, dedicated clients (e.g., Oracle® Forms), etc. via one or more networks 1310. A server 1312 may be communicatively coupled to the remote client computing devices 1302, 1304, 1306, and 1308 via the network 1310.

[0080] In various embodiments, the server 1312 may be configured to execute one or more services or software applications provided by one or more of the components of this system. In some embodiments, these services may be provided to the users of the client computing devices 1302, 1304, 1306, and / or 1308 as web-based or cloud services, or under a software as a service (SaaS) model. Then, the users operating the client computing devices 1302, 1304, 1306, and / or 1308 can utilize the services provided by these components by interacting with the server 1312 using one or more client applications.

[0081] In the configuration shown in the drawings, software components 1318, 1320, and 1322 of system 1300 are shown as implemented on server 1312. In other embodiments, one or more of the components of system 1300 and / or the services provided by these components may be implemented by one or more of client computing devices 1302, 1304, 1306, and / or 1308. Then, a user operating a client computing device can use the services provided by these components by utilizing one or more client applications. These components may be implemented in hardware, firmware, software, or a combination thereof. It should be understood that various different system configurations are possible that may differ from the distributed system 1300. The embodiments shown in the drawings are therefore an example of a distributed system for implementing the system of the embodiments and are not intended to be limiting.

[0082] Client computing devices 1302, 1304, 1306, and / or 1308 may include software such as Microsoft Windows Mobile (registered trademark), and / or various mobile operating systems such as iOS, Windows Phone, Android, BlackBerry 10, Palm OS, and others. A portable handheld device (e.g., iPhone (registered trademark), mobile phone, iPad (registered trademark), computing tablet, personal digital assistant (PDA)) or a wearable device (e.g., Google Glass (registered trademark) head-mounted display) that can run an operating system and connect to the Internet, email, short message service (SMS), Blackberry (registered trademark), or other communication protocols may also be used. The client computing device may be, for example, a personal computer running various versions of Microsoft Windows (registered trademark), Apple Macintosh (registered trademark), and / or Linux (registered trademark) operating systems and and / or a general-purpose personal computer including a laptop computer. The client computing device may be a workstation computer running any of a variety of UNIX (registered trademark) or UNIX (registered trademark)-like operating systems available in the market, including, but not limited to, various GNU / Linux (registered trademark) operating systems such as Google Chrome OS. Alternatively or in addition to this, the client computing devices 1302, 1304, 1306, and 1308 may be electronic devices such as a thin client computer, an Internet-connected game system (e.g., a Microsoft Xbox game console with or without a Kinect (registered trademark) gesture input device), and / or a personal messaging device that can communicate via the network 1310.

[0083] Although the distributed system 1300 as a specific example is shown with four client computing devices, any number of client computing devices can be supported. Other devices such as devices having sensors and the like may interact with the server 1312.

[0084] The network 1310 of the distributed system 1300 can support data communication using any one of various protocols available in the market, including but not limited to TCP / IP (transmission control protocol / Internet protocol), SNA (systems network architecture), IPX (Internet packet exchange), AppleTalk (registered trademark), etc. It may be any type of network well known to those skilled in the art. By way of example only, the network 1310 may be a local area network (LAN) based on, for example, Ethernet (registered trademark), token ring, and / or the like. The network 1310 may be a wide area network and the Internet. This includes virtual private networks (VPNs), intranets, extranets, public switched telephone networks (PSTNs), infrared networks, wireless networks (e.g., networks operating under any one of the Institute of Electrical and Electronics (IEEE) 802.11 protocols corse suite, Bluetooth (registered trademark), and / or any other wireless protocol among others), and / or may include virtual networks including any combination of the above and / or other networks.

[0085] Server 1312 may consist of one or more general-purpose computers, dedicated server computers (including, for example, PC (personal computer) servers, UNIX (registered trademark) servers, midrange servers, mainframe computers, rack-mounted servers, etc.), server farms, server clusters, or any other suitable configuration and / or combination. In various embodiments, Server 1312 may be configured to execute one or more of the services or software applications described in the above disclosure. For example, Server 1312 may correspond to a server for executing the above-described processing according to an embodiment of the present disclosure.

[0086] Server 1312 may execute an operating system including any of the above operating systems and server operating systems available on the market. In addition, Server 1312 may execute any of various additional server applications and / or middleware applications, including, for example, an HTTP (hypertext transport protocol) server, an FTP (file transfer protocol) server, a CGI (common gateway interface) server, a JAVA (registered trademark) server, a database server, etc. Database servers as specific examples include, but are not limited to, those commercially available from Oracle, Microsoft, Sybase, IBM (International Business Machines), etc.

[0087] In some implementation examples, Server 1312 may include one or more applications for analyzing and integrating data feeds and / or event updates received from users of client computing devices 1302, 1304, 1306, and 1308. As an example, the data feeds and / or event updates are Including, but not limited to, Twitter® feeds, Facebook® updates or real-time updates received from one or more third party sources and continuous data streams. These may include real-time events related to sensor data applications, financial tickers, network performance measurement tools (e.g., network monitoring and traffic management applications), clickstream analysis tools, automobile traffic monitoring, etc. Server 1312 may also include one or more applications for displaying the data feeds and / or real-time events via one or more display devices of client computing devices 1302, 1304, 1306, and 1308.

[0088] The distributed system 1300 may also include one or more databases 1314 and 1316. The databases 1314 and 1316 may reside in a variety of locations. As an example, one or more of the databases 1314 and 1316 may reside on a non-transitory storage medium local to (and / or within) the server 1312. Alternatively, the databases 1314 and 1316 may be located remotely from the server 1312 and communicate with the server 1312 via a network-based or dedicated connection. In one set of embodiments, the databases 1314 and 1316 may reside within a storage area network (SAN). Similarly, any files necessary to perform the functions ascribed to the server 1312 may be stored locally to the server 1312 and / or remotely from the server 1312, as appropriate. In one set of embodiments, the databases 1314 and 1316 may include relational databases, such as those provided by Oracle, adapted to store, update, and retrieve data in response to SQL-formatted commands.

[0089] FIG. 14 is a simplified block diagram of one or more components of a system environment 1400 in which one or more components of the system according to embodiments of the present disclosure can provide services as cloud services. In the illustrated embodiment, system environment 1400 includes one or more client computing devices 1404, 1406, and 1408 that a user can use to interact with a cloud infrastructure system 1402 that provides cloud services. The client computing devices may be configured to operate client applications such as a web browser, a dedicated client application (e.g., Oracle Forms), or some other application that can be used by a user of the client computing device to use the services provided by cloud infrastructure system 1402 by interacting with cloud infrastructure system 1402.

[0090] It should be understood that the cloud infrastructure system 1402 shown in the drawings may have components other than those shown. Further, the illustrated embodiment is merely an example of a cloud infrastructure system that can incorporate embodiments of the present invention. In some other embodiments, cloud infrastructure system 1402 may have more or fewer components than those shown, may combine two or more components, or may have a different configuration or arrangement of components.

[0091] Client computing devices 1404, 1406, and 1408 may be devices similar to those described above with respect to 1302, 1304, 1306, and 1308.

[0092] As a specific example, system environment 1400 has three client computing devi Although shown with a single client computing device, any number of client computing devices can be supported. Other devices, such as devices having sensors, may interact with the cloud infrastructure system 1402.

[0093] The network 1410 can facilitate the communication and exchange of data between the clients 1404, 1406, and 1408 and the cloud infrastructure system 1402. Each network can be any type of network well known to those skilled in the art that can support data communication using any of a variety of protocols available in the market, including those previously described for the network 1310.

[0094] The cloud infrastructure system 1402 can include one or more computers and / or servers that can include those previously described for the server 1312.

[0095] In certain embodiments, the services provided by a cloud infrastructure system can include a number of services that are made available on demand to users of the cloud infrastructure system, such as online data storage and backup solutions, web-based email services, hosted office suites and document collaboration services, database processing, managed technical support services, and the like. The services provided by the cloud infrastructure system can scale dynamically to meet the needs of its users. Herein, a specific instantiation of a service provided by a cloud infrastructure system is referred to as a "service instance." Generally, any service that is made available to a user from a cloud service provider's system via a communication network such as the Internet is referred to as a "cloud service." Typically, in a public cloud environment, the servers and systems that make up a cloud service provider's system are different from a customer's own on-premises servers and systems. For example, a cloud service provider's system can host an application, and a user can order and use this application on demand via a communication network such as the Internet.

[0096] In some examples, services in a computer network cloud infrastructure can include protected computer network access to storage, hosted databases, hosted web servers, software applications, or other services provided to a user by a cloud vendor or in other ways well known in the art. For example, a service can include password-protected access over the Internet to remote storage in the cloud. As another example, a service can include a web service-based hosted relational database and a scripting language middleware engine for private use by networked developers. As another example, a service can include access to an email software application hosted on a cloud vendor's website.

[0097] In certain embodiments, the cloud infrastructure system 1402 can include a suite of application, middleware, and database service offerings that are provided to customers in a self-service, subscription-based, elastically scalable, reliable, highly available, and secure manner. An example of such a cloud infrastructure system is the Oracle Public Cloud provided by the assignee of the present application.

[0098] In various embodiments, the cloud infrastructure system 1402 can include a customer subscription to the services provided by the cloud infrastructure system 1402 The system may be configured to automatically provision, manage, and track the subscriptions. The cloud infrastructure system 1402 can provide cloud services via different deployment models. For example, services may be provided under a public cloud model where an organization (such as one owned by Oracle) that sells cloud services owns the cloud infrastructure system 1402 and the general public or different industrial enterprises can use the services. As another example, services may be provided under a private cloud model where the cloud infrastructure system 1402 is operated for only one organization and can provide services for one or more entities within this organization. Also, cloud services may be provided under a community cloud model where the cloud infrastructure system 1402 and the services provided by the cloud infrastructure system 1402 are shared by several organizations within the relevant community. Additionally, cloud services may be provided under a hybrid cloud model that is a combination of two or more different models.

[0099] In some embodiments, the services provided by the cloud infrastructure system 1402 may include one or more services provided under a software as a service (SaaS) category, a platform as a service (PaaS) category, an infrastructure as a service (IaaS) category, or other categories of services including hybrid services. A customer can order one or more services provided by the cloud infrastructure system 1402 through a subscription order. Then, the cloud infrastructure system 1402 executes processes to provide the services of this customer's subscription order.

[0100] In some embodiments, the services provided by the cloud infrastructure system 1402 may include, but are not limited to, application services, platform services, and infrastructure services. In some examples, the application services can be provided by the cloud infrastructure system via a SaaS platform. The SaaS platform may be configured to provide cloud services included in the SaaS category. For example, the SaaS platform can provide a function of building and delivering an on-demand set of applications on an integrated development and deployment platform. The SaaS platform can manage and control the software and infrastructure underlying the provision of the SaaS services. By utilizing the services provided by the SaaS platform, customers can utilize applications that are executed on the cloud infrastructure system. Customers can obtain application services without having to purchase separate licenses and support. A variety of different SaaS services can be provided. Examples include, but are not limited to, services that provide solutions for sales performance management, enterprise integration, and business flexibility for large organizations.

[0101] In some embodiments, the platform service can be provided by the cloud infrastructure system via the PaaS platform. The PaaS platform can be configured to provide cloud services included in the PaaS category. Examples of platform services can include, but are not limited to, services that enable an organization (such as Oracle) to integrate existing applications on a shared common architecture, and the ability to build new applications that promote the shared services provided by the platform. The PaaS platform can manage and control the software and infrastructure that form the basis for providing PaaS services. Customers can obtain PaaS services provided by the cloud infrastructure system without having to purchase separate licenses and support. Examples of platform services can include, but are not limited to, Oracle Java Cloud Service (JCS ), Oracle Database Cloud Service (DBCS), and others.

[0102] By using the services provided by the PaaS platform, customers can adopt the programming languages and tools supported by the cloud infrastructure system and can also control the deployed services. In some embodiments, the platform services provided by the cloud infrastructure system can include database cloud services, middleware cloud services (such as Oracle Fusion Middleware services), and Java cloud services. In one embodiment, the database cloud service enables an organization to pool database resources and provide a database as a service (Database as a Service) in the form of a database cloud It is possible to support a shared service deployment model that enables providing to customers. Middleware cloud services may provide a platform for customers to develop and deploy various business applications, and Java cloud services may provide a platform for customers to deploy Java applications in a cloud infrastructure system.

[0103] Various different infrastructure services may be provided by an IaaS platform in a cloud infrastructure system. Infrastructure services facilitate the management and control of underlying computing resources such as storage, network, and other basic computing resources for customers who utilize the services provided by SaaS platforms and PaaS platforms.

[0104] In certain embodiments, the cloud infrastructure system 1402 may also include infrastructure resources 1430 for providing resources used to provide various services to customers of the cloud infrastructure system. In one embodiment, the infrastructure resources 1430 may include a pre-integrated and optimized combination of hardware such as servers, storage, and networking resources for executing the services provided by PaaS platforms and SaaS platforms.

[0105] In some embodiments, the resources in the cloud infrastructure system 1402 may be shared by multiple users and dynamically reallocated on a per-request basis. Additionally, the resources may be allocated to users in different time zones. For example, the cloud infrastructure system 1430 can allow a first set of users in a first time zone to utilize the resources of the cloud infrastructure system for a specified number of hours, and then reallocate the same resources to another set of users in a different time zone to maximize resource utilization.

[0106] In certain embodiments, a plurality of internal shared services 1432 can be provided that are shared by different components or modules of the cloud infrastructure system 1402 and by the services provided by the cloud infrastructure system 1402. These internal shared services can include, but are not limited to, security and identity services, integration services, enterprise repository services, enterprise manager services, virus scanning and whitelist services, high availability, backup and recovery services, services to enable cloud support, email services, notification services, file transfer services, and the like.

[0107] In certain embodiments, the cloud infrastructure system 1402 may provide comprehensive management of cloud services (such as SaaS, PaaS, and IaaS services) in the cloud infrastructure system. In one embodiment, the cloud management functionality may include the ability to provision, manage, and track customer subscriptions received by the cloud infrastructure system 1402.

[0108] In one embodiment, as shown in the drawings, the cloud management function may be provided by one or more modules such as an order management module 1420, an order orchestration module 1422, an order provisioning module 1424, an order management and monitoring module 1426, and an identity management module 1428. These modules may include, or may be provided using, one or more computers and / or servers, which may be general-purpose computers, dedicated server computers, server farms, server clusters, or any other suitable configuration and / or combination thereof.

[0109] In operation 1434 as a specific example, a customer using a client device such as client devices 1404, 1406, or 1408 may interact with the cloud infrastructure system 1402 by requesting one or more services provided by the cloud infrastructure system 1402 and ordering a subscription to one or more services presented by the cloud infrastructure system 1402. In certain embodiments, the customer may access the cloud user interface (UI), cloud UI 1412, cloud UI 1414, and / or cloud UI 1416 and place a subscription order via these UIs. The order information received by the cloud infrastructure system 1402 in response to the customer placing an order may include information identifying the customer and one or more services that the customer intends to subscribe to that are provided by the cloud infrastructure system 1402.

[0110] After the customer places an order, the order information is received via cloud UIs 1412, 1414, and / or 1416.

[0111] In operation 1436, the order is stored in the order database 1418. The order database 1418 may be one of several databases operated by the cloud infrastructure system 1418 and operated together with other system elements.

[0112] In operation 1438, the order information may be transferred to the order management module 1420. In some examples, the order management module 1420 may be configured to perform billing and accounting functions related to the order, such as verifying the order and entering the order after verification.

[0113] In operation 1440, information about the order is communicated to the order orchestration module 1422. The order orchestration module 1422 may be configured to orchestrate the provisioning of services and resources for the order placed by the customer by utilizing the order information. In some examples, the order orchestration module 1422 may support the subscribed services that use the services of the order provisioning module 1424 by orchestrating the provisioning of resources.

[0114] In certain embodiments, the order orchestration module 1422 for each o Enable the management of business processes associated with orders, and determine whether an order should proceed to provisioning by applying business logic. In operation 1442, when receiving an order for a new subscription, the order orchestration module 1422 sends a request to the order provisioning module 1424 asking it to allocate and configure the resources necessary to fulfill the subscription order. The order provisioning module 1424 enables the allocation of resources for the services ordered by the customer. The order provisioning module 1424 provides an abstraction level between the cloud services provided by the cloud infrastructure system 1400 and the physical implementation layer used for the provisioning of resources to provide the requested services. In this way, the order orchestration module 1422 can be decoupled from the implementation details, such as whether the services and resources are actually provisioned on-the-fly or are pre-provisioned and allocated / assigned after the request.

[0115] In operation 1444, when the services and resources are provisioned, a notification of the provided services may be sent by the order provisioning module 1424 of the cloud infrastructure system 1402 to the customers of the client devices 1404, 1406, and / or 1408.

[0116] In operation 1446, the customer's subscription order may be managed and tracked by the order management and monitoring module 1426. In some examples, the order management and monitoring module 1426 may be configured to collect usage statistics of the services in the subscription order, such as storage usage, amount of transferred data, number of users, and the amount of system uptime and system downtime.

[0117] In certain embodiments, the cloud infrastructure system 1400 may include an identity management module 1428. The identity management module 1428 may be configured to provide identity services such as access management and authorization services in the cloud infrastructure system 1400. In some embodiments, the identity management module 1428 may manage information about customers who desire to use the services provided by the cloud infrastructure system 1402. Such information may include information for authenticating the identities of such customers and information describing the actions that these customers are authorized to perform with respect to various system resources (such as files, directories, applications, communication ports, memory segments, etc.). The identity management module 1428 may also include management of descriptive information regarding each customer and regarding who can access and modify this descriptive information and how.

[0118] FIG. 15 shows a computer system 1500 as a specific example that can implement various embodiments of the present invention. By using the system 1500, any of the above computer systems can be implemented. As shown in the drawing, the computer system 1500 includes a processing unit 1504 that communicates with a plurality of peripheral subsystems via a bus subsystem 1502. These peripheral subsystems may include a processing acceleration unit 1506, an input / output subsystem 1508, a storage subsystem 1518, and a communication subsystem 1524. The storage subsystem 1518 may include a tangible computer-readable storage medium 1522 and a system memory 1510.

[0119] The bus subsystem 1502 provides a mechanism for enabling the various components and subsystems of the computer system 1500 to communicate with each other as appropriate. The bus Although subsystem 1502 is schematically shown as a single bus, alternative embodiments of the bus subsystem may utilize multiple buses. The bus subsystem 1502 may be any of several types of bus structures including a memory bus or memory controller, a peripheral bus, and a local bus, using any of a variety of bus architectures. For example, such architectures may include Industry Standard Architecture (ISA) bus, Micro Channel Architecture (MCA) bus, Enhanced ISA (EISA) bus, Video Electronics Standards Association (VESA) local bus, and a Peripheral Component Interconnect (PCI) bus that can be implemented as a Mezzanine bus manufactured in accordance with the IEEE P1386.1 standard. It can be included.

[0120] The processing unit 1504, which can be implemented as one or more integrated circuits (e.g., conventional microprocessors or microcontrollers), controls the operation of the computer system 1500. One or more processors may be included in the processing unit 1504. These processors may include single-core or multi-core processors. In certain embodiments, the processing unit 1504 may be implemented as one or more independent processing units 1532 and / or 1534, along with single or multi-core processors included in each processing unit. In other embodiments, the processing unit 1504 may also be implemented as a quad-core processing unit formed by integrating two dual-core processors on one chip.

[0121] In various embodiments, the processing unit 1504 can execute various programs according to program code and can manage a plurality of programs or processes being executed simultaneously. At a given point in time, some or all of the program code to be executed may be in the processor 1504 and / or the storage subsystem 1518. Through appropriate programming, the processor 1504 can provide the various functions described above. The computer system 1500 may further include a processing acceleration unit 1506 that can include a digital signal processor (DSP), an application-specific processor, and / or other similar components.

[0122] The input / output subsystem 1508 can include a user interface input device and a user interface output device. The user interface input device can include a keyboard, a pointing device such as a mouse or trackball, a touchpad or touch screen incorporated into a display, a scroll wheel, a click wheel, a dial, a button, a switch, a keypad, a voice input device with a voice command recognition system, a microphone, and other types of input devices. The user interface input device can enable the user to control and interact with the input device through, for example, a natural user interface that uses gestures and spoken commands, such as a Microsoft Kinect (registered trademark) motion sensor like the Microsoft Xbox (registered trademark) 360 game controller, which can include a motion detection and / or gesture recognition device. The user interface input device can also detect the user's eye activity (e.g., a "blink" during photo taking and / or menu selection) and input the eye gesture to the input device (e.g., Google Glass (registered trademark)). It may include an eye gesture recognition device such as a Google Glass (registered trademark) blink detector for conversion as such. Additionally, the user interface input device may include a voice recognition detection device that enables the user to interact with a voice recognition system (such as a Siri (registered trademark) navigator) through voice commands.

[0123] The user interface input device may also include, but is not limited to, a three-dimensional (3D) mouse, a joystick or a pointing stick, a game pad, and a graphic tablet, and audio / visual devices such as speakers, a digital camera, a digital camcorder, a portable media player, a web camera, an image scanner, a fingerprint scanner, a barcode reader, a 3D scanner, a 3D printer, a laser rangefinder, and a gaze tracking device. Additionally, the user interface input device may include, for example, a medical imaging input device such as a computed tomography device, a magnetic resonance imaging device, a positron emission tomography device, a medical ultrasonic inspection device, etc. The user interface input device may also include, for example, a voice input device such as a MIDI keyboard, a digital musical instrument, etc.

[0124] The user interface output device may include a non-visual display such as a display subsystem, an indicator light, or an audio output device. The display subsystem may be a flat panel device such as one using a cathode ray tube (CRT), a liquid crystal display (LCD), or a plasma display, a projection device, a touch screen, etc. Generally, when using the term "output device", it is intended to include all possible types of devices and mechanisms for outputting information from the computer system 1500 to the user or another computer. For example, the user interface output device may include, but is not limited to, various display devices for visually conveying text, graphics, and audio / video information such as a monitor, a printer, a speaker, headphones, a car navigation system, a plotter, an audio output device, and a modem.

[0125] The computer system 1500 may include a storage subsystem 1518 that includes software elements shown as currently being in the system memory 1510. The system memory 1510 can store program instructions that are loadable onto and executable on the processing unit 1504, and data generated during the execution of these programs.

[0126] Depending on the configuration and type of the computer system 1500, the system memory 1510 may be volatile (e.g., random access memory (RAM)) and / or non-volatile (e.g., read-only memory (ROM), flash memory, etc.). Typically, RAM contains data and / or program modules that are immediately accessible to and / or currently being operated on and executed by the processing unit 1504. In some implementation examples, the system memory 1510 may include multiple different types of memory such as static random access memory (SRAM) or dynamic random access memory (DRAM). In some implementation examples, a basic input / output system (BIOS) including basic routines that assist in transferring information between elements within the computer system 1500 during startup can typically be stored in ROM. By way of example, but not limitation, the system memory 1510 also shows an application program 1512 that may include client applications, web browsers, mid-tier applications, relational database management systems (RDBMS), etc., program data 1514, and an operating system 1516. By way of example, the operating system 1516 can be various versions of Microsoft Windows (registered trademark), Apple Macintosh (registered trademark), and / or Linux (registered trademark) operating systems, a variety of UNIX (registered trademark) or UNIX (registered trademark)-based operating systems available in the market (including, but not limited to, a variety of GNU / Linux (registered trademark) operating systems, Google Chrome (registered trademark) OS, etc.), and / or mobile operating systems such as iOS, Windows (registered trademark) Phone, Android (registered trademark) OS, BlackBerry (registered trademark) 10 OS, and Palm (registered trademark) OS. The market may include a variety of UNIX (registered trademark) or UNIX (registered trademark)-based operating systems (including, but not limited to, a variety of GNU / Linux (registered trademark) operating systems, Google Chrome (registered trademark) OS, etc.), and / or mobile operating systems such as iOS, Windows (registered trademark) Phone, Android (registered trademark) OS, BlackBerry (registered trademark) 10 OS, and Palm (registered trademark) OS.

[0127] The storage subsystem 1500 can also provide a tangible computer-readable storage medium for storing the basic programming and data structures that provide the functionality of some embodiments. Software (programs, code modules, instructions) that, when executed by a processor, performs the above functions can be stored in the storage subsystem 1518. These software modules or instructions may be executed by the processing unit 1504. The storage subsystem y1518 can also provide a repository for storing the data used in accordance with the present invention. When executed by a processor, the software (programs, code modules, instructions) that performs the above functions can be stored in the storage subsystem 1518. These software modules or instructions may be executed by the processing unit 1504. The storage subsystem 1518 can also provide a repository for storing the data used in accordance with the present invention.

[0128] The storage subsystem 1518 may also include a computer-readable storage medium reader 1520 that can be further connected to a computer-readable storage medium 1522. Together with the system memory 1510 and, optionally, in combination with the system memory 1510, the computer-readable storage medium 1522 can comprehensively represent remote, local, fixed, and / or removable storage devices plus storage media for temporarily and / or more permanently containing, storing, transmitting, and retrieving computer-readable information.

[0129] A computer-readable storage medium 1522 that includes code or a portion of code may also include any suitable media known or used in the art, including storage media and communication media such as volatile and non-volatile, removable and non-removable media implemented in any method or technology for storage and / or transmission of information. This may include tangible computer-readable storage media such as RAM, ROM, electronically erasable programmable ROM (EEPROM), flash memory or other memory technology, CD-ROM, digital versatile disk (DVD), or other optical storage, magnetic cassette, magnetic tape, magnetic disk storage or other magnetic storage device, or other tangible computer-readable media. This may also include non-tangible computer-readable media such as data signals, data transmissions, or any other media that can be used to transmit desired information and that can be accessed by computing system 1500.

[0130] By way of example, computer-readable storage medium 1522 includes a hard disk drive that reads from and writes to a non-removable non-volatile magnetic medium, a magnetic disk drive that reads from and writes to a removable non-volatile magnetic disk, and a CD ROM, DVD, Blu-Ray (registered trademark) disk, or other optical It may include an optical disc drive that reads from and writes to removable non-volatile optical discs such as media. The computer-readable storage medium 1522 may include, but is not limited to, Zip (registered trademark) drives, flash memory cards, Universal Serial Bus (USB) flash drives, Secure Digital (SD) cards, DVD discs, digital video tapes, and the like. The computer-readable storage medium 1522 may also include non-volatile memory-based solid-state drives (SSDs) such as flash memory-based SSDs, enterprise flash drives, solid-state ROMs, etc., volatile memory-based SSDs such as solid-state RAM, dynamic RAM, static RAM, DRAM-based SSDs, magnetoresistive RAM (MRAM) SSDs, and hybrid SSDs that use a combination of DRAM and flash memory-based SSDs. The disc drive and the computer-readable media associated therewith can provide non-volatile storage of computer-readable instructions, data structures, program modules, and other data for the computer system 1500.

[0131] The communication subsystem 1524 provides an interface to other computer systems and networks. The communication subsystem 1524 serves as an interface for receiving data from other systems and transmitting data from the computer system 1500 to other systems. For example, the communication subsystem 1524 is a computer system The stem 1500 is enabled to connect to one or more devices via the Internet. In some embodiments, the communication subsystem 1524 may include a radio frequency (RF) transceiver component for accessing a wireless voice and / or data network (e.g., using cellular phone technology, advanced data network technologies such as 3G, 4G or EDGE (enhanced data rates for global evolution), WiFi (registered trademark) (IEEE 802.11 standards, or other mobile communication technologies, or any combination thereof), a global positioning system (GPS) receiver component, and / or other components. In some embodiments, the communication subsystem 1524 can provide wired network connectivity (e.g., Ethernet (registered trademark)) in addition to or instead of a wireless interface.

[0132] In some embodiments, the communication subsystem 1524 can also receive input communications in the form of structured and / or unstructured data feeds 1526, event streams 1528, event updates 1530, etc., on behalf of one or more users who may use the computer system 1500.

[0133] As an example, the communication subsystem 1524 may be configured to receive in real time data feeds 1526 from users of social networks and / or other communication services, such as Twitter (registered trademark) feeds, Facebook ( registered trademark) updates, web feeds such as Rich Site Summary (RSS) feeds, and / or real-time updates from one or more third-party information sources.

[0134] In addition, the communication subsystem 1524 may be configured to receive data in the form of a continuous data stream, which may include an event stream 1528 and / or event updates 1530 of real-time events that are inherently continuous or potentially infinite without a clear end. Examples of applications that generate continuous data may include, for example, sensor data applications, financial tickers, network performance measurement tools (such as network monitoring and traffic management applications), clickstream analysis tools, automotive traffic monitoring, and the like.

[0135] The communication subsystem 1524 may also be configured to output structured and / or unstructured data feeds 1526, event streams 1528, event updates 1530, etc., to one or more databases that can communicate with one or more streaming data source computers coupled to the computer system 1500.

[0136] The computer system 1500 may be of one of various types, including a handheld portable device (such as an iPhone (registered trademark) mobile phone, iPad (registered trademark) computing tablet, PDA), a wearable device (such as a Google Glass (registered trademark) head-mounted display), a PC, a workstation, a mainframe, a kiosk, a server rack, or any other data processing system.

[0137] Because computers and networks are always changing, the description of computer system 1500 shown in the drawings is only intended as a specific example. Many other configurations are possible that have more or fewer components than the system shown in the drawings. For example, customized hardware may be used and / or certain elements may be implemented in hardware, firmware, software (including applets), or a combination. Additionally, connections to other computing devices such as network input / output devices may be used. Based on the disclosure and teachings provided herein, those skilled in the art will understand other ways and / or methods for implementing various embodiments.

[0138] In the above description, for the sake of explanation, numerous specific details have been set forth in order to provide a thorough understanding of the various embodiments of the present invention. However, it will be apparent to those skilled in the art that embodiments of the present invention may be practiced without some of these specific details. In other instances, well-known structures and devices are shown in block diagram form.

[0139] The above description provides embodiments as specific examples only and is not intended to limit the scope, utility, or configuration of the present disclosure. Rather, the above description of embodiments as specific examples will provide those skilled in the art with an explanation that enables the implementation of embodiments as specific examples. It should be understood that various changes may be made to the functions and configurations of the elements without departing from the spirit and scope of the present invention as recited in the following claims.

[0140] In the above description, specific details are provided to gain a thorough understanding of the embodiments. However, those skilled in the art will understand that the embodiments can be implemented without these specific details. For example, circuits, systems, networks, processes, and other components may be shown as components in the form of block diagrams so as not to obscure the embodiments with unnecessary details. In other instances, well-known circuits, processes, algorithms, structures, and technologies may be shown without unnecessary details to avoid obscuring the embodiments.

[0141] It should also be noted that individual embodiments may be described as processes shown as flowcharts, flow diagrams, data flow diagrams, structural diagrams, or block diagrams. Flowcharts may describe operations as sequential processes, but many of the operations can be executed in parallel or simultaneously. Additionally, the order of operations may be rearranged. A process ends when its operations are completed, but it may have additional steps not included in the drawings. A process may correspond to a method, function, procedure, subroutine, subprogram, etc. When a process corresponds to a function, its end may correspond to the function returning to the calling function or the main function.

[0142] The term "computer-readable medium" includes, but is not limited to, portable or fixed storage devices, optical storage devices, wireless channels, and other various media capable of storing, containing, or holding instructions and / or data. A code segment or machine-executable instruction can represent a procedure, function, subprogram, program, routine, subroutine, module, software package, class, or any combination of instructions, data structures, or program statements. A code segment may be coupled to another code segment or hardware circuit by sending and / or receiving information, data, arguments, parameters, or memory contents. Information, arguments, parameters, data, etc. can be sent, transferred, or transmitted via any suitable means including memory sharing, message passing, token passing, network transmission, etc.

[0143] Furthermore, embodiments can be implemented by hardware, software, firmware, middleware, microcode, a hardware description language, or any combination thereof. When implemented in software, firmware, middleware, or microcode, the program code or code segments for performing the necessary tasks may be stored on a machine-readable medium. A processor (or processors) may perform the necessary tasks.

[0144] In the foregoing specification, aspects of the present invention have been described with reference to specific embodiments thereof, but those skilled in the art will recognize that the present invention is not limited to these embodiments. One will appreciate that the various features and aspects of the above invention may be used individually or in combination. Furthermore, embodiments can be utilized in any number of environments and applications beyond those described herein without departing from the broader spirit and scope of this specification. Accordingly, the specification and drawings must be regarded as illustrative rather than restrictive.

[0145] In addition, for purposes of explanation, the methods are described in a particular order. It should be understood that in alternative embodiments these methods may be performed in a different order than that described. It should also be understood that the above methods may be performed by hardware components or may be implemented as a sequence of machine-executable instructions. The machine-executable instructions can be used to cause a machine, such as a general or special purpose processor or logic circuits programmed with the instructions, to perform the methods. These machine-executable instructions may be stored on one or more machine-readable media such as a CD-ROM or other type of optical disk, a floppy disk, ROM, RAM, EPROM, EEPROM, magnetic or optical card, flash memory, or other type of media suitable for storing electronic instructions. Alternatively, the methods may be performed by a combination of hardware and software.

Claims

1. 1. A non-transitory computer-readable medium comprising instructions that, when executed by one or more processors, cause the one or more processors to perform operations, the operations including: receiving email information from a first email client, the email information associated with an email message to be sent from the first email client to a second email client, the operations further comprising: providing the email information to a model, the model generating a score for a set of available tags, the operations further comprising: identifying a set of predictive tags as a subset of the set of available tags based at least in part on the scores; and sending the set of predictive tags to the first email client, wherein a set of tags selected from the set of predictive tags is sent with the email message when the email message is sent to the second email client.

2. 2. The non-transitory computer-readable medium of claim 1, wherein the selected set of tags is embedded in a header of the email message when the email is sent to the second email client.

3. receiving a request from the first email client including a prefix of a new tag received from a user; identifying a set of autocomplete tags in the set of available tags that begin with the prefix; and transmitting the set of autocomplete tags to the first client.

4. 2. The non-transitory computer-readable medium of claim 1, wherein a set of unselected tags from the set of predicted tags is also transmitted along with the email message when the email message is transmitted to the second email client.

5. 2. The non-transitory computer-readable medium of claim 1, wherein a set of user tags from the set of predictive tags is also sent with the email message when the email message is sent to the second client, the set of user tags being different from the set of predictive tags.

6. The non-transitory computer-readable medium of claim 1 , wherein the first email client is configured to generate a user interface that includes a display of an email header that includes the set of predictive tags.

7. 2. The non-transitory computer-readable medium of claim 1, wherein the operations further comprise generating a hash key based on the email information, the hash key uniquely identifying the email message.

8. 8. The non-transitory computer-readable medium of claim 7, wherein the operations further include storing the hash keys in a hash map of hash keys, each of the hash keys in the hash map referencing a data structure that represents a subset of the set of available tags that are not part of the set of predicted tags.

9. 9. The method of claim 8, wherein the data structure comprises a weighted prefix trie. Non-transitory computer-readable medium.

10. The operation includes: receiving a prefix and the email information from the first email client; regenerating the hash key using the email information; referencing a data structure for the email message using the hash key; and retrieving from the data structure one or more tags in the set of available tags that complete the prefix.

11. 10. The non-transitory computer-readable medium of claim 1, wherein the operations further comprise receiving the selected set of tags from an email server, and wherein the email message is sent through the email server.

12. The non-transitory computer-readable medium of claim 11 , wherein the operations further comprise receiving a set of user tags from the email server that are different from the selected tags.

13. The non-transitory computer-readable medium of claim 12 , wherein the operations further comprise retraining the model with the set of user tags.

14. The non-transitory computer-readable medium of claim 1 , wherein the model is selected from a plurality of models, each model of the plurality of models being associated with a different user group.

15. 15. The non-transitory computer-readable medium of claim 14, wherein each different user group corresponds to a predefined mailing list.

16. The operation includes: and receiving second email information from an email server through which a second email message is sent from the first email client, the operation further comprising: identifying a second set of predictive tags from the set of available tags by providing the second email information to the model; and sending the second set of predictive tags to the email server, wherein the second set of predictive tags is sent along with the second email message to the second email client.

17. The operation includes: receiving new user tags or changes to the set of selected tags from the second email client after the second email client receives the email message; and retraining the model with the email information and the changes to the selected set of tags or the new tags from the second email client.

18. The model is a word embedding matrix populated with the email information; and A plurality of convolution filters having different window sizes; a max pooling operation using results from the plurality of convolution filters.

19. 1. A method for automatically generating end-to-end email tags in an email system, the method comprising: receiving email information from a first email client, the email information associated with an email message to be sent from the first email client to a second email client, the method further comprising: providing the email information to a model, the model generating a score for a set of available tags, the method further comprising: identifying a set of predictive tags as a subset of the set of available tags based at least in part on the scores; and sending the set of predictive tags to the first email client, wherein a set of tags selected from the set of predictive tags is sent with the email message when the email message is sent to the second email client.

20. 1. A system comprising: one or more processors; and one or more memory devices containing instructions that, when executed by the one or more processors, cause the one or more processors to perform operations, the operations including: receiving email information from a first email client, the email information associated with an email message to be sent from the first email client to a second email client, the operations further comprising: providing the email information to a model, the model generating a score for a set of available tags, the operations further comprising: identifying a set of predictive tags as a subset of the set of available tags based at least in part on the scores; and sending the set of predictive tags to the first email client, wherein a set of tags selected from the set of predictive tags is sent with the email message when the email message is sent to the second email client.

Citation Information

Patent Citations

  • Text classification method and device, computer device and storage medium

    CN109857860A

  • Secure mail system

    JP2008016994A

  • Tag attachment support system and program

    JP2009069937A

  • Electronic messaging systems and methods

    JP2013519165A

  • Email tags

    JP2014532934A