Internet cloud hosted natural language interactive messaging system with entity-based communication
A dialog engine within a bot server system addresses the challenge of user engagement in enterprise messaging apps by interpreting user intents and managing conversations, enhancing interaction efficiency and personalization across platforms.
Patent Information
- Application Number
- JP2022073432
- Authority / Receiving Office
- JP · JP
- Patent Type
- Patents
- Current Assignee / Owner
- Priority Date
- 2016-09-16
- Filing Date
- 2022-04-27
- Publication Date
- 2025-08-13
- Estimated Expiration
- 2037-07-27
AI Technical Summary
Enterprise messaging applications struggle to entice users for regular use, despite high adoption rates of consumer messaging apps on Internet-connected devices.
Implementing a dialog engine that manages conversation flow and state, utilizing a bot server to interpret user intents and requests, and orchestrate interactions through a natural language processor and dialog engine, enabling scalable communication across multiple platforms.
Enhances user engagement by automating conversations, allowing enterprises to provide personalized and efficient interactions, thereby increasing user interaction and reducing the need for repetitive questioning.
Smart Images

Figure 0007722960000002 
Figure 0007722960000003 
Figure 0007722960000004
Abstract
Description
[Technical Field]
[0001] CROSS-REFERENCE TO RELATED APPLICATIONS This application is based on Indian Provisional Patent No. 201 filed on September 16, 2016, entitled "INTERNET CLOUD-HOSTED NATURAL LANGUAGE INTERACTIVE MESSAGING SYSTEM." This application claims the benefit of and priority to US Pat. No. 641 / 031569, the entire contents of which are incorporated herein by reference for all purposes. [Background technology]
[0002] background Messaging applications (e.g., Facebook® Messenger, WHATSAPP® instant messaging software, WECHAT® mobile text and voice messaging communication service, KIK® Messenger, TELEGRAM® Messenger, and SKYPE MOBILE® Messenger) are a rapidly emerging technology for Internet-connected devices such as mobile devices, laptops, and tablets. Messaging applications have achieved high adoption rates and high daily usage. However, enterprise applications on mobile devices struggle to entice users to download and regularly use enterprise applications. Summary of the Invention [Means for solving the problem]
[0003] overview This disclosure describes techniques for implementing a dialog engine. The dialog engine may manage the flow and state of a conversation with a bot server. In some examples, the dialog engine may determine a response to a message received by the bot server using a messaging application.
[0004] For example, the method may include receiving a HyperText Transfer Protocol (HTTP) post-call message by a bot server having a Uniform Resource Identifier (URI). In some examples, the HTTP post-call message may be directed to the URI from a messaging application server. In some examples, the HTTP post-call message may include content from a user. The content may include one or more words.
[0005] The method may further include identifying an intent of the content and identifying one or more required entities associated with the identified intent. The intent may be a purpose for which the user submitted the content to the server. The intent may define a conversation between the user and the server. In some examples, the intent may include multiple entities, each entity of the multiple entities being assigned a priority, the priority indicating whether the entity is a required entity. In response to identifying the intent of the content, the method may further include obtaining the session associated with the intent so that the server can access the information.
[0006] The method may further include identifying one required entity of the one or more required entities that is missing from the content. In some examples, a session associated with the intent may be completed when the server receives input for each of the one or more required entities from the user. In some examples, the method may further include storing a session associated with the intent. The session may include information received from the user.
[0007] The method may further include generating a response to the HTTP post-call message. In some examples, the response may request the missing required entity. The method may further include sending the response to the HTTP post-call message to the messaging application server.
[0008] The terms and expressions used are used as terms of description rather than limitation, and the use of such terms and expressions is not intended to exclude any equivalents of the features shown and described or portions thereof. It is recognized, however, that various modifications are possible within the scope of the claimed system and method. Thus, while the present system and method have been specifically disclosed by example and optional features, it should be understood that variations and modifications of the concepts disclosed herein may be adopted by those skilled in the art, and that such variations and modifications are considered to be within the scope of the system and method as defined by the appended claims.
[0009] This summary is not intended to identify key or essential features of the claimed subject matter, nor is it intended to be used alone to determine the scope of the claimed subject matter, which subject matter should be understood by reference to the entire specification of this patent, any and all drawings, and appropriate portions of each claim.
[0010] The above, along with other features and examples, are described in more detail below in the following specification, claims and accompanying drawings.
[0011] Illustrative examples are described in detail below with reference to the following figures: [Brief explanation of the drawings]
[0012] [Figure 1] 1 illustrates an example system that implements a bot server for communicating with users using a messaging application. [Figure 2] 1 illustrates an example system for identifying the intent of a message using a natural language processor. [Figure 3] 1 is a flowchart illustrating an example of a process for responding to a natural language communication. [Figure 4] 1 illustrates an example of a conversation between a user on a mobile device and a bot server using a messaging application. [Figure 5] 10 is a flow chart illustrating an example of a process for sending a response to request additional information from a user. [Figure 6] 1 illustrates an example of a system for managing event data. [Figure 7] 1 shows an example of a virtual database. [Figure 8] 1 is a flow chart illustrating an example of a process for publishing callable methods for accessing a virtual database. [Figure 9] 1 shows an example of a server. [Figure 10] 1 illustrates an example of a cloud infrastructure system. [Figure 11] 1 illustrates an example of a computer system. DETAILED DESCRIPTION OF THE INVENTION
[0013] Detailed Description In the following description, for purposes of explanation, specific details are set forth in order to provide a thorough understanding of examples of the present disclosure. However, it will be apparent that various examples may be practiced without these specific details. The drawings and description are not intended to be limiting.
[0014] The following description provides illustrative examples only and is not intended to limit the scope, applicability, or configuration of the present disclosure. Rather, the following description of illustrative examples will provide those skilled in the art with an enabling description for implementing the illustrative examples. It should be understood that various changes can be made in the function and arrangement of elements without departing from the spirit and scope of the present disclosure, as set forth in the appended claims.
[0015] In the following description, specific details are provided to thoroughly understand the examples. However, it will be understood by those skilled in the art that the examples can be practiced without these specific details. For example, circuits, systems, networks, processes, and other components may be shown as components in block diagram form so as not to obscure the examples in unnecessary detail. In other examples, well-known circuits, processes, algorithms, structures, and techniques may be shown without unnecessary detail to avoid obscuring the examples.
[0016] Also, it should be noted that the individual examples may be described as a process that is depicted as a flowchart, a flow diagram, a data flow diagram, a structure diagram, or a block diagram. While a flowchart may describe operations as a sequential process, many of the operations may be performed in parallel or simultaneously. The order of operations may also be rearranged. A process terminates when its operations are completed, but may have additional steps not included in the diagram. A process may correspond to a method, a function, a procedure, a subroutine, a subprogram, etc. When a process corresponds to a function, its termination may correspond to a return to the calling function or the main function of the function.
[0017] The terms "machine-readable storage medium" or "computer-readable storage medium" include, but are not limited to, portable or stationary storage devices, optical storage devices, and various other media capable of storing, containing, or carrying instructions and / or data. Machine-readable storage media or computer-readable storage media may also include non-transitory media that can store data and do not involve carrier waves and / or transitory electronic signals propagated wirelessly or via wired connections. Examples of non-transitory media include, but are not limited to, magnetic disks or tapes, optical storage media such as compact discs (CDs) or digital versatile discs (DVDs), flash memory, memory, or memory devices. A computer program product may include code and / or machine-executable instructions, which may represent a procedure, a function, a subprogram, a program, a routine, a subroutine, a module, a software package, a class, or any combination of instructions, data structures, or program statements. A code segment may be coupled to another code segment or a hardware circuit by passing and / or receiving information, data, arguments, parameters, or memory contents. Information, arguments, parameters, data, etc. may be passed, forwarded, or transmitted via any suitable means including memory sharing, message passing, token passing, network transmission, etc.
[0018] Furthermore, examples may be implemented in hardware, software, firmware, middleware, microcode, hardware description languages, or any combination thereof. When implemented in software, firmware, middleware, or microcode, the program code or code segments to perform the necessary tasks (e.g., a computer program product) may be stored on a machine-readable medium. The processor may then perform the necessary tasks.
[0019] The systems shown in some of the figures may be provided in a variety of configurations. In some examples, the system may be configured as a distributed system in which one or more components of the system are distributed across one or more networks in a cloud computing system.
[0020] A. Overview Examples herein relate to bot servers that can respond to natural language messages (e.g., questions or comments) via messaging applications that use the messages. In particular, examples may enable enterprises to define one or more bot servers that communicate with users and run the one or more bot servers at scale in the context of a multi-tenant cross-messaging platform.
[0021] In some examples, a bot server may be associated with a uniform resource identifier (URI). The URI may identify the bot server using a string. The URI may be used as a webhook for one or more messaging application servers. The format of the URI may include a uniform resource locator (URL) and a uniform resource name (URN). The bot server may be designed to receive a message (e.g., a HyperText Transfer Protocol (HTTP) post call message) from a messaging application server. The HTTP post call message may be directed to a URI from the messaging application server. In some examples, the message may be different from an HTTP post call message. For example, the bot server may receive a message from a short message server (SMS). While the description herein refers to a communication received by the bot server as a message, one skilled in the art will recognize that the message may be an HTTP post call message, an SMS message, or any other type of communication between two systems. Also, one skilled in the art will recognize that whenever a bot server sends a message from one component to another, an actual message may not be sent. Instead, information from the message may be transmitted.
[0022] In some examples, the bot server may handle user interactions without interaction by an administrator of the bot server. For example, a user may send one or more messages to the bot server to achieve a desired goal (sometimes referred to as an intent). The message may include content (e.g., text, emojis, audio, images, video, or other methods of conveying a message). The bot server may convert the content into a standard format (e.g., a REST call to an enterprise service with appropriate parameters) to generate a natural language response. The bot server may also prompt the user for other required parameters to request additional information. The bot server may also initiate communication with the user.
[0023] 1 illustrates an example of a system implementing a bot server 120 for communicating with a user using a messaging application. In some examples, the messaging application may be installed on an electronic device (e.g., a desktop computer, a laptop, a mobile device 110, etc.). While the description herein refers to a mobile device and a messaging application, any electronic device may be used and any messaging platform may be used (e.g., Facebook® Messenger, WHATSAPP® instant messaging software, WECHAT® mobile text and Those skilled in the art will recognize that messaging applications include voice messaging communication services, KIK® messenger, TELEGRAM® messenger, SKYPE MOBILE® messenger, and short message service (SMS). In other examples, the messaging application may be executed through a browser (e.g., GOOGLE CHROME® browser, MOZILLA® FIREFOX® browser, and Internet Explorer browser) installed on the mobile device 110. The messaging application may be Facebook® messenger, WHATSAPP® instant messaging software, WECHAT® mobile text and voice messaging communication service, KIK® messenger, TELEGRAM® messenger, SKYPE MOBILE® messenger, or other messaging application that provides a platform for users to communicate. The messaging application may be associated with a messaging application server 115. The mobile device 110 may be connected to the messaging application server 115 by a first network (e.g., the Internet). The messaging application server 115 may manage content sent and received via messaging applications across multiple mobile devices. The content may include text, emojis, audio, media (e.g., images, videos, links), or other methods of conveying a message. An example of a message received by the bot server 120 from Facebook® Messenger may be:
[0024]
number
[0025] The messaging application server 115 may also communicate with the bot server 120. Communication between the messaging application server 115 and the bot server 120 may be over a second network (e.g., the Internet). The first network and the second network may be the same network, or similar or entirely different networks. The messaging application server 115 may use the Internet to route content (e.g., a message or information from a message) from the mobile device 110 to the bot server 120. The destination of the content (e.g., an identification of the bot server 120) may be included in the content as a nominal destination.
[0026] The bot server 120 may receive content using a connector 130. The connector 130 may act as an interface between the messaging application server 115 and the bot server 120. In some examples, the connector 130 may normalize content from the messaging application server 115 so that the bot server 120 can analyze the content across various messaging application servers. Normalization may include formatting the content from each type of messaging application into a common format for processing. In some examples, the bot server 120 receives content from messaging applications (such as Facebook® Mail, etc.) The mobile device may include one or more connectors for each of the following messaging services: messaging service, WHATSAPP® instant messaging software, WECHAT® mobile text and voice messaging communication service, KIK® messenger, TELEGRAM® messenger, SKYPE MOBILE® messenger, short message service (SMS), etc.
[0027] Connector 130 may route the content to message receive queue 140. Message receive queue 140 may store the content in the order in which it was received. In some examples, connector 130 may be associated with one or more message receive queues.
[0028] The message receive queue 140 may send content to the message processor pipeline 150 as it becomes available. In other examples, the message processor pipeline 150 may pull content from the message receive queue. The message processor pipeline 150 may analyze the content using one or more of the innovations described herein. For example, the message processor pipeline 150 may include at least one or more of a sessionizer 152, a user resolver 154, a natural language processor 156, a dialog engine 158, or any combination thereof. Generally, the sessionizer 152 may create and manage sessions for users and bot servers. Generally, the user resolver 154 may determine sessions that can be combined for overlapping users who use multiple messaging applications. Generally, the natural language processor 156 may parse messages to determine the intent of the messages. The intent may include the purpose of the message. For example, the purpose of the message may be to order a pizza, order a computer, ask a question about delivery, etc. Generally, the dialog engine may orchestrate conversations with the bot server.
[0029] After the content is analyzed by message processor pipeline 150, the analyzed content may be sent to bot code 160. Bot code 160 may be written by a third party to determine an action to perform based on the analyzed content and the session. In some examples, the session may include the intent of the message. Bot code 160 may send the outbound content to message sending queue 170. Message sending queue 170 may send the outbound content to connector 130. Connector 130 may then send the outbound content to a messaging application server indicated by bot code 160, which may be the same as or different from messaging application server 115. Messaging application server 115 may then forward the outbound content to a messaging application on mobile device 110.
[0030] The bot server 120 may further communicate with one or more enterprise services (e.g., enterprise service 125), a storage server (shown in FIG. 6) for storing and possibly analyzing messages received by the bot server 120, or a content server for providing content to the bot server 120. The enterprise service 125 may communicate with at least one or more of the connectors 130, the bot code 160, or any combination thereof. The enterprise service 125 may communicate with the connectors 130 in a manner similar to the messaging application server 115. The enterprise service 125 may send content to the connectors 130 to be associated with one or more users. The enterprise service 125 may also send content to the connectors 130 to cause the bot server 120 to perform actions associated with the users. The bot code 160 communicates with the enterprise service 125. The bot code 160 may communicate with the enterprise service 125 to obtain information from the enterprise service 125 and / or the enterprise service 125 may take actions identified by the bot code 160 .
[0031] In some examples, bot server 120 may include one or more timers. The timer may cause bot code 160 to send content to a user using connector 130 and messaging application server 115 after a certain amount of time has elapsed. In some examples, the timer may send content to bot server 120 as well as to a user or enterprise service 125. For example, the timer may send a message to bot server 120 to be analyzed so that messages from users can be analyzed.
[0032] To illustrate the bot server 120, an example will now be described. A user may send a message to the bot server using a messaging application. The message may include a greeting. The bot server may identify that a new conversation with the user has begun. The bot server may identify one or more characteristics of the user. For example, the bot server may identify the user's name using a profile associated with the user on the messaging application server. Using the one or more characteristics, the bot server may respond to the user on the messaging application. The response may include a message to the user responding to the message received from the user. For example, the response may include a greeting using the user's name.
[0033] Depending on the company associated with the bot server, the bot server may evolve to achieve the goals of that company. For example, if the bot server is associated with a pizza delivery company, the bot server may send a message to the user asking if they want a pizza. A conversation between the bot server and the user may then continue, going back and forth, until the bot server completes the conversation or the user stops responding to the bot server.
[0034] In some examples, the bot server may initiate a conversation with the user. The conversation initiated by the server may be in response to a previous conversation with the user. For example, in a previous conversation, the user may have ordered a pizza. The bot server may then initiate a conversation when the pizza is ready. In some examples, the bot server may determine that the pizza is ready upon receiving an indication from a business associated with the bot server (e.g., an employee sending a message to the bot server that the pizza is ready). The conversation may include a message sent to the user indicating that the pizza is ready.
[0035] In some examples, the bot server may send a message to a user on a messaging application that is different from the messaging application that received the previous message. For example, the bot server may decide to send a message using Short Message Service (SMS) rather than Facebook Messenger. In such an implementation, the bot server may integrate multiple messaging applications.
[0036] In some examples, the bot server may initiate a conversation based on a timer. For example, the bot server may have a one-week timer for the user after a pizza is ordered. Upon expiration of the one-week timer, the bot server may initiate a new conversation with the user to order another pizza. The timer may be configured by the enterprise and implemented by the bot server.
[0037] In some examples, the bot server may maintain information between conversations. A bot server may be used to avoid having to ask certain questions each time a new conversation is initiated between the user and the bot server. For example, the bot server may store a user's previous pizza orders. In a new conversation, the bot server may send a message to the user asking if the user would like to make the same order as last time.
[0038] The bot server 120 may allow components to be scaled when a slowdown is identified. For example, if the bot server 120 identifies that a number of messages arriving at the connector 130 exceeds a threshold, one or more additional connectors may be added to the connector 130. Also, the number of message receiving queues, message processor pipelines, instances of the bot code, and message sending queues may be increased depending on where a slowdown is identified. In such an implementation, additional components may be added without the need to add other additional components. For example, a connector may be added without the need to add additional instances of the bot code. In some implementations, one or more components or portions of components of the bot server 120 may run on a virtual machine. By running on a virtual machine, additional virtual machines may be launched at will.
[0039] In some examples, the bot server 120 may store information associated with a user in a cache. The cache may write to a database to store information after an outbound message is sent from the connector 130 to a messaging application server. In other examples, the cache may write data at various times (e.g., after a particular component, after each component, after a set amount of time, or other metric for determining when to write to the database).
[0040] B. Natural Language Processor As described above, the message processor pipeline may include a natural language processor. The natural language processor may determine the intent of a message being processed by the natural language processor. In some examples, the intent may be the goal, reason, or purpose of a message sent by a user. For example, a user may send a message to a pizza application with the intent to (1) order a pizza, (2) cancel an order, or (3) check the status of an order.
[0041] In some examples, the intent of a message may be determined using a vector. A vector may be a distributed representation of content (e.g., text, speech, media, etc.). A vector may include multiple elements, each of which characterizes text according to a model (e.g., a language model). A language model may be a function that captures salient statistical features of the distribution of a sequence of words in a natural language or an algorithm for learning such a function. In some examples, the elements of a vector may represent semantic / syntactic information selected and determined by the language model. In some examples, a vector may be in a continuous vector space defined by the language model, in which semantically similar text can be mapped to nearby points. Those skilled in the art will recognize that there are many ways to train a language model to generate vectors of text. For example, a language model may be trained using a predictive method (e.g., a neural probabilistic language model). See Distributed Representations of Sentences and Documents (Le & Mikolov, ICML 2014), which is incorporated herein by reference in its entirety.
[0042] In some examples, a first vector may be generated for a message being processed by a natural language processor. The message may include content (e.g., text, audio, media, etc.). The first vector may be compared to one or more second vectors. In some examples, both the first vector and the one or more second vectors may be based on language. The second vectors may be generated based on a model. Each of the second vectors may be associated with an intent, which may be defined by one or more examples. The examples may be content identified as being associated with the intent. In some examples, a user may identify that the examples are associated with the intent. In other examples, the intent may be determined using a prediction method to train a language model, as described above. In such examples, once the intent is determined using the prediction method, the user may associate the determined intent with bot code so that the bot server understands how to converse about the determined intent.
[0043] When comparing vectors, a first vector may be determined to be associated with an intent if the distance (e.g., cosine distance or Euclidean distance) between the first vector and a second vector (associated with the intent) is less than a predetermined threshold. Cosine similarity between two vectors may be a measure that calculates the cosine of the angle between the two vectors.
[0044] In some examples, one or more entities may be defined for one or more intents. In such examples, the one or more entities may be defined by a user. In other examples, the one or more entities may be defined by a language model. For example, if a particular expression (e.g., one or more words) is frequently used in a conversation, the particular expression may be identified as an entity. In another example, if a particular content is frequently used to reflect an intent, the particular content may be identified as an entity.
[0045] If the intent includes one or more entities, the natural language processor 156 may further identify the entities in the message. In such an example, the entities may be used in addition to the comparison described above. For example, after a comparison is made between the intents, two or more intents may be similar. In such an example, the intent of the two or more intents that includes the most entities identified in the message may be selected as the intent of the message. In some examples, certain entities are identified as being more important than other entities. In such an example, the intent selection may take into account the weight assigned to each entity when determining the intent of the message.
[0046] In some examples, the natural language processor 156 may import and / or export knowledge packs. A knowledge pack may include one or more intents for one or more industries, one or more domains, or other logical groupings of one or more intents. An intent of the one or more intents may include one or more examples, one or more entities, and / or vectors for the intent. In some examples, a knowledge pack may be updated based on new messages received. In some examples, knowledge packs may be maintained across bot servers, and updates to a knowledge pack from one bot server affect the knowledge packs of other bot servers.
[0047] 2 illustrates an example of a system for identifying the intent of a message using a natural language processor. A message may be received from a user. The message may include one or more words. In some examples, the message may be stored as a message object 210. However, one skilled in the art will recognize that a message may be stored in other manners or other data structures. For example, since one or more words are not required in natural language processing, the message object 210 may not include one or more words.
[0048] A message object 210 may include a message vector 212 and a list of entities (e.g., message entities 214) contained in the message. A message vector 212 may be generated for a message using one or more word and language models as described above. The message vector 212 may be a distributed representation of one or more words.
[0049] As described above, an intent object (e.g., first intent object 220, second intent object 230, and third intent object 240) may be associated with an intent. The intent object may include an intent vector (e.g., first intent vector 222, second intent vector 232, and third intent vector 242). The intent vector may be a distributed representation of one or more words identified as associated with the intent associated with the intent vector. The intent object may further include a list of one or more entities (e.g., intent entities) associated with the intent. Each of the intent entities may be compared to one or more words of the message to populate the message entities 214.
[0050] In some examples, the message vector 212 may be compared to each of the first intention object 220, the second intention object 230, and the third intention object 240. In such examples, the comparison may be performed by calculating the distance (e.g., cosine distance or Euclidean distance) between the vectors. If the calculated distance for the intention object is below a threshold, the intention associated with the intention object may be determined to be associated with the message.
[0051] In some examples, if two or more calculated distances are below a threshold, the intent associated with the lowest calculated distance for the intent object may be determined to be associated with the message. In other examples, if two or more calculated distances are below a threshold, the message entity 214 may be used. For example, the intent object with the most entities in the message entity 214 may be determined to be the most likely intent. In such examples, the intent associated with the intent object with the most entities may be determined to be associated with the message. In some examples, the message object 210 may not include the message entity 214. In such examples, an entity in a message may be identified if two or more calculated distances are below a threshold.
[0052] 3 is a flow chart illustrating an example of a process 300 for responding to natural language communications. In some aspects, process 300 may be performed by a bot server that includes a natural language processor. While an example of a bot server is shown, it should be recognized that other devices may be included in process 300.
[0053] Process 300 is illustrated as a logical flow diagram, the operations of which represent a sequence of actions that can be implemented in hardware, computer instructions, or a combination thereof. In the context of computer instructions, the operations represent computer-executable instructions stored on one or more computer-readable storage media that, when executed by one or more processors, perform the described actions. Generally, computer-executable instructions include routines, programs, objects, components, data structures, etc. that perform particular functions or implement particular data types. The order in which the operations are described is not intended to be construed as limiting, and several described operations may be combined in any order and / or in parallel to implement a process.
[0054] Process 300 may also be performed under the control of one or more computer systems comprised of executable instructions, code (e.g., executable instructions, one or more computer programs, or one or more applications) collectively executing on one or more processors. The code may be implemented as a program (e.g., a program application), by hardware, or by a combination thereof. As mentioned above, the code may be stored on a machine-readable storage medium in the form of a computer program comprising a plurality of instructions executable by one or more processors. The machine-readable storage medium may be non-transitory.
[0055] At step 310, process 300 includes a step in which a bot server receiving a HyperText Transfer Protocol (HTTP) post call message having a uniform resource identifier (URI). The bot server may be associated with an enterprise. In some examples, the HTTP post call message may be directed to the URI from a messaging application server. In such examples, the HTTP post call message may include content from a user. In other examples, the content may be received by the bot server in a message other than an HTTP post call message (e.g., a packet sent from a remote server). In some examples, the content may include one or more words.
[0056] At step 320, process 300 further includes determining a first vector for the content. In some examples, the first vector may be a distributed representation of the content. In such examples, the first vector may include multiple first elements, each of which characterizes the content according to a language model. In some examples, the elements of the first elements may not be mutually exclusive.
[0057] At step 330, process 300 further includes identifying second vectors for the enterprise associated with the bot server. In some examples, one of the second vectors may be associated with an intent. In such examples, the intent may be defined by one or more examples, each example being one or more words indicated as being associated with the intent. In some examples, the second vector may be a distributed representation of the one or more examples. In such examples, the second vector may include multiple second elements, each second element of the multiple second elements characterizing one or more examples according to a language model. In some examples, the elements of the second elements may not be mutually exclusive.
[0058] At step 340, process 300 further includes comparing the first vector with each of the second vectors. In some examples, the comparing may include calculating a distance (e.g., a cosine distance or a Euclidean distance) between the first vector and each of the second vectors. In some examples, process 300 may further include identifying entities in the content. In such examples, the entities may be predefined to be associated with an intent. At step 350, process 300 further includes determining the intent of the content based on the comparison. In some examples, the determining may be further based on the entities.
[0059] At step 360, process 300 further includes sending a response to the HTTP post call message based on the determined content intent. For example, the bot server may generate the response based on user code included in the intent object. The user code may define how to respond to a message associated with the intent associated with the intent object.
[0060] In some examples, process 300 may further include receiving a package. In such examples, the package may define one or more intents. In some examples, an intent of the one or more intents may include one or more entities. In some examples, the package may be associated with a domain, and the domain may include: Contains one or more intentions.
[0061] C. Dialogue Engine As described above, the message processor pipeline may include a dialog engine. The dialog engine may orchestrate conversations with a bot server. In some examples, the dialog engine may be a declarative way of building a system for responding to messages.
[0062] The dialog engine may receive an identification of the intent from the natural language processor. Using the identification of the intent, the dialog engine may access an intent object associated with the intent. The intent object may include one or more entities associated with the intent. In some examples, each entity of the one or more entities may be assigned a priority. In such examples, at least some of the one or more entities may be required entities. A required entity may be an entity that the dialog engine requires before the dialog engine can complete a conversation with the user.
[0063] For example, a pizza application may require the size and type of pizza. In such an example, the dialog engine may identify whether a current message received by the user in the current conversation includes the size and type of pizza. If the current message received by the user does not include the size and type of pizza, the dialog engine may determine whether a previous message includes at least one or more of the size and type of pizza. If the dialog engine determines that the size and / or type of pizza has not been received, the dialog engine may generate a response to the current message requesting the missing required entity. In some examples, if there are multiple missing required entities, the dialog engine may generate a response for a first one of the missing required entities, and then later generate a message for a second one of the missing required entities. The process may continue until the dialog engine receives all required entities.
[0064] In some examples, the dialog engine may identify portions of a conversation with one or more users that result in the end of the conversation. The dialog engine may then improve the conversation for future users based on the identified portions of the conversation that indicate turning points in the conversation. In some examples, the dialog engine may identify a conversation that appears to be about to end (e.g., a negative sentiment is determined in the conversation). In such examples, the dialog system may change the flow of the conversation, possibly redirecting the conversation to a different system or even a human.
[0065] 4 illustrates an example of a conversation between a user on a mobile device 410 and a bot server using a messaging application. The messages on the left (e.g., messages 420, 440, and 460) may be from the user, and the messages on the right (e.g., messages 430 and 450) may be from the bot server. For example, a user may use a messaging application installed on the mobile device 410 to send a first message 420 to a messaging application system. The first message 420 may include the words "pizza please." The first message may be sent to the messaging application server and then to the bot server for a response.
[0066] As mentioned above, the first message 420 may be sent to a connector depending on the mechanism of the bot server. The first message 420 may arrive at a load balancer or a load balancer. The first message 420 may be queued in a message receive queue and ultimately sent to a messenger processor pipeline. In the messenger processor pipeline, the first message 420 may be interpreted by a natural language processor. The natural language processor may identify the intent of the first message 420. For example, the natural language processor may identify that the first message 420 is attempting to order a pizza. The intent may be sent to a dialog engine. The dialog engine may identify one or more required entities for the intent. For example, a required entity may be a type of pizza. The dialog engine may determine whether the message (or a previous message) indicated a type of pizza for the user. If the dialog engine determines that the type of pizza was not specified, the dialog engine may send an indication that the type of pizza is missing to the bot code. In some examples, the first message 420 may also be sent to the bot code to determine a response.
[0067] Because the dialog engine lacks the type of pizza, the bot code may generate a response to request the type of pizza. The response may include the words, "What kind of pizza would you like?" in a second message 430. The second message 430 may be sent from the bot code to a message sending queue and ultimately to a connector and back to a messaging application installed on the mobile device 410 using a messaging application server. The messaging application installed on the mobile device 410 may receive the second message 430 and display the second message 430 as shown in FIG. 4.
[0068] After receiving the second message 430, the user may send a third message 440 to the bot server using a messaging application on the mobile device 410. The third message 440 may include the words "pizza please." The bot server may determine that the third message 440 is a new session based on the content of the third message and the context of the third message. For example, time may have elapsed between the time the user received the second message 430 and the time the user sent the third message 440.
[0069] The natural language processor may identify the intent of the third message 440. For example, the natural language processor may identify that the third message 440 is an attempt to order a pizza. The intent may be sent to the dialog engine. The dialog engine may identify one or more required entities for the intent. For example, a required entity may be a type of pizza. The dialog engine may determine whether the message (or a previous message) indicated a type of pizza for the user in the current session. If the dialog engine determines that the type of pizza was not specified, it may send an indication that the type of pizza is missing to the bot code. In some examples, the third message 440 may also be sent to the bot code to determine a response. The bot server may respond to the third message 440 similarly to the first message 420 (e.g., by sending a fourth message 450 asking what kind of pizza would you like).
[0070] The user may respond to the fourth message 450 with a fifth message 460 containing the type of pizza the user desires. The bot server may receive the fifth message 460 as described above. However, rather than creating a new session for the fifth message 460, the bot server may determine that the fifth message 460 is part of a conversation that includes the third message 440 and the fourth message 450. By grouping these three messages, the bot server may create a bot code for the bot server. The bot server may determine how to respond to the fifth message 460 by analyzing the third, fourth, and fifth messages together. In some examples, the intent may include one required entity (e.g., type of pizza). In such examples, after the type of pizza is indicated, the bot server may end the conversation with the user.
[0071] 5 is a flow chart illustrating an example of a process for sending a response to request additional information from a user. In some aspects, process 500 may be performed by a bot server. While an example of a bot server is shown, it should be appreciated that other devices may be included in process 500.
[0072] Process 500 is illustrated as a logical flow diagram, the operations of which represent a sequence of actions that can be implemented in hardware, computer instructions, or a combination thereof. In the context of computer instructions, the operations represent computer-executable instructions stored on one or more computer-readable storage media that, when executed by one or more processors, perform the described actions. Generally, computer-executable instructions include routines, programs, objects, components, data structures, etc. that perform particular functions or implement particular data types. The order in which the operations are described is not intended to be construed as limiting, and several described operations may be combined in any order and / or in parallel to implement a process.
[0073] Process 500 may also be executed under the control of one or more computer systems configured with executable instructions, and may be implemented as code (e.g., executable instructions, one or more computer programs, or one or more applications) collectively executed on one or more processors, by hardware, or by a combination thereof. As noted above, the code may be stored on a machine-readable storage medium, for example, in the form of a computer program comprising a plurality of instructions executable by one or more processors. The machine-readable storage medium may be non-transitory.
[0074] At step 510, process 500 includes a step in which a bot server associated with a uniform resource identifier (URI) receives a HyperText Transfer Protocol (HTTP) post-call message. In some examples, the HTTP post-call message may be directed to the URI from a messaging application server. In such examples, the HTTP post-call message may include content from a user (e.g., text, emojis, audio, images, video, or other methods of conveying a message). In other examples, the content may be received by the bot server in a message other than an HTTP post-call message (e.g., a packet sent from a remote server). In some examples, the content may include multiple words.
[0075] At step 520, process 500 further includes identifying the intent of the content. The intent of the content may be identified as described above. At step 530, process 500 further includes identifying one or more required entities associated with the identified intent. In some examples, the identified intent may be associated with an intent object. The intent object may include one or more entities. Each of the one or more entities may include a priority. The priority may indicate one or more required entities of the one or more entities. At step 540, process 500 further includes identifying a required entity of the one or more required entities that is missing from the content.
[0076] In step 550, the process 500 performs a response to the HTTP post call message. In some examples, the response may request any required entities that are missing. In step 560, process 500 further includes sending a response to the HTTP post call message to a messaging application server.
[0077] D. Event Data 1. A system for managing event data Event data associated with the web page or mobile application may be transmitted to and stored on a storage server. The event data may represent one or more actions performed in connection with the web page and / or mobile application. For example, the event data may include messages received by the bot server as described above. The event data may also include responses to messages. In some examples, the event data may be raw data that has not been processed for use. A queue on the storage server may receive the event data. The queue may be similar to that described above with respect to the message receiving queue. In some examples, the event data may be received by the queue in a streaming manner as events associated with the event data occur.
[0078] A first execution process (e.g., a Spark executor) may pull the event data from the queue and store it in a local database. The local database may be included in a storage server. The local database may have a schema that is partitioned by time period. For example, the local database may be partitioned by day. The partitioning by day may mean that incoming event data can be placed into partitions (or locations (e.g., files) within the local database). The partitions may be deleted daily so that the local database only maintains a certain amount of data.
[0079] The first execution process may perform one or more enhancement operations on the event data before storing it in the local database. Enhancement of the event data may include enhancing, refining, or otherwise improving the event data. For example, enhancement may correct spelling or typographical errors.
[0080] The first execution process may return the enriched data to the queue. In another example, the first execution process may send the enriched data to a second queue, which may be similar to the first queue. The second execution process may pull the enriched data from the queue (or the second queue) and store it in a remote file system. The remote file system may be separate from the storage server.
[0081] The remote file system may write the enriched data to a database (e.g., one or more hive tables). The one or more hive tables may be embodied as one or more external tables in the remote file system. The one or more external tables may be combined with the local database to create a virtual database that contains all event data received by the storage server.
[0082] When the virtual database is queried, one or more external tables and / or local databases may be accessed to receive the event data. In some examples, the virtual database may determine where to query. In such examples, the virtual database may split the query into two or more queries if the requested data is contained in separate databases. In some examples, the virtual database may notify a user querying the virtual database that one or more external tables and / or local databases are available. In some examples, a virtual database may be defined within a local database.
[0083] 6 illustrates an example system for managing event data. The system may include a storage server 630 and a remote file system 680. The storage server 630 may include a queue 640. The queue 640 may receive event data from one or more of a mobile application 610 and / or a web page 620. It should be appreciated that the event data may be from other sources.
[0084] Storage server 630 may further include a first execution process 650. The first execution process 650 may pull event data from queue 640 and store it in local database 660. In some examples, the first execution process 650 may enhance the event data pulled from queue 640 before the event data is stored in local database 660. In such examples, the enhanced data may be stored in local database 660. In some examples, after enhancing the event data, first execution process 650 may send the enhanced data to queue 640. In other examples, after enhancing the event data, first execution process 650 may send the enhanced data to a second queue (not shown).
[0085] The local database 660 may include one or more partitions. Each partition may be used to store data according to a characteristic. For example, a first partition may store event data from a first user. In such an example, a second partition may store event data from a second user. The local database 660 may also be divided by time period. In such an example, the local database 660 may delete the event data contained in the local database 660 based on a schedule. For example, the local database 660 may delete the event data daily.
[0086] In some examples, storage server 630 may further include a second execution process 670. The second execution process 670 may pull the enriched event data (or simply the event data) from queue 640 (or the second queue) and store it in a remote file system 680.
[0087] The remote file system 680 may be separate from the storage server 630. The remote file system 680 may include a remote database 690 for storing event data.
[0088] 7 illustrates an example of a virtual database 762. The virtual database 762 may serve as an interface for a local database 760 (similar to local database 660) and a remote database (similar to remote database 690). The virtual database 762 may expose an application program interface to receive queries (e.g., query 764) from a user to access the virtual database 762. The query 764 may be invoked as if the data were located on the virtual database 762. In some examples, the virtual database 762 may identify the location of the data requested by the query 764 and create one or more queries for the data from the local database 760 and / or the remote database 790. In such examples, the virtual database 762 may receive data from the local database 760 and / or the remote database 790 and respond to the query 764 with that data.
[0089] 2. Materialized Views In some examples, the storage server may be included in a Customer Insights & Engagement Cloud Service (CIECS). The CIECS may analyze the information stored in the storage server. In some examples, the CIECS may perform behavioral analysis for the source (e.g., a web page and / or a mobile application). In such examples, the behavioral analysis may analyze interactions with the source, including engagement (e.g., user activity level), cohort analysis (e.g., user retention), and churn prediction (e.g., identifying users at risk of not returning). In some examples, the CIECS may perform A / B testing (e.g., testing different layouts with different users), user / session analysis (e.g., identifying information associated with a session for a user), and predictive analysis (e.g., identifying inferences that may be associated with all data based on a sample).
[0090] In some examples, the analysis performed on the event data may be calculated using a query at a fixed time. In such examples, the query itself may not change because the query is requesting data from a fixed time before the current time. However, the data returned from the query may change. For example, a query for data from an hour ago may return different data depending on when the query is run.
[0091] To optimize queries over time, a materialized view may be created in front of a database (e.g., in front of local database 660 shown in FIG. 6 ). The materialized view may include one or more summary calculations that represent the event data received by the storage server. In such an example, the summary calculations may be updated incrementally as new event data is received and added to the database, eliminating the need to access previous event data. Alternatively, one or more summary values used for the summary calculations, or the summary calculations themselves, may be stored and incrementally updated as new event data is received. In such an example, event data is not stored for the summary calculations.
[0092] For example, a summary calculation may be the number of new daily users. Rather than having to query event data from the current day, a summary value indicating the number of new daily users may be stored by the materialized view. The summary value may be incremented as new event data indicates new users.
[0093] In some examples, one or more summary calculations in a materialized view may be updated according to a schedule. For example, rather than updating the summary calculations when new event data is received, the summary calculations may be updated hourly. One example of a summary calculation that can benefit from scheduled updates is funnel recognition. A funnel may occur when multiple required actions occur in sequence, with each action occurring within a certain time period from the previous action. For example, a funnel may require a user to select an item and purchase the item. In such an example, the funnel would be identified only if both actions occurred together, within a particular time period. In such an example, a query to determine whether a funnel has occurred may include a search for multiple events by a single user, and the events would need to be accessed as a collection of events rather than as individual events.
[0094] 8 is a flow chart illustrating an example of a process for publishing a callable method for accessing a virtual database. In some aspects, the process 800 includes: It may be performed by a storage server. Although an example of a storage server is shown, it should be appreciated that other devices may be included in process 800.
[0095] Process 800 is illustrated as a logical flow diagram, the operations of which represent a sequence of actions that can be implemented in hardware, computer instructions, or a combination thereof. In the context of computer instructions, the operations represent computer-executable instructions stored on one or more computer-readable storage media that, when executed by one or more processors, perform the described actions. Generally, computer-executable instructions include routines, programs, objects, components, data structures, etc. that perform particular functions or implement particular data types. The order in which the operations are described is not intended to be construed as limiting, and several described operations may be combined in any order and / or in parallel to implement a process.
[0096] Process 800 may also be executed under the control of one or more computer systems configured with executable instructions, and may be implemented as code (e.g., executable instructions, one or more computer programs, or one or more applications) collectively executed on one or more processors, by hardware, or by a combination thereof. As noted above, the code may be stored on a machine-readable storage medium, for example, in the form of a computer program comprising a plurality of instructions executable by one or more processors. The machine-readable storage medium may be non-transitory.
[0097] At step 810, process 800 includes a storage server receiving event data associated with a source. In some examples, the source may be a mobile application or a web page. In such examples, the event data may represent one or more actions associated with the source.
[0098] In step 820, process 800 further includes storing the event data at a location in a local database as the event data is received by the storage server. In some examples, the storage server may include a local database. In such examples, the data at the location is deleted according to a first schedule. An example of the first schedule may be daily.
[0099] At step 830, process 800 further includes storing the event data in a remote database according to a second schedule. In some examples, the remote database may be separate from the storage server. In such examples, the first schedule may be less frequent than the second schedule. An example of the second schedule may be hourly. In some examples, a remote file system may include the remote database.
[0100] At step 840, process 800 further includes exposing a first callable method to a client application for querying the virtual database. In some examples, a query for event data using the first callable method may retrieve the event data from the local database when the event data is in the local database. In such examples, the query may retrieve the event data from the remote database after the event data has been deleted from the local database.
[0101] In step 850, the process 800 further includes calculating a summary calculation based on the event data. In some examples, the summary calculation is calculated based on the event data. The summary calculation may be updated incrementally as it is received by the storage server. In such an example, the summary calculation may be updated incrementally without having to query a database for event data. In other examples, the summary calculation may be updated incrementally according to a third schedule. In one example, the third schedule may be hourly. The summary calculation may be based on data currently stored in the local database and data currently stored in the remote database. The summary calculation may be based on data from a certain time before the current time.
[0102] 9 illustrates an example of a server 912. The server 912 includes components 918, 920, and 922. The server 912 is in communication with reference numbers 902, 904, 906, and 908. The server 912 is also in communication with a data repository 914 and a data repository 916. 10 illustrates an example of a cloud infrastructure system 1002. The cloud infrastructure system includes a user interface subsystem 1012, an order management subsystem 1020, an order provisioning subsystem 1024, identity management 1028, infrastructure resources 1030, and internal shared services 1032. The user interface subsystem 1012 includes a web UI 1014, an online store UI 1016, and other UIs 1018. A client device 1004 sends a service request (SR) 1034 to the cloud infrastructure system 1002 over a network 1010. The cloud infrastructure system 1002 sends a response 1044 to the client device 1004. The client device 1006 sends the SR 1034 to the cloud infrastructure system 1002 over the network 1010. The cloud infrastructure system 1002 sends the response 1044 to the client device 1006. The client device 1008 sends the SR 1034 to the cloud infrastructure system 1002 over the network 1010. The cloud infrastructure system 1002 sends a response 1044 to the client device 1008. 11 illustrates an example of a computer system 1100. The computer system 1100 includes a processing subsystem 1104, a processing acceleration unit 1106, an I / O subsystem 1108, a storage subsystem 1118, a communication subsystem 1124, a data feed 1126, an event stream 1128, and event updates 1130. The processing subsystem 1104 includes a processing unit 1132 and a processing unit 1134. The storage subsystem 1118 includes a system memory 1110, a computer-readable storage medium reader 1120, and a computer-readable storage medium 1122. The system memory 1110 includes an application program 1112, program data 1114, and an operating system 1116. The communication subsystem 1124 communicates with the outside world of the computer system 1100. The communication subsystem 1124 also communicates with a data feed 1126, an event stream 1128, and event updates 1130. The communication subsystem 1124 also communicates with the processing subsystem 1104, the processing acceleration unit 1106, the I / O subsystem 1108, and the storage subsystem 1118. The processing subsystem 1104, the processing acceleration unit 1106, the I / O subsystem 1108, and the storage subsystem 1118 and the communication subsystem 1124 each communicate with each other. While the foregoing specification describes aspects of the disclosure with reference to specific examples thereof, those skilled in the art will recognize that the disclosure is not limited thereto. Various features and aspects of the above examples may be used individually or together. Moreover, the examples may be utilized in a number of environments and applications beyond those described herein without departing from the broader spirit and scope of the specification. Accordingly, the specification and drawings are to be regarded in an illustrative rather than a restrictive sense.
[0103] For purposes of explanation, the methods have been described in a particular order. It should be understood that in alternative cases, the methods may be performed in an order different from that described. It should also be understood that the methods described above may be performed by hardware components or embodied in a series of machine-executable instructions that may be used to cause a machine, such as a general-purpose or special-purpose processor or logic circuit programmed with the instructions, to perform the method. These machine-executable instructions may be stored on one or more machine-readable media, such as a CD-ROM or other type of optical disk, floppy disk, ROM, RAM, EPROM, EEPROM, magnetic or optical card, flash memory, or other type of machine-readable medium suitable for storing electronic instructions. Alternatively, the methods may be performed by a combination of hardware and software.
[0104] Although components are described as being configured to perform particular operations, such configuration may be achieved, for example, by designing electronic circuitry or other hardware to perform the operations, by programming programmable electronic circuitry (e.g., a microprocessor or other suitable electronic circuitry) to perform the operations, or by any combination thereof.
[0105] While illustrative examples of the present application have been described in detail herein, it is understood that the inventive concepts may be variously embodied and utilized in other ways, and the appended claims are intended to be construed to include such modifications except insofar as limited by the prior art.
Claims
1. 1. A method for responding to a natural language communication, comprising: a server associated with a uniform resource identifier (URI) receiving a HyperText Transfer Protocol (HTTP) post-call message, the HTTP post-call message directed to the URI from a messaging application server, the HTTP post-call message including content from a user; the server configured to conduct a conversation with the user via the messaging application server including the content, and group a plurality of messages included in the conversation, the plurality of messages including a plurality of messages from the user; the method further comprising: identifying intent of the content, the intent being represented as a distributed representation of the content, the method further comprising: identifying one or more required entities associated with the identified intent; identifying a required entity of the one or more required entities that is missing from the content; generating a response to the HTTP Post-Call message, the response being determined based on an analysis of the plurality of grouped messages and requesting the missing required entity, the method further comprising: The method comprising sending the response to the HTTP post-call message to the messaging application server.
2. The method of claim 1 , wherein the content comprises one or more words.
3. The method of claim 1 or 2, wherein the intent is the purpose for which the user submitted the content to the server, and the intent defines a conversation between the user and the server.
4. The method of any of claims 1 to 3, wherein a session associated with the intent is completed when the server receives input for each of the one or more required entities from the user.
5. The method of any of claims 1 to 4, further comprising storing a session associated with said intention, said session including information received from said user.
6. The method of claim 5 , further comprising, in response to identifying the intent of the content, obtaining the session associated with the intent so that the server can access the information.
7. 7. The method of claim 1, wherein the intent includes a plurality of entities, each entity of the plurality of entities being assigned a priority, the priority indicating whether the entity is a required entity or not.
8. 1. A system comprising: one or more processors; and a non-transitory computer-readable medium containing instructions that, when executed by the one or more processors, cause the one or more processors to perform operations, including: receiving a HyperText Transfer Protocol (HTTP) post-call message, the system being associated with a Uniform Resource Identifier (URI), the HTTP post-call message being directed to the URI from a messaging application server, the HTTP post-call message including content from a user, the system being configured to engage in a conversation with the user via the messaging application server including the content, and grouping and analyzing a plurality of messages included in the conversation, the plurality of messages including a plurality of messages from the user, the operations further comprising: identifying an intent of the content, the intent being represented as a distributed representation of the content, and the action further comprising: identifying one or more required entities associated with the identified intent; identifying a required entity of the one or more required entities that is missing from the content; generating a response to the HTTP Post-Call message, the response being determined based on an analysis of the plurality of grouped messages and requesting the missing required entity, the operations further comprising: sending the response to the HTTP post-call message to the messaging application server.
9. The system of claim 8 , wherein the content includes one or more words.
10. 10. The system of claim 8 or 9, wherein the intent is the purpose for which the user submitted the content to the system, the intent defining a conversation between the user and the system.
11. The system of any of claims 8 to 10, wherein a session associated with the intent is completed when the system receives input for each of the one or more required entities from the user.
12. The non-transitory computer-readable medium further includes instructions that, when executed by the one or more processors, cause the one or more processors to perform operations, including: storing a session associated with the intent, the session including information received from the user, the operations further comprising:
12. The system of claim 8, further comprising, in response to identifying the intent of the content, obtaining the session associated with the intent so that the system can access the information.
13. 13. The system of claim 8, wherein the intent includes a plurality of entities, each entity of the plurality of entities being assigned a priority, the priority indicating whether the entity is a required entity or not.
14. A computer program for causing a computer to execute the method according to any one of claims 1 to 7.
Citation Information
Patent Citations
Automatic reception device
JP1995234694A
Voice interaction system
JP2002024212A
Robot device and interactive method for robot device
JP2004090109A
Device, method, and program for supporting interaction between user
JP2008234427A
Chatbot system
JP2009003533A