Method, system, and computer program (content analysis message routing)
CAMR addresses the inefficiencies in messaging applications by using content analysis to route messages to the right recipients and manage resources, improving accuracy and reducing computational demands.
Patent Information
- Application Number
- JP2022048394
- Authority / Receiving Office
- JP · JP
- Patent Type
- Patents
- Current Assignee / Owner
- Priority Date
- 2021-03-25
- Filing Date
- 2022-03-24
- Publication Date
- 2025-10-24
- Estimated Expiration
- 2042-03-24
AI Technical Summary
Messaging applications often send incorrect or excessive data, leading to confusion and inefficiency due to users' difficulty in identifying appropriate recipients and managing permissions, and they require significant computational resources.
Implementing Content Analysis Message Routing (CAMR) to analyze message content, identify appropriate recipients, and reroute messages based on content analysis, using artificial intelligence techniques such as image and natural language processing to determine the intended recipients and manage resource usage efficiently.
CAMR effectively routes messages to the correct recipients, reduces computational overhead, and optimizes resource utilization, enhancing the efficiency and accuracy of messaging applications.
Smart Images

Figure 0007759694000003 
Figure 0007759694000004 
Figure 0007759694000005
Abstract
Description
[Technical Field]
[0001] TECHNICAL FIELD This disclosure relates to messaging applications, and more particularly to routing messages based on analysis of content within the messages. [Background technology]
[0002] Messaging applications may be used by electronic devices and computers to facilitate communication between users. Messaging applications may help present information and exchange ideas between users. Messaging applications may be less effective if they send incorrect or excessive data. Summary of the Invention [Problem to be solved by the invention]
[0003] Messaging applications can be less effective if they send incorrect or excessive data. [Means for solving the problem]
[0004] According to embodiments, a method, a system, and a computer program product are disclosed. A first message is detected. The first message is directed to a first messaging recipient in a messaging application. The first message includes one or more content items. A set of one or more candidate messaging recipients is determined based on the first message and based on content analysis of the one or more content items. A second messaging recipient is identified from the set of one or more candidate messaging recipients. The identification is based on the content analysis. The first message is routed to the second messaging recipient. The first message is routed in response to identifying the second messaging recipient.
[0005] The above summary is not intended to describe each illustrated embodiment or every implementation of the present disclosure. [Brief explanation of the drawings]
[0006] The drawings included herein are incorporated into and form a part of the specification. They illustrate embodiments of the present disclosure and, together with the description, serve to explain the principles of the disclosure. The drawings illustrate particular embodiments only and do not limit the disclosure.
[0007] [Figure 1] 1 illustrates representative major components of an exemplary computer system that may be used in accordance with some embodiments of the present disclosure.
[0008] [Figure 2] 1 illustrates a cloud computing environment according to one embodiment of the present invention.
[0009] [Figure 3] 1 illustrates an abstraction model layer according to one embodiment of the present invention.
[0010] [Figure 4] 1 illustrates an exemplary neural network representative of one or more artificial neural networks capable of performing content analysis for message rerouting consistent with embodiments of the present disclosure.
[0011] [Figure 5] 1 illustrates an example system configured to route messages based on message content, consistent with certain embodiments of the present disclosure.
[0012] [Figure 6] 1 illustrates an example method for performing message routing, consistent with certain embodiments of the present disclosure.
[0013] While the invention is susceptible to various modifications and alternative forms, specifics thereof have been shown by way of example in the drawings and will be described in detail. It should be understood, however, that the intention is not to limit the invention to the particular embodiments described. On the contrary, the intention is to cover all modifications, equivalents, and alternatives falling within the spirit and scope of the invention. DETAILED DESCRIPTION OF THE INVENTION
[0014] Aspects of the present disclosure relate to messaging applications, and more particularly to routing messages based on analysis of content within the messages. While the present disclosure is not necessarily limited to such applications, various aspects of the present disclosure may be appreciated through a discussion of various examples using this context.
[0015] Increasingly, users may utilize computers to communicate with one another. There are many different communication programs (alternatively, messaging applications) available to users via electronic devices and computers. Exemplary programs that may be considered messaging applications may include email applications, text message applications, chat applications, instant messaging applications, bulletin board applications, and the like. These computer programs may be configured to provide communication channels for users.
[0016] Messaging applications can routinely help present information, exchange ideas between users, and facilitate user communication. Specifically, messaging applications can be powerful in that within seconds, a user can select an application window, begin typing a message, and send it to a messaging recipient. Similarly, it may take only seconds to receive messages from other users. For example, a user may log into a computer and use a messaging application to communicate with colleagues to share important work information and exchange important company information. Additionally, users may use messaging applications to exchange less important information. For example, a user may send and receive dozens of messages within various messaging applications throughout any given day to assess breaking news, exchange potential new work concepts, share new information, conduct casual conversations, and the like.
[0017] Messaging groups may enable further distribution of information to various parties. Specifically, a messaging application may be configured to direct information to a messaging recipient (alternatively, a recipient). A messaging recipient may be a single individual. For example, a first user may generate a message through a messaging application, and the recipient may be a second individual. Messaging groups may facilitate sending to multiple individuals. For example, a user may designate a recipient as a messaging group in a messaging application. A messaging group may include multiple recipients, such as 4, 12, 37, and in some cases, hundreds or thousands of individuals.
[0018] However, messaging applications can be less effective if they send incorrect or excessive data. Various users may be part of many conversations and messaging groups. For example, many users may contribute specific messages to a messaging group, making it difficult for the user to focus or keep up. Sometimes, messages may be off-topic from the group's purpose or use. Other times, a user may make a good-faith attempt to share useful information, but it is mistaken for an appropriate messaging recipient. It may be complicated and difficult for a user to find the appropriate recipient, and thus, it may be better for the user not to share the information. For example, a messaging system may have dozens of different channels, messaging groups, or recipients. A user may have information they want to spread, such as a lost item found at a particular workplace. The user may not know to whom a message about the lost item should not be shared.
[0019] Every recipient of a messaging group and conversation may have a different specific set of habits and rules that the user must follow. The ability to follow these rules may cause confusion for the user, as the user may not remember which guidelines are associated with each particular recipient. For example, a user may be part of a first messaging group that includes 12 people and is dedicated to discussing sports and current events. This first messaging group may not have any specific guidelines regarding communication, and users may be free to post any information. In another example, a second messaging group may be recipients associated with a business location. Recipients associated with a business location may have guidelines and may be focused on receiving and disseminating more specific messages.
[0020] Technical challenges may also exist with messaging applications. In a first example, various recipients, including individual recipients and group recipients, may have different permission values set by an administrator as part of the default installation. For example, a company may deploy a messaging application to users on a corporate network across various divisions and locations. The deployed application may include default groups for various roles, such as sales, marketing, information technology, building facilities, security, and the like. Each of the various roles may be assigned to a default group and may be filled with access to an already established organizational chart. One technical challenge is that a user may not have permission to access the appropriate group. For example, to share information, such as a photo and text describing a broken faucet, a user may prefer to share or access a specific group of recipients, such as a location facilitating a messaging group. To share information about the broken faucet, a user may not have permission to find, identify, or search for recipients in the location facility group. If a user can find or identify recipients in the location facility group, the user may not have permission to share a message with the specific group. Another technical challenge is the amount of computer resources required to successfully run a messaging application. Specifically, messaging applications can require large amounts of processing, memory, and network bandwidth. For example, a first messaging group can have tens or hundreds (or more) of group members that are part of the first messaging group. At any time, individual users send messages to the first messaging group, and sending a message to all parties can require significant processing power, memory usage, and network bandwidth.
[0021] Content Analysis Message Routing (CAMR) may provide one or more advantages in messaging applications. A CAMR may be configured to detect whether a message is intended for a recipient, such as an individual recipient or a group of recipients. A CAMR may be configured to determine one or more content items that are part of the message, such as text, photos, metadata, attachments, or other elements that are part of the message. A CAMR may perform content analysis to determine the content items and elements included in the content items, such as by performing artificial intelligence operations.
[0022] The CAMR may be configured as the default operation for a particular messaging application or messaging service. Specifically, the CAMR may be configured to receive messages from any particular user if the user does not select a specific recipient. Not selecting a specific recipient may include the user leaving the recipient, "to," "Target:," or other relevant recipient fields blank or empty when composing a new message. The CAMR may also be configured to receive all messages that the user sends by default without the user selecting a specific recipient, or when the user sends to any particular recipient. In some embodiments, the CAMR may also be configured to receive all messages sent to particular groups (e.g., groups with a particular name, groups of a particular type, groups with a particular size or number of members / recipients).
[0023] The CAMR may be configured to route messages to appropriate recipients based on content analysis of the messages. Routing of the messages may be based on selecting one or more candidate messages. Selecting the candidate messages may be based on computer content analysis or other relevant artificial intelligence calculations, or both. Routing may include selecting a specific recipient when no recipient is specified. Routing may include removing a specific message from a first recipient selected by a user. For example, a user may send a message to a first messaging recipient that includes general counsel for a particular division of a company. The CAMR may determine that the appropriate location is the company's intellectual property counsel instead of the general counsel. In some embodiments, the CAMR may remove the message from the outbound queue of a general counsel message group before delivering the message. The CAMR may determine specific contacts or policies for routing the message. For example, the CAMR may be configured to identify various client devices, message hosts, and contacts, leaders, or assigned entities of specific recipients or group recipients. The CAMR may select or determine that a specific contact, leader, or assigned entity is a candidate for receiving the message.
[0024] FIG. 1 illustrates representative major components of an exemplary computer system 100 (alternatively, a computer) that may be used in accordance with some embodiments of the present disclosure. It is recognized that the individual components may vary in complexity, number, type, or configuration, or combinations thereof. The particular example is disclosed for illustrative purposes only and is not necessarily the only such variation. Computer system 100 may include a processor 110, memory 120, an input / output interface (herein, I / O or I / O interface) 130, and a main bus 140. Main bus 140 may provide a communication path to other components of computer system 100. In some embodiments, main bus 140 may be connected to other components, such as a dedicated digital signal processor (not shown).
[0025] Processor 110 of computer system 100 may be comprised of one or more cores 112A, 112B, 112C, 112D (collectively 112). Processor 110 may further include one or more memory buffers or caches (not shown) that provide temporary storage of instructions and data for cores 112. Core 112 may execute instructions on input provided from the cache or from memory 120 and may output results to the cache or memory. Core 112 may be comprised of one or more circuits configured to perform one or more methods consistent with embodiments of the present disclosure. In some embodiments, computer system 100 may include multiple processors 110. In some embodiments, computer system 100 may have a single processor 110 with a single core 112.
[0026] The memory 120 of the computer system 100 may include a memory controller 122. In some embodiments, the memory 120 may include a random-access semiconductor memory, storage device, or storage medium (either volatile or non-volatile) for storing data and programs. In some embodiments, the memory may be in the form of a module (e.g., a dual in-line memory module). The memory controller 122 may communicate with the processor 110 to facilitate the storage and retrieval of information in the memory 120. The memory controller 122 may communicate with the I / O interface 130 to facilitate the storage and retrieval of input or output in the memory 120.
[0027] I / O interface 130 may include I / O bus 150, terminal interface 152, storage interface 154, I / O device interface 156, and network interface 158. I / O interface 130 may connect main bus 140 to I / O bus 150. I / O interface 130 may direct instructions and data from processor 110 and memory 120 to various interfaces of I / O bus 150. I / O interface 130 may also direct instructions and data from various interfaces of I / O bus 150 to processor 110 and memory 120. The various interfaces may include terminal interface 152, storage interface 154, I / O device interface 156, and network interface 158. In some embodiments, the various interfaces may include a subset of the aforementioned interfaces (e.g., an embedded computer system in an industrial application may not include terminal interface 152 and storage interface 154).
[0028] Logic modules throughout computer system 100—including, but not limited to, memory 120, processor 110, and I / O interface 130—may communicate failures or changes to one or more components to a hypervisor or operating system (not shown). The hypervisor or operating system may allocate the various resources available within computer system 100 and track the location of data within memory 120 and the locations of processes assigned to the various cores 112. In embodiments that combine or rearrange elements, aspects and capabilities of the logic modules may be combined or reallocated. These variations will be apparent to those skilled in the art.
[0029] Although this disclosure includes detailed descriptions of cloud computing, it is understood that implementation of the teachings described herein is not limited to a cloud computing environment. Rather, embodiments of the present invention can be implemented in conjunction with any other type of computing environment now known or later developed. Cloud computing is a service delivery model that enables convenient, on-demand network access to a shared pool of configurable computing resources (e.g., networks, network bandwidth, servers, processing, memory, storage, applications, virtual machines, and services) that can be rapidly provisioned and released with minimal administrative effort or interaction with the service provider. This cloud model can include at least five characteristics, at least three service models, and at least four deployment models.
[0030] The characteristics are as follows:
[0031] On-demand self-service: Cloud consumers can automatically and unilaterally provision computing capacity such as server time and network storage as needed without the need for human interaction with the provider of the service.
[0032] Broad network access: Capabilities are available over the network and accessed through standard mechanisms that facilitate use by heterogeneous thin- or thick-client platforms (e.g., cell phones, laptops, and PDAs).
[0033] Resource pooling: A provider's computing resources are pooled to serve multiple consumers using a multi-tenant model where different physical and virtual resources are dynamically allocated and reallocated according to demand. Location independence exists in that consumers generally have no control or knowledge over the exact location of the provided resources, although they may be able to specify location at a higher level of abstraction (e.g., country, state, or data center).
[0034] Rapid elasticity: Capacity can be rapidly and expansively provisioned, sometimes automatically, to scale out quickly, and rapidly released to scale in quickly.
[0035] To the consumer, the capacity available for provisioning often appears unlimited and can be purchased at any time and in any quantity.
[0036] Measured service: Cloud systems automatically control and optimize resource usage by leveraging metering capabilities at a level of abstraction appropriate to the type of service (e.g., storage, processing, bandwidth, and available user accounts). Resource usage can be monitored, controlled, and reported, providing transparency to both providers and consumers of utilized services.
[0037] The service model is as follows:
[0038] Software as a Service (SaaS): Capabilities offered to consumers use provider applications running on a cloud infrastructure. The applications are accessible from a variety of client devices through thin-client interfaces such as web browsers (e.g., web-based email). The consumer does not manage or control the underlying cloud infrastructure, including the network, servers, operating systems, storage, or even individual application capabilities, with the possible exception of limited user-specific application configuration settings.
[0039] Platform as a Service (PaaS): The ability offered to consumers is to deploy applications created or acquired by the consumer, written using programming languages and tools supported by the provider, on a cloud infrastructure. The consumer does not manage or control the underlying cloud infrastructure, including the network, servers, operating systems, or storage, but does have control over the deployed applications and, in some cases, the application hosting environment configuration.
[0040] Infrastructure as a Service (IaaS): The ability offered to consumers to provision processing, storage, network, and other underlying computing resources, where the consumer can deploy and run any software, which may include operating systems and applications. The consumer does not manage or control the underlying cloud infrastructure, but does have control over the operating system, storage, deployed applications, and possibly limited control over selected networking components (e.g., host firewalls).
[0041] The deployment model is as follows:
[0042] Private Cloud: Cloud infrastructure is operated solely for an organization. It can be managed by the organization or a third party and can exist on-premise or off-premise.
[0043] Community Cloud: Cloud infrastructure is shared by several organizations to support a specific community of shared interests (e.g., mission, security requirements, policies, and compliance considerations). It may be managed by the organization or a third party and may exist on-premises or off-premises.
[0044] Public cloud: Cloud infrastructure is made available to the general public or large industry organizations and is owned by an organization that sells cloud services.
[0045] Hybrid Cloud: A composition of two or more clouds (private, community, or public) where the cloud infrastructure remains a unique entity but is tied together by standardized or proprietary technologies that enable data and application portability (e.g., cloud bursting for load balancing between clouds).
[0046] Cloud computing environments are service-oriented with an emphasis on statelessness, low connectivity, modularity, and semantic interoperability. At the heart of cloud computing is an infrastructure that includes a network of interconnected nodes.
[0047] Referring now to FIG. 2, an exemplary cloud computing environment 50 is shown. As shown, the cloud computing environment 50 includes one or more cloud computing nodes 10 with which local computing devices used by cloud consumers, such as, for example, a personal digital assistant (PDA) or mobile phone 54A, a desktop computer 54B, a laptop computer 54C, or an automobile computer system 54N, or combinations thereof, may communicate. The nodes 10 may communicate with each other. They may be physically or virtually grouped (not shown) in one or more networks, such as a private cloud, a community cloud, a public cloud, or a hybrid cloud, or combinations thereof, as described above. This enables the cloud computing environment 50 to provide infrastructure, platform, or software, or combinations thereof, as a service without the cloud consumer having to maintain resources on their local computing device. It is understood that the types of computing devices 54A-N shown in FIG. 2 are intended for illustrative purposes only, and that the computing nodes 10 and the cloud computing environment 50 may communicate with any type of computerized device over any type of network and / or network-addressable connection (e.g., using a web browser).
[0048] Referring now to Figure 3, a set of functional abstraction layers provided by cloud computing environment 50 (Figure 2) is shown. It should be understood in advance that the components, layers, and functions shown in Figure 3 are intended to be exemplary only, and embodiments of the present invention are not limited thereto. As shown, the following layers and corresponding functions are provided:
[0049] The hardware and software layer 60 includes hardware and software components. Examples of hardware components include mainframes 61, reduced instruction set computer (RISC) architecture-based servers 62, servers 63, blade servers 64, storage devices 65, and networks and networking components 66. In some embodiments, the software components include network application server software 67 and database software 68. The virtualization layer 70 provides an abstraction layer within which examples of virtualized entities may be provided: virtualized servers 71, virtualized storage 72, virtualized networks 73 including virtualized private networks, virtualized applications and operating systems 74, and virtualized clients 75.
[0050] In one example, the management layer 80 may provide the functions described below. Resource provisioning 81 provides dynamic procurement of computing resources and other resources utilized to execute tasks within the cloud computing environment. Metering and pricing 82 provides cost tracking as resources are utilized within the cloud computing environment and billing or invoicing for the consumption of these resources. In one example, these resources may include application software licenses. Security provides identity verification for cloud consumers and tasks, as well as protection for data and other resources. User portal 83 provides access to the cloud computing environment for consumers and system administrators. Service level management 84 provides allocation and management of cloud computing resources so that required service levels are met. Service level agreement (SLA) planning and fulfillment 85 provides advance arrangement and procurement of cloud computing resources where future requirements are anticipated according to SLAs.
[0051] The workload layer 90 provides examples of functions for which a cloud computing environment may be utilized. Examples of workloads and functions that may be provided from this layer include mapping and navigation 91, software development and lifecycle management 92, virtualized classroom instruction delivery 93, data analytics processing 94, transaction processing 95, and CAMR 96.
[0052] The CAMR may perform one or more artificial intelligence operations as part of its content analysis to detect content items. Specifically, the CAMR may perform image processing, machine learning, or natural language processing, or a combination thereof, to identify specific elements that are part of a particular message or content item of multiple messages. A message may include text, such as words describing various objects. A message may include images, such as photographs, paintings, renderings, videos, streams, video files, audio-video files, or other visual data. An image may also include metadata (e.g., EXIF data), such as one or more fields or attributes that describe specific information. For example, a message may include text stating, "I noticed a red car with its lights on in the parking lot." A message may include an image, such as a color photograph showing a car with its lights on. To determine a content item for selecting one or more candidate recipients, the CAMR may perform various content analyses to detect and interpret various text, image data, and metadata of the message.
[0053] CAMR may utilize image processing to determine content items. The image processing may be performed by a collection of hardware, software, firmware, or some combination. For example, the image processing may be performed by an application specific integrated circuit (e.g., embodied as hardware or software or both in computer 100), a field programmable gate array, or other related processing device.
[0054] The image processing may be configured to perform various image analysis techniques. The image analysis techniques may be machine learning or deep learning based techniques, or both. These techniques may include, but are not limited to, region-based convolutional neural networks (R-CNN), you only look once (YOLO), edge matching, clustering, grayscale matching, gradient matching, invariant models, geometric hashing, scale-invariant feature transform (SIFT), speeded up robust feature (SURF), histogram of oriented gradients (HOG) features, and single-shot multi-box detector (SSD). In some embodiments, the image processing may be configured to help identify faces, objects, people, or other entities (e.g., by analyzing images of faces using a model built based on training data, by analyzing images of objects as part of a machine learning model).
[0055] In some embodiments, objects may be identified using an object detection algorithm, such as R-CNN, YOLO, SSD, SIFT, Hog features, or other machine learning and / or deep learning object detection algorithms. The output of the object detection algorithm may include one or more identities of one or more respective objects with corresponding match certainties. For example, a photo included as part of a message in a messaging application may be analyzed. By using a relevant object detection algorithm, the subject of the image included in the message may be identified and tagged (e.g., "dog," "lost keys," "wallet," "car with lights on").
[0056] In some embodiments, characteristics of an object may be determined using a supervised machine learning model built using training data. For example, an image may be input to the supervised machine learning model, and various classifications detected in the image may be output by the model. For example, characteristics such as the object material (e.g., fabric, metal, plastic, etc.), shape, size, color, and other characteristics may be output by the supervised machine learning model. Furthermore, the identification of an object in an image that is part of a message (e.g., a tree, a human face, a dog, etc.) may be output as a classification determined by the supervised machine learning model. For example, if a user snaps an image of a car to send via a messaging application, the supervised machine learning algorithm may be configured to output the identity of the object (e.g., the car) and various characteristics of the vehicle (e.g., model, make, color, etc.).
[0057] In some embodiments, the characteristics of an object may be determined using photogrammetry techniques. For example, the shape and dimensions of an object may be approximated using photogrammetry techniques. As an example, if a user provides an image of a trash can, the diameter, depth, thickness, etc. of the trash can may be approximated using photogrammetry techniques. In some embodiments, the characteristics of an object may be identified by referencing an ontology. For example, when an object is identified (e.g., using R-CNN), the identity of the object may be referenced in an ontology to determine the object's corresponding attributes. The ontology may indicate attributes such as the object's color, size, shape, use, etc.
[0058] The characteristics may include the shape of the object, the dimensions of the object (e.g., height, length, width), the number of objects (e.g., three keys on a keychain), the color of the object, or other attributes of the object, or a combination thereof. In some embodiments, the output may generate a list including the object's identities or characteristics, or a combination thereof (e.g., cotton shirt, metal glass, etc.). In some embodiments, the output may include an indication that the object's identity or characteristics are unknown. The indication may include a request for additional input data that can be analyzed so that the object's identity or characteristics, or both, can be ascertained. For example, a user generating a message may be prompted to provide information such as the time the image was captured, the location where the image was captured, one or more keywords for tagging the subject in the image (e.g., "key," "lost," "failed," "found," "destroyed") and for processing by CAMR's content analysis. In some embodiments, the various objects, object attributes, and relationships between objects (e.g., hierarchical and direct relationships) may be represented within a knowledge graph (KG) structure. Objects can be matched to other objects based on shared characteristics (e.g., paint color for part of a car body panel, material texturing for a key), relationships to other objects (e.g., eyes belonging to a face), or objects belonging to the same class (e.g., two bolt heads are metric sizes).
[0059] In some embodiments, the CAMR may perform content analysis by using or performing machine learning on the data using one or more of the following example techniques: Exemplary techniques include K-nearest neighbor (KNN), learning vector quantization (LVQ), self-organizing maps (SOM), logistic regression, ordinary least squares regression (OLSR), linear regression, stepwise regression, multivariate adaptive regression spline (MARS), ridge regression, least absolute shrinkage and selection operator (LASSO), elastic net, least-angle regression (LARS), probabilistic classifiers, naive Bayes classifiers, binary classifiers, linear classifiers, hierarchical classifiers, canonical correlation analysis (CCA), factor analysis, independent component analysis (ICA), linear discriminant analysis (LDA), multidimensional scaling (MDS), non-negative matrix factorization (NMA), and others. factorization (NMF), partial least squares regression (PLSR), principal component analysis (PCA), principal component regression (PCR), Sammon mapping, t-distributed stochastic neighbor embedding (t-SNE), bootstrap aggregating, harmonic mean, gradient boosted decision tree (GBT).GBDT), gradient boosting machine (GBM), inductive bias algorithm, Q-learning, state-action-reward-state-action (SARSA), temporal difference (TD) learning, a priori algorithm, equivalence class transformation (ECLAT) algorithm, Gaussian process regression, gene expression programming, group method of data handling (GMDH), inductive logic programming, example-based learning, logic model tree, information fuzzy networks (IFN), hidden Markov model, Gaussian naive Bayes, polynomial naive Bayes, averaged one-dependence estimators (AODE), Bayesian network (BN), classification and regression tree (CART), chi-squared automatic interaction detection detection (CHAID), expectation maximization algorithm, feedforward neural network, logic learning machine, self-organizing map, single linkage cluster, fuzzy clustering, hierarchical clustering, Boltzmann machine, convolutional neural network, recurrent neural network, hierarchical temporal memory (HTM), or other machine learning techniques or combinations thereof;
[0060] In some embodiments, the CAMR may be configured to perform natural language processing and may include various components (not shown) that operate using hardware, software, or a combination of these. For example, a processor, one or more data sources, a search application, and a report analyzer. The processor may be a computer module (e.g., processor 110) that analyzes received content and other information. The processor may perform various methods and techniques for analyzing textual information (e.g., syntactic analysis, semantic analysis, etc.). The processor may be configured to recognize and analyze any number of natural languages. In some embodiments, the processor may parse documents or passages of content from messages that a user is attempting to send from a messaging application, client, or service. The various components (not shown) of the processor may include, but are not limited to, a tokenizer, part-of-speech (POS) tagger, semantic relation identifiers, and syntactic relation identifiers. The processor may include a support vector machine (SVM) generator that processes topical content discovered within a corpus and classifies the topics.
[0061] In some embodiments, a tokenizer may be a computer module that performs lexical analysis. A tokenizer may convert a sequence of characters into a sequence of tokens. A token may be a string of characters contained in an electronic document and classified as a meaningful symbol. Additionally, in some embodiments, a tokenizer may identify word boundaries within an electronic document and divide any passage of text within the document into component text elements, such as words, multi-word tokens, numbers, and punctuation marks. In some embodiments, a tokenizer may receive a string of characters, identify lexemes within the string, and classify them into tokens.
[0062] Consistent with various embodiments, a POS tagger can be a computer module that marks up words within a passage that correspond to a particular part of speech. POS tagger can read a passage or other text in a natural language and assign a part of speech to each word or other token. POS tagger can determine the part of speech to which a word (or other text element) corresponds based on the word's definition and the word's context. The word's context can be based on its relationship to adjacent and related words within a term, sentence, or paragraph.
[0063] In some embodiments, the context of a word may depend on one or more previously analyzed electronic documents (e.g., messages written by a user). Examples of portions of speech that may be assigned to a word include, but are not limited to, nouns, verbs, adjectives, adverbs, and the like. Other examples of part-of-speech classifications to which POS tagging may be assigned include, but are not limited to, comparative or superlative adverbs, wh-adverbs, conjunctions, determiners, negative particles, possessive markers, prepositions, wh-pronouns, and the like. In some embodiments, POS tagging may be tags or other annotation tokens of a clause having a part-of-speech classification. In some embodiments, POS tagging may be tag tokens or words of a clause analyzed by natural language processing.
[0064] In some embodiments, the semantic relation identifier may be a computer module that may be configured to identify semantic relations between recognized text elements (e.g., words, terms in a document). In some embodiments, the semantic relation identifier may determine functional dependencies between entities and other semantic relations.
[0065] Consistent with various embodiments, the syntactic relation identifier may be a computer module that may be configured to identify syntactic relations within a clause made up of tokens. The syntactic relation identifier may determine the grammatical structure of a sentence, such as which groups of words are associated with terms, which words are subjects or objects of verbs, etc. The syntactic relation identifier may conform to a formal grammar.
[0066] In some embodiments, the processor may be a computer module that can analyze a document and generate a corresponding data structure for one or more portions of the document. For example, in response to receiving a text element that is a section of a message or other text in a natural language processor, the processor may output a text element parsed from the data. In some embodiments, the parsed text element may be represented in the form of a parse tree or other graph structure. To generate the parsed text element, the natural language processor may trigger computer modules including a tokenizer, a part-of-speech (POS) tagger, an SVM generator, a semantic relation identifier, and a syntactic relation identifier.
[0067] FIG. 4 illustrates an exemplary neural network (alternatively, "network") 400, which represents one or more artificial neural networks capable of performing content analysis for message rerouting consistent with embodiments of the present disclosure. Neural network 400 is comprised of multiple layers. Network 400 includes an input layer 410, a hidden section 420, and an output layer 450. While network 400 illustrates a feedforward neural network, it should be appreciated that other neural network configurations may be configured to perform content analysis on CAMR messages for messaging applications, such as a recurrent neural network configuration (not shown). In some embodiments, network 400 may be a design-and-run neural network, where the illustrated layout may be created by a computer programmer. In some embodiments, network 400 may be a design-by-run neural network, where the illustrated layout may be generated by a process of inputting data and analyzing the data according to one or more defined heuristics. Network 400 may operate in a forward propagation fashion by receiving inputs and outputting the results of the inputs. Network 400 may adjust the values of various components of the neural network by backward propagation.
[0068] The input layer 410 includes a set of input neurons 412-1, 412-2, up to 412-n (collectively 412) and a set of input connections 414-1, 414-2, 414-3, 414-4, etc. (collectively 414). The input layer 410 represents input from the data the neural network is to analyze (e.g., images in a message, text from a message, tokenized text from natural language processing, metadata for images that are part of a message). Each input neuron 412 may represent a subset of the input data. For example, the neural network 400 may be provided with an image as input, where the image is represented by input data for every third pixel of the image. For example, the neural network 400 may be provided with text as input, where the text is represented by input data representing text tokens, words, descriptors, tags, or other relevant natural language processing output.
[0069] In another example, input neuron 412-1 may be a first pixel in a photograph, input neuron 412-2 may be a second pixel in the photograph, etc. The number of input neurons 412 may correspond to the size of the input. For example, when neural network 400 is designed to analyze an image that is 256 pixels by 256 pixels, the neural network configuration may include a set of 65,536 input neurons. The number of input neurons 412 may correspond to the type of input. For example, when the input is a 256 pixel by 256 pixel color image, the neural network configuration may include a set of 196,608 input neurons (65,536 input neurons for the red value of each pixel, 65,536 input neurons for the green value of each pixel, and 65,536 input neurons for the blue value of each pixel). The type of input neurons 412 may correspond to the type of input. In a first example, the neural network may be designed to analyze images that are black and white, with each of the input neurons being a decimal value between 0.00001 and 1 that represents a shade of grayscale for the pixel (where 0.00001 represents a fully white pixel and 1 represents a fully black pixel). In a second example, the neural network may be designed to analyze images that are color, with each of the input neurons being a three-dimensional vector that represents the color value of a given pixel in the input image (where the first component of the vector is an integer value for red between 0 and 255, the second component of the vector is an integer value for green between 0 and 255, and the third component of the vector is an integer value for blue between 0 and 255).
[0070] Input connections 414 represent the output of input neurons 412 to hidden section 420. Each of input connections 414 varies depending on the value of the respective input neuron 412 and is based on multiple weights (not shown). For example, first input connection 414-1 has a value provided to hidden section 420 based on input neuron 412-1 and a first weight. Continuing the example, second input connection 414-2 has a value provided to hidden section 420 based on input neuron 412-1 and a second weight. Continuing the example, third input connection 414-3 is based on input neuron 412-2 and a third weight, and so on. In other words, input connection 414-1 and input connection 414-2 share the same output component of input neuron 412-1, input connection 414-3 and input connection 414-4 share the same output component of input neuron 412-2, and all four input connections 414-1, 414-2, 414-3, and 414-4 may have output components with four different weights. Although network neural 400 may have different weights for each connection 414, some embodiments may expect the weights to be similar. In some embodiments, the values of each of the input neurons 412 and connections 414 may necessarily be stored in memory.
[0071] Hidden section 420 includes one or more layers that receive inputs and generate outputs. Hidden section 120 includes computational neurons 422-1, 422-2, 422-3, 422-4, a first hidden layer of up to 422-n (collectively 422), computational neurons 426-1, 426-2, 426-3, 426-4, 426-5, a second hidden layer of up to 426-n (collectively 426), and a series of hidden connections 424 linking the first and second hidden layers. It should be appreciated that neural network 400 represents only one of many neural networks capable of content analysis as part of CAMR consistent with some embodiments of the present disclosure. Consequently, hidden section 420 may be configured with more or fewer hidden layers (e.g., one hidden layer, seven hidden layers, twelve hidden layers, etc.), with two hidden layers shown for illustrative purposes.
[0072] The first hidden layer 422 includes computational neurons 422-1, 422-2, 422-3, 422-4, up to 422-n. Each computational neuron in the first hidden layer 422 may receive as input one or more connections 414. For example, computational neuron 422-1 receives input connection 414-1 and input connection 414-2. Each computational neuron in the first hidden layer 422 also provides an output. The outputs are represented by dotted hidden connections 424 flowing out of the first hidden layer 422. Each computational neuron 422 performs an activation function during forward propagation. In some embodiments, the activation function may be a process that receives several binary inputs and calculates a single binary output (e.g., a perceptron). In some embodiments, an activation function may be a process that receives several non-binary inputs (e.g., a number between 0 and 1, such as 0.671) and calculates a single non-binary output (e.g., a number between 0 and 1, a number between -0.5 and 0.5, etc.). Various functions may be implemented to calculate the activation function (e.g., a sigmoid neuron or other logistic function, a hyperbolic tangent neuron, a softplus function, a softmax function, a modified linear unit, etc.). In some embodiments, each of the computational neurons 422 also includes a bias (not shown). The bias may be used to determine the likelihood or evaluation of a given activation function. In some embodiments, each of the bias values for each of the computational neurons must necessarily be stored in memory.
[0073] The neural network 400 may include using a sigmoid neuron for the activation function of the computational neuron 422-1. An equation (Equation 1, shown below) may represent the activation function of the computational neuron 412-1 as f(neuron). The logic of the computational neuron 422-1 may be the sum of each of the input connections (i.e., input connection 414-1 and input connection 414-3) provided to the computational neuron 422-1, represented in Equation 1 as j. For each j, a weight w is multiplied by the value x of the given connected input neuron 412. The bias of the computational neuron 422-1 is represented as b. Once each input connection j is summed, the bias b is subtracted. The operation of this example is completed as follows: The more positive the result of the sum and bias in the activation f(neuron), the closer the output of the computational neuron 422-1 approaches 1. The more negative the result of the sum and bias in the activation f(neuron), the closer the output of the computational neuron 422-1 approaches 0. Given that the sum and bias result in a number between more positive and more negative numbers in the activation f(neuron), the output will change slightly as the weights and biases change slightly.
[0074] [Formula 1]
number
[0075] The second hidden layer 426 includes computational neurons 426-1, 426-2, 426-3, 426-4, 426-5, up to 426-n. In some embodiments, the computational neurons in the second hidden layer 426 may be operated similarly to the computational neurons in the first hidden layer 422. For example, computational neurons 426-1 through 426-n may each be operated with the same activation function as computational neurons 422-1 through 422-n. In some embodiments, the computational neurons in the second hidden layer 426 may be operated differently from the computational neurons in the first hidden layer 422. For example, computational neurons 426-1 through 426-n may have a first activation function, and computational neurons 422-1 through 422-n may have a second activation function.
[0076] Similarly, the connectivity to, from, and between various layers of the hidden section 420 may also vary. For example, the input connections 414 may be fully connected to the first hidden layer 422, and the hidden connections 424 may be fully connected from the first hidden layer to the second hidden layer 426. In some embodiments, being fully connected may mean that each neuron in a given layer may be connected to all neurons in the previous layer. In some embodiments, being fully connected may mean that each neuron in a given layer may function fully independently and may not share any connections. In a second example, the input connections 414 may be poorly connected to the first hidden layer 422, and the hidden connections 424 may be poorly connected from the first hidden layer to the second hidden layer 426.
[0077] Additionally, parameters to, from, and between various layers of hidden section 420 may also vary. In some embodiments, parameters may include weights and biases. In some embodiments, there may be more or fewer parameters than weights and biases. For illustrative purposes, neural network 400 may be in the form of a convolutional neural network or convolutional network. A convolutional neural network may include a series of heterogeneous layers (e.g., an input layer 410, a convolutional layer 422, a pooling layer 426, and an output layer 450). In such a network, the input layer may hold raw pixel data of an image in a three-dimensional volume of width, height, and color. The convolutional layer of such a network may output only local connections to the input layer to identify features in a small section of the image (e.g., the eyebrows from the face of a first subject in a photograph showing four subjects, the front fender of a vehicle in a photograph showing a truck, etc.). Given this example, the convolutional layers may include weights and biases as well as additional parameters (e.g., depth, stride, and padding). The pooling layers of such networks may receive the outputs of the convolutional layers as input, but may perform fixed function operations (e.g., operations that do not consider either weights or biases). Also, given this example, the pooling layers may not include any convolutional layers, or may not include any weights or biases (e.g., perform a downsampling operation).
[0078] Output layer 450 includes a series of output neurons 450-1, 450-2, 450-3, up to 450-n (collectively 450). Output layer 450 holds the results of neural network 400's analysis. In some embodiments, output layer 450 may be a classification layer used to identify features of inputs to network 400. For example, network 400 may be a classification network trained to identify Arabic numerals. In such an example, network 400 may include 10 output neurons 450 corresponding to the Arabic numerals identified by the network (e.g., output neuron 450-2 having a higher activation value than output neuron 450 may indicate that the neural network has determined that the image contains the number "1"). In some embodiments, output layer 450 may be a real-valued target (e.g., attempting to predict an outcome when the input is the outcome of a previous set), and there may be only one output neuron (not shown). Output layer 450 is provided by output connections 452. Output connections 452 provide activations from hidden section 420. In some embodiments, output connections 452 may include weights and output neurons 450 may include biases.
[0079] Training a neural network, such as that illustrated by neural network 400, may involve performing backpropagation. Backpropagation is distinct from forwardpropagation. Forwardpropagation may involve providing data to input neuron 410, performing calculations for connections 414, 424, 452, and performing calculations for computational neurons 422 and 426. Forwardpropagation may also be dependent on the layout of a given neural network (e.g., recursion, number of layers, number of neurons in one or more layers, layers that are well connected to other layers, or layers that are not well connected to other layers, etc.). Backpropagation may be used to determine parameter errors (e.g., weights and biases) within network 400 by starting from output neuron 450 and propagating errors backward through each of the various connections 452, 424, 414, and layers 426, 422.
[0080] Backward propagation involves running one or more algorithms based on one or more training data to reduce the difference between what a given neural network determines from the inputs and what the given neural network should determine from the inputs. The difference between the network's decision and the correct decision may be called the objective function (alternatively, a cost function). When a given neural network is first created and provided with data and calculated by forward propagation, the result or decision may be an incorrect decision.
[0081] Equation 2 provides an example of an objective function ("exemplary function") in the form of a quadratic cost function (e.g., mean square error)—other functions may be selected, and mean square error is selected for illustrative purposes. In Equation 2, all weights may be represented by w, and biases may be represented by b for neural network 400. Network 400 is provided with a predetermined number of training inputs n in a subset (or the entirety) of training data having input values x. Network 400 can produce an output a from x, and should produce a desired output y(x) from x. Backpropagation or training of network 400 should be a reduction or minimization of the objective function "O(w, b)" by varying the set of weights and biases. Successful training of network 400 should include not only a reduction in the difference between the answer and the correct answer y(x) for input values x, but also a reduction in the difference between the answer and the correct answer y(x) given new input values (e.g., from additional training data, validation data, etc.).
[0082] [Formula 2]
number
[0083] Many options are available for the backpropagation algorithm in both the objective function (e.g., mean squared error, cross-entropy cost function, accuracy function, confusion matrix, precision-recall curve, mean absolute error, etc.) and the reduction of the objective function (e.g., gradient descent batch-based stochastic gradient descent, Hessian optimization, momentum-based gradient descent, etc.). Backpropagation may include using a gradient descent algorithm (e.g., computing partial derivatives of the objective function with respect to the weights and biases for all of the training data). Backpropagation may include determining stochastic gradient descent (e.g., computing partial derivatives of a subset of the training inputs within a subset or batch of training data). Additional parameters may be included in various backpropagation algorithms (e.g., the learning rate of the gradient descent). Large changes in the weights and biases due to backpropagation may cause inappropriate training (e.g., overfitting to the training data, reducing to a local minimum, excessive reduction beyond a global minimum, etc.). As a result, modifications to the objective function with more parameters may be used to prevent inadequate training (e.g., utilizing an objective function that incorporates regularization to prevent overfitting). Also as a result, changes to neural network 400 may be small at any given iteration. As a result of the necessary smallness of any given iteration, the backpropagation algorithm may need to be repeated for many iterations to perform accurate training.
[0084] For example, neural network 400 may have untrained weights and biases, and backpropagation may involve stochastic gradient descent to train the network over a subset of training inputs (e.g., a batch of 10 training inputs from the entire set of training inputs). Continuing the example, network 400 may continue to be trained with a second subset of training inputs (e.g., a second batch of 10 training inputs from the entire set other than the first batch), and this may be repeated until all of the training inputs have been used to compute the gradient descent (e.g., one epoch of training data). Stated another way, if there are 10,000 training images in total, and one iteration of training uses a batch size of 100 training inputs, 1,000 iterations would be required to complete an epoch of training data. Many epochs may be performed to continue training the neural network. There may be many factors that determine the selection of additional parameters (e.g., a larger batch size may cause inadequate training, a smaller batch size may result in too many training iterations, a larger batch size may not fit in memory, a smaller batch size may not efficiently utilize discrete GPU hardware, too few training epochs may not produce a well-trained network, too many training epochs may produce overfitting in the trained network, etc.). Additionally, network 400 may be evaluated to quantify its performance on a dataset, such as by using an evaluation measure (e.g., mean squared error, cross-entropy cost function, accuracy function, confusion matrix, precision-recall curve, mean absolute error, etc.). Training of network 400 may be performed until a certain predetermined accuracy threshold is met. For example, the number of epochs may need to be adjusted to ensure and verify accuracy to be 90% or higher.Verification may also be performed by the user to ensure one or more of removing samples from over-represented classes (alternatively, under-sampling techniques) and adding more samples from under-represented classes (alternatively, over-sampling techniques).
[0085] The exemplary network 400 may be configured as a multi-classification model to determine how to route or transmit messages from a user generating a message to one or more recipients, groups of recipients, or a combination thereof. For example, the network 400 may be configured to incorporate input image data, natural language processing data, classification information, user-generated tags, and machine-generated tags all into the input layer 410. Other information, such as geographic information (e.g., latitude and longitude coordinates, city names), user-generated image descriptions, message thread titles, message recipient names, message creators, message group organizers, and other relevant message and message recipient information, may also be provided to the network 400 as part of the multi-classification model. In other examples, the network 400 may be configured as an SDCA multi-class classifier or an averaged perceptron trainer. The network 400 may be configured to execute inputs from a specific application, such as a console application, or from a specific application programming interface of an application suite, or as part of a plug-in or CAMR operation. The network 400 may also be configured to receive various textual or other structured data as data sources. For example, a comma-separated or tab-separated file or multiple files may be used as the source of data for network 400 .
[0086] 5 illustrates an example system 500 configured to route messages based on message content, consistent with some embodiments of the present disclosure. System 500 may include one or more of a network 510, a messaging server 520, at least one message application client 530, multiple message application recipients (collectively 540), including message application recipients 540-1, 540-2, 540-3, up to 540-N, and a CAMR 550. Network 510 may be one or more related computer networks, a wired network, a wireless network, a local area network, or an external network (e.g., the Internet). Network 510 may be configured to send and receive data with other components of system 500. Network 510 may be utilized by other components of system 500 to transmit various messages and exchange communications (e.g., text messages, email messages, instant messaging messages, chat room messages, chat messages, forum messages).
[0087] The messaging server 520 may be a computing device or messaging server configured to execute or host one or more messaging applications. The messaging server 520 may host or include one or more messages and message groups. The message server 520 may be executed by a single computer or computer system (e.g., computer system 100). The message server 520 may be hosted by a computing resource abstraction (e.g., cloud computing environment 50). The message server 520 may facilitate the operation of a messaging platform, messaging application, or messaging service (e.g., text messages, email messages, instant messaging messages, chat room messages, chat messages, forum messages). The message server 520 may directly host one or more messages to facilitate the system 500. For example, the message server 520 may store copies of messages, chat history, and the like. The message server 520 may indirectly host the messaging platform of the system 500. For example, the messaging server 520 may operate by only being a sender, a receiver, or by reading only metadata, but the messaging server 520 may not host, store, display, or otherwise have access to any content of any message (e.g., does not display the message, does not have access to the message, does not have permission to display the message).
[0088] Messaging application client (“client”) 530 may represent a user-interactive interface or an instance of a portion of a messaging application of system 500. Specifically, client 530 may be a computing device such as a laptop computer, a smartphone, or other client computer (e.g., computer 100). Client 530 may be configured as a portion of a messaging application or interface capable of sending and receiving messages. For example, client 530 may be a web browser running on a laptop that provides an interface for a user to draft, compose, send, and receive various messages. In another example, client 530 may be a local application running on a smartphone that provides an interface for drafting, composing, sending, and receiving various messages. Client 530 may operate by communicating directly with recipient 540 over network 510 without communicating with messaging server 520. Client 530 may operate indirectly, such as by first forwarding a message to messaging server 520 over network 510, which may then forward the message to recipient 540.
[0089] Recipient 540 may be one or more entities including various users capable of sending and receiving various messages. Recipient 540 may be limited in number or may be numerous in number of different individuals. For example, recipients 540 in system 500 may include only recipients 540-1, 540-2, and 540-3. In other examples, recipients 540, represented by 540-N, may include tens, hundreds, or even thousands of individuals, with group recipients configured to communicate messages. Messaging server 520 may store copies of various recipients 540 and may reference the stored copies when sending and routing various messages to be sent. Each recipient 540 may include various different individuals or groups, varying in number. Individuals may be represented by various computing devices shown in FIG. 4. Specifically, recipient 540-1 may be an individual represented by computing device 560. Additionally, recipient 540-2 may be a group recipient having many individuals represented by computing devices 570, 572, 574, 576, and 578. Additionally, recipient 540-3 may be a receiving group having individuals represented by computing devices 576 and 580. An individual may be a member of multiple recipients 540. For example, computing device 576 may be an individual in both recipient 540-2 and recipient 540-3.
[0090] Consistent with some embodiments of the present disclosure, the CAMR 550 may be a computer system configured to perform routing and rerouting of messages to selected candidates. The CAMR 550 may operate as a single computer system, such as the computer 100, or as part of a cloud or other service, such as part of the cloud computing environment 50. The CAMR 550 may operate as part of a messaging platform, either in a central location or across deployed hosting instances. Specifically, the CAMR may be a plug-in or subrouting that is part of a messaging service, or may be installed on an application server that hosts and routes messages for a particular organization and messaging platform (e.g., part of the messaging server 520). The CAMR may operate as part of an end-user or user-facing application. Specifically, all members of an organization may have a messaging application in the form of a client program running on an end-user device (e.g., the CAMR 550 may operate as part of the client 530). The CAMR 550 may be an application plug-in or utility integrated into the messaging application on each of the end-user devices.
[0091] The CAMR 550 may be configured to route and reroute various messages based on performing content analysis. Specifically, the CAMR 550 may intercept messages as they are composed, as they are sent, or before they are sent. The CAMR 550 may then perform one or more content analysis techniques to identify specific content elements (e.g., textual elements, visual or image elements, metadata elements). The CAMR 550 may include the performance of one or more artificial intelligence computations (e.g., neural networking by the network 400). In some embodiments, the CAMR 550 may include the performance of one or more artificial intelligence computations on all messages routed by the system 500 (e.g., performing machine learning or neural networking by the training network 400 based on all messages regardless of specific group or conversation).
[0092] The CAMR 550 may be configured to perform tagging to select specific potential messaging recipients 540. The CAMR 550 may be configured to tag each content item of a message based on content analysis. Specifically, by using tags generated by performing artificial intelligence operations, the CAMR 550 may score each specific potential messaging recipient. The CAMR 550 may send only specific candidates that meet or exceed a predetermined threshold. For example, the predetermined threshold may be an 80% confidence metric of a tag match based on content analysis. In some embodiments, multiple specific candidates may be higher than the predetermined threshold. For example, a message may be based on content analysis with a specific confidence metric of 80% for recipients 540-1 and 540-3. If multiple recipients 540 meet or exceed the predetermined threshold, the CAMR 550 may select one of the multiple recipients 540 and send the message. For example, the message may be sent only to recipient 540-2, even though recipient 540-3 also meets or exceeds the predetermined threshold. The decision to send to recipient 540-2 may be because the message creator has not sent any communication to recipient 540-3 prior to a predetermined time (e.g., a predetermined time of not sending a message in the past five days, a predetermined time of not sending a message within the past six months, or has not previously sent a message to recipient 540-3). In some embodiments, if there are multiple potential messaging recipients above a predetermined threshold, CAMR 550 may send to multiple candidate recipients.
[0093] An exemplary message (“Message”) 590 can be rerouted by CAMR 550 based on content analysis in system 500. Message 590 can include one or more content items that can be used for content analysis by CAMR 550. Message 590 can be composed by a user, such as client 530, and can be directed to recipient 540-2. Specifically, message 590 can include a title element 592 that includes the text “Found my lost key outside Building 007,” a text element 594 that includes the text “Found this lost key. I found it this morning just outside the parking lot along the north sidewalk. Can someone tell me who I should give it to? I'm at my desk in Building 008 from 9:00 AM to 5:00 PM every day,” and a visual element 596 (not shown) that is a photo of the key taken by a smartphone, and can also include metadata 598. Metadata 598 may include data related to the photo (e.g., geographic information, timestamp, date taken, shutter speed, camera type, smartphone type, username of the smartphone owner).
[0094] CAMR 550 may process one or more of title element 592, text element 594, visual element 596, and metadata 598 through artificial intelligence computations to route message 590. For example, client 530 may, based on a user instruction, send a message for recipient 540-2 to a general chat conversation for all employees at a first location. CAMR 550 may analyze and tag various portions of message 590 and send each of content elements 592, 594, 596, and 598 along with the tags for processing through content analysis. For example, by performing natural language processing, various tags for the message may be “lost and found,” “found item,” “lost key,” “building facility,” “security related,” and the like. CAMR 550 may intercept message 590 and (based on content analysis) route the message for recipient 540-3 to a second chat conversation for only security guards at the first location. CAMR 550 may reroute message 590, such as removing the message from the outbound queue for recipient 540-2, before or simultaneously with the message being received by messaging server 520. CAMR 550 may remove the message from the outbound queue for recipient 540-2 based on scoring message 590. For example, CAMR 550 may determine that recipient 540-2 has a 67% score for receiving message 590, a predetermined threshold for receiving the message is set at 91% or higher, and recipient 540-2's score is below the predetermined threshold.
[0095] The CAMR 550 may provide the advantage of efficiently selecting a specific message recipient or recipients and avoiding unnecessary messages. For example, a message 590 may not have a recipient domain specified. A recipient domain may not be specified because a user forgot to specify a recipient in the client 530. A recipient domain may not be specified because the creator of the message 590 may not be sure who the recipient 540 is. The CAMR 550 may be configured to analyze or train an ML model (e.g., neural network 400) based on each message sent through the system 500. The CAMR 550 may be configured to analyze or train an ML model with each message that does not have a recipient domain specified. The CAMR 550 may also sear.
[0096] CAMR 550 may also be configured to reduce excess communications within a particular recipient 540. For example, a particular message may be sent to recipient 540-2n. The particular message may be about a trash can to be emptied in a particular company building. Recipient 540-2 may be a messaging group that includes several hundred employees of a particular company. The particular message may be the start of many additional messages between computing device 574 and computing device 576, and no other computing devices. Based on a predetermined number of additional messages being exceeded, CAMR 550 may create a new recipient 540-X (not shown). CAMR 550 may move the additional messages from computing device 574 and computing device 576 to new recipient 540-X so that no more additional messages are created based on the particular message within recipient 540-2.
[0097] 6 illustrates an example method 600 for performing message routing consistent with some embodiments of the present disclosure. Method 600 may generally be implemented with fixed-function hardware, configurable logic, logical instructions, etc., or any combination thereof. For example, logical instructions may include assembler instructions, ISA instructions, machine instructions, machine-dependent instructions, microcode, state setting data, configuration data for integrated circuits, state information that personalizes electronic circuits or other structural components that are inherent to the hardware (e.g., a host processor, central processing unit / CPU, microcontroller, etc.), or a combination thereof. Method 600 may be performed by a CAMR executing in software or hardware, such as CAMR 550.
[0098] From start 606, method 600 may begin by detecting a message at 610. Detecting the message may include monitoring a client device running an instance of a messaging application. Detecting the message may include monitoring a messaging server of the messaging application to receive a routed message.
[0099] At 620, one or more candidate messaging recipients may be determined. The determining may be based on monitoring or detecting the message (at 610), or a combination thereof. The determining may include performing content analysis on one or more content items that are part of the message (e.g., natural language processing on text in the message title or body, natural language processing on documents that are attachments to the message, image processing on images in the body or attached images, natural language processing on any metadata of the message or message attachments). The determining may include tagging or identifying various content items, such as by generating one or more tags for each of the one or more content items of the message. The determining may include identifying various subjects or objects that are part of the one or more content items (e.g., natural language processing objects, image processing to generate objects). The determining may include computing artificial intelligence, such as machine learning or other machine-based processing, on the content items, the generated tags, or the identified subjects or objects, or a combination thereof. The determining may include determining a set of candidate messaging recipients, such as a single candidate recipient, or multiple potential candidate recipients. The recipient may be identified based on the determination.
[0100] If a recipient is identified (630:Y), the message may be routed at 640. The message may be routed by rerouting the message. For example, routing the message may include not sending the message to the intended recipient, removing the message from an outbound queue, preventing the message from being delivered, and blocking the recipient from receiving the message. The message may be routed by selecting a particular candidate. For example, if the message does not have an intended recipient, the message may be routed by selecting a candidate as the recipient. The message may be routed by adding additional recipients. For example, the message detected at 610 may have a single recipient, and based on the candidate determination at 620, additional recipients may be identified. The additional recipients may also receive copies of the message as part of the routing at 640. After routing the message at 640, or if no candidate recipients were identified (630:N), method 600 may end at 695.
[0101] The present invention may be a system, method, and / or computer program product at any possible level of technical detail integration. The computer program product may include a computer-readable storage medium (or media) having computer-readable program instructions for causing a processor to perform aspects of the present invention.
[0102] A computer-readable storage medium may be a tangible device that can hold and store instructions for use by an instruction execution device. The computer-readable storage medium may be, for example, but not limited to, an electronic storage device, a magnetic storage device, an optical storage device, an electromagnetic storage device, a semiconductor storage device, or any suitable combination of the foregoing. A non-exhaustive list of more specific examples of computer-readable storage media may include portable computer diskettes, hard disks, random access memory (RAM), read-only memory (ROM), erasable programmable read-only memory (EPROM) or flash memory, static random access memory (SRAM), portable compact disk read-only memory (CD-ROM), digital versatile disk (DVD), memory sticks, floppy disks, punch cards, or mechanically encoded devices such as ridge structures in grooves having instructions recorded thereon, and any suitable combination of the foregoing. Computer-readable storage medium, as used herein, should not be construed as being a transitory signal per se, such as an electric wave or other freely propagating electromagnetic wave, an electromagnetic wave propagating through a waveguide or other transmission medium (e.g., a light pulse passing through a fiber optic cable), or an electrical signal transmitted over a wire.
[0103] The computer-readable program instructions described herein may be downloaded from a computer-readable storage medium to each computing / processing device or to an external computer or storage device via a network, such as the Internet, a local area network, a wide area network, or a wireless network, or a combination thereof. The network may comprise copper communication cables, optical fiber, wireless transmissions, routers, firewalls, switches, gateway computers, or edge servers, or a combination thereof. A network adapter card or network interface in each computing / processing device receives the computer-readable program instructions from the network and transfers the computer-readable program instructions for storage in a computer-readable storage medium within the respective computing / processing device.
[0104] The computer-readable program instructions for carrying out the operations of the present invention may be either assembler instructions, instruction set architecture (ISA) instructions, machine instructions, machine-dependent instructions, microcode, firmware instructions, state setting data, configuration data for integrated circuits, or source or object code written in any combination of one or more programming languages, including object-oriented programming languages such as Smalltalk®, C++, or the like, and procedural programming languages such as the “C” programming language or similar programming languages. The computer-readable program instructions may execute entirely on the user's computer, partially on the user's computer as a standalone software package, partially on the user's computer and partially on a remote computer, or entirely on a remote computer or server. In the latter scenario, the remote computer may be connected to the user's computer via any type of network, including a local area network (LAN) or a wide area network (WAN), or the connection may be made to an external computer (e.g., via the Internet using an Internet Service Provider). In some embodiments, electronic circuitry including, for example, a programmable logic circuit, a field programmable gate array (FPGA), or a programmable logic array (PLA) may execute computer-readable program instructions by utilizing state information of the computer-readable program instructions to personalize the electronic circuitry to perform aspects of the present invention.
[0105] Aspects of the present invention are described herein with reference to flowchart illustrations and / or block diagrams of methods, apparatus (systems), and computer program products according to embodiments of the invention. It will be understood that each block of the flowchart illustrations and / or block diagrams, and combinations of blocks in the flowchart illustrations and / or block diagrams, can be implemented by computer-readable program instructions.
[0106] These computer-readable program instructions may be provided to a computer processor or other programmable data processing apparatus to produce a machine, such that the instructions, when executed by the computer processor or other programmable data processing apparatus, create means for implementing the function(s) / act(s) specified in one or more blocks of the flowcharts and / or block diagrams. These computer-readable program instructions, which may direct a computer, programmable data processing apparatus, and / or other device to function in a particular manner, may also be stored on a computer-readable storage medium, such that a computer-readable storage medium having instructions stored thereon comprises an article of manufacture containing instructions that implement aspects of the function(s) / act(s) specified in one or more blocks of the flowcharts and / or block diagrams.
[0107] The computer-readable program instructions may also be loaded onto a computer, other programmable data processing apparatus, or other device to cause the computer, other programmable apparatus, or other device to perform a series of operational steps to create a computer-implemented process, such that the instructions executing on the computer, other programmable apparatus, or other device implement the function(s) / act(s) specified in one or more blocks of the flowcharts and / or block diagrams.
[0108] The flowcharts and block diagrams in the figures illustrate the architecture, functionality, and operation of possible implementations of systems, methods, and computer program products according to various embodiments of the present invention. In this regard, each block in a flowchart or block diagram may represent a module, segment, or portion of instructions, comprising one or more executable instructions for implementing the specified logical function(s). In some alternative implementations, the functions noted in the blocks may occur in an order different from that noted in the figures. For example, two blocks shown in succession may actually be realized as a single step, may be executed concurrently, or may be executed substantially concurrently, in a partially or fully time-overlapping manner, or the blocks may even be executed in the reverse order depending on the functionality involved. It should also be noted that each block of the block diagrams and / or flowchart illustrations, and combinations of blocks in the block diagrams and / or flowchart illustrations, may be implemented by a special-purpose hardware-based system that performs the specified functions or operations or executes a combination of special-purpose hardware and computer instructions.
[0109] The descriptions of various embodiments of the present disclosure are presented for illustrative purposes and are not intended to be exhaustive or limiting of the disclosed embodiments. Many modifications and variations will be apparent to those skilled in the art without departing from the scope and spirit of the described embodiments. The terms used herein are selected to describe the principles of the embodiments, practical applications, or technical improvements of the technology found in the market, or to enable those skilled in the art to understand the embodiments disclosed herein. According to this specification, the following items are also disclosed. [Item 1] detecting a first message directed to a first messaging recipient in a messaging application, the first message including one or more content items; determining a set of one or more candidate messaging recipients based on the first message and based on content analysis of the one or more content items; identifying a second messaging recipient from the set of one or more candidate messaging recipients based on the content analysis; routing the first message to the second messaging recipient in response to the identifying the second messaging recipient; A method comprising: [Item 2] The method comprises: determining, based on the first message, that the first messaging recipient is a group of recipients; The method of claim 1, further comprising: [Item 3] The method comprises: determining that the first messaging recipient is not in the set of one or more candidate messaging recipients; in response to determining that the first messaging recipient is not in the set of one or more candidate messaging recipients, routing the first message around the first messaging recipient such that the first message cannot be read by the first messaging recipient; 3. The method according to item 1 or 2, further comprising: [Item 4] The one or more content items include a text element that is viewable by a user, and the method comprises: performing natural language processing on the user-visible text elements. 4. The method of any one of items 1 to 3, further comprising: [Item 5] The one or more content items include at least one image element, and the method includes: performing image analysis on said image elements; 4. The method of any one of items 1 to 3, further comprising: [Item 6] The one or more content items include metadata elements associated with the at least one image, and the method further comprises: performing natural language processing on the metadata elements. Item 6. The method of item 5, further comprising: [Item 7] 7. The method of any one of claims 1 to 6, wherein the content analysis comprises a machine learning model configured to analyze the one or more content items. [Item 8] 8. The method of claim 7, wherein the machine learning model is trained based on all messages in the messaging application. [Item 9] determining the set of one or more candidate messaging recipients; assigning tags to content items of the one or more content items of the first message based on the machine learning model; presenting the first message and the assigned tag to an administrative user in response to the content analysis; receiving a response from the administrative user regarding the assigned tag; training the machine learning model based on the responses from the administrative users; Item 9. The method according to item 7 or 8, further comprising: [Item 10] 10. The method of claim 9, wherein the response regarding the assigned tag is for the administrative user to select a different messaging recipient. [Item 11] 10. The method of claim 9, wherein the response regarding the assigned tag is for the administrative user to remove the tag assigned by the machine learning model. [Item 12] determining the set of one or more candidate messaging recipients; generating a plurality of message recipient confidence scores for each potential messaging recipient in the set of one or more potential messaging recipients; comparing the confidence scores of the plurality of message recipients to a predetermined threshold; selecting a first potential messaging recipient from the set of potential messaging recipients as a first candidate messaging recipient from the set of candidate messaging recipients in response to the plurality of message recipient confidence scores exceeding the predetermined threshold and a first message recipient confidence score for each of the plurality of message recipient confidence scores; 7. The method of any one of items 1 to 6, further comprising: [Item 13] The method comprises: identifying a third messaging recipient from the set of one or more candidate messaging recipients based on the content analysis; routing the first message to the third messaging recipient in response to the identifying the third messaging recipient; 13. The method of any one of items 1 to 12, further comprising: [Item 14] the second messaging recipients are a set of three or more users of the messaging application; monitoring the conversation of the second messaging recipient; determining that a subset of users is participating in the conversation; generating a third messaging recipient in response to the determining the subset of users; routing the subset of users to the third messaging recipient; 14. The method of any one of items 1 to 13, further comprising: [Item 15] 1. A system comprising: a memory containing one or more instructions; a processor communicatively coupled to the memory; Equipped with In response to reading the one or more instructions, the processor: Detecting a first message directed to a first messaging recipient in a messaging application, the first message including one or more content items; determining a set of one or more candidate messaging recipients based on the first message and based on content analysis of the one or more content items; identifying a second messaging recipient from the set of one or more candidate messaging recipients based on the content analysis; routing the first message to the second messaging recipient in response to identifying the second messaging recipient; A system configured to: [Item 16] Item 16. The system of item 15, wherein the content analysis includes a machine learning model configured to analyze the one or more content items. [Item 17] Item 17. The system of item 16, wherein the machine learning model is trained based on all messages in the messaging application. [Item 18] On the computer, detecting a first message directed to a first messaging recipient in a messaging application, the first message including one or more content items; determining a set of one or more candidate messaging recipients based on the first message and based on content analysis of the one or more content items; identifying a second messaging recipient from the set of one or more candidate messaging recipients based on the content analysis; routing the first message to the second messaging recipient in response to identifying the second messaging recipient; A computer program that executes [Item 19] 20. The computer program of claim 18, wherein the content analysis includes a machine learning model configured to analyze the one or more content items. [Item 20] 20. The computer program of claim 19, wherein the machine learning model is trained based on all messages in the messaging application.
Claims
1. Detecting a first message directed to a first messaging recipient in a messaging application, the first message including one or more content items; determining a set of one or more candidate messaging recipients based on the first message and based on content analysis of the one or more content items; identifying a second messaging recipient from the set of one or more candidate messaging recipients based on the content analysis; routing the first message to the second messaging recipient in response to the identifying the second messaging recipient; Equipped with the content analysis includes a machine learning model configured to analyze the one or more content items; determining a set of one or more candidate messaging recipients; assigning tags to content items of the one or more content items of the first message based on the machine learning model; presenting the first message and the assigned tag to an administrative user in response to the content analysis; receiving a response from the administrative user regarding the assigned tag; training the machine learning model based on the responses from the administrative users; The method further comprises:
2. The method comprises: determining, based on the first message, that the first messaging recipient is a group of recipients; The method of claim 1 further comprising:
3. The method comprises: determining that the first messaging recipient is not in the set of one or more candidate messaging recipients; in response to determining that the first messaging recipient is not in the set of one or more candidate messaging recipients, routing the first message around the first messaging recipient such that the first message cannot be read by the first messaging recipient; The method of claim 1 or 2, further comprising:
4. The one or more content items include a text element that is viewable by a user, and the method comprises: performing natural language processing on the user-visible text elements. The method of claim 1 , further comprising:
5. The one or more content items include at least one image element, and the method comprises: performing image analysis on said image elements; The method of claim 1 , further comprising:
6. The one or more content items include metadata elements associated with the at least one image, and the method further comprises: performing natural language processing on the metadata elements. The method of claim 5 further comprising:
7. The method of claim 1 , wherein the machine learning model is trained based on all messages in the messaging application.
8. The method of claim 1 , wherein the response regarding the assigned tag is for the administrative user to select a different messaging recipient.
9. The method of claim 1 , wherein the response regarding the assigned tag is for the administrative user to remove the tag assigned by the machine learning model.
10. determining a set of one or more candidate messaging recipients; generating a plurality of message recipient confidence scores for each potential messaging recipient in the set of one or more potential messaging recipients; comparing the confidence scores of the plurality of message recipients to a predetermined threshold; selecting a first potential messaging recipient from the set of potential messaging recipients as a first candidate messaging recipient from the set of candidate messaging recipients in response to the plurality of message recipient confidence scores exceeding the predetermined threshold and a first message recipient confidence score for each of the plurality of message recipient confidence scores; 7. The method of claim 1, further comprising:
11. The method comprises: identifying a third messaging recipient from the set of one or more candidate messaging recipients based on the content analysis; routing the first message to the third messaging recipient in response to the identifying the third messaging recipient; The method of claim 1 , further comprising:
12. the second messaging recipients are a set of three or more users of the messaging application; monitoring messages for the second messaging recipient's conversation; determining that a subset of users are recipients of messages for the conversation; generating a third messaging recipient in response to said determining the subset of users; routing a subset of the users to the third messaging recipient; The method of claim 1 , further comprising:
13. 1. A system comprising: a memory containing one or more instructions; a processor communicatively coupled to the memory; Equipped with In response to reading the one or more instructions, the processor: Detecting a first message directed to a first messaging recipient in a messaging application, the first message including one or more content items; determining a set of one or more candidate messaging recipients based on the first message and based on content analysis of the one or more content items; identifying a second messaging recipient from the set of one or more candidate messaging recipients based on the content analysis; routing the first message to the second messaging recipient in response to said identifying the second messaging recipient; configured to: the content analysis includes a machine learning model configured to analyze the one or more content items; determining a set of the one or more candidate messaging recipients; assigning tags to content items of the one or more content items of the first message based on the machine learning model; and presenting the first message and the assigned tag to an administrative user in response to the content analysis; receiving a response from the administrative user regarding the assigned tag; training the machine learning model based on the responses from the administrative users; Including, the system.
14. The system of claim 13 , wherein the machine learning model is trained based on all messages in the messaging application.
15. On the computer, detecting a first message directed to a first messaging recipient in a messaging application, the first message including one or more content items; determining a set of one or more candidate messaging recipients based on the first message and based on content analysis of the one or more content items; identifying a second messaging recipient from the set of one or more candidate messaging recipients based on the content analysis; routing the first message to the second messaging recipient in response to said identifying the second messaging recipient; Execute the content analysis includes a machine learning model configured to analyze the one or more content items; The step of determining a set of one or more candidate messaging recipients comprises: assigning tags to content items of the one or more content items of the first message based on the machine learning model; presenting the first message and the assigned tag to an administrative user in response to the content analysis; receiving a response from the administrative user regarding the assigned tag; training the machine learning model based on the responses from the administrative users; a computer program comprising:
16. 16. The computer program product of claim 15, wherein the machine learning model is trained based on all messages in the messaging application.
Citation Information
Patent Citations
Method and apparatus for identifying potential recipient candidate
JP2007157152A
Information processor, program, and information processing method
JP2013041510A
Real-time recommendation of message recipients based on recipient interest level in message
US20190158443A1