Techniques for interactive processing using context data

By utilizing context-based interaction techniques to identify and utilize historical context levels within dialogue systems, the system effectively addresses the limitations of current dialogue systems in disambiguating user requests, leading to improved efficiency and accuracy in interaction processing.

JP7653420B2Active Publication Date: 2025-03-28ORACLE INT CORP
View PDF 4 Cites 0 Cited by

Patent Information

Application Number
JP2022516181
Authority / Receiving Office
JP · JP
Patent Type
Patents
Current Assignee / Owner
Priority Date
2020-08-26
Filing Date
2020-08-27
Publication Date
2025-03-28
Estimated Expiration
2040-08-27

AI Technical Summary

Technical Problem

Current dialogue systems have limited capabilities to utilize context, relying heavily on recent inputs and struggling to fully disambiguate user requests due to lack of access to relevant historical context information.

Method used

The system employs a context-based interaction approach that processes oral utterances to identify words for disambiguation, determines the appropriate context level from predefined levels, and uses a database to identify values associated with those context levels, thereby removing ambiguity and generating accurate responses.

Benefits of technology

This approach enhances the efficiency and accuracy of interaction processing by leveraging historical interaction data across different context levels, reducing the need for additional user inputs and minimizing computational resources.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 0007653420000001
    Figure 0007653420000001
  • Figure 0007653420000002
    Figure 0007653420000002
  • Figure 0007653420000003
    Figure 0007653420000003
Patent Text Reader

Abstract

Techniques are described for improving the efficiency and accuracy of dialogue processing tasks using data stored about a user associated with a context level. A dialogue system stores historical dialogue data associated with a plurality of configured context levels. The dialogue system receives an utterance and identifies words for disambiguation from the utterance. The dialogue system identifies relevant historical data stored in a database based on the determined context level. The historical data may be used to perform tasks such as resolving ambiguities based on user preferences, disambiguating named entities based on previous interactions, and identifying previously generated answers to queries. The dialogue system can efficiently identify relevant information based on the context levels and provide a response using the identified information.
Need to check novelty before this filing date? Find Prior Art

Description

[Technical field]

[0001] CROSS-REFERENCE TO RELATED APPLICATIONS This application claims the benefit of and priority under 35 U.S.C. §119(e) to U.S. Application No. 62 / 899,649, filed September 12, 2019, and U.S. Application No. 17 / 003,250, filed August 26, 2020, entitled “CONTEXT-BASED DIALOG TECHNIQUES,” the contents of which are incorporated herein by reference in their entirety for all purposes.

[0002] Technical Field The present disclosure relates generally to dialogue systems. More specifically, but not by way of limitation, the present disclosure describes techniques for using a level of historical context to influence dialogue tasks, such as named entity concatenation and result ordering. [Background technology]

[0003] background Currently, an increasing number of devices allow users to directly interact with the device using voice or oral speech. For example, a user can speak to such a device in natural language, where the user may ask a question or make an utterance requesting some action to be performed. In response, the device performs the requested action or responds to the user's question using a voice output. The popularity of such voice-based systems is growing at an astronomical rate, since interacting directly using voice is a more natural and intuitive way for humans to communicate with their surroundings. Summary of the Invention [Problem to be solved by the invention]

[0004] Current dialogue systems have limited ability to leverage context. Systems exist that can discern contextual information based on recent input. For example, some existing systems can resolve pronouns by identifying the person named in the last sentence the system received. However, traditional systems do not fully leverage contextual information. [Means for solving the problem]

[0005] Quick Overview The present disclosure generally relates to dialogue systems. More particularly, techniques are described for using a level of historical context to influence dialogue tasks (such as named entity concatenation and result ordering). Various embodiments are described herein, including methods, systems, non-transitory computer-readable storage media storing programs, codes or instructions executable by one or more processors, and the like.

[0006] In a particular embodiment, a dialogue system receives a verbal utterance from a user, the dialogue system processes the verbal utterance to identify a word for disambiguation, the dialogue system determines a context level for the word for disambiguation from among a plurality of predefined context levels, the dialogue system identifies a value for the word based on the determined context level using a database, the database storing a plurality of values ​​for the user in association with the context level, and the dialogue system further disambiguates the word using the identified value.

[0007] In some aspects, the dialogue system further generates a logical form of the spoken utterance based on the disambiguated words, generates a response based on the logical form, and outputs the response to the user. In some aspects, the dialogue system further identifies a stored execution result from the database based on the logical form, and the response is further generated based on the execution result. In some aspects, the dialogue system further stores a representation of the spoken utterance, the logical form, and the response in the database.

[0008] In some aspects, identifying the value includes selecting the database of the context level from among a plurality of context level-based databases based on the determined context level, and querying the selected database with an identifier of the user and the term to identify the value. In some aspects, the dialogue system further identifies stored data from the database for a plurality of previous interactions with the user, and analyzes the identified data to calculate the value. In some aspects, the plurality of predefined context levels include an immediate context, a short-term context, a medium-term context, and a long-term context.

[0009] Embodiments further include systems and computer-readable media (eg, non-transitory computer-readable memory) configured to perform the methods described herein.

[0010] The above, together with other features and embodiments, will become more apparent with reference to the following specification, claims and accompanying drawings. [Brief description of the drawings]

[0011] [Figure 1] FIG. 1 is a simplified block diagram illustrating a dialogue system according to certain embodiments. [Diagram 2]FIG. 2 is a simplified block diagram illustrating a context-level database of the dialogue system of FIG. 1, according to certain embodiments. [Diagram 3] 1 is a simplified flowchart illustrating a method for context-based interaction processing, according to certain embodiments. [Figure 4] 1 is a simplified flow diagram illustrating yet another context-based interaction technique in accordance with certain embodiments. [Diagram 5] 5 is a simplified flow diagram illustrating a method for generating a context-based value that may be used in the processes of FIGS. 3-4, according to certain embodiments. [Figure 6] 1 is a simplified diagram of a distributed system for implementing one embodiment. [Figure 7] FIG. 1 is a simplified block diagram of a cloud-based system environment in which various storage-related services may be provided as cloud services according to certain embodiments. [Figure 8] FIG. 1 illustrates an example computer system that can be used to implement certain embodiments. DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS

[0012] Detailed Description In the following description, for purposes of explanation, specific details are set forth in order to provide a thorough understanding of particular embodiments. However, it will be apparent that various embodiments can be practiced without these specific details. The drawings and description are not intended to be limiting. In this specification, the word "exemplary" is used to mean "serving as an example, illustration, or illustration." Any embodiment or design described herein as exemplary is not necessarily to be construed as preferred or advantageous over other embodiments or designs.

[0013] Voice-enabled systems capable of interacting with a user via voice input and voice output come in a variety of forms. For example, such systems may be provided as standalone devices, digital or virtual assistants, voice-enabled services, and the like. In each of these forms, the system may receive voice or speech inputs, understand these inputs, generate responses or take actions in response to these inputs, and output the responses using voice output. In certain embodiments, the interaction functionality in such voice-enabled systems is provided by a dialogue system or infrastructure ("dialogue system"). The dialogue system is configured to receive voice or speech inputs, interpret these voice inputs, maintain a dialogue, possibly perform or cause to be performed one or more actions based on the interpretation of these voice inputs, prepare appropriate responses, and output these responses to the user using voice or speech output.

[0014] As mentioned above, in conventional dialogue systems, context is used in a very limited manner. Although conventional systems can grasp very short-term context (e.g., from a current dialogue session), conventional dialogue systems do not systematically manage context data for users. As a result, conventional systems may require further inputs and outputs to resolve ambiguity. For example, when a user says "my favorite airline" or "the person I was talking to this morning," conventional dialogue systems may not have access to the necessary information to interpret the meaning of such user input. In such cases, the dialogue system must request the necessary information to receive and process the response, which increases the overall length of the dialogue session and the time and computational resources required to answer the query.

[0015] The techniques described herein improve the efficiency of dialogue processing tasks by using historical dialogue data stored in association with different context levels for different users. An embodiment allows access to historical queries including associated context, logical form, execution results, date and time, and other metadata. The dialogue system disclosed herein may maintain information about the user (such as what type of health insurance they have, where they work, which airline they prefer to book with, etc.). The dialogue system uses information based on context levels (e.g., immediate, short-term, medium-term, and long-term context) to understand the user's request. The dialogue system can track a set of different contexts and use them as a preferred source in understanding the user's request. The dialogue system can use this information to process requests that include context data (e.g., "Please call back the Human Resources (HR) person who just called me") and can also indirectly affect the interpretation of the current request based on previous successful requests.

[0016] In some embodiments, as a user interacts with the dialogue system, the dialogue system remembers the user's previous preferences and can essentially use those preferences as background hypotheses. For example, the user asks the dialogue system to book a flight. The dialogue system stores information indicating that the user previously chose to fly with a particular airline. When generating results, the system ranks flights with that particular airline higher than flights with other airlines.

[0017] In some embodiments, the system systematically personalizes results through named entity linking. Named entity linking may involve linking named entities (e.g., people, things, etc.) to items in a database. For example, a dialogue system in a car receives a voice input of "Take me to Starbucks®." The dialogue system must select a specific Starbucks® of many possible locations. Linking the word Starbucks to a specific instance of a Starbucks® coffee shop is an example of using named entity linking to personalize results, which can be efficiently accomplished using the contextual data described herein.

[0018] In some embodiments, various levels of context (such as short term, medium term and long term) are established. Short term context may be used to resolve pronouns. Medium term context may be used to answer requests such as "Please call back the HR person I spoke to this morning." Long term context may include preferences (such as liking or disliking flying with a particular airline). Data for each of the context levels may be maintained and used in various manners.

[0019] In certain embodiments, the dialogue system performs disambiguation tasks to resolve ambiguities. Such tasks may include named entity concatenation when the user ignores relevant details (e.g., "Please arrange a flight to Tampa" without specifying the airline or date). The dialogue system may maintain a user-specific database of historical voice inputs and / or other data associated with the user, and use this user-specific database to determine various levels of context for such disambiguation.

[0020] In some embodiments, the dialogue system may make decisions (e.g., disambiguate) based on explicit and / or implicit preferences previously expressed by the user. An explicit preference may correspond to the user stating a word. An implicit preference may be expressed by the user selecting an item from a list of choices presented to the user, by the user visiting the place, etc.

[0021] 1 is a diagram illustrating an example of a dialogue system 100 according to some embodiments. The dialogue system 100 is configured to receive voice or speech inputs 104 (also referred to as speech utterances) from a user 102. The dialogue system 100 may then interpret these voice inputs. The dialogue system 100 may maintain a dialogue with the user 102 and possibly perform or cause to be performed one or more actions based on the interpretation of these voice inputs. The dialogue system 100 may prepare appropriate responses and output these responses to the user using voice or speech output.

[0022] In certain embodiments, the processing performed by the dialogue system is realized by a pipeline of components or subsystems including a speech input component 105, a wake word detection (WD) subsystem 106, an automatic speech recognition (ASR) subsystem 108, and a natural language understanding (NLU) subsystem 110, which includes a named entity recognition (NER) subsystem 112, a semantic parser subsystem 114, and a context subsystem 115, which further include a dialogue manager (DM) subsystem 116, a natural language generator (NLG) subsystem 118, a text-to-speech (TTS) subsystem 120, a speech output component 124, and one or more context-level databases (130-136). The above subsystems may be realized exclusively in software (e.g., using code, programs, or instructions executable by one or more processors or cores), exclusively in hardware, or a combination of hardware and software. In particular implementations, one or more of the subsystems may be combined into a single subsystem. Additionally or alternatively, in some implementations, functionality described herein as being performed by a particular subsystem may be performed by multiple subsystems.

[0023] The voice input component 105 includes hardware and software configured to receive the voice input 104. In some examples, the voice input component 105 may be part of the dialogue system 100. In some other examples, the voice input component 105 may be separate from and communicatively coupled to the dialogue system 100. The voice input component 105 may include, for example, a microphone coupled to software configured to digitize and transmit the voice input to the wake word detection subsystem 106.

[0024] The wake word detection (WD) subsystem 106 is configured to listen and monitor the audio input stream for input corresponding to a special sound or word or set of words (referred to as a wake word). Upon detecting a wake word configured for the dialogue system 100, the WD subsystem 106 is configured to activate the ASR subsystem 108. In certain implementations, a user may be provided with the ability to activate and deactivate the WD subsystem 106 (e.g., by speaking the wake word and pressing a button). Once activated (or operating in an active mode), the WD subsystem 106 is configured to continuously receive an audio input stream and process the audio input stream to identify audio or speech input corresponding to the wake word. When an audio input corresponding to the wake word is detected, the WD subsystem 106 activates the ASR subsystem 108.

[0025] As described above, the WD subsystem 106 activates the ASR subsystem 108. In some implementations of a voice-enabled system, mechanisms other than a wake word may be used to trigger or activate the ASR subsystem 108. For example, in some implementations, a push button on the device may be used to trigger processing of the ASR subsystem 108 without the need for a wake word. In such implementations, the WD subsystem 106 may not be provided. When the push button is pressed or activated, voice input received after the button activation is provided to the ASR subsystem 108 for processing. In some implementations, the ASR subsystem 108 may be activated when it receives input to be processed.

[0026] The ASR subsystem 108 is configured to receive and monitor verbal speech input after a trigger or wake-up signal (e.g., a wake-up signal may be sent by the WD subsystem 106 upon detection of a wake word in the speech input, a wake-up signal may be received upon activation of a button, etc.) and convert the verbal speech input to text. As part of its processing, the ASR subsystem 108 performs speech-to-text conversion. The verbal speech or voice input may be in a natural language format, and the ASR subsystem 108 is configured to generate corresponding natural language text in the language of the voice input. The voice input received by the ASR subsystem 108 may include one or more words, phrases, clauses, sentences, questions, etc. The ASR subsystem 108 is configured to generate a text utterance for each verbal clause and feed these text utterances to the NLU subsystem 110 for further processing.

[0027] The NLU subsystem 110 receives the text generated by the ASR subsystem 108. The text received by the NLU subsystem 110 from the ASR subsystem 108 may include text utterances that correspond to spoken words, phrases, clauses, etc. The NLU subsystem 110 converts each text utterance (or a sequence of text utterances) into its corresponding logical form.

[0028] In a particular implementation, the NLU subsystem 110 includes a named entity recognizer (NER) subsystem 112 and a semantic parser (SP) subsystem 114. The NER subsystem 112 performs named entity concatenation by matching named entities with unique identities. Named entity concatenation can be considered a disambiguation task in that it involves identifying an appropriate identity among a set of possible identities that correspond to a given named entity. For example, the named entity "Erik Erikson" can be bound to one of several identities including Erik Erikson the developmental psychologist, Erik Erikson the television commentator, Erik Erikson the conductor, and Erik Erikson the actor. Based on the context, the appropriate identity can be discerned. For example, the NLU subsystem 110 receives a speech input of "Find books by Erik Erikson." The NLU subsystem 110 can determine that of the possible Erik Eriksons, the developmental psychologist is the one who wrote multiple books. Thus, the proper expression "Erik Erikson" is associated with the developmental psychologist Erik Erikson.

[0029] The NER subsystem 112 receives a text utterance as input, identifies named entities in the text utterance, and tags the text utterance with information related to the identified named entities. The tagged text utterance is then fed to the SP subsystem 114, which is configured to generate a logical form for each tagged text utterance (or for a set of tagged text utterances). The generated logical form for the utterance may identify one or more intents corresponding to the text utterance. The intent of the utterance identifies the purpose of the utterance. Examples of intents include "order a pizza" and "find directions." The intent may, for example, identify an action requested to be performed.

[0030] In addition to intents, the logical form generated for the text utterance may also identify slots (also referred to as parameters or arguments) for the identified intent. Slots are predefined attributes that can be arguments for one or more intents. Slots may be labeled and matched with entities or other information by the NLU subsystem 110. For example, the city "Moscow" may be matched with a particular slot based on the context (toloc.city_name if someone is buying a flight to Moscow, fromloc.city_name if someone is buying a flight from Moscow, etc.). Slot fulfillment can be thought of as a sequence labeling problem and can be solved using techniques such as recurrent neural networks. For example, for a speech input of "I would like to order a large pepperoni pizza with mushrooms and olives," the NLU subsystem 110 can identify the intent to order a pizza. The NLU subsystem 110 can also identify and fulfill slots (e.g., pizza_size (fulfilled with "large") and pizza_toppings (fulfilled with "mushrooms and olives")). The NLU subsystem 110 may generate logical forms using machine learning based techniques, rules (which may be domain specific), or a combination of the two. The logical forms generated by the NLU subsystem 110 are then fed into the DM subsystem 116 for further processing.

[0031] In some embodiments, the NLU subsystem 110 includes a context subsystem 115. The context subsystem 115 can determine a context of a word identified from the received utterance. The word can be a word, a phrase, a sentence, or a group of words. Examples of words include "the restaurant I went to last Friday," "coffee shop," and "my favorite airline." As described herein, the context subsystem 115 can use the determined context to identify information for disambiguating the word and / or for associating with the word and performing an action. Techniques for using context for dialogue processing are described in more detail below with respect to FIGS. 3-4. In some embodiments, the context subsystem 115 is communicatively coupled to a plurality of context level databases (e.g., a context level 1 database (DB) 130, a context level 2 DB 132, a context level 3 DB 134, ... a context level N DB 136). The context subsystem 115 can search for useful information from a selected context level database based on the determined context level.

[0032] The DM subsystem 116 is configured to manage interactions with the user based on the logical forms received from the NLU subsystem 110. As part of the interaction management, the DM subsystem 116 is configured to track the interaction state and determine how to initiate or itself execute one or more actions or tasks to interact with the user. These actions may include, for example, querying one or more databases, generating an execution result, and other actions. For example, the DM subsystem 116 is configured to interpret the intent identified in the logical forms received from the NLU subsystem 110. Based on this interpretation, the DM subsystem 116 may initiate one or more actions that are interpreted as being requested by the voice input provided by the user. In some embodiments, the DM subsystem 116 may utilize information stored in the context-level databases (e.g., context level 1 DB 130, context level 2 DB 132, context level 3 DB 134, ... context level N DB 136) to perform such actions. For example, if the DM subsystem 116 has already identified an answer to a question, the DM subsystem 116 can retrieve the answer from the appropriate context-level database.

[0033] In certain embodiments, the DM subsystem 116 performs dialogue state tracking based on current and past voice inputs, as well as a set of rules (e.g., dialogue policies) configured for the DM subsystem 116. These rules may specify various dialogue states, conditions for transitions between states, actions to be taken when in a particular state, etc. These rules may be domain-specific. In certain embodiments, machine learning-based techniques (e.g., machine learning models) may also be used. In some embodiments, a combination of rules and machine learning models may be used. The DM subsystem 116 also generates responses that are returned to users involved in the dialogue. These responses may be based on actions initiated by the DM subsystem 116 and their results. The responses generated by the DM subsystem 116 are fed into the NLG subsystem 118 for further processing.

[0034] The NLU subsystem 110 and / or the DM subsystem 116 may be communicatively coupled to a plurality of context level-based databases (e.g., a context level 1 DB 130, a context level 2 DB 132, a context level 3 DB 134, ... a context level N DB 136). Each context level database 130-136 may store data designated for a particular context level of the plurality of context levels. For example, the context levels may include an immediate context, a short-term context, a medium-term context, and a long-term context. An immediate context may correspond to a topic of a preceding request (e.g., within an interaction session). A short-term context may correspond to a speech input within an interaction session (e.g., possibly prior to a preceding request in a conversation). A medium-term context may correspond to something specific that the user may remember and can be specifically referred to (e.g., "the HR person I spoke to this morning"). A long-term context may correspond to a user's preferences (e.g., the user likes to fly United States Airlines) that the system has learned from previous conversations and user behavior. Storing the dialogue history associated with the context level can speed up database queries by narrowing the search field to relevant items. For example, the immediate context may be suitable for pronoun matching, whereas the long-term context may be suitable for named entity lining or ranking results. Examples of the types of data stored in a context-level database are further described below with respect to FIG. 2.

[0035] In some embodiments, the databases of each context level are for different types of data associated with the context level. For example, the context level 1 DB 130 is for immediate context-related data, the context level 2 DB 132 is for short-term context-related data, the context level 3 DB 134 is for medium-term context-related data, and the context level N DB 136 is for long-term context-related data. The context level 1 DB 130 may be used to store data from a current dialogue session (e.g., the last voice input received). Such data may be moved and / or copied to the long-term database once evaluated. For example, after a dialogue session ends, data related to that dialogue session is deleted from the context level 1 DB 130 and stored in the context level 2 DB 132. Data may further be copied and / or moved to the long-term database based on information discerned by the dialogue system 100. For example, if data in the context level 2 DB 132 is determined to be related to general user preferences, such data may be stored in the context level N DB 136.

[0036] Alternatively or additionally, the dialogue system 100 may store the dialogue history in a database in association with the context level in various manners (e.g., without using a separate database). For example, the dialogue history data may be tagged with the context level, and a pointer or other suitable means for organizing the history data by context level may specify the context level.

[0037] In some implementations, the dialogue system 100 may manage contexts along various "dimensions." For example, time is one dimension, and "utterance level," "conversation level," "short term," "medium term," etc. are contexts along the time dimension. Contexts may also be identified and used along other dimensions (e.g., geography). Examples of geographic contexts include "local geography," "city level," "state level," "country level," etc.

[0038] The NLG subsystem 118 is configured to generate natural language texts corresponding to the responses generated by the DM subsystem 116. These texts may be generated in a format that allows them to be converted to speech by the TTS subsystem 120. The TTS subsystem 120 receives these texts from the NLG subsystem 118 and converts each of them into speech or voice audio that may then be output to a user via an audio or voice output component 124 (e.g., a speaker or a communication channel coupled to an external speaker) of the dialogue system. In some examples, the voice output component 124 may be part of the dialogue system 100. In some other examples, the voice output component 124 may be separate from and communicatively coupled to the dialogue system 100.

[0039] As described above, the various subsystems of the dialogue system 100 working in cooperation provide functionality that allows the dialogue system 100 to receive speech input 104, respond using speech output 122, and maintain a dialogue with a user using natural language speech. The various subsystems described above may be implemented using a single computer system or multiple computer systems working in cooperation. For example, in a device implementing a voice-enabled system, the subsystems of the dialogue system 100 described above may be implemented exclusively on the device with which the user interacts. In some other implementations, some components or subsystems of the dialogue system 100 may be implemented on the device with which the user interacts, while other components may be implemented remotely from the device, possibly on other computing devices, platforms, or servers.

[0040] As noted above, in certain embodiments, the dialogue system 100 may be implemented using a pipeline of subsystems. In some embodiments, one or more of the subsystems may be combined into a single subsystem. In certain embodiments, the functionality provided by a particular subsystem may be provided by multiple subsystems. Also, a particular subsystem may be implemented using multiple subsystems.

[0041] In certain embodiments, machine learning techniques may be used to perform one or more functions of the dialogue system 100. For example, supervised machine learning techniques, such as those implemented using neural networks (e.g., deep neural networks), may be used to perform one or more functions of the dialogue system 100. As an example, a neural network trained to perform the ASR function to be performed may be provided, and such trained model may be used by the ASR subsystem 108 for its processing. Such a neural network implementation may take speech input as input and output text utterances to the NLU subsystem. Machine learning-based models may also be used by other subsystems of the dialogue system 100.

[0042] 2 is a diagram illustrating an example of a context level database 200 (e.g., context level 1 DB 130, context level 2 DB 132, context level 3 DB 134, or context level N DB 136 of FIG. 1). As described above with respect to FIG. 1, the dialogue system 100 may include or be communicatively coupled to multiple context level databases (e.g., context level 1 DB 130, context level 2 DB 132, context level 3 DB 134, ... context level N DB 136) that store historical data 201 for various context levels (e.g., immediate context, short term context, medium term context, etc.).

[0043] In some embodiments, the context-level database 200 is a storage unit and / or device (e.g., a file system, a database, a collection of tables, or other storage mechanism) for storing data related to previous interaction sessions. The context-level database 200 may include multiple different storage units and / or devices. The context-level database 200 may be local to the interaction system 100 (e.g., local storage) and / or connected to the interaction system 100 over a network (e.g., cloud storage).

[0044] The context-level database 200 may store historical data 201 related to user interactions. The historical data 201 may include user identifiers (IDs) (user IDs (User ID A 202A,...User ID N 202N)), context values ​​(204A,...204N), interaction data (206A,...206N), interaction metadata (208A,...208N), and execution results (210A,...210N).

[0045] In some embodiments, the historical data 201 may be stored in association with a particular user and indexed by user ID (e.g., User ID A 202A,...User ID N 202N). A user ID is a personal identifier (such as a name, an alphanumeric identifier, a nickname, etc.). For a given user, context values ​​(204A, 204N), interaction data (206A, 206N), interaction metadata (208A, 208N), and execution results (210A, 210N) may be stored in the context-level database 200 in association with a corresponding user ID.

[0046] The context values ​​(e.g., context values ​​204A,...204N) may include information that the dialogue system 100 learned during previous dialogue sessions with a particular user. For example, in the long term, the dialogue system 100 may learn that a particular user's favorite restaurant is Sue's Diner in Boise, Idaho. In the medium term, the dialogue system 100 may learn that last week, a particular user had a meeting with John Jones on Wednesday and with Tiffany Smith on Friday. Such information may be stored as context values ​​(204A,204N).

[0047] In some embodiments, the context values ​​(204A, 204N) are stored as values ​​of key-value pairs. For example, the key "coffee shop visited yesterday" is stored in association with the value "Beach Beans in Key West, Florida" and "favorite airline" is stored in association with the value "United®". Further examples of key-value pairs include name=Sam, color=red, book=Bible, etc. The "key" is an attribute and the "value" is the value of that attribute. In some embodiments, these keys may be stored as vector representations of words to facilitate matching with data processed by the dialogue system 100.

[0048] In some implementations, the context values ​​(204A, 204N) may further include context information from other sources (e.g., in addition to the interaction history data). Such context values ​​(204A, 204N) may include user preferences and behaviors obtained from employment records, Internet cookies, location tracking data, etc. For example, the interaction system 100 may be linked to an email server from which the interaction system retrieves the user's emails. As another example, the interaction system 100 may obtain and store the user's Internet search history. As yet another example, the interaction system 100 may obtain and store behavior-based records associated with the user (such as employee records, medical records, and / or purchase history).

[0049] In some embodiments, the interaction data (206A, 206N) includes information stored in association with a previous interaction session. The interaction data (206A, 206N) may include historical queries received by the interaction system 100 and responses provided by the interaction system 100. For example, an interaction session may occur as follows:

[0050] User input:Book a flight to Cincinnati Dialogue System Output: Ok, when is it? User voice input: July 10th Dialogue system output: Would you prefer morning, afternoon or evening? User voice input: Afternoon is good Dialogue System Output: Ok, I have a flight at 2pm with Ohio Airlines.

[0051] User voice input: I prefer United States Airlines Dialogue System Output: Okay, let's take United States Airlines at 3:30. The dialogue system 100 stores a log of interactions associated with a user in the context-level database 200. The dialogue system 100 may update the context-level database 200 as further interactions take place. For example, the dialogue system 100 may store historical data 201 in the context-level database 200 corresponding to multiple interactions with a particular user.

[0052] The dialogue data (206A, 206N) for each user may include text utterances or other representations generated based on verbal utterances received from the user over the course of multiple dialogue sessions (e.g., over days or years). The dialogue data (206A, 206N) may further include logical forms. For example, based on a given utterance in a previous dialogue session, the dialogue system may generate a logical form based on the utterance and store the logical form generated by the dialogue system 100.

[0053] In some embodiments, the interaction metadata (208A, 208N) is metadata associated with a historical interaction session. The interaction metadata (208A, 208N) may include date, time, location, receiving device (e.g., car, phone, multi-function television, etc.), etc. For a given interaction data 206A, the corresponding interaction metadata 208A may be mapped to the interaction data 206A directly or via an associated user ID A 202A.

[0054] In some embodiments, the execution results (210A, 210N) include information retrieved based on a historical query. A given execution result 210A may be mapped to corresponding interaction metadata 208A, interaction data 206A, context values ​​204A, and user identifiers 202A. As an example, the interaction data 206A includes a historical query, "How tall is the Statue of Liberty?" Based on this historical query, the interaction system 100 previously performed an Internet search to identify the execution result 210A, "It's 305 feet." Such execution results (210A, 210N) may be stored in the context-level database 200 in association with related data 202A-208N to speed up future queries.

[0055] FIG. 3 is a simplified flow chart illustrating a method for a context-based dialogue technique. The process illustrated in FIG. 3 may be implemented in software (e.g., code, instructions, programs) executed by one or more processing units (e.g., processors, cores) of the respective system, may be implemented in hardware, or a combination thereof. The software may be stored in a non-transitory storage medium (e.g., memory device). The method illustrated in FIG. 3 and described below is intended to be exemplary and non-limiting. Although FIG. 3 illustrates various processing steps performed in a particular sequence or order, this is not intended to be limiting. In certain alternative embodiments, these steps may be performed in some different order, or some steps may be performed in parallel. In certain embodiments, the process illustrated in FIG. 3 may be performed by the NLU subsystem 110 and other components of the dialogue system 100 described above.

[0056] At 302, the dialogue system receives a verbal utterance from a user. The dialogue system may receive the verbal utterance from the user, for example, via the speech input component 105. The verbal utterance may be received as a waveform. The verbal utterance may be in a particular language and in the form of a natural language query. The verbal utterance may specify a question that the user wants the dialogue system to answer, specify one or more actions that the user wants the dialogue system to initiate (e.g., "I want a medium pepperoni pizza"), etc.

[0057] In certain embodiments, instead of receiving voice input (as at 302), the input may be received in text form, for example when a user types text while chatting with a dialogue system. The techniques described in this disclosure can be used with systems that receive input in the form of oral speech or text input, or a combination thereof.

[0058] At 304, the dialogue system processes the verbal utterance to identify terms for disambiguation. A term may be a single word or a group of words that together convey an idea. Examples of "words" used herein include "diner," "the coffee shop I went to this morning," "him," "my boss," "my wife," and "my favorite bar." Processing the verbal utterance may include generating a text utterance (e.g., by the ASR subsystem 108) based on the verbal utterance. The ASR subsystem 108 may pass the generated text utterance to the NLU subsystem 110 for further processing. The NLU subsystem may then begin generating a logical form for the text utterance. The NLU subsystem may begin identifying words and performing named entity concatenation, slot filling, and other tasks.

[0059] During such processing, the NLU subsystem may identify certain words associated with ambiguity. For example, the word "she" may have an ambiguous interpretation because the word "she" can refer to a variety of different individuals previously mentioned by the user providing the speech input. As another example, the word "the cafe I went to on Thursday" may have an ambiguous meaning because the cafe in question is not clear from the current speech input. As another example, the word "my favorite ice cream" may have an ambiguous meaning because the user's favorite ice cream is not clear from the current speech input.

[0060] At 306, the dialogue system (e.g., the context subsystem 115) determines a context level from among a plurality of predefined context levels for the disambiguation word. The context subsystem 115 may determine the context level based on the disambiguation word identified at 304 and / or other words in the verbal utterance processed at 304. The context subsystem 115 may determine the context level using machine learning models and / or rules. For example, if certain key words indicate that the context is a medium-term context (e.g., "last week", "Thursday", etc.), the context level is determined to be a medium-term context level. As another example, if the utterance indicates that the user's overall preferences or characteristics are identified (e.g., by including words such as "my favorite", "my family doctor", "my assistant", etc.), the context level is determined to be a long-term context level.

[0061] In some cases, the dialogue system may iterate context levels as needed (e.g., the dialogue system may pre-assign a short-term context level, and if no relevant data is identified in the database of short-term context levels, the dialogue system may reassign this context level as a medium-term context level, etc.).

[0062] At 308, the dialogue system (e.g., the context subsystem 115) identifies word values ​​based on the context level determined at 306. The context subsystem 115 identifies word values ​​using a database that stores multiple values ​​for a user in association with a context level. In some embodiments, as shown in FIG. 1, the dialogue system includes or is communicatively coupled to multiple databases, each of the multiple databases for a different context level. In such an implementation, the context subsystem 115 selects a database for the context level identified at 306. For example, if the context level determined at 308 is a medium-term context level, the dialogue system identifies a database for medium-term context level data.

[0063] The context subsystem 115 may use the user's identifier and the words to query the selected database to identify the value. The context subsystem 115 may, for example, execute an SQL query having parameters that include the words for disambiguation (e.g., the key of a key-value pair). The query may further include the user's identifier and one or more additional words identified from the verbal utterance.

[0064] In some embodiments, the value identified in 308 is a context value stored in the context level database 200 (e.g., among the context values ​​204A, 204N). The context subsystem 115 may identify the stored context value by querying the context level database 200 using the disambiguation term. In some embodiments, the context value is stored as part of a key-value pair. The key may be a disambiguation term or a derivative thereof. The key may be used to construct a query to search the stored context value (e.g., the query may be "FIND value FOR key = favorite airline") . In some cases, additional words or phrases from the received voice input may be further used to construct the query (e.g., the query may be "FIND value FOR key = favorite airline AND location = US" ). This may be useful when different preferences are configured based on different context dimensions (e.g., when different domestic and international airline preferences are configured).

[0065] Alternatively or additionally, in some implementations, the historical data 201 may be stored in a single database or in multiple databases that are not assigned for a particular context level. In such implementations, the context level may be associated with a value using techniques (such as using a pointer to the data to indicate the context level of the various historical data stored in the context level database). In such implementations, rather than identifying a context-based database, the dialogue system may identify the data in terms of the context using techniques (such as including the context level as a parameter in a query to the database). For example, the dialogue system may search for stored context values ​​using the query: "FIND value FOR key = favorite airline AND context level = medium".

[0066] As described above with respect to block 306, in some cases, the context subsystem 115 may iterate through the context levels while identifying a particular value. For example, when the utterance "Book a flight with my favorite airline" is provided, the dialogue system disambiguates "favorite airline", i.e., determines the value of the airline. First, the dialogue system considers the utterance level context, but would not be able to determine the value from the stored utterance level data. Then, the dialogue system queries a database for conversation level data. If the user identifies a favorite airline in the conversation, it may use the conversation level context to determine the value of the favorite airline. Then, assuming that the favorite airline cannot be determined at the conversation level, the dialogue system may then query for "short term" (defined by a time period such as one month), "medium term" (e.g., six months), and "long term" (e.g., one year) contexts. For each time period, the dialogue system may query the appropriate database using the key "favorite airline" until one or more matching values ​​are identified.

[0067] In some embodiments, rather than searching for stored context values, the NLU subsystem 110 may use other historical data 201 stored in a context-level database (e.g., interaction data (206A, 206N), interaction metadata (208A, 208N), and / or execution results (210A, 210N)) to calculate values. As described further below with respect to FIG. 5, the NLU subsystem 110 may use the historical data 201 to calculate values ​​for disambiguating words using statistical analysis and / or machine learning models.

[0068] At 310, the NLU subsystem 110 disambiguates the word using the value identified at 308. In some cases, the value identified at 308 may be used directly to disambiguate the word. For example, the NLU subsystem 110 may disambiguate the word "coffee shop" by linking the word "coffee shop" to the named entity "Joe's Coffee" based on the stored key-value pair: key=coffee shop, value="Joe's Coffee".

[0069] In some embodiments, disambiguating words may be performed by NLU subsystem 110 in the context of named entity concatenation. For example, the word for disambiguation is the word "Moscow" and it is unclear from recent speech input whether the user is referring to Moscow, Russia or Moscow, Idaho. NLU subsystem 110 determines that the user regularly engaged in interactions related to Moscow, Idaho. Thus, NLU subsystem 110 associates the word "Moscow" with the named entity Moscow, Idaho.

[0070] In some embodiments, word disambiguation may be performed by NLU subsystem 110 in the context of slot filling. For example, a received verbal utterance does not explicitly include a value for a slot, but the user's history includes many similar requests, all of which include the same value for the slot. Thus, NLU subsystem 110 suggests a value for the slot. As a specific example, if a user has regularly booked flights to New York in the past, but the current speech input does not specify a destination city, the system may fill the destination city slot with "New York" based on historical data for the user identified from the database at 308.

[0071] In some embodiments, term disambiguation may be performed by NLU subsystem 110 in the context of ranking results. For example, NLU subsystem 110 prepares to display multiple options (e.g., multiple coffee shops in Bellevue) to a user. If the user explicitly or implicitly indicates a preference for certain coffee shops, NLU subsystem 110 may rank these coffee shops higher, as reflected in the historical data identified from the database at 308.

[0072] In some embodiments, word disambiguation may be performed by NLU subsystem 110 in the context of pronoun and anaphora resolution. For example, the word is "she" and NLU subsystem 110 identifies the corresponding contact, mother, based on the immediate context in the database. NLU subsystem 110 may provide a response to the speech input corresponding to ranking the results (e.g., providing a speech output of "Mother's birthday is June 1" based on identifying the birthday based on linking "she" with "mother" and looking up the associated birthdays).

[0073] In some cases, in addition to the values ​​identified at 308, the NLU subsystem 110 may use further factors in disambiguating words. For example, the NLU subsystem 110 may further disambiguate words using values ​​associated with other context dimension factors (e.g., based on temporal and geographic contexts). As a specific example, the NLU subsystem 110 may perform named entity concatenation based on a combination of location preferences and context preferences (e.g., 60% location and 40% history in selecting a coffee shop). As another example, the utterance "Map me directions to McDonald's" will result in different answers depending on whether the user is at work, at home, or traveling to another city. Thus, in some embodiments, multiple contexts corresponding to different dimensions may be used by the dialogue system to disambiguate words.

[0074] In certain embodiments, at 304-306, the NLU subsystem 110 may identify multiple values ​​corresponding to multiple respective context levels. In this case, disambiguating the word may include selecting one of the values ​​or ranking the values. For example, the NLU subsystem 110 may use configured rules to select one of the multiple possible values. As a specific example, the rules may specify to select the value determined from the shortest duration context evaluated. If the user's short term context data results in a value of "Airline A" and the user's medium term context data results in a value of "Airline B", in one example, Airline A may be selected because it is the most recent (i.e., the more recent context is used). Alternatively, the rules may specify to select the longest duration context because it uses the largest baseline of user data. In some other embodiments, the NLU subsystem 110 may output both airlines to the user and allow the user to choose one.

[0075] FIG. 4 is a simplified flow chart illustrating yet another context-based dialogue technique. The process illustrated in FIG. 4 may be implemented in software (e.g., code, instructions, programs) executed by one or more processing units (e.g., processors, cores) of the respective system, may be implemented in hardware, or a combination thereof. The software may be stored in a non-transitory storage medium (e.g., memory device). The method illustrated in FIG. 4 and described below is intended to be exemplary and non-limiting. Although FIG. 4 illustrates various processing steps performed in a particular sequence or order, this is not intended to be limiting. In certain alternative embodiments, these steps may be performed in some different order, or some steps may be performed in parallel. In certain embodiments, the process illustrated in FIG. 4 may be performed by the NLU subsystem 110, the DM subsystem 116, and other components of the dialogue system 100 described above. The process of FIG. 4 may be performed after the process of FIG. 3.

[0076] At 402, the dialogue system generates a logical form for the verbal utterance received at 302 based on the words disambiguated at 310. The NLU subsystem of the dialogue system may use the disambiguated words in generating the logical form along with further words identified in processing the verbal utterance at 304. The logical form may further be generated based on the context level determined at 306. The NLU subsystem (e.g., the semantic parser subsystem 112 of the NLU subsystem 110 of FIG. 1) may generate the logical form using semantic analysis. The semantic analysis may be performed using a machine learning algorithm (such as a recurrent neural network (RNN) or a chart parser). The resulting logical form may be in various forms (such as lambda calculus, abstract semantic representation (AMR), or a Python or Java expression). (See, e.g., Liang, "Lambda Dependency-Based Compositional Semantics," arXiv:1309.4408 (2017); Yin and Neubig, "A Syntactic Neural Model for General-Purpose Code Generation," arXiv:1704.01696 (2017); Banalescu et al., "Abstract Meaning Representation for Sembanking," Proceedings of the 7th Language Annotation Workshop (2013).) The NLU subsystem 110 may generate the logical form to include the value used to disambiguate the word at 310. For example, the value identifies a user's favorite bar as "Joe's Place." A logical form generated based on the spoken utterance "What time does my bar open?" may include "Joe's Place" as a slot in the logical form. Alternatively or in addition, the logical form may include information obtained by the dialogue system based on the disambiguated value (e.g., an address, a pointer to information, etc.).

[0077] In some implementations, the SP subsystem 112 generates a logical form that includes the context information, which can be used by the DM subsystem 116 and the NLG subsystem 118 to generate a response at 408. For example, the logical form can include a pointer to an item in an appropriate context-level database (e.g., context level 1 DB 130, context level 2 DB 132, context level 3 DB 134, or context level N DB 136), which can be used to efficiently look up information for preparing a response. For example, when the dialogue system 100 analyzes an utterance, the dialogue system 100 can identify an execution result from a previous dialogue that includes the target value from the context-level database. As a specific example, the user is asking for "Maria's phone number." The dialogue system previously identified Maria's phone number in a dialogue last week and has stored an execution result that includes the phone number in the context-level database. The logical form can include a pointer to the phone number and / or the phone number itself.

[0078] At 404, the dialogue system identifies the stored execution result from the database based on the logical form. The dialogue system may use the received pointer from the logical form to retrieve the execution result from the database. Continuing with the above example, the DM subsystem 116 receives the logical form from the NLU subsystem 110 that includes a pointer to Maria's phone number. The DM subsystem 116 may then use this pointer to retrieve Maria's phone number from the context-level database.

[0079] At 406, the dialogue system generates a response based on the logical form and the execution result. The DM subsystem 116 and / or the NLG subsystem 118 may identify the information requested by the user and package the information in a natural language form. In some cases, this may include using the execution result retrieved at 404. Alternatively or in addition, the DM subsystem 116 may perform an action to retrieve the requested information (e.g., via a lookup or internet query against another database, by sending an email or text message, etc.). Continuing with the above example of a phone number, the DM subsystem 116 may use a pointer to the context-level database to identify Maria's phone number and add words to generate a natural language response: "Maria's number is 515-567-4444. Would you like to call her now?"

[0080] Thus, a response may be generated based on the disambiguation task performed in the process of Figure 3. The response may include a result of named entity concatenation (e.g., next week's weather forecast for Moscow, Idaho, based on a named entity corresponding to Moscow, Idaho). Alternatively or in addition, the response may include a result of slot filling (e.g., information about flights to New York, based on filling a destination city slot with New York). Alternatively or in addition, the response may include a result of result ranking of the results (e.g., listing several coffee shops in order based on context-based preferences).

[0081] In some embodiments, the response may include multiple values ​​retrieved from a database. For example, the dialogue system may include two possible choices of favorite airlines in the response and generate a response such as "For the past month, Airline A has been your favorite airline, but for the past six months, Airline B has been your favorite airline. Please select (1) Airline A or (2) Airline B as the airline you would like to book with." As another example, the dialogue system may rank four coffee shops near the user's current geographic location using the user's historical preferences for a particular chain, with options in that chain coming first, and the response includes a list of those four coffee shops in ranked order.

[0082] At 408, the dialogue system outputs the generated response to the user. The dialogue system may provide the response as output (e.g., to the user who provided the input verbal utterance at 202) via the audio output component 124. The dialogue system may convert the text response generated by the dialogue manager subsystem 116 and the natural language generator subsystem 118 into audio output via the text-to-speech subsystem 120. Alternatively or in addition, the dialogue system may provide the response by causing the text response to be displayed on a display component.

[0083] In some aspects, after outputting the response to the user, the dialogue system updates a database. The dialogue system may store information in the database, such as the representation of the verbal utterance (e.g., the text utterance derived from the verbal utterance), the logical form and the response. This information can then be used to improve the dialogue system's understanding of the user's preferences to improve processing of future queries.

[0084] FIG. 5 is a simplified flow chart illustrating yet another context-based dialogue technique. The process illustrated in FIG. 5 may be implemented in software (e.g., code, instructions, programs) executed by one or more processing units (e.g., processors, cores) of the respective systems, may be implemented in hardware, or a combination thereof. The software may be stored in a non-transitory storage medium (e.g., memory device). The method illustrated in FIG. 5 and described below is intended to be exemplary and non-limiting. Although FIG. 5 illustrates various processing steps performed in a particular sequence or order, this is not intended to be limiting. In certain alternative embodiments, the steps may be performed in some different order, or some steps may be performed in parallel. In certain embodiments, the process illustrated in FIG. 5 may be performed by the NLU subsystem 110, the DM subsystem 116, and other components of the dialogue system 100 described above. The process of FIG. 5 may be performed before or after the process of FIG. 3. For example, the process of FIG. 5 may generate values ​​that are stored in the context-level database 200 and used in the processes of FIG. 3 and FIG. 4. Alternatively or in addition, the process of Figure 5 may be performed after the processes of Figures 3 and 4 to update the historical data 201 in the context-level database 200. Alternatively or in addition, the process of Figure 5 may be performed as part of the process of Figure 3 (e.g., to identify the value at 308).

[0085] At 502, the dialogue system identifies stored data from a database for multiple previous interactions with the user. As described above with respect to FIG. 2, the context-level database 200 may include stored historical data 201 associated with various users. Based on the user identifier, historical data for the user may be selected. This historical data may include context values, dialogue data, dialogue metadata, and / or execution results.

[0086] In some aspects, the dialogue system identifies stored data for multiple prior interactions from one or more context-level databases. For example, in some examples, the dialogue system may generate value using a selected database (e.g., a short-term context database, a medium-term context database, or a long-term context database). In other examples, the dialogue system may retrieve information from multiple context-level databases (e.g., to determine long-term preferences, the dialogue system may identify new data from a short-term context database and old data from a long-term context database).

[0087] In some embodiments, the dialogue system may further identify other data that did not originate from the interaction in the dialogue session. For example, the dialogue system may retrieve information from the user's employer (the user's health insurance company, address, income, names of coworkers, etc.). As another example, the dialogue system may obtain information from the user's Internet history (sites visited, search terms, etc.). As another example, the dialogue system may obtain Global Positioning System (GPS) data associated with a particular user from a GPS-enabled user device that the user uses to interact with the dialogue system. Such information may or may not be stored in the context-level database 200.

[0088] At 504, the dialogue system analyzes the data identified at 502 to calculate the value. The dialogue system may use statistical analysis and / or machine learning models to calculate the value identified at 308. As an example, if a user books 22 flights over a two-year period through the dialogue system, the dialogue system may have access to stored data specifying a number of different airlines selected by the user. The dialogue system may perform statistical analysis to identify the most frequently selected airlines. In some cases, the dialogue system may perform such statistical analysis filtered to a particular context-relevant time period (e.g., by identifying the airlines the user booked the most in the last week). This can be facilitated by using the dialogue metadata (208A, 208N) to tie the user's selection to a time period (e.g., by subtracting a dialogue metadata value indicating the time a particular utterance was received from a current time value). Alternatively or in addition, the dialogue system may perform other types of statistical analysis (such as identifying the median of a set of preferences, the rate of change of preferences, etc.). In some embodiments, the dialogue system may apply machine learning models to the data in the database to predict values ​​(such as user preferences).

[0089] In some aspects, the dialogue system may calculate a value based on an implicit preference. For example, data may be stored indicating that a user selected an item from a list of choices one or more times (e.g., if a user selected a particular gas station from a displayed list multiple times, the dialogue system may infer that the gas station is a favorite, even if the user never actually uttered the name of that gas station to the dialogue system). As another example, the dialogue system may use location data to calculate a value indicative of an implicit preference (e.g., if GPS data indicates that a user has repeatedly shopped at a particular store, the dialogue system may use this information to reinforce that the store indicated by the verbal input received and stored for this user is a favorite of the user).

[0090] At 506, the dialogue system may store the calculated value in a database. If the value indicates a long-term preference, the dialogue system may store the calculated value in a long-term context database and / or with an indicator indicating that the context is a long-term context. If the value indicates a medium-term value (e.g., the name of the song the user was listening to that morning, the last person to call, etc.), the calculated value may be stored in a medium-term context database and / or with an indicator indicating that the context is a medium-term context. In some aspects, the dialogue system may calculate the value on the fly (e.g., while identifying the value at 308). In such cases, the value may or may not be stored in a database at a later time (i.e., the value may be calculated in real time rather than retrieved from a database). Alternatively or in addition, the value may be generated periodically (e.g., on a weekly basis) and the process of FIG. 5 may be performed to generate and / or update a set of stored key-value pairs for a particular user.

[0091] According to one embodiment, the present disclosure provides a dialogue system comprising: means for receiving a verbal utterance from a user; means for processing the verbal utterance to identify a word for disambiguation; means for determining a context level for the word for disambiguation from among a plurality of predefined context levels; means for preparing a response according to the disambiguated word based on the context level; and means for outputting the response to the user.

[0092] According to one embodiment, the dialogue system further comprises means for identifying a value of the word using a database based on the determined context level, the database storing a plurality of values ​​for the user associated with the context level, the dialogue system further comprises means for disambiguating the word using the identified value, means for generating a logical form of the oral utterance based on the disambiguated word, and means for preparing the response based on the logical form.

[0093] According to one embodiment, said dialogue system further comprises means for identifying a stored execution result from said database based on said logical form, said response being further generated based on said execution result.

[0094] According to one embodiment, said dialogue system further comprises means for storing said representation of said oral utterance, said logical form and said response in said database.

[0095] According to one embodiment, identifying the value includes selecting the database for the context level from among a plurality of context level-based databases based on the determined context level, and querying the selected database using an identifier of the user and the term to identify the value.

[0096] According to one embodiment, the dialogue system further comprises means for identifying from the database stored data for a number of previous interactions with the user, and means for analysing the identified data to calculate the value.

[0097] The techniques described herein have several advantages. Leveraging stored historical information to respond to speech inputs allows the dialogue system to respond more accurately without continually asking the user to clarify the same point. This can result in reduced latency in providing output in response to a received query. Furthermore, by storing context information in association with various context levels, the dialogue system can speed up the process of providing a response. For example, if the dialogue system determines that the information of interest is in one of five different context level databases, the dialogue system can identify which context level database is appropriate. In this case, the dialogue system will query a smaller data set (e.g., in the five database example, approximately 1 / 5 of the amount of data), which can result in faster query execution.

[0098] Further reductions in latency and computational resources can be provided by using a context-based database to look up previously performed results. For example, if the system has already looked up the lyrics for a user's favorite song, the second or third time the user requests lyrics, the song's lyrics can be quickly looked up from the context database. Thus, the techniques described herein can reduce latency and computational resource usage on multiple levels.

[0099] The above infrastructure can be implemented in a variety of different environments, including cloud environments (which can be various types of clouds, including private, public and hybrid cloud environments), on-premise environments, hybrid environments, etc.

[0100] 6 is a simplified diagram of a distributed system 600 for implementing one embodiment. In the embodiment shown, the distributed system 600 includes one or more client computing devices 602, 604, 606, and 608, which are coupled to a server 612 via one or more communication networks 610. The client computing devices 602, 604, 606, and 608 may be configured to execute one or more applications.

[0101] In various embodiments, the server 612 may be adapted to execute one or more services or software applications that enable performing interactive tasks based on historical context.

[0102] In particular embodiments, server 612 may also provide other services or software applications, which may include non-virtual and virtual environments. In some embodiments, these services may be provided as web-based or cloud services (such as under a Software-as-a-Service (SaaS) model) to users of client computing devices 602, 604, 606, and / or 608. Users operating client computing devices 602, 604, 606, and / or 608 may then utilize one or more client applications to interact with server 612 to utilize the services provided by these components.

[0103] In the configuration shown in Figure 6, the server 612 may include one or more components 618, 620, and 622 that implement the functions performed by the server 612. These components may include software components, hardware components, or a combination thereof that may be executed by one or more processors. It should be understood that a variety of different system configurations are possible that may differ from the distributed system 600. The embodiment shown in Figure 6 is therefore an example of a distributed system for implementing the system of the embodiments and is not intended to be limiting.

[0104] A user may use client computing devices 602, 604, 606 and / or 608 to use historical context to affect an interaction task in accordance with the teachings of this disclosure. The client devices may provide an interface that allows a user of the client device to interact with the client device. The client devices may also output information to the user via this interface. Although FIG. 6 shows only four client computing devices, any number of client computing devices may be supported.

[0105] Client devices may include various types of computing systems, such as portable handheld devices, general purpose computers (such as personal computers and laptops), workstation computers, wearable devices, gaming systems, thin clients, various messaging devices, sensors or other sensing devices, etc. These computing devices may run various types and versions of software applications and operating systems, including various mobile operating systems, such as Microsoft Windows, Apple Macintosh, UNIX or UNIX-like operating systems, Linux or Linux-like operating systems (such as Google Chrome™ OS), etc. Portable handheld devices may include mobile phones, smartphones (e.g., iPhone), tablets (e.g., iPad), personal digital assistants (PDAs), etc. Wearable devices may include Google Glass head-mounted displays and other devices. The gaming systems may include a variety of handheld gaming devices, Internet-enabled gaming devices (e.g., Microsoft Xbox® gaming consoles with or without Kinect® gesture input devices, Sony PlayStation® systems, various gaming systems offered by Nintendo®, etc.) The client devices may be capable of running a variety of different applications (e.g., various Internet-related apps, communication applications (e.g., email applications, Short Message Service (SMS) applications), etc.) and may use a variety of communication protocols.

[0106] Network 610 may be any type of network familiar to those skilled in the art capable of supporting data communications using any of a variety of available protocols, including, but not limited to, TCP / IP (Transmission Control Protocol / Internet Protocol), SNA (Systems Network Architecture), IPX (Internet Packet Exchange), AppleTalk, etc. By way of example only, network 610 may be a local area network (LAN), an Ethernet-based network, a token ring, a wide area network (WAN), the Internet, a virtual network, a virtual private network (VPN), an intranet, an extranet, a public switched telephone network (PSTN), an infrared network, a wireless network (e.g., a network operating under any of the Institute of Electrical and Electronics Engineers (IEEE) 1002.11 suite of protocols, Bluetooth, and / or other wireless protocols), and / or any combination of these and / or other networks.

[0107] The servers 612 may be comprised of one or more general purpose computers, specialized server computers (including, by way of example, PC (personal computer) servers, UNIX servers, mid-range servers, mainframe computers, rack-mounted servers, etc.), server farms, server clusters, or other suitable configurations and / or combinations. The servers 612 may include one or more virtual machines running a virtual operating system, or other computing architectures involving virtualization (such as one or more flexible pools of logical storage devices that may be virtualized to maintain virtual storage devices for the servers). In various embodiments, the servers 612 may be adapted to run one or more services or software applications that provide the functionality described in the foregoing disclosure.

[0108] The computing systems in the servers 612 may run one or more operating systems, including any of those mentioned above, and any commercially available server operating system. The servers 612 may also run any of a variety of other server and / or mid-tier applications, including HTTP (Hypertext Transfer Protocol) servers, FTP (File Transfer Protocol) servers, CGI (Common Gateway Interface) servers, JAVA servers, database servers, and the like. Exemplary database servers include, but are not limited to, those commercially available from Oracle Corporation®, Microsoft Corporation®, Sybase®, IBM® (International Business Machines), and the like.

[0109] In some implementations, the server 612 may include one or more applications for parsing and consolidating data feeds and / or event updates received from users of the client computing devices 602, 604, 606, and 608. By way of example, the data feeds and / or event updates may include, but are not limited to, Twitter feeds, Facebook updates, or real-time updates received from one or more third party information sources and continuous data streams, including real-time events related to sensor data applications, financial stock ticker boards, network performance measurement tools (e.g., network monitoring and traffic management applications), clickstream analysis tools, automobile traffic monitoring, and the like. The server 612 may also include one or more applications for displaying the data feeds and / or real-time events via one or more display devices of the client computing devices 602, 604, 606, and 608.

[0110] The distributed system 600 may also include one or more data repositories 614, 616. In certain embodiments, these data repositories may be used to store data and other information. For example, one or more of the data repositories 614, 616 may be used to store information (such as interaction history). The data repositories 614, 616 may be in a variety of locations. For example, the data repository used by the server 612 may be local to the server 612 or may be remote from the server 612 and communicate with the server 612 via a network-based or dedicated connection. The data repositories 614, 616 may be of different types. In certain embodiments, the data repository used by the server 612 may be a database (e.g., a relational database, such as databases provided by Oracle Corporation and other vendors). One or more of these databases may be adapted to allow storage, updating, and retrieval of data from the database in response to SQL-formatted commands.

[0111] In particular embodiments, one or more of the data repositories 614, 616 may also be used by an application to store application data. The data repositories used by an application may be of different types (e.g., a key-value store repository, an object store repository, a general storage repository supported by a file system, etc.).

[0112] In certain embodiments, the context-based interaction capabilities described in this disclosure may be provided as a service via a cloud environment. FIG. 7 is a simplified block diagram of a cloud-based system environment in which various context-based interaction services may be provided as cloud services, according to certain embodiments. In the embodiment shown in FIG. 7, a cloud infrastructure system 702 may provide one or more cloud services that may be requested by a user using one or more client computing devices 704, 706, and 708. The cloud infrastructure system 702 may comprise one or more computers and / or servers, which may include those described above for server 612. The computers in the cloud infrastructure system 702 may be organized as general purpose computers, specialized server computers, server farms, server clusters, or other suitable configurations and / or combinations.

[0113] Network 710 may facilitate communication and exchange of data between clients 704, 706, and 708 and cloud infrastructure system 702. Network 710 may include one or more networks. These networks may be of the same type or different types. Network 710 may support one or more communication protocols (including wired and / or wireless protocols) to facilitate communication.

[0114] The embodiment shown in Figure 7 is merely one example of a cloud infrastructure system and is not intended to be limiting. It should be understood that in some other embodiments, cloud infrastructure system 702 may have more or fewer components than those shown in Figure 7, may combine two or more components, or may have a different configuration or arrangement of components. For example, while Figure 7 shows three client computing devices, any number of client computing devices may be supported in alternative embodiments.

[0115] The term cloud services is generally used to refer to services made available to users on demand via a communication network (such as the Internet) by a service provider's system (e.g., cloud infrastructure system 702). Generally, in a public cloud environment, the servers and systems that make up the cloud service provider's system are distinct from the customer's own on-premise servers and systems. The cloud service provider's systems are managed by the cloud service provider. Thus, customers can utilize these services without having to purchase separate licenses, support, or hardware and software resources for the cloud services provided by the cloud service provider. For example, the cloud service provider's system may host an application, and users can order and use this application on demand via the Internet without having to purchase infrastructure resources to run this application. Cloud services are designed to provide easy and scalable access to applications, resources, and services. Several providers offer cloud services. For example, several cloud services (such as middleware services, database services, Java cloud services, etc.) are offered by Oracle Corporation of Redwood Shores, California.

[0116] In particular embodiments, cloud infrastructure system 702 may provide one or more cloud services using a variety of models, including a hybrid service model (such as a Software as a Service (SaaS) model, a Platform as a Service (PaaS) model, an Infrastructure as a Service (IaaS) model, etc.) Cloud infrastructure system 702 may include a set of applications, middleware, databases, and other resources that enable the delivery of the various cloud services.

[0117] The SaaS model allows applications or software to be provided to customers as a service over a communications network such as the Internet, without the customer having to purchase hardware or software for the underlying application. For example, the SaaS model may be used to provide customers with access to on-demand applications hosted by cloud infrastructure system 702. Examples of SaaS services offered by Oracle Corporation include, but are not limited to, various services for human capital / capital management, customer relationship management (CRM), enterprise resource planning (ERP), supply chain management (SCM), enterprise performance management (EPM), analytics services, social applications, and the like.

[0118] The IaaS model is commonly used to provide infrastructure resources (e.g., servers, storage, hardware and networking resources) as cloud services to customers to provide elastic compute and storage capabilities. Various IaaS services are offered by Oracle Corporation.

[0119] The PaaS model is commonly used to provide platform and environment resources as a service that allows customers to develop, run and manage applications and services without the need for customers to procure, build or maintain such resources. Examples of PaaS services provided by Oracle Corporation (registered trademark) include, but are not limited to, Oracle Java Cloud Services (JCS), Oracle Database Cloud Services (DBCS), data management cloud services, various application development solution services, etc.

[0120] Cloud services are generally provided in an on-demand self-service based, subscription-based, elastically scalable, reliable, highly available, and secure manner. For example, a customer may order one or more services provided by cloud infrastructure system 702 via a subscription order. Cloud infrastructure system 702 then executes processing to provide the services requested in the customer's subscription order. For example, cloud infrastructure system 702 uses historical context to affect interaction tasks. Cloud infrastructure system 702 may be configured to provide one or more cloud services.

[0121] Cloud infrastructure system 702 may provide cloud services through a variety of deployment models. In a public cloud model, cloud infrastructure system 702 may be owned by a third-party cloud service provider and cloud services are offered to any public customer, which may be an individual or a business. In certain other embodiments, under a private cloud model, cloud infrastructure system 702 may be operated within an organization (e.g., within a corporate organization) and services are provided to customers within the organization. For example, customers may be various departments of a business (human resources, payroll, etc.) or individuals within the business. In certain other embodiments, under a community cloud model, cloud infrastructure system 702 and the services provided may be shared by several organizations within an associated community. Various other models (such as hybrids of the above models) may also be used.

[0122] Client computing devices 704, 706, and 708 may be of different types (such as devices 202, 204, 206, and 208 shown in FIG. 2) and may be capable of running one or more client applications. A user may use a client device to interact with cloud infrastructure system 702 (such as to request services provided by cloud infrastructure system 702). For example, a user may use a client device to request a context-based interaction service described in this disclosure.

[0123] In some embodiments, the processing performed by cloud infrastructure system 702 to provide context-based interaction services may include big data analytics. This analytics may include using, analyzing, and manipulating large data sets to detect and visualize various trends, behaviors, relationships, and the like in the data. This analytics may be performed by one or more processors, possibly processing the data in parallel or using the data to perform simulations. For example, big data analytics may be performed by cloud infrastructure system 702 to identify intent based on received voice input. The data used for this analytics may include structured data (e.g., data stored in a database or structured according to a structured model) and / or unstructured data (e.g., data blobs (binary large objects)).

[0124] 7, cloud infrastructure system 702 may include infrastructure resources 730 utilized to facilitate the provision of various cloud services offered by cloud infrastructure system 702. Infrastructure resources 730 may include, for example, processing resources, storage or memory resources, networking resources, etc.

[0125] In particular embodiments, to facilitate efficient provisioning of these resources to support various cloud services offered by cloud infrastructure system 702 to various customers, resources may be bundled into sets of resources or resource modules (also referred to as "pods"). Each resource module or pod may comprise a pre-integrated and optimized combination of one or more types of resources. In particular embodiments, different pods may be pre-provisioned for different types of cloud services. For example, a first set of pods may be provisioned for database services, a second set of pods, which may include a different combination of resources than the pods in the first set of pods, may be provisioned for Java services, etc. In some services, resources allocated for provisioning of a service may be shared between services.

[0126] Cloud infrastructure system 702 itself may use services 732 internally that are shared by various components of cloud infrastructure system 702 to facilitate provisioning of services by cloud infrastructure system 702. These internal shared services may include, but are not limited to, security and identity services, integration services, enterprise repository services, enterprise manager services, virus scanning and whitelist services, high availability, backup and recovery services, services to enable cloud support, email services, notification services, file transfer services, etc.

[0127] Cloud infrastructure system 702 may comprise multiple subsystems. These subsystems may be implemented in software, hardware, or a combination thereof. As shown in FIG. 7, the subsystems may include a user interface subsystem 712 that allows a user or customer of cloud infrastructure system 702 to interact with cloud infrastructure system 702. User interface subsystem 712 may include a variety of different interfaces, such as a web interface 714, an online store interface 716 (wherein cloud services offered by cloud infrastructure system 702 are advertised and available for purchase by consumers), and other interfaces 718. For example, a customer may use a client device to request one or more services offered by cloud infrastructure system 702 using one or more of interfaces 714, 716, and 718 (service request 734). For example, a customer may access an online store to browse cloud services offered by cloud infrastructure system 702 and place a subscription order for one or more services offered by cloud infrastructure system 702 for which the customer wishes to subscribe. The service request may include information identifying the customer and the one or more services for which the customer wishes to subscribe. For example, a customer may place an order to subscribe to context-based interaction services provided by cloud infrastructure system 702. As part of the order, the customer may provide a voice input identifying the request.

[0128] In certain embodiments (such as the embodiment shown in FIG. 7), cloud infrastructure system 702 may include an order management subsystem (OMS) 720 configured to process new orders. As part of this processing, OMS 720 may be configured to create an account for the customer if not already done so, receive billing and / or billing information from the customer that is used to issue a bill to the customer for providing the customer with the requested services, verify the customer information, and upon verification, finalize the customer's order, and orchestrate various workflows to prepare the order for provisioning.

[0129] Once properly authenticated, OMS 720 may then invoke Order Provisioning Subsystem (OPS) 724. Order Provisioning Subsystem (OPS) 724 is configured to provision resources (including processing, memory, and networking resources) for the order. Provisioning may include allocating resources for the order and configuring these resources to facilitate the service requested by the customer order. The manner in which resources are provisioned for the order and the type of resources provisioned may depend on the type of cloud service ordered by the customer. For example, according to one workflow, OPS 724 may be configured to determine that a particular cloud service is being requested and identify the number of pods that would have been pre-configured for that particular cloud service. The number of pods allocated to the order may depend on the size / amount / level / scope of the requested service. For example, the number of pods allocated may be determined based on the number of users supported by the service, the period for which the service is being requested, etc. The allocated pods may then be customized to the particular requesting customer to provide the requested service.

[0130] The cloud infrastructure system 702 may send a response or notification 744 to the requesting customer indicating when the requested service will be ready for use. In some examples, information (e.g., a link) may be sent to the customer that enables the customer to begin using and taking advantage of the benefits of the requested service. In certain embodiments, if the customer requests a context-based interaction service, the response may include a response generated based on the identified intent.

[0131] Cloud infrastructure system 702 may provide services to multiple customers. For each customer, cloud infrastructure system 702 is responsible for managing information related to one or more subscription orders received from the customer, maintaining customer data related to these orders, and providing the requested services to the customer. Cloud infrastructure system 702 may also collect usage statistics regarding the customer's use of the subscribed services. For example, statistics may be collected on the amount of storage used, the amount of data transferred, the number of users, and system up and down times, etc. This usage information may be used to bill the customer. Billing may occur on a monthly cycle, for example.

[0132] Cloud infrastructure system 702 may provide services to multiple customers in parallel. Cloud infrastructure system 702 may store information (possibly including proprietary information) of these customers. In particular embodiments, cloud infrastructure system 702 comprises an identity management subsystem (IMS) 728 configured to manage customer information and segregate the managed information such that information related to one customer is not accessible by another customer. IMS 728 may be configured to provide various security-related services, such as identity services (information access management, authentication and authorization services, services for managing customer identities and roles and related functions, etc.).

[0133] 8 is a diagram illustrating an example computer system 800 that may be used to implement certain embodiments. For example, in some embodiments, computer system 800 may be used to implement the ASR subsystem, the NLU subsystem, and any of the various servers and computer systems described above. As shown in FIG. 8, computer system 800 includes various subsystems, including a processing subsystem 804, which communicates with several other subsystems via a bus subsystem 802. These other subsystems may include a processing acceleration unit 806, an I / O subsystem 808, a storage subsystem 818, and a communication subsystem 824. The storage subsystem 818 may include a non-transitory computer-readable storage medium, including a storage medium 822 and a system memory 810.

[0134] Bus subsystem 802 provides a mechanism for allowing the various components and subsystems of computer system 800 to communicate with each other as intended. Although bus subsystem 802 is shown diagrammatically as a single bus, alternative embodiments of the bus subsystem may utilize multiple buses. Bus subsystem 802 may be any of several types of bus structures including a memory bus or memory controller, a peripheral bus, a local bus, etc. using any of a variety of bus architectures. For example, such architectures may include an Industry Standard Architecture (ISA) bus, a MicroChannel Architecture (MCA) bus, an Enhanced ISA (EISA) bus, a Video Electronics Standards Association (VESA) local bus, a Peripheral Component Interconnect (PCI) bus, which may be implemented as a mezzanine bus manufactured in accordance with the IEEE P1386.1 standard, and the like.

[0135] The processing subsystem 804 controls the operation of the computer system 800 and may comprise one or more processors, application specific integrated circuits (ASICs), or field programmable gate arrays (FPGAs). These processors may include single-core processors or multi-core processors. The processing resources of the computer system 800 may be organized into one or more processing units 832, 834, etc. The processing units may include one or more processors, one or more cores from the same or different processors, combinations of cores and processors, or other combinations of cores and processors. In some embodiments, the processing subsystem 804 may include one or more special purpose co-processors (such as graphics processors, digital signal processors (DSPs), etc.). In some embodiments, some or all of the processing units of the processing subsystem 804 may be realized using customized circuitry (such as application specific integrated circuits (ASICs) or field programmable gate arrays (FPGAs)).

[0136] In some embodiments, the processing units in the processing subsystem 804 can execute instructions stored in the system memory 810 or on the computer readable storage medium 822. In various embodiments, the processing units can execute various program or code instructions and can maintain multiple simultaneously executing programs or processes. At any one time, some or all of the program code being executed can be in the system memory 810 and / or on the computer readable storage medium 822 (including, in some cases, on one or more storage devices). Through suitable programming, the processing subsystem 804 can provide the various functions described above. In an example where the computer system 800 is running one or more virtual machines, one or more processing units can be assigned to each virtual machine.

[0137] In particular embodiments, a processing acceleration unit 806 may be optionally provided to perform customized processing to accelerate the overall processing performed by the computer system 800 or to offload portions of the processing performed by the processing subsystem 804.

[0138] I / O subsystem 808 may include devices and mechanisms for inputting information into computer system 800 and / or outputting information from or through computer system 800. In general, use of the term input device is intended to include all possible types of devices and mechanisms for inputting information into computer system 800. User interface input devices may include, for example, keyboards, pointing devices (such as a mouse or trackball), touch pads or touch screens integrated into a display, scroll wheels, click wheels, dials, buttons, switches, keypads, audio input devices with voice command recognition systems, microphones, and other types of input devices. User interface input devices may also include motion sensing and / or gesture recognition devices (such as a Microsoft Kinect® motion sensor) that allow a user to control and interact with the input device, a Microsoft Xbox® 360 game controller, devices that provide an interface for receiving input using gestures and verbal commands. The user interface input devices may also include an eye gesture recognition device (such as a Google Glass® blink detector) that detects eye movements from the user (e.g., "blinking" while taking a picture and / or making a menu selection) and translates the eye gestures as input to the input device (e.g., Google Glass®). Additionally, the user interface input devices may include a voice recognition sensing device that allows the user to interact with a voice recognition system via voice commands.

[0139] Other examples of user interface input devices include, but are not limited to, three-dimensional (3D) mice, joysticks or pointing sticks, game pads and graphic tablets, as well as audio / visual devices (such as speakers, digital cameras, digital camcorders, portable media players, webcams, image scanners, fingerprint scanners, barcode readers 3D scanners, 3D printers, laser range finders, and eye-tracking devices). Additionally, user interface input devices may include, for example, medical imaging input devices (such as computed tomography, magnetic resonance imaging, position emission tomography, and medical ultrasound devices). User interface input devices may also include, for example, audio input devices (such as MIDI keyboards, digital musical instruments, etc.).

[0140] In general, use of the term "output device" is intended to include all possible types of devices and mechanisms for outputting information from computer system 800 to a user or to another computer. User interface output devices may include a display subsystem, indicator lights, or non-visual displays (such as audio output devices). Display subsystems may be cathode ray tubes (CRTs), flat panel devices (such as those using liquid crystal displays (LCDs) or plasma displays), projection devices, touch screens, and the like. For example, user interface output devices may include, but are not limited to, a variety of display devices that visually convey text, graphics, and audio / visual information (such as monitors, printers, speakers, headphones, automobile navigation systems, plotters, audio output devices, and modems).

[0141] The storage subsystem 818 provides a repository or data store for storing information and data used by the computer system 800. The storage subsystem 818 provides a tangible, non-transitory computer-readable storage medium for storing the basic programming and data constructs that provide the functionality of some embodiments. The storage subsystem 818 may store software (e.g., programs, code modules, instructions) that, when executed by the processing subsystem 804, provide the functionality described above. This software may be executed by one or more processing units of the processing subsystem 804. The storage subsystem 818 may also provide a repository for storing data used in accordance with the teachings of the present disclosure.

[0142] The storage subsystem 818 may include one or more non-transient memory devices, including volatile and non-volatile memory devices. As shown in FIG. 8, the storage subsystem 818 includes a system memory 810 and a computer-readable storage medium 822. The system memory 810 may include several memories, including a volatile main random access memory (RAM) for storing instructions and data during program execution, and a non-volatile read-only memory (ROM) or flash memory in which fixed instructions are stored. In some implementations, a basic input / output system (BIOS), containing basic routines that help transfer information between elements within the computer system 800, such as during start-up, may typically be stored in a ROM. The RAM typically contains data and / or program modules currently being operated and executed by the processing subsystem 804. In some implementations, the system memory 810 may include multiple different types of memories, such as static random access memory (SRAM), dynamic random access memory (DRAM), etc.

[0143] 8, system memory 810 may load executing application programs 812 (which may include various applications such as a web browser, a mid-tier application, a relational database management system (RDBMS), etc.), program data 814, and operating system 816. By way of example, and not limitation, operating system 816 may include various versions of Microsoft Windows, Apple Macintosh, and / or Linux operating systems, various commercially available UNIX or UNIX-like operating systems (including, but not limited to, various GNU / Linux operating systems, Google Chrome OS, etc.), and / or mobile operating systems (iOS, Windows Phone, Android OS, BlackBerry OS, Palm OS operating systems, etc.).

[0144] The computer readable storage medium 822 may store programming and data structures that provide functionality of some embodiments. The computer readable medium 822 may store computer readable instructions, data structures, program modules, and other data for the computer system 800. Software (programs, code modules, instructions) that, when executed by the processing subsystem 804, provide the above-described functionality may be stored in the storage subsystem 818. By way of example, the computer readable storage medium 822 may include non-volatile memory (such as a hard disk drive, a magnetic disk drive, an optical disk drive (such as a CD ROM, DVD, Blu-ray disk, etc.), or other optical media). The computer readable storage medium 822 may include, but is not limited to, a Zip drive, a flash memory card, a Universal Serial Bus (USB) flash drive, a Secure Digital (SD) card, a DVD disk, a digital video tape, etc. The computer-readable storage medium 822 may also include solid-state drives (SSDs) based on non-volatile memory (such as flash memory-based SSDs, enterprise flash drives, solid-state ROM, etc.), SSDs based on volatile memory (such as solid-state RAM, dynamic RAM, static RAM, etc.), DRAM-based SSDs, magnetoresistive RAM (MRAM) SSDs, and hybrid SSDs that use a combination of DRAM-based SSDs and flash memory-based SSDs.

[0145] In particular embodiments, storage subsystem 818 may also include a computer-readable storage medium reader 820 that may be further connected to a computer-readable storage medium 822. Reader 820 may be configured to receive and read data from a memory device (disk, flash drive, etc.).

[0146] In certain embodiments, computer system 800 may support virtualization techniques (including, but not limited to, virtualization of processing and memory resources). For example, computer system 800 may provide support for running one or more virtual machines. In certain embodiments, computer system 800 may execute a program (such as a hypervisor) that facilitates configuration and management of virtual machines. Each virtual machine may be assigned memory, computational (e.g., processors, cores), I / O, and networking resources. Each virtual machine generally operates independently from other virtual machines. A virtual machine generally runs its own operating system, which may be the same or different from the operating systems run by other virtual machines executed by computer system 800. Thus, in some cases, multiple operating systems may be executed simultaneously by computer system 800.

[0147] The communications subsystem 824 provides an interface to other computer systems and networks. The communications subsystem 824 serves as an interface for sending and receiving data between other systems and the computer system 800. For example, the communications subsystem 824 may enable the computer system 800 to establish a communications channel with one or more client devices over the Internet for sending and receiving information to and from the client devices. For example, the communications subsystem may be used to communicate with a database to import contextual information from a client database (e.g., the name of an individual's health insurance company may be retrieved from a database maintained by the individual's employer).

[0148] The communications subsystem 824 may support both wired and / or wireless communications protocols. For example, in certain embodiments, the communications subsystem 824 may include a radio frequency (RF) transceiver component for accessing wireless voice and / or data networks (e.g., using cellular telephone technology, advanced data network technology (such as 3G, 4G, or EDGE (Enhanced Data Rates for Global Evolution)), WiFi (IEEE 802.XX family of standards), or other mobile communications technologies, or any combination thereof), a global positioning system (GPS) receiver component, and / or other components. In some embodiments, the communications subsystem 824 may provide a wired network connection (e.g., Ethernet) in addition to or instead of a wireless interface.

[0149] The communications subsystem 824 can send and receive data in a variety of formats. For example, in some embodiments, in addition to other formats, the communications subsystem 824 can receive incoming communications in the form of structured and / or unstructured data feeds 826, event streams 828, event updates 830, etc. For example, the communications subsystem 824 can be configured to receive (or send) data feeds 826 in real time from users of social media networks and / or other communications services, such as Twitter feeds, Facebook updates, web feeds (e.g., Rich Site Summary (RSS) feeds), and / or real-time updates from one or more third party sources.

[0150] In particular embodiments, the communications subsystem 824 may be configured to receive data in the form of a continuous data stream, which may include an event stream 828 of real-time events and / or event updates 830, which may be continuous or infinite in nature without a clear end. Examples of applications that generate continuous data may include, for example, sensor data applications, financial stock ticker boards, network performance measurement tools (e.g., network monitoring and traffic management applications), clickstream analysis tools, automobile traffic monitoring, and the like.

[0151] The communications subsystem 824 may also be configured to communicate data from the computer system 800 to other computer systems or networks. This data may be communicated in a variety of different forms (such as structured and / or unstructured data feeds 826, event streams 828, event updates 830, etc.) to one or more databases that may be in communication with one or more streaming data source computers coupled to the computer system 800.

[0152] Computer system 800 can be one of a variety of types, including a handheld portable device (e.g., an iPhone® mobile phone, an iPad® computing tablet, a PDA), a wearable device (e.g., a Google Glass® head mounted display), a personal computer, a workstation, a mainframe, a kiosk, a server rack, or other data processing system. Due to the ever-changing nature of computers and networks, the description of computer system 800 shown in FIG. 8 is intended as an example only. Many other configurations are possible having more or fewer components than the system shown in FIG. 8. Based on the disclosure and teachings herein, one of ordinary skill in the art will appreciate other aspects and / or methods for implementing various embodiments.

[0153] Although specific embodiments have been described, various modifications, variations, alternative configurations, and equivalents are possible. The embodiments are not limited to operation in a particular specific data processing environment, but can freely operate in multiple data processing environments. Furthermore, while specific embodiments have been described using a particular sequence of transactions and steps, it should be apparent to one skilled in the art that this is not intended to be limiting. Although some flow charts describe operations as sequential processes, many of these operations may be performed in parallel or simultaneously. Also, the order of operations may be rearranged. A process may have additional steps not included in the drawings. Various features and aspects of the above-described embodiments may be used individually or together.

[0154] Additionally, while certain embodiments have been described using particular combinations of hardware and software, it should be recognized that other combinations of hardware and software are possible. Certain embodiments may be implemented exclusively in hardware, exclusively in software, or using a combination thereof. The various processes described herein may be implemented on the same processor, or on different processors in any combination.

[0155] Although a device, system, component, or module has been described as being configured to perform particular operations or functions, such configuration may be achieved, for example, by designing an electronic circuit to perform the operations, by programming a programmable electronic circuit (such as a microprocessor) to perform the operations (such as executing computer instructions or code), or by a processor or core being programmed to execute code or instructions stored on a non-transitory memory medium, or any combination thereof. Processes may communicate using a variety of techniques (including, but not limited to, conventional techniques for inter-process communication), different process pairs may use different techniques, and the same process pair may use different techniques at different times.

[0156] Specific details are provided in the present disclosure to allow the embodiments to be fully understood. However, the embodiments can be practiced without these specific details. For example, well-known circuits, processes, algorithms, structures and techniques are shown without unnecessary detail to avoid obscuring the embodiments. This description provides only exemplary embodiments and is not intended to limit the scope, applicability or configuration of other embodiments. Rather, the above description of the embodiments will provide those skilled in the art with an enabling description for implementing various embodiments. Various changes may be made in the function and arrangement of elements.

[0157] Thus, the specification and drawings are to be regarded in an illustrative rather than restrictive sense. It will be apparent, however, that additions, subtractions, deletions and other modifications and alterations may be made without departing from the broader spirit and scope of the appended claims. Accordingly, although specific embodiments have been described, these are not intended to be limiting. Various modifications and equivalents are within the scope of the following claims. These modifications include any relevant combination of the disclosed features. In summary, the disclosed features are summarized as follows:

[0158] Configuration 1: According to an embodiment, a computer-implemented method is provided, comprising: a dialogue system receiving an oral utterance from a user; the dialogue system processing the oral utterance to identify a word for disambiguation; the dialogue system determining a context level for the word for disambiguation from among a plurality of predefined context levels; and the dialogue system identifying a value for the word using a database based on the determined context level, the database storing a plurality of values ​​for the user in association with the context level; the method further comprises the dialogue system using the identified value to disambiguate the word.

[0159] Configuration 2: In a particular aspect of the above method, the method further includes a step of the dialogue system generating a logical form of the oral utterance based on the disambiguated words, a step of the dialogue system generating a response based on the logical form, and a step of the dialogue system outputting the response to the user.

[0160] Configuration 3: In a particular aspect of the above method, the method further includes a step in which the dialogue system identifies a stored execution result from the database based on the logical form, and the response is further generated based on the execution result.

[0161] Configuration 4: In a particular aspect of the above method, the method further includes a step in which the dialogue system stores the representation of the oral utterance, the logical form and the response in the database.

[0162] Configuration 5: In a particular aspect of the above method, the step of identifying the value includes the steps of selecting the database for the context level from among a plurality of context level-based databases based on the determined context level, and querying the selected database using an identifier of the user and the word to identify the value.

[0163] Configuration 6: In a particular aspect of the above method, the method further includes a step in which the dialogue system identifies stored data from the database regarding a plurality of previous interactions with the user, and analyzes the identified data to calculate the value.

[0164] Configuration 7: In a particular aspect of the above method, the plurality of predefined context levels include a current context, a short-term context, a medium-term context and a long-term context.

[0165] Configuration 8: According to some embodiments, a non-transitory computer readable memory is provided, the non-transitory computer readable memory storing a plurality of instructions executable by one or more processors, the plurality of instructions comprising instructions that when executed by the one or more processors cause the one or more processors to perform a process, the process comprising receiving a verbal utterance from a user, processing the verbal utterance to identify a word for disambiguation, determining a context level for the word for disambiguation from among a plurality of predefined context levels, and identifying a value for the word using a database based on the determined context level, the database storing a plurality of values ​​for the user in association with the context level, the process further comprising disambiguating the word using the identified value.

[0166] Configuration 9: In a particular aspect of the non-transitory computer-readable memory, the process further includes generating a logical form of the oral utterance based on the disambiguated word, preparing a response based on the logical form, and outputting the response to the user.

[0167] Configuration 10: In a particular aspect of the non-transitory computer-readable memory, the process further includes identifying a stored execution result from the database based on the logical format, and the response is further generated based on the execution result.

[0168] Configuration 11: In a particular aspect of the non-transitory computer-readable memory, the process further comprises storing the representation of the verbal utterance, the logical form and the response in the database.

[0169] Configuration 12: In a particular aspect of the non-transitory computer readable memory, the step of identifying the value includes the steps of selecting the database for the context level from among a plurality of context level-based databases based on the determined context level, and querying the selected database using an identifier of the user and the word to identify the value.

[0170] Configuration 13: In a particular aspect of the non-transitory computer-readable memory, the process further includes identifying stored data from the database for multiple previous interactions with the user, and analyzing the identified data to calculate the value.

[0171] Configuration 14: In a particular aspect of the non-transitory computer-readable memory, the plurality of predefined context levels include an immediate context, a short-term context, a medium-term context, and a long-term context.

[0172] Configuration 15: According to some embodiments, a system is provided, the system comprising one or more processors and a memory coupled to the one or more processors, the memory storing a plurality of instructions executable by the one or more processors, the plurality of instructions comprising instructions that when executed by the one or more processors cause the one or more processors to perform a process, the process comprising receiving a verbal utterance from a user, processing the verbal utterance to identify a word for disambiguation, determining a context level for the word for disambiguation from among a plurality of predefined context levels, and identifying a value for the word using a database based on the determined context level, the database storing a plurality of values ​​for the user in association with the context level, the process further comprising disambiguating the word using the identified value.

[0173] Configuration 16: In a particular aspect of the system, the process further includes the steps of generating a logical form of the oral utterance based on the disambiguated words, preparing a response based on the logical form, and outputting the response to the user.

[0174] Configuration 17: In a particular aspect of the above system, the process further includes a step of identifying stored execution results from the database based on the logical format, and the response is further generated based on the execution results.

[0175] Configuration 18: In a particular aspect of the above system, the process further comprises storing the representation of the oral utterance, the logical form and the response in the database.

[0176] Configuration 19: In a particular aspect of the above system, the step of identifying the value includes the steps of selecting the database for the context level from among a plurality of context level-based databases based on the determined context level, and querying the selected database using an identifier of the user and the word to identify the value.

[0177] Configuration 20: In a particular aspect of the system, the process further comprises identifying stored data from the database for a plurality of previous interactions with the user, and analyzing the identified data to calculate the value.

[0178] Configuration 21: According to some embodiments, a system is provided, comprising: means for receiving an oral utterance from a user, means for processing the oral utterance to identify a word for disambiguation, means for determining a context level for the word for disambiguation from among a plurality of predefined context levels, means for preparing a response according to the disambiguated word based on the context level, and means for outputting the response to the user.

[0179] Configuration 22: In a particular aspect of the above system, the system further comprises means for identifying a value of the word using a database based on the determined context level, the database storing a plurality of values ​​for the user in association with the context level, and the system further comprises means for disambiguating the word using the identified value, means for generating a logical form of the oral utterance based on the disambiguated word, and means for preparing the response based on the logical form.

[0180] Configuration 23: In a particular aspect of the above system, the system further comprises means for identifying a stored execution result from the database based on the logical format, and the response is further generated based on the execution result.

[0181] Configuration 24: In a particular aspect of the system, the system further comprises means for storing the representation of the oral utterance, the logical form and the response in the database.

[0182] Configuration 25: In a particular aspect of the above system, the step of identifying the value includes the steps of selecting the database for the context level from among a plurality of context level-based databases based on the determined context level, and querying the selected database using an identifier of the user and the word to identify the value.

[0183] Configuration 26: In a particular aspect of the above system, the system further comprises means for identifying from the database stored data for a plurality of previous interactions with the user, and means for analyzing the identified data to calculate the value.

Claims

1. 1. A method comprising: receiving an oral utterance from a user by a dialogue system; processing the spoken utterance by the dialogue system to identify words for disambiguation; the dialogue system determining a context level for the word for disambiguation from among a plurality of predefined context levels; and identifying a value for the word using a database based on the determined context level, the database storing a plurality of values ​​for the user associated with the context level, the method further comprising: the dialogue system using the identified values ​​to disambiguate the words; The step of identifying the value comprises: selecting the database of the context level from among a plurality of context level-based databases based on the determined context level; and querying the selected database using the user's identifier and the word to identify the value.

2. 1. A method comprising: receiving an oral utterance from a user by a dialogue system; processing the spoken utterance by the dialogue system to identify words for disambiguation; the dialogue system determining a context level for the word for disambiguation from among a plurality of predefined context levels; and identifying a value for the word using a database based on the determined context level, the database storing a plurality of values ​​for the user associated with the context level, the method further comprising: the dialogue system using the identified values ​​to disambiguate the words; said dialogue system identifying from said database stored data relating to a number of previous dialogues with said user; and analyzing the identified data to calculate the value.

3. 1. A method comprising: receiving an oral utterance from a user by a dialogue system; processing the spoken utterance by the dialogue system to identify words for disambiguation; the dialogue system determining a context level for the word for disambiguation from among a plurality of predefined context levels; and identifying a value for the word using a database based on the determined context level, the database storing a plurality of values ​​for the user associated with the context level, the method further comprising: the dialogue system using the identified values ​​to disambiguate the words; The method, wherein the plurality of predefined context levels includes an immediate context, a short term context, a medium term context and a long term context.

4. generating a logical form of the spoken utterance based on the disambiguated words by the dialogue system; said dialogue system generating a response based on said logical form; The method according to any one of claims 1 to 3, further comprising the step of the dialogue system outputting the response to the user.

5. The dialogue system further comprises identifying a stored execution result from the database based on the logical form; The method of claim 4 , wherein the response is further generated based on the execution result.

6. The method according to claim 4 or 5, further comprising the step of the dialogue system storing the representation of the verbal utterance, the logical form and the response in the database.

7. A program for causing one or more processors to execute the method according to any one of claims 1 to 6.

8. A memory storing the program according to claim 7; A system comprising: a processor for executing the program.

9. 1. A dialogue system, comprising: means for receiving an oral utterance from a user; means for processing the spoken utterance to identify words for disambiguation; means for determining a context level for the word for disambiguation from among a plurality of predefined context levels; means for preparing a response according to the disambiguated words based on the context level; means for outputting the response to the user; means for identifying a value for the word based on the determined context level using a database storing a plurality of values ​​for the user associated with the context level; means for disambiguating said term using said identified values; means for generating a logical form of the spoken utterance based on the disambiguated words; means for preparing the response based on the logical form; The means for identifying the value comprises: selecting the database of the context level from among a plurality of context level-based databases based on the determined context level; A dialogue system that queries the selected database using the user's identifier and the term to identify the value.

10. 1. A dialogue system, comprising: means for receiving an oral utterance from a user; means for processing the spoken utterance to identify words for disambiguation; means for determining a context level for the word for disambiguation from among a plurality of predefined context levels; means for preparing a response according to the disambiguated words based on the context level; means for outputting the response to the user; means for identifying a value for the word based on the determined context level using a database storing a plurality of values ​​for the user associated with the context level; means for disambiguating said term using said identified values; means for generating a logical form of the spoken utterance based on the disambiguated words; means for preparing the response based on the logical form; means for identifying from a database stored data regarding a plurality of previous interactions with the user; and means for analyzing the identified data to calculate the value.

11. means for identifying stored execution results from the database based on the logical form; The system of claim 9 or 10, wherein the response is further generated based on the execution result.

12. 11. The system of claim 9 or 10, further comprising means for storing the representation of the verbal utterance, the logical form and the response in the database.

Citation Information

Patent Citations

  • Using context information to facilitate processing of commands in virtual assistant

    JP2017139004A

  • System for communication and collaboration

    US20070011155A1

  • System and method for providing a natural language voice user interface in an integrated voice navigation services environment

    US20090150156A1

  • Selecting next user prompt types in an intelligent online personal assistant multi-turn dialog

    US20180052913A1