US20160260029A1 - Example-driven machine learning scheme for dialog system engines - Google Patents
Example-driven machine learning scheme for dialog system engines Download PDFInfo
- Publication number
- US20160260029A1 US20160260029A1 US15/062,151 US201615062151A US2016260029A1 US 20160260029 A1 US20160260029 A1 US 20160260029A1 US 201615062151 A US201615062151 A US 201615062151A US 2016260029 A1 US2016260029 A1 US 2016260029A1
- Authority
- US
- United States
- Prior art keywords
- dialog system
- user
- dialog
- user request
- server
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Abandoned
Links
Images
Classifications
-
- G06N99/005—
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N5/00—Computing arrangements using knowledge-based models
- G06N5/02—Knowledge representation; Symbolic representation
- G06N5/022—Knowledge engineering; Knowledge acquisition
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/30—Semantic analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N5/00—Computing arrangements using knowledge-based models
- G06N5/04—Inference or reasoning models
- G06N5/046—Forward inferencing; Production systems
Definitions
- This disclosure relates generally to dialog systems. More particularly, this disclosure relates to a platform for creating, maintaining, and managing custom dialog system engines.
- dialog systems are widely used in the information technology industry, especially in the form of mobile applications for wireless telephones and tablet computers.
- a dialog system refers to a computer-based agent having a human-centric interface for accessing, processing, managing, and delivering information.
- Dialog systems are also known as chat information systems, spoken dialog systems, conversational agents, chatter robots, chatterbots, chatbots, chat agents, digital personal assistants, automated online assistants, and so forth. All these terms are within the scope of the present disclosure and referred to as a “dialog system” for simplicity.
- a dialog system interacts with its users in natural language to simulate an intelligent conversation and provide personalized assistance to the users.
- a user may generate requests to the dialog system in the form of conversational questions, such as “Where is the nearest hotel?” or “What is the weather like in Alexandria?” and receive corresponding answers from the dialog system in the form of audio and/or displayable messages.
- the users may also provide voice commands to the dialog system requesting the performance of certain functions including, for example, generating e-mails, making phone calls, searching particular information, acquiring data, navigating, requesting notifications or reminders, and so forth.
- dialog systems popular as they assist users, especially holders of portable electronic devices such as smart phones, cellular phones, tablet computers, gaming consoles, and the like.
- dialog system engine which is responsible for receiving user voice or text inputs, interpreting them, generating corresponding responses to user inputs, and delivering these responses to the user.
- Interpreting the inputs and finding proper responses can be complicated and not trivial because dialog systems employ artificial intelligence. Accordingly, many software developers can struggle to develop a well-operating dialog system enabled to handle a wide range of user requests. It can also be expensive for software or engineering companies to create and integrate dialog systems into new software or hardware products.
- a further difficulty is to create a comprehensive knowledge database for use by a dialog system such that it can accurately interpret various dialects, specific expressions, or user inquiries input in a way not generally understandable out of context.
- the present technology provides for an example-driven machine learning scheme for creating custom dialog system engines and one or more knowledge databases associated therewith.
- a system and a method for example-driven machine learning may commence with maintaining a plurality of dialog system rules within a dialog system engine.
- the dialog system rules can stipulate instructions for response of the system to particular user requests received from the dialog system interface.
- the method can continue with maintaining a knowledge database that includes one or more context expressions associated with at least one dialog system rule.
- Context expressions may relate to terms, keywords, phrases, variables, and/or speech expressions associated with at least one “entity” and/or at least one “intent” of a particular dialog system rule.
- the method can further include receiving an exemplary phrase and retrieving certain linguistic elements from the exemplary phrase. It can be determined that one of the linguistic elements is directed to at least one of a plurality of intent objects or a plurality of entity objects of certain dialog system rules. The linguistic element in association with the at least one dialog system rule may be added to the knowledge database. Thus, machine learning using exemplary phrases can occur.
- user requests acquired by the dialog system interface can be received.
- User requests can optionally be pre-processed by the dialog system interface.
- the dialog system interface can recognize spoken words and transform speech user input into a text-based user input.
- user requests can be accompanied with attributes related to current conditions including, for example, current geographical location of user, currently used software or mobile application, user motions, user movement direction, date, time, weather information, and so forth.
- the server or the dialog system interface may assign a particular dialog context label to the user request.
- the user request can be processed by applying one of dialog system rules if the user request is properly interpreted by the server.
- one or more statistical or heuristic matching algorithms can be applied to the user request. Otherwise, if the server determines that the user request cannot be interpreted out of context if taken in isolation, a context expression (stored in the knowledge database) that is associated with at least a portion of the user request and/or the dialog context label can be identified. The method can continue with selecting, from the plurality of dialog system rules, a particular dialog system rule that is associated with the identified context expression or the dialog context label, depending on an implementation.
- a response to the user request can be generated by applying the selected dialog system rule to at least a portion of the user request.
- the response can be transferred to or presented via the dialog system interface to the user.
- the system for example-driven machine learning may include a dialog system engine running on a server and a dialog system interface running on a client side.
- the system for example-driven machine learning allows software or mobile application developers (hereinafter simply referred to as “developers”) to create custom dialog system engines including specific dialog system definitions or rules and associate them with custom knowledge database elements.
- the system allows creating and/or populating (editing, managing) custom knowledge databases by developers.
- the population of custom knowledge databases can occur when developers or even end users provide example phrases or exemplary phrases. Upon receipt of such exemplary phrases, the system retrieves from them one or more linguistic elements (and/or one or more linguistic patterns).
- the system determines that each linguistic element is directed or associated with a particular dialog system rule; namely, each linguistic element is associated with a particular intent and/or entity of a dialog system rule. Further, the system may add these linguistic elements to the knowledge database and associate them with this particular dialog system rule.
- the system is configured to provide markup language of linguistic elements for review prior to adding them to the knowledge database.
- the developers can ensure that linguistic elements have been correctly identified, interpreted, or associated.
- the developers can correctly identify linguistic elements or amend their association. For example, if a particular linguistic element, such as “yesterday,” can be associated with several dialog system rule elements, such as “Date” entity, “Time Period” entity, or “Song Title” entity, then the developers can select a particular dialog system rule element to which this linguistic element should relate. For these ends, the system can display all appropriate dialog system rules and their elements so that the developer can select a desired one. Otherwise, the linguistic element “yesterday” can be assigned to a default dialog system rule (e.g., the most common dialog system rule or first in a list rule). The developers can change this assignment anytime later or make other changes.
- a default dialog system rule e.g., the most common dialog system rule or first in a list rule.
- FIG. 1 illustrates an environment within which systems and methods for example-driven machine learning can be implemented, in accordance with some embodiments.
- FIG. 2 is a block diagram showing various modules of a dialog system engine, in accordance with certain embodiments.
- FIG. 3 is a flow chart illustrating a method for example-driven machine learning, in accordance with some example embodiments.
- FIG. 4 shows the process of manual creation of entities via the developer interface, in accordance with some example embodiments.
- FIG. 5 shows the process of manual creation of intents for a dialog system rule, in accordance with some example embodiments.
- FIG. 6 shows an example rule for receiving a weather forecast, in accordance with some example embodiments.
- FIG. 7 shows a process of testing dialog system elements by developers, in accordance with some example embodiments.
- FIG. 8 shows an example process flow of a dialog system engine, in accordance with some example embodiments.
- FIG. 9 shows a process flow diagram for the method of example-driven machine learning for a dialog system engine, in accordance with some example embodiments.
- FIG. 10 is a high-level block diagram illustrating an example user device suitable for implementing the methods described herein.
- FIG. 11 is a high-level block diagram illustrating an example system suitable for implementing the methods described herein.
- FIGS. 12-16 show various screenshots of developer interface 112 illustrating creation of entities.
- the system for example-driven machine learning enables software or mobile application developers to create custom dialog system engines that operate as a backend service for dialog system interfaces, which can be an integral part of software applications, mobile applications, websites, or web services.
- This disclosure is also directed to methods for enhancing a knowledge database used by dialog system engines through automatic processing of expression examples using machine learning schemes, statistical or heuristic algorithms, and/or pattern mining schemes.
- Present teachings may be implemented using a variety of technologies.
- the methods described herein may be implemented in software executing on a computer system or in hardware utilizing either a combination of microprocessors or other specially designed application-specific integrated circuits (ASICs), programmable logic devices, or various combinations thereof.
- the methods described herein may be implemented by a series of computer-executable instructions residing on a transitory or non-transitory storage medium such as a disk drive or computer-readable medium.
- a computer e.g., a desktop computer, tablet computer, laptop computer
- game console handheld gaming device
- cellular phone smart phone
- smart television system and so forth.
- application developer refers to one or more of the following: software developer, mobile application developer, software engineer, software owner, mobile application owner, software manager, mobile application manager, dialog system owner, and so forth.
- An application developer develops and/or manages a dialog system engine and/or dialog system interface.
- dialog system refers to one or more of the following: chat information system, spoken dialog system, conversational agent, chatter robot, chatterbot, chatbot, chat agent, digital personal assistant, automated online assistant, and so forth.
- Each dialog system includes a “dialog system interface” and “dialog system engine.” Each of these elements can be customized by the application developer.
- dialog system interface refers to a computer-human interface, which is configured to acquire user inputs in the form of audio messages or text messages, and deliver dialog system responses to the users in the form of audio messages or displayable messages.
- a dialog system interface may be implemented as a widget employed to or integrated with a software application, mobile application, middleware application, firmware application, website, and web service, to provide a computer-human interface for acquiring user requests and delivering dialog system outputs to the users.
- dialog system engine refers to a software application configured to process user inputs and to generate responses thereto.
- dialog system engine refers to a computer-enabled or processor-enabled system for supporting an associated dialog system interface by processing user requests and generating corresponding responses thereto.
- the present technology provides for a system for example-driven machine learning enabling creation of custom dialog system engines serving as backend services for custom dialog system interfaces.
- the present technology also provides for automatic enhancement of a knowledge database for custom dialog system engines based on example user requests provided by developers.
- the system allows for developers and engineers to create custom dialog system engines that will support frontend dialog system interfaces. For example, if a software developer wants to integrate dialog system functionality into a mobile application as an additional feature, the developer can use the system to create and deploy a custom dialog system engine and link it with the mobile application.
- the mobile application can have only the dialog system interface.
- the dialog system interface can be activated by a user when he interacts with the mobile application. The user can make inquiries via the dialog system interface in the form of voice inputs or text inputs.
- the dialog system interface Upon receipt of a user inquiry, the dialog system interface can transfer it with little or no pre-processing to the linked custom dialog system engine.
- the dialog system engine processes the received user inquiry, interprets it, and generates a response to the inquiry based on predetermined rules and settings. The response is delivered back to the dialog system interface for further visual and/or audio presentation to the user.
- Dialog system interfaces can be integrated into or be an integral part of a wide range of software applications running on a client device, such as personal computer (PC) or cellular phone, or on a server so that the dialog systems become a part of a website or web service.
- Dialog system engines can be implemented on a server such that their functionalities can be accessible to the dialog system interfaces over a network, for example the Internet, cellular networks, or any other communications means.
- a dialog system interfaces and dialog system engine run on a single device (i.e., a PC or mobile application).
- Each dialog system engine may include a plurality of dialog system rules. Further, each of the dialog system rules includes dialog system elements such as “intents” and “entities,” and may also include some variables, links, parameters, and so forth. Accordingly, when a developer creates a dialog system engine, he creates and/or edits a plurality of intents and a plurality of entities and associates them with each other. In some embodiments, developers can use ready-to-use libraries of intents or entities, or developers can create intents and entities themselves. In some embodiments, intents and entities can be automatically generated when the developer provides example phrases or example dialogs that relate to possible use requests.
- FIG. 1 shows a high-level block diagram of example system environment 100 suitable for practicing the present technologies.
- a system 110 for example-driven machine learning to create and maintain dialog system engines 120 .
- system 110 includes developer interface 112 for online creation and managing of dialog system engines and backend service 114 for maintaining and running the dialog system engines 120 .
- Developer interface 112 may include a graphical user interface (GUI) embedded into a webpage and accessible by developers via the Internet.
- GUI graphical user interface
- developer interface 112 may be implemented as a software application such as a downloadable software application or any other software, middleware, or firmware running on or accessible from an electronic device such as a computer.
- GUI graphical user interface
- FIG. 1 developer interface 112 is realized as a web accessible GUI as will be described below. For simplicity, this disclosure is limited to such embodiments where developer interface 112 is a server based solution so that it is accessible via the Internet.
- developer interface 112 enables developers through a number of GUI tools to create one or more dialog system engines 120 .
- backend service 114 is responsible for maintaining and running custom dialog system engines 120 that are created, for example, by or with the help of developer interface 112 .
- Backend service 114 may operate as a web service providing functionality to custom dialog systems by enabling their dialog system interfaces to interact with dialog system engines 120 maintained at backend service 114 .
- dialog system interfaces 130 can be provided on a client side 140 .
- Dialog system interfaces 130 may be as simple as a GUI enabling users to make inquiries, which are then delivered to backend service 114 for processing by corresponding dialog system engines 120 , and to receive responses to the inquires generated by dialog system engines 120 .
- Dialog system interfaces 130 may be implemented as stand-alone software applications or they can be an integral part of a software application, web service, website, and the like.
- client side 140 may refer to, but not limited to, a user device, terminal, computing device (e.g., laptop computer, tablet computer, desktop computer), cellular phone, smart phone, personal digital assistant (PDA), gaming console, remote control, multimedia system, smart television device, set-top box, infotainment system, in-vehicle computing device, informational kiosk, robot, and so forth.
- computing device e.g., laptop computer, tablet computer, desktop computer
- PDA personal digital assistant
- gaming console e.g., gaming console, remote control, multimedia system, smart television device, set-top box, infotainment system, in-vehicle computing device, informational kiosk, robot, and so forth.
- dialog system interfaces 130 may be implemented as software, middleware, or firmware installed on such devices.
- client side 140 may refer to a networked or online solution such as a server, hosting service, web service, website, cloud service, and so forth.
- dialog system interface 130 can be a widget or GUI provided on one or more web pages enabling end users to make inquires and get responses thereto. This option is suitable for those instances when a developer, for example, wants to integrate a dialog system into his website to provide enhanced customer service.
- Communications network 150 may include one or more of the Internet, intranet, cellular network, LAN, WAN, IEEE 802.11 based network, and so forth.
- FIG. 1 also shows various third party web resources/web services 160 provided via one or more web servers.
- These third party web resources/web services 160 can provide information of various types to dialog system engines 120 or dialog system interfaces 130 as a part of a response to a user request.
- web resources/web services 160 may refer to email services, weather services, navigation services, and the like. Accordingly, if a user makes the inquiry “What is the weather like today?,” such information may be automatically acquired by dialog system engine 120 from one or more third party web resources/web services 160 and then integrated into a dialog system response to be delivered to the end user.
- FIG. 2 shows a high-level architecture of exemplary dialog system engine 120 , according to an example embodiment. It should be noted that every module of dialog system engine 120 or associated architecture includes hardware components, software components, or a combination thereof. Dialog system engine 120 may be embedded or installed in a user device or server, or may be presented as a cloud computing module and/or a distributed computing module.
- dialog system engine 120 includes optional Automatic Speech Recognizer (ASR) 210 configured to receive and process speech-based user inputs into a sequence of parameter vectors. ASR 210 further converts the sequence of parameter vectors into a recognized input (i.e., a textual input having one or more words, phrases, or sentences). ASR 210 includes one or more speech recognizers such as a pattern-based speech recognizer, free-dictation recognizer, address book based recognizer, dynamically created recognizer, and so forth. In some embodiments, ASR 210 is used not in dialog system engine 120 , but in dialog system interface 130 .
- ASR Automatic Speech Recognizer
- dialog system engine 120 can include NLP module 220 for understanding spoken language input.
- NLP module 220 may disassemble and parse the recognized input to produce utterances, which are then analyzed utilizing, for example, morphological analysis, part-of-speech tagging, shallow parsing, and the like. NLP module 220 may then map recognized input or its parts to meaning representations.
- Dialog system engine 120 further includes dialog manager 230 , which coordinates the activity of all components, controls dialog flows, and communicates with external applications, devices, services, or resources.
- Dialog manager 230 may play many roles, which include discourse analysis, knowledge database query, and system action prediction based on the discourse context.
- dialog manager 230 may contact one or more task managers (not shown) that may have knowledge of specific task domains.
- dialog manager 230 may communicate with various computing, logic, or storage resources 240 , which may include, for example, a content storage, rules database, recommendation database, push notification database, context database, electronic address book, email or text agents, dialog history database, disparate knowledge databases, map database, points of interest database, geographical location determiner, clock, wireless network detector, search engines, social networking websites, blogging websites, news feeds services, and many more.
- computational or storage resources 240 include one or more web resources/services 160 discussed above.
- Dialog manager 230 may employ multiple disparate approaches to generate outputs in response to recognized inputs. Some approaches include the use of predetermined rules, statistical analysis, machine-learning algorithms (e.g., neural networks), heuristic analysis, and so forth. Dialog manager 230 is one of the central components of Dialog System Engine 120 . The major role of dialog manager 230 is to select the correct system actions based on observed evidences and inferred dialog states from the results of NLP (e.g., dialog act, user goal, and discourse history). In addition, dialog manager 230 should be able to handle errors when the user input has ASR and NLP errors caused by noises or unexpected inputs.
- NLP e.g., dialog act, user goal, and discourse history
- Dialog system engine 120 further includes optional output renderer 250 for transforming the output of dialog manager 230 into a form suitable for providing to the user.
- output renderer 250 may employ a text-to-speech engine or may contact a pre-recorded audio database to generate an audio message corresponding to the output of dialog manager 230 .
- output renderer 250 may present or cause to present the output of dialog manager 230 as a text message, image, or video message for further displaying on a display screen of a user device.
- output renderer 250 is provided not in dialog system engine 120 , but on client side 140 .
- dialog system engine 120 includes one or more dialog system rules maintained in at least one rule database 260 . Dialog system rules may also be associated with dialog system elements discussed below.
- Dialog system engine 120 may also include or be associated with one or more knowledge databases 270 , which maintain a plurality of context description elements such as lists of terms, keywords, phrases, expressions, context variables, context parameters (e.g., geolocation, system rate, GUI, etc.) associated with one or more dialog system rules.
- knowledge databases 270 include information supporting the process of determining conversational or environmental context for particular user requests.
- knowledge database 270 may store pre-built lexical data including, but not limited to, synonyms (words, phrases).
- knowledge database 270 may also include pre-built knowledge databases such as WordNet or the like.
- Dialog system engine 120 may also include or be associated with one or more statistics and usage databases 280 , which are configured to aggregate statistical or usage information associated with the operation of dialog system engine 120 and/or associated dialog system interface 130 and/or associated mobile or software applications.
- statistics and usage database 280 may accumulate dialog system logs, which can be later used for optimization of dialog system rules, dialog system responding schemes, training machine-learning algorithms if employed by the dialog system engine, and so forth.
- developer interface 112 can provide one or more GUIs having a number of tools enabling developers to create and customize one or more dialog system elements, which serve as a basis for a custom dialog system engine.
- dialog system elements include “entities” and “intents.”
- entities may refer to a number of objects having the same or similar characteristics.
- entities are lists of terms and/or keywords defining objects of one class.
- an entity may refer to a keyword and a set of its synonyms.
- an entity may refer to a keyword and a set of its definitions.
- an entity may refer to a list (e.g., a list of cities, list of names, list of titles, list of brands, list of street names, and so forth).
- each entity can have a title.
- one entity can be titled as “city” and it will contain a list of cities such as Alexandria, Arlington, Boston, and so forth.
- an entity can be titled as a keyword and it can contain synonyms and/or definitions of this keyword.
- the entity called “music” may include the terms of song, singer, singing, musician, and so forth.
- the entity called “artist” may include a list of music bands, music ensembles, or music artists.
- the entity called “Beatles” may include a list of possible synonyms, such as “The Beatles,” “Beatles,” “Fab Four,” “Liverpool Legends,” “John Lennon,” and so forth.
- there can be an entity called “Artist” which may include various artist names, artist name synonyms, music band names, and so forth.
- dialog system engines may include a number of default, pre-configured entities and/or intents. These can include common types of entities or intents related to such concepts as time, date, location, and the like. For example, when a developer creates a new dialog system engine, it may already have a few entities of common types such as a “@System.Date” entity. This entity covers linguistic constructs related to particular dates and may include the following terms: “today,” “tomorrow,” “next week,” “January 1,” “January 1 of next year,” “next Monday,” “the following Monday,” and so forth.
- each intent of a dialog system rule includes a dialog system interaction scheme, which provides a particular relation between at least one user request and at least one dialog system linguistic response or fulfilment response.
- the dialog system interaction scheme can be represented by a rule based on a relationship between a particular action and at least one entity.
- Actions generally relate to formalized software objects such as JSON (JavaScript Object Notation) objects causing at least one processor to generate linguistic or fulfilment responses associated with at least one entity.
- each intent can be represented as a logical relation between at least one action and at least one entity object, for example, as follows:
- the procedures a) through d) mean that a particular Action or several Actions shall be performed by client side 140 and/or dialog system interface 130 with respect to a predetermined Entity or several Entities.
- one intent may be represented as “Play @Artist,” where @Artist is a developer-defined entity containing a set of artists.
- the intent orders the dialog system engine 120 to activate the playback of at least one Beatles song, depending on a context.
- the procedures e) through h) mean that particular information in the form of text is provided with respect to a particular Entity.
- the user request “Create a meeting with John at 1 p.m. tomorrow, please” may be presented as the following pattern: create a meeting @sys.any:subject @sys.date-time.
- @sys.any:subject refers to an entity associated with a particular name
- @sys.date-time refers to an entity associated with time and date
- the phrase “Create a meeting” refers to a predetermined action to be performed by a dialog system interface or dialog system engine using a certain mobile application, software application, or web service.
- a dialog system rule causes generation of linguistic response and/or fulfilment response as an answer to a user request.
- linguistic response may include particularized content deliverable as an audio message or displayable message.
- Fulfilment responses refer to particular processor-executable instructions for one or more software applications, middleware, firmware, web service, and the like that cause implementation of a particular action.
- Some examples of fulfilment responses may include scheduling an event in a calendar mobile application, writing and sending a text message or email, searching for content at a web search service, building a route in a navigational software application, and so forth.
- at least some linguistic responses and/or fulfilment responses can be configured by developers.
- at least some linguistic responses and/or fulfilment responses can be pre-configured and be available as default responses.
- developers can provide not “entities” and “intents,” but just example requests to illustrate intents and entities.
- system 110 automatically determines, using machine-learning techniques or statistical/heuristic algorithms, what “entities” and “intents” are implied in example user requests and creates corresponding rules. For example, a developer may simply provide example requests, such as “Play Beatles” and “I'd like to listen to Madonna,” and the system 110 can match “Beatles” and “Madonna” to existing entities (platform's or user's) and generate corresponding “[Action] @[Entity]” rules automatically.
- dialog system rules also referred to as dialog system elements
- dialog system rules enable custom dialog system engines to perform certain actions or generate certain outputs in response to a wide range of end user inputs.
- FIG. 3 is a process flow diagram showing method 300 for creating custom dialog system elements (rules) using system 110 , according to an example embodiment.
- the method 300 may be performed by processing logic that may comprise hardware (e.g., decision-making logic, dedicated logic, programmable logic, and microcode), software (such as software run on a general-purpose computer system or a dedicated machine), or a combination of both.
- the processing logic refers to one or more components of system 110 .
- below recited steps of method 300 may be implemented in an order different than described and shown in FIG. 3 .
- method 300 may have additional steps not shown herein, but which can be evident for those skilled in the art from the present disclosure.
- Method 300 may also have fewer steps than outlined below and shown in FIG. 3 .
- Method 300 commences at operation 305 when a developer registers with the system 110 .
- the developer interacts with the developer interface 112 using a plurality of online tools or widgets.
- the registration may include creating a developer profile, which can be maintained by system 110 .
- the developer profile may virtually link (associate) a custom dialog system engine 120 of this developer and one or more dialog system interfaces 130 deployed on the client side 140 .
- a developer profile may include multiple agents (such as custom dialog system engines) and each of them could be integrated into a client application with the help of a Software Development Kit (SDK). Accordingly, there can be multiple end-points for user input (dialog system interfaces).
- SDK Software Development Kit
- the communication between dialog system engines 120 and dialog system interfaces 130 may include Application Programming Interface (API) codes, rules for interaction, destination addresses, and many more.
- API Application Programming Interface
- the system 110 receives, for example, via API, from the developer one or more entities and stores the same in one of the databases (e.g., rule database 260 ).
- the entities are not received, but created by the developer using web tools of developer interface 112 .
- entities are not created or received at all because some agents, dialog system engines, or dialog system engine rules may not have any entities.
- the system 110 receives, for example, via API, from the developer one or more intents and stores the same in one of the databases (e.g., rule database 260 ).
- the intents are not received, but created by the developer using tools of developer interface 112 .
- the intents, once created are associated with the entities, and together they form dialog system elements (custom rules enabling a dialog system engine to generate responses tailored for specific needs).
- the developer may first create intents, and then he can create entities, which are later associated with the intents. In other words, operations 310 and 315 can replace each other.
- Method 300 illustrates a set-up process for custom dialog system engine 120 .
- the set-up process includes creating of dialog system rules by developers using the system 110 . This process involves defining a set of entities, a set of intents, and association therebetween. Information related to intents and entities (e.g., context defining terms, keywords, phrases, variables, and/or expressions associated with certain dialog system rules or dialog system elements) can be stored in knowledge database 270 .
- intents and entities e.g., context defining terms, keywords, phrases, variables, and/or expressions associated with certain dialog system rules or dialog system elements
- FIGS. 4-7 illustrate various screenshots of developer interface 112 illustrating the creating of dialog system rules.
- FIG. 4 shows the process 400 of manually creating entities via the developer interface 112 .
- one set of entities may include definitions of geographical locations including city names such as “Atlanta,” “Belfast,” “Boston,” “Chicago,” “Detroit,” and so forth.
- another set of entities may include time definitions such as “today,” “tomorrow,” “next week,” “next Monday,” “October 1,” and the like. It shall be clear that knowledge database 270 may include multiple sets of entities each related to various activities.
- the entity related to city may be associated with multiple values, for example New York, Washington, Paris, and so forth.
- Each of the values may include a list of synonyms 410 and a singular reference value/canonical value 420 .
- a developer can manage (add, edit, delete) the values of an entity and the list of synonyms 410 for each value.
- FIG. 5 shows the process 500 of manually creating intents for a dialog system rule.
- Intents can be provided as multiple sets of linguistic elements such as words or phrases associated with particular actions.
- Some examples of intents associated with the action of playing multimedia content may include “Play,” “Start playback,” “Activate playing,” “Open,” and so forth.
- knowledge database 270 may also store multiple context words or phrases, such as “what about,” “and how is it in,” “and the same in,” “and what about,” and so forth, all associated with a particular dialog system rule. These context phrases can facilitate interpretation of user inputs.
- knowledge database 270 may also store pre-built lexical data including, but not limited to, synonyms (words, phrases).
- knowledge database 270 may also include pre-built knowledge databases such as WordNet or the like.
- FIG. 5 illustrates an intent including a multitude of user expressions 510 identified automatically from exemplary phrases or specified by a developer, for example, by adding a new user expressions using an Add control 520 .
- the system may provide a speech string or call a web service. Additionally, a developer can test the rule execution by entering a test phrase in an always-on test console 540 .
- FIG. 6 shows an example rule 600 for receiving a weather forecast.
- the rule 600 includes multiple user expressions 610 that can be used by the user to request a weather forecast, such as “what is the weather in,” “weather forecast for,” and so forth. Entities, such as city or date, in user expressions can be provided using an alias 620 (or placeholder). Aliases can be referenced in action 630 and in fulfillment 640 sections. A developer can manage user expressions, 610 , actions, and fulfillment parameters.
- New dialog system rules including intents and entities are stored in knowledge database 270 .
- One way to create new dialog system rules is a manual input of intents and entities, including specification of references to entities within intents.
- this approach may not be effective in certain instances and may have some disadvantages. For example, it can be very time consuming for developers to specify various natural language inputs to cover the wide range of inputs of which a certain user request could be made.
- the present technology addresses this problem by automatically creating dialog system rules by system 110 in response to receiving exemplary user requests from developers and/or analyzing requests from multiple dialog system users.
- Embodiments of this disclosure provide for knowledge database 270 to be automatically populated with certain additional terms, keywords, phrases, and/or expressions using machine-learning and/or pattern recognition techniques when developers input exemplary user requests that potentially could be used by end users in the course of interaction with dialog system.
- developers may provide exemplary phrases such as “What is the weather like in New York,” “What is the current temperature in Las Vegas,” “What is the forecast for Washington D.C.,” “How it is in Moscow,” “Do I need my umbrella tomorrow,” and so forth. These and other exemplary phrases can be provided via developer interface 112 and/or during the interaction of a developer or end user with dialog system engines 120 .
- system 110 retrieves from them one or more linguistic elements.
- one set of linguistic elements may refer to cities including New York, Las Vegas, Washington D.C., and Moscow.
- a second set of linguistic elements may refer to articles, prepositions, and postpositions such as “a,” “the,” “for,” and so forth.
- a third set of linguistic elements may refer to verbs and nouns defining weather context such as “how is it in,” “what is weather like in,” and so forth.
- system 110 associates sets of linguistic elements with particular dialog system rules or particular dialog system elements (entities or intents) and stores them in knowledge database 270 .
- the first set of linguistic elements can be associated with the “City” entity.
- the third set of linguistic elements can be associated with the “Weather” intent.
- dialog system rules can be automatically created by developers by providing exemplary phrases to system 110 .
- dialog system rules can also be created by users.
- This dialog system learning approach may be useful in those instances when the dialog system cannot properly address certain user requests.
- the users may instruct the dialog system to update its knowledge database 270 by introducing new intents or elements. For example, one user may instruct the dialog system to interpret the word “home” as New York City. This learning approach may affect all users or just those users that created such interpretations.
- system 110 when sets of linguistic elements are identified and retrieved from exemplary phrases input by developers as discussed above, system 110 generates a markup language of dialog system elements for review by the developers.
- the markup language may be presented in the following format [Weather] @[City].
- the GUI of developer interface 112 may show the markup language to developers and provide tools for its correction.
- input phrases can be shown as is with appropriate highlighting or labels. For example, the input phrase “What is the weather like in New York?” can be shown in the GUI of developer interface 112 , where the term “New York” can be highlighted and accompanied by a GUI showing that New York was identified as an entity @city.
- the developers can correct the markup language, for example, when system 110 for some reason incorrectly interprets the exemplary phrases or incorrectly identifies intents or entities.
- the developers may configure linguistic (lexical) or fulfilment responses to just create dialog system rules and create dialog system rules based on developer requests using the tools of developer interface 112 .
- a phrase may refer to a plurality of intents (or entities). For instance, when a developer provides an exemplary phrase “Send a message to John that I am going to be late,” the linguistic element “Send a message” may properly relate to several intents including a first intent to generate and send an email, a second intent to generate a text message and send it over a cellular network in the form of a short message service (SMS), a third intent to generate and send a communication over a messenger agent, or a fourth intent to generate and send a communication via a social media site.
- SMS short message service
- the developer can make changes to the markup language of interpreted exemplary phrase and indicate to which intent he wants this phrase to relate.
- This process can be as simple as checking boxes or making selections via the GUI of system 110 .
- the system 110 can associate such vague phrases as “Send a message” to a default intent, a first in a list of intents, a preferred intent, or all applicable intents. The developer is able to correct this selection at later time.
- lexical examples provided by the developer or user can be added to existing intents without matching to a given set of intents. For example, a developer may decide to associate and unite the phrase “What's the weather like” and “Should I take my umbrella with me” into a single intent by just knowing that these two questions should result in the same dialog system action. Accordingly, the need of the same action for these two phrases can associate them together in a particular intent.
- knowledge database 270 may lack some sets of intents or entities that the developers want to populate with definitions.
- system 110 is configured to identify one or more common linguistic (lexical) patterns or constructs among multiple exemplary phrases provided by developers and/or by various dictionaries, pre-built system intents, pre-built knowledge databases, and so forth. Based on this common linguistic pattern or construct, the platform may create a new dialog system rule and ask the developer of such a new rule to create and store the new dialog system rule in knowledge database 270 .
- knowledge database 270 may be automatically updated by introducing new intents or entities that replicate existing intents or entities, but also include some non-significant modifications.
- “Find” intent may include such phrases as “find,” “search for,” “look up,” “google,” and so forth. This intent can be automatically supplemented with additional phrases including “please find,” “please search for,” “could you please look up,” and so forth.
- FIG. 7 shows a process 700 of testing dialog system elements by developers.
- a developer can enter a test phrase in the test console.
- the test phrase may be processed 710 by the system to identify entities and an intent in the test phrase.
- the result of the processing can be provided to the developer for review.
- action associated with the intent may be provided as a response to the test phrase with reference values of the entities passed as a parameter 720 .
- the developer can modify the intent according to the test results.
- dialog system engine 120 Once all dialog system elements of dialog system engine 120 are created, they can be maintained as a backend service and enable any of the associated dialog system interfaces 130 to provide the full functionality of the dialog system to users according to predetermined settings.
- Example operation process of dialog system engine 120 is shown in FIG. 8 .
- Method 800 of FIG. 8 may be performed by processing logic that may comprise hardware (e.g., decision-making logic, dedicated logic, programmable logic, and microcode), software (such as software run on a general-purpose computer system or a dedicated machine), or a combination of both.
- the processing logic refers to one or more components of the system 110 .
- the below recited steps of method 800 may be implemented in an order different than described and shown in FIG. 8 .
- the method 800 may have additional steps not shown herein, but which can be evident for those skilled in the art from the present disclosure.
- the method 800 may also have fewer steps than outlined below and shown in FIG. 8 .
- system 110 receives a user request from an unidentified dialog system interface 130 .
- the user request can be a voice input or text input.
- dialog system interface 130 can pre-process the user input, for example, by recognizing spoken words and transforming the voice input into text input. In other embodiments, however, no pre-processing is performed by dialog system interface 130 .
- system 110 processes the user request and identifies dialog system interface 130 .
- the user request can be accompanied by an identifier (ID) at the time the user request is sent from dialog system interface 130 to system 110 .
- ID identifier
- identifiers may refer to (a) user ID, which can be used to retrieve a profile of a developer or user; (b) session ID, which can be used to retrieve current dialog context between the given user and the dialog system engine; and (c) a set of keys/agents (i.e., custom dialog system IDs), which can be used to identify entities, intents, and other data associated with the user request.
- system 110 activates the custom dialog system engine 120 associated with the identified dialog system interface 130 .
- system 110 may also retrieve or identify one or more dialog system elements (i.e., one or more entities and one or more intents) based on the result of the identification at operation 810 .
- dialog system engine 120 processes the user request using identified dialog system elements (i.e., one or more entities and one or more intents) as retrieved at operation 810 .
- identified dialog system elements i.e., one or more entities and one or more intents.
- dialog system engine 120 generates a response and sends it to dialog system interface 130 associated with dialog system engine 120 .
- the response may include a text, audio, image, and/or video message, URL, callback URL, meta-data, computer-readable instructions, and so forth.
- Dialog system interface 130 then displays and/or playbacks the response to the user depending on predetermined settings.
- FIG. 9 shows a process flow diagram for method 900 of example-driven machine learning for a dialog system engine according to an example embodiment.
- the method 900 may be performed by processing logic that may comprise hardware (e.g., decision-making logic, dedicated logic, programmable logic, and microcode), software (such as software run on a general-purpose computer system or a dedicated machine), or a combination of both.
- the processing logic refers to one or more components of system 110 .
- the below recited steps of method 900 may be implemented in an order different than described and shown in FIG. 9 .
- method 900 may have additional steps not shown herein, but which can be evident for those skilled in the art from the present disclosure.
- Method 900 may also have fewer steps than outlined below and shown in FIG. 9 .
- system 110 maintains a plurality of dialog system rules in one or more rule databases 260 .
- each dialog system rule includes at least one “entity” and at least one “intent.”
- Dialog system rules can be created by developers manually through developer interface 112 or automatically by dialog system engines 120 utilizing machine-learning or statistical algorithms.
- system 110 maintains one or more knowledge databases 270 .
- Each knowledge database 270 includes one or more context expressions, terms, variables, and/or phrases associated with at least one intent and/or at least one entity.
- system 110 receives at least one exemplary phrase.
- the exemplary phrase can be provided by developers through developer interface 112 or by users using dialog system engine 120 .
- system 110 retrieves one or more linguistic elements from the exemplary phrase.
- system 110 identifies that at least one of the linguistic elements is directed to at least one dialog system element such as an intent or entity.
- system 110 adds the linguistic element to knowledge database 270 associated with the particular intent or entity of the dialog system rule.
- the linguistic element can be added manually by the developer. In this case, no automatic matching provided by operations 925 and 930 is performed; the developer simply updates one or more certain intents using the GUI of system 110 .
- FIG. 10 is a high-level block diagram illustrating an example user device 1000 suitable for implementing the methods described herein. It is worth mentioning that all components of the user device may include logic elements, hardware components, software (firmware) components, virtual components, or a combination thereof.
- User device 1000 includes at least an integral part of one or more of a variety of types of devices and systems such as a general-purpose computer, desktop computer, server, computer network, network service, cloud-computing service, and so forth. Further, all modules shown in FIG. 10 may be operatively coupled using any suitable wired, wireless, radio, electrical, or optical standards. As already outlined above, user device 1000 may refer to a smart phone, wireless telephone, computer, such as a tablet computer or desktop computer, infotainment system, in-vehicle computing device, and the like.
- the user device 1000 includes the following hardware components: one or more processors 1002 , memory 1004 , one or more storage devices 1006 , one or more input modules 1008 , one or more output modules 1010 , network interface 1012 , and optional geo location determiner 1014 .
- User device 1000 also includes the following software or virtual components: an operating system 1020 , one or more software (mobile) applications 1030 , and dialog system interface 130 , which can be a stand-alone software application or be integrated into one or more software applications 1030 .
- Dialog system interface 130 provides a human-centric interface for accessing and managing information as discussed herein, communicating with dialog system engine 120 , and communicating with web resources/web services 160 .
- Processors 1002 are configured to implement functionality and/or process instructions for execution within user device 1000 .
- the processor(s) 1002 may process instructions stored in memory 1004 and/or instructions stored on storage devices 1006 .
- Such instructions may include components of an operating system 1020 and dialog system interface 130 .
- the user device 1000 may also include one or more additional components not shown in FIG. 10 , such as a housing, power supply, communication bus, and the like. These elements are omitted so as to not burden the description of present embodiments.
- Memory 1004 is configured to store information within the user device 1000 during operation.
- Memory 1004 may refer to a non-transitory computer-readable storage medium or a computer-readable storage device.
- memory 1004 is a temporary memory, meaning that a primary purpose of memory 1004 may not be long-term storage.
- Memory 1004 may also refer to a volatile memory, meaning that memory 1004 does not maintain stored contents when memory 1004 is not receiving power. Examples of volatile memories include random access memories (RAM), dynamic random access memories (DRAM), static random access memories (SRAM), and other forms of volatile memories known in the art.
- RAM random access memories
- DRAM dynamic random access memories
- SRAM static random access memories
- memory 1004 is used to store program instructions for execution by the processors 1002 .
- Memory 1004 is used by software (e.g., the operating system 1020 ) or dialog system interface 130 executing on user device 1000 to temporarily store information during program execution.
- One or more storage devices 1006 can also include one or more transitory or non-transitory computer-readable storage media and/or computer-readable storage devices.
- storage devices 1006 may be configured to store greater amounts of information than memory 1004 .
- Storage devices 1006 may further be configured for long-term storage of information.
- storage devices 1006 include non-volatile storage elements.
- non-volatile storage elements examples include magnetic hard discs, optical discs, solid-state discs, flash memories, forms of electrically programmable memories (EPROM) or electrically erasable and programmable memories (EEPROM), and other forms of non-volatile memories known in the art.
- EPROM electrically programmable memories
- EEPROM electrically erasable and programmable memories
- user device 1000 includes one or more input modules 1008 .
- the input modules 1008 are configured to receive user inputs.
- Examples of input modules 1008 include a microphone, keyboard, keypad, mouse, trackball, touchscreen, touchpad, or any other device capable of detecting an input from a user or other source in the form of speech, audio, or tactile actions, and relaying the input to the user device 1000 or components thereof.
- Output modules 1010 are configured to provide output to users through visual or auditory channels.
- Output modules 1010 may include a video graphics adapter card, liquid crystal display (LCD) monitor, light emitting diode (LED) monitor, sound card, speaker, or any other device capable of generating output that may be intelligible to a user.
- LCD liquid crystal display
- LED light emitting diode
- Network interface 1012 can be utilized to communicate with external devices, servers, and networked systems via one or more communications networks such as one or more wired, wireless, or optical networks including, for example, the Internet, intranet, LAN, WAN, cellular phone networks (e.g. Global System for Mobile (GSM) communications network, packet switching communications network, circuit switching communications network), Bluetooth radio, and an IEEE 802.11-based radio frequency network, among others.
- Network interface 1012 may be a network interface card, such as an Ethernet card, optical transceiver, radio frequency transceiver, or any other type of device that can send and receive information.
- Other examples of such network interfaces may include Bluetooth®, 3G, 4G, and WiFi® radios in mobile computing devices as well as Universal Serial Bus (USB).
- USB Universal Serial Bus
- Geo location determiner 1014 may utilize a number of different methods for determining geographical location including, for example, receiving and processing signals of Global Positioning Systems (GPS), GLONASS satellite navigation systems, or the Galileo satellite navigation system; utilizing multilateration of radio signals between radio towers (base stations); or utilizing geolocation methods associated with Internet Protocol (IP) addresses, Media Access Control (MAC) addresses, Radio-Frequency Identification (RFID), or other technologies.
- GPS Global Positioning Systems
- GLONASS satellite navigation systems GPS with Global Positioning Systems
- Galileo satellite navigation system utilizing multilateration of radio signals between radio towers (base stations); or utilizing geolocation methods associated with Internet Protocol (IP) addresses, Media Access Control (MAC) addresses, Radio-Frequency Identification (RFID), or other technologies.
- IP Internet Protocol
- MAC Media Access Control
- RFID Radio-Frequency Identification
- Operating system 1020 may control one or more functionalities of user device 1000 or components thereof. For example, operating system 1020 may interact with dialog system interface 130 and may further facilitate one or more interactions between applications 1030 and one or more of processors 1002 , memory 1004 , storage devices 1006 , input modules 1008 , and output modules 1010 . As shown in FIG. 10 , operating system 1020 may interact with or be otherwise coupled to dialog system interface 130 and components thereof. In some embodiments, dialog system interface 130 can be included in the operating system 1020 .
- user device 1000 and its components may also interact with one or more remote storage or computing resources including, for example, web resources, websites, social networking websites, blogging websites, news feeds, email servers, web calendars, event databases, ticket aggregators, map databases, points of interest databases, and so forth.
- remote storage or computing resources including, for example, web resources, websites, social networking websites, blogging websites, news feeds, email servers, web calendars, event databases, ticket aggregators, map databases, points of interest databases, and so forth.
- FIG. 11 is a high-level block diagram illustrating an example platform 1100 suitable for implementing the methods described herein.
- system 1100 is a server-based solution suitable for running system 110 .
- system 1100 includes logic elements, hardware components, software (firmware) components, virtual components, or a combination thereof.
- System 1100 may include, relate to, or constitute an integral part of one or more of a variety of types of devices and systems such as a general-purpose computer, server, web server, network service, cloud-computing service, and so forth. Further, all modules shown in FIG. 11 may be operatively coupled using any suitable wired, wireless, radio, electrical, or optical standards.
- system 1100 includes the following hardware components: one or more processors 1102 , memory 1104 , one or more storage devices 1106 , and network interface 1108 .
- System 1100 also includes the following software or virtual components: operating system 1110 , one or more software applications 1120 , and developer interface 112 .
- the developer interface 112 may provide a human-centric interface for accessing and managing information by developers (namely, for creating and managing dialog system engines 120 ).
- processor 1102 is configured to implement functionality and/or process instructions for execution within system 1100 .
- processor 1102 may process instructions stored in memory 1104 and/or instructions stored on storage devices 1106 .
- Such instructions may include components of operating system 1110 , applications 1120 , and/or developer interface 112 .
- Memory 1104 is configured to store information within system 1100 during operation.
- Memory 1104 may refer to a non-transitory computer-readable storage medium or a computer-readable storage device.
- memory 1104 is a temporary memory, meaning that a primary purpose of memory 1104 may not be long-term storage.
- Memory 1104 may also refer to a volatile memory, meaning that memory 1104 does not maintain stored contents when memory 1104 is not receiving power. Examples of volatile memories include RAM, DRAM, SRAM, and other forms of volatile memories known in the art.
- memory 1104 is used to store program instructions for execution by processor 1102 .
- Memory 1104 in one example embodiment, is used to temporarily store information during program execution.
- One or more storage devices 1106 can also include one or more transitory or non-transitory computer-readable storage media and/or computer-readable storage devices.
- storage devices 1106 may be configured to store greater amounts of information than memory 1104 .
- Storage devices 1106 may further be configured for long-term storage of information.
- storage devices 1106 include non-volatile storage elements. Examples of such non-volatile storage elements include magnetic hard discs, optical discs, solid-state discs, flash memories, forms of EPROM or EEPROM, and other forms of non-volatile memories known in the art.
- one or more storage devices 1106 can include databases 260 , 270 , 280 (i.e., they can store and maintain multiple dialog system rules, logs, context, etc.). In other embodiments, one or more storage devices 1106 can store and maintain user profiles and custom dialog system engines 120 .
- system 1100 includes network interface 1108 .
- Network interface 1108 can be utilized to communicate with external devices, servers, and networked systems via one or more communications networks such as one or more wired, wireless, or optical networks including, for example, the Internet, intranet, LAN, WAN, cellular phone networks (e.g. GSM communications network, packet switching communications network, circuit switching communications network), Bluetooth radio, and an IEEE 802.11-based radio frequency network, among others.
- Network interface 1108 may be a network interface card, such as an Ethernet card, optical transceiver, radio frequency transceiver, or any other type of device that can send and receive information.
- Other examples of such network interfaces may include Bluetooth®, 3G, 4G, and WiFi® radios in mobile computing devices as well as USB.
- Operating system 1110 may control one or more functionalities of system 1100 or components thereof.
- operating system 1110 may interact with developer interface 112 , and may further facilitate one or more interactions between applications 1120 and one or more of processors 1102 , memory 1104 , storage devices 1106 , and/or network interface 1108 .
- operating system 1110 may interact with, or be otherwise coupled to, developer interface 112 and components thereof.
- system 1100 and its components may also interact with one or more remote storage or computing web resources/web services 160 including, for example, web resources, websites, social networking websites, blogging websites, news feeds, email servers, web calendars, event databases, ticket aggregators, map databases, points of interest databases, and so forth.
- Software applications 1120 in essence, may provide functionality to system 110 and/or developer interface 112 and enable their operation. Alternatively, software applications may be additions to system 110 and/or developer interface 112 .
- FIGS. 12-16 show various screenshots of developer interface 112 illustrating creation of entities.
- developer interface 112 allows defining enumeration of entities if the entities do not have synonyms. For example, entities “red”, “green”, and “blue” are the entities that do not have synonyms.
- developer interface 112 allows expanding entities automatically. For example, if an entity “@color” contains colors “red”, “green”, an “blue”, system 110 can automatically understand that “maroon” is also likely a color. As result, for an example pattern “I like @color” the phrase “I like cats” will not be matched while “I like maroon” will be matched.
- developer interface 112 allows a developer to define both examples and patterns.
- the patterns may be marked by the “@” icon on the left. Examples may be marked by the ‘′′’ icon on the left. In some embodiments, parts of examples are automatically identified and highlighted by the developer interface 112 .
- developer interface 112 allows a developer to highlight part of an example and assign an entity type.
- the entity type can be selected or created via a context menu 1420 .
- developer interface 112 allows a developer to mouse over an entity to highlight and change entity boundaries.
- a developer may highlight an incorrectly identified parameter and remove it.
- the developer may click on the highlighted entity and remove assignment, change entity type, or create a new entity for the highlighted entity.
- this information can be used for training of machine learning. For example, “@color” entity includes “green”, “red”, and “blue”. The developer can add an example such as “I like maroon”. “Maroon” is not identified as @color since it is not in the entity definition. The developer can then highlight the “maroon” and identify it as belonging to “@color” entity.
- the dialog system engine can use this information to train a global natural language understanding model or a developer-specific natural language understanding model.
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Artificial Intelligence (AREA)
- Computational Linguistics (AREA)
- Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Computing Systems (AREA)
- Software Systems (AREA)
- Health & Medical Sciences (AREA)
- Audiology, Speech & Language Pathology (AREA)
- General Health & Medical Sciences (AREA)
- User Interface Of Digital Computer (AREA)
- Machine Translation (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
Description
- The present utility patent application is related to and claims priority benefit of the U.S. provisional application No. 62/129,759, filed on Mar. 6, 2015, under 35 U.S.C. 119(e), which is incorporated herein by reference for all purposes to the extent that such subject matter is not inconsistent herewith or limiting hereof, and a co-pending U.S. provisional patent application Ser. No. 62/050,149, titled “Platform for Creating Customizable Dialog System Engines,” filed on Oct. 21, 2014, which is incorporated herein in its entirety.
- This disclosure relates generally to dialog systems. More particularly, this disclosure relates to a platform for creating, maintaining, and managing custom dialog system engines.
- Conventional dialog systems are widely used in the information technology industry, especially in the form of mobile applications for wireless telephones and tablet computers. Generally, a dialog system refers to a computer-based agent having a human-centric interface for accessing, processing, managing, and delivering information. Dialog systems are also known as chat information systems, spoken dialog systems, conversational agents, chatter robots, chatterbots, chatbots, chat agents, digital personal assistants, automated online assistants, and so forth. All these terms are within the scope of the present disclosure and referred to as a “dialog system” for simplicity.
- Traditionally, a dialog system interacts with its users in natural language to simulate an intelligent conversation and provide personalized assistance to the users. For example, a user may generate requests to the dialog system in the form of conversational questions, such as “Where is the nearest hotel?” or “What is the weather like in Alexandria?” and receive corresponding answers from the dialog system in the form of audio and/or displayable messages. The users may also provide voice commands to the dialog system requesting the performance of certain functions including, for example, generating e-mails, making phone calls, searching particular information, acquiring data, navigating, requesting notifications or reminders, and so forth. These and other functionalities make dialog systems popular as they assist users, especially holders of portable electronic devices such as smart phones, cellular phones, tablet computers, gaming consoles, and the like.
- Although the demand for dialog systems is constantly growing, creating a dialog system is a challenging task. Each dialog system has a dialog system engine, which is responsible for receiving user voice or text inputs, interpreting them, generating corresponding responses to user inputs, and delivering these responses to the user. Interpreting the inputs and finding proper responses can be complicated and not trivial because dialog systems employ artificial intelligence. Accordingly, many software developers can struggle to develop a well-operating dialog system enabled to handle a wide range of user requests. It can also be expensive for software or engineering companies to create and integrate dialog systems into new software or hardware products. A further difficulty is to create a comprehensive knowledge database for use by a dialog system such that it can accurately interpret various dialects, specific expressions, or user inquiries input in a way not generally understandable out of context.
- This summary is provided to introduce a selection of concepts in a simplified form that are further described below in the Detailed Description. This summary is not intended to identify key features or essential features of the claimed subject matter, nor is it intended to be used as an aid in determining the scope of the claimed subject matter.
- In general, the present technology provides for an example-driven machine learning scheme for creating custom dialog system engines and one or more knowledge databases associated therewith.
- According to some example aspects of present disclosure, there is provided a system and a method for example-driven machine learning. The method may commence with maintaining a plurality of dialog system rules within a dialog system engine. The dialog system rules can stipulate instructions for response of the system to particular user requests received from the dialog system interface. The method can continue with maintaining a knowledge database that includes one or more context expressions associated with at least one dialog system rule. Context expressions may relate to terms, keywords, phrases, variables, and/or speech expressions associated with at least one “entity” and/or at least one “intent” of a particular dialog system rule.
- The method can further include receiving an exemplary phrase and retrieving certain linguistic elements from the exemplary phrase. It can be determined that one of the linguistic elements is directed to at least one of a plurality of intent objects or a plurality of entity objects of certain dialog system rules. The linguistic element in association with the at least one dialog system rule may be added to the knowledge database. Thus, machine learning using exemplary phrases can occur.
- Further, user requests acquired by the dialog system interface can be received. User requests can optionally be pre-processed by the dialog system interface. For example, the dialog system interface can recognize spoken words and transform speech user input into a text-based user input. In some embodiments, user requests can be accompanied with attributes related to current conditions including, for example, current geographical location of user, currently used software or mobile application, user motions, user movement direction, date, time, weather information, and so forth. Based on the user request and/or attributes thereof, the server or the dialog system interface may assign a particular dialog context label to the user request.
- Further, the user request can be processed by applying one of dialog system rules if the user request is properly interpreted by the server. In some embodiments, one or more statistical or heuristic matching algorithms can be applied to the user request. Otherwise, if the server determines that the user request cannot be interpreted out of context if taken in isolation, a context expression (stored in the knowledge database) that is associated with at least a portion of the user request and/or the dialog context label can be identified. The method can continue with selecting, from the plurality of dialog system rules, a particular dialog system rule that is associated with the identified context expression or the dialog context label, depending on an implementation.
- Further, a response to the user request can be generated by applying the selected dialog system rule to at least a portion of the user request. The response can be transferred to or presented via the dialog system interface to the user.
- The system for example-driven machine learning may include a dialog system engine running on a server and a dialog system interface running on a client side. In some aspects of the present disclosure, the system for example-driven machine learning allows software or mobile application developers (hereinafter simply referred to as “developers”) to create custom dialog system engines including specific dialog system definitions or rules and associate them with custom knowledge database elements. The system allows creating and/or populating (editing, managing) custom knowledge databases by developers. The population of custom knowledge databases can occur when developers or even end users provide example phrases or exemplary phrases. Upon receipt of such exemplary phrases, the system retrieves from them one or more linguistic elements (and/or one or more linguistic patterns). Further, the system determines that each linguistic element is directed or associated with a particular dialog system rule; namely, each linguistic element is associated with a particular intent and/or entity of a dialog system rule. Further, the system may add these linguistic elements to the knowledge database and associate them with this particular dialog system rule.
- In certain additional embodiments, the system is configured to provide markup language of linguistic elements for review prior to adding them to the knowledge database. Thus, the developers can ensure that linguistic elements have been correctly identified, interpreted, or associated. In other embodiments, the developers can correctly identify linguistic elements or amend their association. For example, if a particular linguistic element, such as “yesterday,” can be associated with several dialog system rule elements, such as “Date” entity, “Time Period” entity, or “Song Title” entity, then the developers can select a particular dialog system rule element to which this linguistic element should relate. For these ends, the system can display all appropriate dialog system rules and their elements so that the developer can select a desired one. Otherwise, the linguistic element “yesterday” can be assigned to a default dialog system rule (e.g., the most common dialog system rule or first in a list rule). The developers can change this assignment anytime later or make other changes.
- Therefore, the present technology allows improving accuracy of processing user requests by dialog system engines including even such user requests that are not generally understandable out of context. Automatic enhancement of knowledge databases allows for on-going improvement of dialog system engines, which ultimately leads to the improvement of natural language processing (NLP) accuracy. Additional objects, advantages, and novel features will be set forth in part in the detailed description, which follows, and in part will become apparent to those skilled in the art upon examination of the following detailed description and the accompanying drawings or may be learned by production or operation of the example embodiments. The objects and advantages of the concepts may be realized and attained by means of the methodologies, instrumentalities, and combinations particularly pointed out in the appended claims.
- Other example embodiments of the disclosure and aspects will become apparent from the following description taken in conjunction with the following drawings.
- Embodiments are illustrated by way of example and not limitation in the figures of the accompanying drawings, in which like references indicate similar elements and, in which:
-
FIG. 1 illustrates an environment within which systems and methods for example-driven machine learning can be implemented, in accordance with some embodiments. -
FIG. 2 is a block diagram showing various modules of a dialog system engine, in accordance with certain embodiments. -
FIG. 3 is a flow chart illustrating a method for example-driven machine learning, in accordance with some example embodiments. -
FIG. 4 shows the process of manual creation of entities via the developer interface, in accordance with some example embodiments. -
FIG. 5 shows the process of manual creation of intents for a dialog system rule, in accordance with some example embodiments. -
FIG. 6 shows an example rule for receiving a weather forecast, in accordance with some example embodiments. -
FIG. 7 shows a process of testing dialog system elements by developers, in accordance with some example embodiments. -
FIG. 8 shows an example process flow of a dialog system engine, in accordance with some example embodiments. -
FIG. 9 shows a process flow diagram for the method of example-driven machine learning for a dialog system engine, in accordance with some example embodiments. -
FIG. 10 is a high-level block diagram illustrating an example user device suitable for implementing the methods described herein. -
FIG. 11 is a high-level block diagram illustrating an example system suitable for implementing the methods described herein. -
FIGS. 12-16 show various screenshots ofdeveloper interface 112 illustrating creation of entities. - The following detailed description includes references to the accompanying drawings, which form a part of the detailed description. The drawings show illustrations in accordance with example embodiments. These example embodiments, which are also referred to herein as “examples,” are described in enough detail to enable those skilled in the art to practice the present subject matter.
- The embodiments can be combined, other embodiments can be utilized, or structural, logical and operational changes can be made without departing from the scope of what is claimed. The following detailed description is, therefore, not to be taken in a limiting sense, and the scope is defined by the appended claims and their equivalents.
- The system for example-driven machine learning enables software or mobile application developers to create custom dialog system engines that operate as a backend service for dialog system interfaces, which can be an integral part of software applications, mobile applications, websites, or web services. This disclosure is also directed to methods for enhancing a knowledge database used by dialog system engines through automatic processing of expression examples using machine learning schemes, statistical or heuristic algorithms, and/or pattern mining schemes.
- Present teachings may be implemented using a variety of technologies. For example, the methods described herein may be implemented in software executing on a computer system or in hardware utilizing either a combination of microprocessors or other specially designed application-specific integrated circuits (ASICs), programmable logic devices, or various combinations thereof. In particular, the methods described herein may be implemented by a series of computer-executable instructions residing on a transitory or non-transitory storage medium such as a disk drive or computer-readable medium. It should be noted that methods disclosed herein can be implemented by a computer (e.g., a desktop computer, tablet computer, laptop computer), game console, handheld gaming device, cellular phone, smart phone, smart television system, and so forth.
- The term “application developer,” or simply “developer,” refers to one or more of the following: software developer, mobile application developer, software engineer, software owner, mobile application owner, software manager, mobile application manager, dialog system owner, and so forth. An application developer develops and/or manages a dialog system engine and/or dialog system interface.
- The term “dialog system” refers to one or more of the following: chat information system, spoken dialog system, conversational agent, chatter robot, chatterbot, chatbot, chat agent, digital personal assistant, automated online assistant, and so forth. Each dialog system includes a “dialog system interface” and “dialog system engine.” Each of these elements can be customized by the application developer.
- The term “dialog system interface” refers to a computer-human interface, which is configured to acquire user inputs in the form of audio messages or text messages, and deliver dialog system responses to the users in the form of audio messages or displayable messages. In one example, a dialog system interface may be implemented as a widget employed to or integrated with a software application, mobile application, middleware application, firmware application, website, and web service, to provide a computer-human interface for acquiring user requests and delivering dialog system outputs to the users.
- The term “dialog system engine” refers to a software application configured to process user inputs and to generate responses thereto. In one example, dialog system engine refers to a computer-enabled or processor-enabled system for supporting an associated dialog system interface by processing user requests and generating corresponding responses thereto.
- As outlined above, the present technology provides for a system for example-driven machine learning enabling creation of custom dialog system engines serving as backend services for custom dialog system interfaces. The present technology also provides for automatic enhancement of a knowledge database for custom dialog system engines based on example user requests provided by developers.
- In general, the system allows for developers and engineers to create custom dialog system engines that will support frontend dialog system interfaces. For example, if a software developer wants to integrate dialog system functionality into a mobile application as an additional feature, the developer can use the system to create and deploy a custom dialog system engine and link it with the mobile application. The mobile application, in turn, can have only the dialog system interface. In this example, the dialog system interface can be activated by a user when he interacts with the mobile application. The user can make inquiries via the dialog system interface in the form of voice inputs or text inputs. Upon receipt of a user inquiry, the dialog system interface can transfer it with little or no pre-processing to the linked custom dialog system engine. The dialog system engine processes the received user inquiry, interprets it, and generates a response to the inquiry based on predetermined rules and settings. The response is delivered back to the dialog system interface for further visual and/or audio presentation to the user.
- Dialog system interfaces can be integrated into or be an integral part of a wide range of software applications running on a client device, such as personal computer (PC) or cellular phone, or on a server so that the dialog systems become a part of a website or web service. Dialog system engines can be implemented on a server such that their functionalities can be accessible to the dialog system interfaces over a network, for example the Internet, cellular networks, or any other communications means. In additional embodiments, a dialog system interfaces and dialog system engine run on a single device (i.e., a PC or mobile application).
- Each dialog system engine may include a plurality of dialog system rules. Further, each of the dialog system rules includes dialog system elements such as “intents” and “entities,” and may also include some variables, links, parameters, and so forth. Accordingly, when a developer creates a dialog system engine, he creates and/or edits a plurality of intents and a plurality of entities and associates them with each other. In some embodiments, developers can use ready-to-use libraries of intents or entities, or developers can create intents and entities themselves. In some embodiments, intents and entities can be automatically generated when the developer provides example phrases or example dialogs that relate to possible use requests. These and other aspects of the present technology are described below with reference to accompanying drawings.
-
FIG. 1 shows a high-level block diagram ofexample system environment 100 suitable for practicing the present technologies. As can be seen onFIG. 1 , there is provided asystem 110 for example-driven machine learning to create and maintaindialog system engines 120. For these ends,system 110 includesdeveloper interface 112 for online creation and managing of dialog system engines andbackend service 114 for maintaining and running thedialog system engines 120. -
Developer interface 112 may include a graphical user interface (GUI) embedded into a webpage and accessible by developers via the Internet. In some other embodiments, however,developer interface 112 may be implemented as a software application such as a downloadable software application or any other software, middleware, or firmware running on or accessible from an electronic device such as a computer. In the example shown inFIG. 1 ,developer interface 112 is realized as a web accessible GUI as will be described below. For simplicity, this disclosure is limited to such embodiments wheredeveloper interface 112 is a server based solution so that it is accessible via the Internet. Regardless of a particular implementation,developer interface 112 enables developers through a number of GUI tools to create one or moredialog system engines 120. - Still referencing
FIG. 1 ,backend service 114 is responsible for maintaining and running customdialog system engines 120 that are created, for example, by or with the help ofdeveloper interface 112.Backend service 114 may operate as a web service providing functionality to custom dialog systems by enabling their dialog system interfaces to interact withdialog system engines 120 maintained atbackend service 114. - As briefly discussed above, dialog system interfaces 130 can be provided on a
client side 140. Dialog system interfaces 130 may be as simple as a GUI enabling users to make inquiries, which are then delivered tobackend service 114 for processing by correspondingdialog system engines 120, and to receive responses to the inquires generated bydialog system engines 120. Dialog system interfaces 130 may be implemented as stand-alone software applications or they can be an integral part of a software application, web service, website, and the like. - Still referencing
FIG. 1 ,client side 140 may refer to, but not limited to, a user device, terminal, computing device (e.g., laptop computer, tablet computer, desktop computer), cellular phone, smart phone, personal digital assistant (PDA), gaming console, remote control, multimedia system, smart television device, set-top box, infotainment system, in-vehicle computing device, informational kiosk, robot, and so forth. In these embodiments, dialog system interfaces 130 may be implemented as software, middleware, or firmware installed on such devices. - In additional embodiments,
client side 140 may refer to a networked or online solution such as a server, hosting service, web service, website, cloud service, and so forth. For example,dialog system interface 130 can be a widget or GUI provided on one or more web pages enabling end users to make inquires and get responses thereto. This option is suitable for those instances when a developer, for example, wants to integrate a dialog system into his website to provide enhanced customer service. - As can be seen in
FIG. 1 , the interaction between dialog system interfaces 130 and correspondingdialog system engines 120 is performed via acommunications network 150.Communications network 150 may include one or more of the Internet, intranet, cellular network, LAN, WAN, IEEE 802.11 based network, and so forth. -
FIG. 1 also shows various third party web resources/web services 160 provided via one or more web servers. These third party web resources/web services 160 can provide information of various types todialog system engines 120 or dialog system interfaces 130 as a part of a response to a user request. For example, web resources/web services 160 may refer to email services, weather services, navigation services, and the like. Accordingly, if a user makes the inquiry “What is the weather like today?,” such information may be automatically acquired bydialog system engine 120 from one or more third party web resources/web services 160 and then integrated into a dialog system response to be delivered to the end user. -
FIG. 2 shows a high-level architecture of exemplarydialog system engine 120, according to an example embodiment. It should be noted that every module ofdialog system engine 120 or associated architecture includes hardware components, software components, or a combination thereof.Dialog system engine 120 may be embedded or installed in a user device or server, or may be presented as a cloud computing module and/or a distributed computing module. - In the embodiment shown,
dialog system engine 120 includes optional Automatic Speech Recognizer (ASR) 210 configured to receive and process speech-based user inputs into a sequence of parameter vectors.ASR 210 further converts the sequence of parameter vectors into a recognized input (i.e., a textual input having one or more words, phrases, or sentences).ASR 210 includes one or more speech recognizers such as a pattern-based speech recognizer, free-dictation recognizer, address book based recognizer, dynamically created recognizer, and so forth. In some embodiments,ASR 210 is used not indialog system engine 120, but indialog system interface 130. - Further,
dialog system engine 120 can includeNLP module 220 for understanding spoken language input. Specifically,NLP module 220 may disassemble and parse the recognized input to produce utterances, which are then analyzed utilizing, for example, morphological analysis, part-of-speech tagging, shallow parsing, and the like.NLP module 220 may then map recognized input or its parts to meaning representations. -
Dialog system engine 120 further includesdialog manager 230, which coordinates the activity of all components, controls dialog flows, and communicates with external applications, devices, services, or resources.Dialog manager 230 may play many roles, which include discourse analysis, knowledge database query, and system action prediction based on the discourse context. - In some embodiments,
dialog manager 230 may contact one or more task managers (not shown) that may have knowledge of specific task domains. In some embodiments,dialog manager 230 may communicate with various computing, logic, orstorage resources 240, which may include, for example, a content storage, rules database, recommendation database, push notification database, context database, electronic address book, email or text agents, dialog history database, disparate knowledge databases, map database, points of interest database, geographical location determiner, clock, wireless network detector, search engines, social networking websites, blogging websites, news feeds services, and many more. In some embodiments, computational orstorage resources 240 include one or more web resources/services 160 discussed above. -
Dialog manager 230 may employ multiple disparate approaches to generate outputs in response to recognized inputs. Some approaches include the use of predetermined rules, statistical analysis, machine-learning algorithms (e.g., neural networks), heuristic analysis, and so forth.Dialog manager 230 is one of the central components ofDialog System Engine 120. The major role ofdialog manager 230 is to select the correct system actions based on observed evidences and inferred dialog states from the results of NLP (e.g., dialog act, user goal, and discourse history). In addition,dialog manager 230 should be able to handle errors when the user input has ASR and NLP errors caused by noises or unexpected inputs. -
Dialog system engine 120 further includesoptional output renderer 250 for transforming the output ofdialog manager 230 into a form suitable for providing to the user. For example,output renderer 250 may employ a text-to-speech engine or may contact a pre-recorded audio database to generate an audio message corresponding to the output ofdialog manager 230. In certain embodiments,output renderer 250 may present or cause to present the output ofdialog manager 230 as a text message, image, or video message for further displaying on a display screen of a user device. In some embodiments,output renderer 250 is provided not indialog system engine 120, but onclient side 140. - Still referring to
FIG. 2 ,dialog system engine 120 includes one or more dialog system rules maintained in at least onerule database 260. Dialog system rules may also be associated with dialog system elements discussed below. -
Dialog system engine 120 may also include or be associated with one ormore knowledge databases 270, which maintain a plurality of context description elements such as lists of terms, keywords, phrases, expressions, context variables, context parameters (e.g., geolocation, system rate, GUI, etc.) associated with one or more dialog system rules. In other words,knowledge databases 270 include information supporting the process of determining conversational or environmental context for particular user requests. In some embodiments,knowledge database 270 may store pre-built lexical data including, but not limited to, synonyms (words, phrases). In yet more embodiments,knowledge database 270 may also include pre-built knowledge databases such as WordNet or the like. -
Dialog system engine 120 may also include or be associated with one or more statistics andusage databases 280, which are configured to aggregate statistical or usage information associated with the operation ofdialog system engine 120 and/or associateddialog system interface 130 and/or associated mobile or software applications. For example, statistics andusage database 280 may accumulate dialog system logs, which can be later used for optimization of dialog system rules, dialog system responding schemes, training machine-learning algorithms if employed by the dialog system engine, and so forth. - The process of creating and operating custom
dialog system engines 120 will now be described with reference toFIG. 1 and other drawings. In particular,developer interface 112 can provide one or more GUIs having a number of tools enabling developers to create and customize one or more dialog system elements, which serve as a basis for a custom dialog system engine. - According to various embodiments, dialog system elements include “entities” and “intents.” Each entity may refer to a number of objects having the same or similar characteristics. In other words, entities are lists of terms and/or keywords defining objects of one class. In one example, an entity may refer to a keyword and a set of its synonyms. In another example, an entity may refer to a keyword and a set of its definitions. In yet another example, an entity may refer to a list (e.g., a list of cities, list of names, list of titles, list of brands, list of street names, and so forth).
- In some embodiments, each entity can have a title. For example, one entity can be titled as “city” and it will contain a list of cities such as Alexandria, Arlington, Boston, and so forth. In other embodiments, an entity can be titled as a keyword and it can contain synonyms and/or definitions of this keyword. In one example, the entity called “music” may include the terms of song, singer, singing, musician, and so forth. In another example, the entity called “artist” may include a list of music bands, music ensembles, or music artists. In another example, the entity called “Beatles” may include a list of possible synonyms, such as “The Beatles,” “Beatles,” “Fab Four,” “Liverpool Legends,” “John Lennon,” and so forth. In yet another example, there can be an entity called “Artist” which may include various artist names, artist name synonyms, music band names, and so forth.
- In some embodiments, dialog system engines may include a number of default, pre-configured entities and/or intents. These can include common types of entities or intents related to such concepts as time, date, location, and the like. For example, when a developer creates a new dialog system engine, it may already have a few entities of common types such as a “@System.Date” entity. This entity covers linguistic constructs related to particular dates and may include the following terms: “today,” “tomorrow,” “next week,” “January 1,” “January 1 of next year,” “next Monday,” “the following Monday,” and so forth.
- Further, each intent of a dialog system rule includes a dialog system interaction scheme, which provides a particular relation between at least one user request and at least one dialog system linguistic response or fulfilment response. The dialog system interaction scheme can be represented by a rule based on a relationship between a particular action and at least one entity. Actions generally relate to formalized software objects such as JSON (JavaScript Object Notation) objects causing at least one processor to generate linguistic or fulfilment responses associated with at least one entity. Accordingly, each intent can be represented as a logical relation between at least one action and at least one entity object, for example, as follows:
-
- a) [Action] @[Entity]
- b) [Action] @[Entities]
- c) [Actions] @[Entity]
- d) [Actions] @[Entities]
- e) Text @[Entity]
- f) Text @[Entities]
- g) Text @[Entity] Text
- h) [Action] Text @[Entity]
- The procedures a) through d) mean that a particular Action or several Actions shall be performed by
client side 140 and/ordialog system interface 130 with respect to a predetermined Entity or several Entities. For example, one intent may be represented as “Play @Artist,” where @Artist is a developer-defined entity containing a set of artists. In this example, the intent orders thedialog system engine 120 to activate the playback of at least one Beatles song, depending on a context. - The procedures e) through h) mean that particular information in the form of text is provided with respect to a particular Entity. For example, the user request “Create a meeting with John at 1 p.m. tomorrow, please” may be presented as the following pattern: create a meeting @sys.any:subject @sys.date-time. Here, @sys.any:subject refers to an entity associated with a particular name, @sys.date-time refers to an entity associated with time and date, and the phrase “Create a meeting” refers to a predetermined action to be performed by a dialog system interface or dialog system engine using a certain mobile application, software application, or web service.
- As mentioned above, a dialog system rule causes generation of linguistic response and/or fulfilment response as an answer to a user request. One example of linguistic response may include particularized content deliverable as an audio message or displayable message. Fulfilment responses refer to particular processor-executable instructions for one or more software applications, middleware, firmware, web service, and the like that cause implementation of a particular action. Some examples of fulfilment responses may include scheduling an event in a calendar mobile application, writing and sending a text message or email, searching for content at a web search service, building a route in a navigational software application, and so forth. In certain embodiments, at least some linguistic responses and/or fulfilment responses can be configured by developers. In other embodiments, at least some linguistic responses and/or fulfilment responses can be pre-configured and be available as default responses.
- In certain embodiments of this disclosure, developers can provide not “entities” and “intents,” but just example requests to illustrate intents and entities. In these embodiments,
system 110 automatically determines, using machine-learning techniques or statistical/heuristic algorithms, what “entities” and “intents” are implied in example user requests and creates corresponding rules. For example, a developer may simply provide example requests, such as “Play Beatles” and “I'd like to listen to Madonna,” and thesystem 110 can match “Beatles” and “Madonna” to existing entities (platform's or user's) and generate corresponding “[Action] @[Entity]” rules automatically. - Thus, developers can use
developer interface 112 to generate a plurality of dialog system rules specific to a particular application or industry. These pluralities of entities and intents form dialog system rules (also referred to as dialog system elements) and enable custom dialog system engines to perform certain actions or generate certain outputs in response to a wide range of end user inputs. -
FIG. 3 is a process flowdiagram showing method 300 for creating custom dialog system elements (rules) usingsystem 110, according to an example embodiment. Themethod 300 may be performed by processing logic that may comprise hardware (e.g., decision-making logic, dedicated logic, programmable logic, and microcode), software (such as software run on a general-purpose computer system or a dedicated machine), or a combination of both. In one example embodiment, the processing logic refers to one or more components ofsystem 110. Notably, below recited steps ofmethod 300 may be implemented in an order different than described and shown inFIG. 3 . Moreover,method 300 may have additional steps not shown herein, but which can be evident for those skilled in the art from the present disclosure.Method 300 may also have fewer steps than outlined below and shown inFIG. 3 . -
Method 300 commences atoperation 305 when a developer registers with thesystem 110. For these ends, the developer interacts with thedeveloper interface 112 using a plurality of online tools or widgets. The registration may include creating a developer profile, which can be maintained bysystem 110. The developer profile may virtually link (associate) a customdialog system engine 120 of this developer and one or more dialog system interfaces 130 deployed on theclient side 140. More specifically, a developer profile may include multiple agents (such as custom dialog system engines) and each of them could be integrated into a client application with the help of a Software Development Kit (SDK). Accordingly, there can be multiple end-points for user input (dialog system interfaces). The communication betweendialog system engines 120 and dialog system interfaces 130 may include Application Programming Interface (API) codes, rules for interaction, destination addresses, and many more. - At
optional operation 310, thesystem 110 receives, for example, via API, from the developer one or more entities and stores the same in one of the databases (e.g., rule database 260). In some embodiments, the entities are not received, but created by the developer using web tools ofdeveloper interface 112. In yet other embodiments, entities are not created or received at all because some agents, dialog system engines, or dialog system engine rules may not have any entities. - At operation 315, the
system 110 receives, for example, via API, from the developer one or more intents and stores the same in one of the databases (e.g., rule database 260). In some embodiments, the intents are not received, but created by the developer using tools ofdeveloper interface 112. As described above, the intents, once created, are associated with the entities, and together they form dialog system elements (custom rules enabling a dialog system engine to generate responses tailored for specific needs). It should be noted that the developer may first create intents, and then he can create entities, which are later associated with the intents. In other words,operations 310 and 315 can replace each other. -
Method 300 illustrates a set-up process for customdialog system engine 120. The set-up process includes creating of dialog system rules by developers using thesystem 110. This process involves defining a set of entities, a set of intents, and association therebetween. Information related to intents and entities (e.g., context defining terms, keywords, phrases, variables, and/or expressions associated with certain dialog system rules or dialog system elements) can be stored inknowledge database 270. -
FIGS. 4-7 illustrate various screenshots ofdeveloper interface 112 illustrating the creating of dialog system rules.FIG. 4 shows theprocess 400 of manually creating entities via thedeveloper interface 112. In one example, one set of entities may include definitions of geographical locations including city names such as “Atlanta,” “Belfast,” “Boston,” “Chicago,” “Detroit,” and so forth. In another example, another set of entities may include time definitions such as “today,” “tomorrow,” “next week,” “next Monday,” “October 1,” and the like. It shall be clear thatknowledge database 270 may include multiple sets of entities each related to various activities. - As illustrated, the entity related to city may be associated with multiple values, for example New York, Washington, Paris, and so forth. Each of the values may include a list of
synonyms 410 and a singular reference value/canonical value 420. A developer can manage (add, edit, delete) the values of an entity and the list ofsynonyms 410 for each value. -
FIG. 5 shows theprocess 500 of manually creating intents for a dialog system rule. Intents can be provided as multiple sets of linguistic elements such as words or phrases associated with particular actions. Some examples of intents associated with the action of playing multimedia content may include “Play,” “Start playback,” “Activate playing,” “Open,” and so forth. Additionally,knowledge database 270 may also store multiple context words or phrases, such as “what about,” “and how is it in,” “and the same in,” “and what about,” and so forth, all associated with a particular dialog system rule. These context phrases can facilitate interpretation of user inputs. In some embodiments,knowledge database 270 may also store pre-built lexical data including, but not limited to, synonyms (words, phrases). In yet more embodiments,knowledge database 270 may also include pre-built knowledge databases such as WordNet or the like. -
FIG. 5 illustrates an intent including a multitude ofuser expressions 510 identified automatically from exemplary phrases or specified by a developer, for example, by adding a new user expressions using anAdd control 520. Onfulfillment 530 of the rule associated with the intent, the system may provide a speech string or call a web service. Additionally, a developer can test the rule execution by entering a test phrase in an always-ontest console 540. -
FIG. 6 shows anexample rule 600 for receiving a weather forecast. As illustrated, therule 600 includesmultiple user expressions 610 that can be used by the user to request a weather forecast, such as “what is the weather in,” “weather forecast for,” and so forth. Entities, such as city or date, in user expressions can be provided using an alias 620 (or placeholder). Aliases can be referenced inaction 630 and infulfillment 640 sections. A developer can manage user expressions, 610, actions, and fulfillment parameters. - New dialog system rules including intents and entities are stored in
knowledge database 270. One way to create new dialog system rules is a manual input of intents and entities, including specification of references to entities within intents. However, this approach may not be effective in certain instances and may have some disadvantages. For example, it can be very time consuming for developers to specify various natural language inputs to cover the wide range of inputs of which a certain user request could be made. The present technology addresses this problem by automatically creating dialog system rules bysystem 110 in response to receiving exemplary user requests from developers and/or analyzing requests from multiple dialog system users. Embodiments of this disclosure provide forknowledge database 270 to be automatically populated with certain additional terms, keywords, phrases, and/or expressions using machine-learning and/or pattern recognition techniques when developers input exemplary user requests that potentially could be used by end users in the course of interaction with dialog system. - For example, developers may provide exemplary phrases such as “What is the weather like in New York,” “What is the current temperature in Las Vegas,” “What is the forecast for Washington D.C.,” “How it is in Moscow,” “Do I need my umbrella tomorrow,” and so forth. These and other exemplary phrases can be provided via
developer interface 112 and/or during the interaction of a developer or end user withdialog system engines 120. - Once exemplary phrases are acquired,
system 110 retrieves from them one or more linguistic elements. With reference to above provided examples, one set of linguistic elements may refer to cities including New York, Las Vegas, Washington D.C., and Moscow. A second set of linguistic elements may refer to articles, prepositions, and postpositions such as “a,” “the,” “for,” and so forth. A third set of linguistic elements may refer to verbs and nouns defining weather context such as “how is it in,” “what is weather like in,” and so forth. - Further,
system 110 associates sets of linguistic elements with particular dialog system rules or particular dialog system elements (entities or intents) and stores them inknowledge database 270. In the examples discussed above, the first set of linguistic elements can be associated with the “City” entity. Similarly, the third set of linguistic elements can be associated with the “Weather” intent. - Therefore, dialog system rules can be automatically created by developers by providing exemplary phrases to
system 110. In some embodiments, however, dialog system rules can also be created by users. This dialog system learning approach may be useful in those instances when the dialog system cannot properly address certain user requests. Here, the users may instruct the dialog system to update itsknowledge database 270 by introducing new intents or elements. For example, one user may instruct the dialog system to interpret the word “home” as New York City. This learning approach may affect all users or just those users that created such interpretations. - In one important aspect of this technology, when sets of linguistic elements are identified and retrieved from exemplary phrases input by developers as discussed above,
system 110 generates a markup language of dialog system elements for review by the developers. In the example discussed above, the markup language may be presented in the following format [Weather] @[City]. The GUI ofdeveloper interface 112 may show the markup language to developers and provide tools for its correction. In the GUI, input phrases can be shown as is with appropriate highlighting or labels. For example, the input phrase “What is the weather like in New York?” can be shown in the GUI ofdeveloper interface 112, where the term “New York” can be highlighted and accompanied by a GUI showing that New York was identified as an entity @city. Accordingly, the developers can correct the markup language, for example, whensystem 110 for some reason incorrectly interprets the exemplary phrases or incorrectly identifies intents or entities. Moreover, the developers may configure linguistic (lexical) or fulfilment responses to just create dialog system rules and create dialog system rules based on developer requests using the tools ofdeveloper interface 112. - In another aspect, when intents or entities are identified by
system 110 based on processing of exemplary phrases, it may be possible that a phrase may refer to a plurality of intents (or entities). For instance, when a developer provides an exemplary phrase “Send a message to John that I am going to be late,” the linguistic element “Send a message” may properly relate to several intents including a first intent to generate and send an email, a second intent to generate a text message and send it over a cellular network in the form of a short message service (SMS), a third intent to generate and send a communication over a messenger agent, or a fourth intent to generate and send a communication via a social media site. In this example, the developer can make changes to the markup language of interpreted exemplary phrase and indicate to which intent he wants this phrase to relate. This process can be as simple as checking boxes or making selections via the GUI ofsystem 110. In some embodiments, if no selection is made by the developer, thesystem 110 can associate such vague phrases as “Send a message” to a default intent, a first in a list of intents, a preferred intent, or all applicable intents. The developer is able to correct this selection at later time. - In yet another aspect, lexical examples provided by the developer or user can be added to existing intents without matching to a given set of intents. For example, a developer may decide to associate and unite the phrase “What's the weather like” and “Should I take my umbrella with me” into a single intent by just knowing that these two questions should result in the same dialog system action. Accordingly, the need of the same action for these two phrases can associate them together in a particular intent.
- In another aspect,
knowledge database 270 may lack some sets of intents or entities that the developers want to populate with definitions. In this case,system 110 is configured to identify one or more common linguistic (lexical) patterns or constructs among multiple exemplary phrases provided by developers and/or by various dictionaries, pre-built system intents, pre-built knowledge databases, and so forth. Based on this common linguistic pattern or construct, the platform may create a new dialog system rule and ask the developer of such a new rule to create and store the new dialog system rule inknowledge database 270. - In yet another aspect,
knowledge database 270 may be automatically updated by introducing new intents or entities that replicate existing intents or entities, but also include some non-significant modifications. For example, “Find” intent may include such phrases as “find,” “search for,” “look up,” “google,” and so forth. This intent can be automatically supplemented with additional phrases including “please find,” “please search for,” “could you please look up,” and so forth. -
FIG. 7 shows aprocess 700 of testing dialog system elements by developers. To test a rule, a developer can enter a test phrase in the test console. The test phrase may be processed 710 by the system to identify entities and an intent in the test phrase. The result of the processing can be provided to the developer for review. Based on the processing, action associated with the intent may be provided as a response to the test phrase with reference values of the entities passed as aparameter 720. The developer can modify the intent according to the test results. - Once all dialog system elements of
dialog system engine 120 are created, they can be maintained as a backend service and enable any of the associated dialog system interfaces 130 to provide the full functionality of the dialog system to users according to predetermined settings. - Example operation process of
dialog system engine 120 is shown inFIG. 8 .Method 800 ofFIG. 8 may be performed by processing logic that may comprise hardware (e.g., decision-making logic, dedicated logic, programmable logic, and microcode), software (such as software run on a general-purpose computer system or a dedicated machine), or a combination of both. In one example embodiment, the processing logic refers to one or more components of thesystem 110. Notably, the below recited steps ofmethod 800 may be implemented in an order different than described and shown inFIG. 8 . Moreover, themethod 800 may have additional steps not shown herein, but which can be evident for those skilled in the art from the present disclosure. Themethod 800 may also have fewer steps than outlined below and shown inFIG. 8 . - At operation 805,
system 110 receives a user request from an unidentifieddialog system interface 130. The user request can be a voice input or text input. In some embodiments,dialog system interface 130 can pre-process the user input, for example, by recognizing spoken words and transforming the voice input into text input. In other embodiments, however, no pre-processing is performed bydialog system interface 130. - At operation 810,
system 110 processes the user request and identifiesdialog system interface 130. For these ends, the user request can be accompanied by an identifier (ID) at the time the user request is sent fromdialog system interface 130 tosystem 110. Generally, identifiers may refer to (a) user ID, which can be used to retrieve a profile of a developer or user; (b) session ID, which can be used to retrieve current dialog context between the given user and the dialog system engine; and (c) a set of keys/agents (i.e., custom dialog system IDs), which can be used to identify entities, intents, and other data associated with the user request. - At operation 815, based on the result of the identification at operation 810, the
system 110 activates the customdialog system engine 120 associated with the identifieddialog system interface 130. At the same operation,system 110 may also retrieve or identify one or more dialog system elements (i.e., one or more entities and one or more intents) based on the result of the identification at operation 810. - At operation 820,
dialog system engine 120 processes the user request using identified dialog system elements (i.e., one or more entities and one or more intents) as retrieved at operation 810. Some examples of dialog system processing are further described with reference toFIG. 9 . - At operation 825,
dialog system engine 120 generates a response and sends it todialog system interface 130 associated withdialog system engine 120. The response may include a text, audio, image, and/or video message, URL, callback URL, meta-data, computer-readable instructions, and so forth.Dialog system interface 130 then displays and/or playbacks the response to the user depending on predetermined settings. - Additional details related to the operation of
system 110 and creating dialog system engines are provided in co-pending U.S. provisional patent application Ser. No. 62/050,149, titled “Platform for Creating Customizable Dialog System Engines,” filed on Oct. 21, 2014, which is incorporated herein in its entirety. -
FIG. 9 shows a process flow diagram formethod 900 of example-driven machine learning for a dialog system engine according to an example embodiment. Themethod 900 may be performed by processing logic that may comprise hardware (e.g., decision-making logic, dedicated logic, programmable logic, and microcode), software (such as software run on a general-purpose computer system or a dedicated machine), or a combination of both. In one example embodiment, the processing logic refers to one or more components ofsystem 110. Notably, the below recited steps ofmethod 900 may be implemented in an order different than described and shown inFIG. 9 . Moreover,method 900 may have additional steps not shown herein, but which can be evident for those skilled in the art from the present disclosure.Method 900 may also have fewer steps than outlined below and shown inFIG. 9 . - At
operation 905,system 110 maintains a plurality of dialog system rules in one ormore rule databases 260. As discussed above, each dialog system rule includes at least one “entity” and at least one “intent.” Dialog system rules can be created by developers manually throughdeveloper interface 112 or automatically bydialog system engines 120 utilizing machine-learning or statistical algorithms. - At
optional operation 910,system 110 maintains one ormore knowledge databases 270. Eachknowledge database 270 includes one or more context expressions, terms, variables, and/or phrases associated with at least one intent and/or at least one entity. - At
operation 915,system 110 receives at least one exemplary phrase. The exemplary phrase can be provided by developers throughdeveloper interface 112 or by users usingdialog system engine 120. - At
operation 920,system 110 retrieves one or more linguistic elements from the exemplary phrase. - At
operation 925,system 110 identifies that at least one of the linguistic elements is directed to at least one dialog system element such as an intent or entity. - At
operation 930,system 110 adds the linguistic element toknowledge database 270 associated with the particular intent or entity of the dialog system rule. Alternatively, the linguistic element can be added manually by the developer. In this case, no automatic matching provided byoperations system 110. -
FIG. 10 is a high-level block diagram illustrating anexample user device 1000 suitable for implementing the methods described herein. It is worth mentioning that all components of the user device may include logic elements, hardware components, software (firmware) components, virtual components, or a combination thereof. -
User device 1000 includes at least an integral part of one or more of a variety of types of devices and systems such as a general-purpose computer, desktop computer, server, computer network, network service, cloud-computing service, and so forth. Further, all modules shown inFIG. 10 may be operatively coupled using any suitable wired, wireless, radio, electrical, or optical standards. As already outlined above,user device 1000 may refer to a smart phone, wireless telephone, computer, such as a tablet computer or desktop computer, infotainment system, in-vehicle computing device, and the like. - As shown in
FIG. 10 , theuser device 1000 includes the following hardware components: one ormore processors 1002,memory 1004, one ormore storage devices 1006, one ormore input modules 1008, one ormore output modules 1010,network interface 1012, and optionalgeo location determiner 1014.User device 1000 also includes the following software or virtual components: anoperating system 1020, one or more software (mobile)applications 1030, anddialog system interface 130, which can be a stand-alone software application or be integrated into one ormore software applications 1030.Dialog system interface 130 provides a human-centric interface for accessing and managing information as discussed herein, communicating withdialog system engine 120, and communicating with web resources/web services 160. -
Processors 1002 are configured to implement functionality and/or process instructions for execution withinuser device 1000. For example, the processor(s) 1002 may process instructions stored inmemory 1004 and/or instructions stored onstorage devices 1006. Such instructions may include components of anoperating system 1020 anddialog system interface 130. Theuser device 1000 may also include one or more additional components not shown inFIG. 10 , such as a housing, power supply, communication bus, and the like. These elements are omitted so as to not burden the description of present embodiments. -
Memory 1004, according to one example embodiment, is configured to store information within theuser device 1000 during operation.Memory 1004 may refer to a non-transitory computer-readable storage medium or a computer-readable storage device. In some examples,memory 1004 is a temporary memory, meaning that a primary purpose ofmemory 1004 may not be long-term storage.Memory 1004 may also refer to a volatile memory, meaning thatmemory 1004 does not maintain stored contents whenmemory 1004 is not receiving power. Examples of volatile memories include random access memories (RAM), dynamic random access memories (DRAM), static random access memories (SRAM), and other forms of volatile memories known in the art. In some examples,memory 1004 is used to store program instructions for execution by theprocessors 1002.Memory 1004, in one example embodiment, is used by software (e.g., the operating system 1020) ordialog system interface 130 executing onuser device 1000 to temporarily store information during program execution. One ormore storage devices 1006 can also include one or more transitory or non-transitory computer-readable storage media and/or computer-readable storage devices. In some embodiments,storage devices 1006 may be configured to store greater amounts of information thanmemory 1004.Storage devices 1006 may further be configured for long-term storage of information. In some examples,storage devices 1006 include non-volatile storage elements. Examples of such non-volatile storage elements include magnetic hard discs, optical discs, solid-state discs, flash memories, forms of electrically programmable memories (EPROM) or electrically erasable and programmable memories (EEPROM), and other forms of non-volatile memories known in the art. - Still referencing
FIG. 10 ,user device 1000 includes one ormore input modules 1008. Theinput modules 1008 are configured to receive user inputs. Examples ofinput modules 1008 include a microphone, keyboard, keypad, mouse, trackball, touchscreen, touchpad, or any other device capable of detecting an input from a user or other source in the form of speech, audio, or tactile actions, and relaying the input to theuser device 1000 or components thereof. -
Output modules 1010, in some example embodiments, are configured to provide output to users through visual or auditory channels.Output modules 1010 may include a video graphics adapter card, liquid crystal display (LCD) monitor, light emitting diode (LED) monitor, sound card, speaker, or any other device capable of generating output that may be intelligible to a user. -
User device 1000, in some embodiments, includesnetwork interface 1012.Network interface 1012 can be utilized to communicate with external devices, servers, and networked systems via one or more communications networks such as one or more wired, wireless, or optical networks including, for example, the Internet, intranet, LAN, WAN, cellular phone networks (e.g. Global System for Mobile (GSM) communications network, packet switching communications network, circuit switching communications network), Bluetooth radio, and an IEEE 802.11-based radio frequency network, among others.Network interface 1012 may be a network interface card, such as an Ethernet card, optical transceiver, radio frequency transceiver, or any other type of device that can send and receive information. Other examples of such network interfaces may include Bluetooth®, 3G, 4G, and WiFi® radios in mobile computing devices as well as Universal Serial Bus (USB). -
User device 1000 may further include optionalgeo location determiner 1014 for determining a current geographical location of the user device.Geo location determiner 1014 may utilize a number of different methods for determining geographical location including, for example, receiving and processing signals of Global Positioning Systems (GPS), GLONASS satellite navigation systems, or the Galileo satellite navigation system; utilizing multilateration of radio signals between radio towers (base stations); or utilizing geolocation methods associated with Internet Protocol (IP) addresses, Media Access Control (MAC) addresses, Radio-Frequency Identification (RFID), or other technologies. -
Operating system 1020 may control one or more functionalities ofuser device 1000 or components thereof. For example,operating system 1020 may interact withdialog system interface 130 and may further facilitate one or more interactions betweenapplications 1030 and one or more ofprocessors 1002,memory 1004,storage devices 1006,input modules 1008, andoutput modules 1010. As shown inFIG. 10 ,operating system 1020 may interact with or be otherwise coupled todialog system interface 130 and components thereof. In some embodiments,dialog system interface 130 can be included in theoperating system 1020. Notably,user device 1000 and its components, such as thedialog system interface 130, may also interact with one or more remote storage or computing resources including, for example, web resources, websites, social networking websites, blogging websites, news feeds, email servers, web calendars, event databases, ticket aggregators, map databases, points of interest databases, and so forth. -
FIG. 11 is a high-level block diagram illustrating anexample platform 1100 suitable for implementing the methods described herein. In particular,system 1100 is a server-based solution suitable for runningsystem 110. - Note that all components of
system 1100 include logic elements, hardware components, software (firmware) components, virtual components, or a combination thereof.System 1100 may include, relate to, or constitute an integral part of one or more of a variety of types of devices and systems such as a general-purpose computer, server, web server, network service, cloud-computing service, and so forth. Further, all modules shown inFIG. 11 may be operatively coupled using any suitable wired, wireless, radio, electrical, or optical standards. - As shown in
FIG. 11 ,system 1100 includes the following hardware components: one ormore processors 1102, memory 1104, one ormore storage devices 1106, andnetwork interface 1108.System 1100 also includes the following software or virtual components:operating system 1110, one ormore software applications 1120, anddeveloper interface 112. Thedeveloper interface 112 may provide a human-centric interface for accessing and managing information by developers (namely, for creating and managing dialog system engines 120). - In some embodiments,
processor 1102 is configured to implement functionality and/or process instructions for execution withinsystem 1100. For example,processor 1102 may process instructions stored in memory 1104 and/or instructions stored onstorage devices 1106. Such instructions may include components ofoperating system 1110,applications 1120, and/ordeveloper interface 112. - Memory 1104, according to some embodiments, is configured to store information within
system 1100 during operation. Memory 1104 may refer to a non-transitory computer-readable storage medium or a computer-readable storage device. In some examples, memory 1104 is a temporary memory, meaning that a primary purpose of memory 1104 may not be long-term storage. Memory 1104 may also refer to a volatile memory, meaning that memory 1104 does not maintain stored contents when memory 1104 is not receiving power. Examples of volatile memories include RAM, DRAM, SRAM, and other forms of volatile memories known in the art. In some examples, memory 1104 is used to store program instructions for execution byprocessor 1102. Memory 1104, in one example embodiment, is used to temporarily store information during program execution. - One or
more storage devices 1106 can also include one or more transitory or non-transitory computer-readable storage media and/or computer-readable storage devices. In some embodiments,storage devices 1106 may be configured to store greater amounts of information than memory 1104.Storage devices 1106 may further be configured for long-term storage of information. In some examples,storage devices 1106 include non-volatile storage elements. Examples of such non-volatile storage elements include magnetic hard discs, optical discs, solid-state discs, flash memories, forms of EPROM or EEPROM, and other forms of non-volatile memories known in the art. In one example, one ormore storage devices 1106 can includedatabases more storage devices 1106 can store and maintain user profiles and customdialog system engines 120. - Still referencing
FIG. 11 ,system 1100 includesnetwork interface 1108.Network interface 1108 can be utilized to communicate with external devices, servers, and networked systems via one or more communications networks such as one or more wired, wireless, or optical networks including, for example, the Internet, intranet, LAN, WAN, cellular phone networks (e.g. GSM communications network, packet switching communications network, circuit switching communications network), Bluetooth radio, and an IEEE 802.11-based radio frequency network, among others.Network interface 1108 may be a network interface card, such as an Ethernet card, optical transceiver, radio frequency transceiver, or any other type of device that can send and receive information. Other examples of such network interfaces may include Bluetooth®, 3G, 4G, and WiFi® radios in mobile computing devices as well as USB. -
Operating system 1110 may control one or more functionalities ofsystem 1100 or components thereof. For example,operating system 1110 may interact withdeveloper interface 112, and may further facilitate one or more interactions betweenapplications 1120 and one or more ofprocessors 1102, memory 1104,storage devices 1106, and/ornetwork interface 1108. As shown inFIG. 11 ,operating system 1110 may interact with, or be otherwise coupled to,developer interface 112 and components thereof. Notably,system 1100 and its components may also interact with one or more remote storage or computing web resources/web services 160 including, for example, web resources, websites, social networking websites, blogging websites, news feeds, email servers, web calendars, event databases, ticket aggregators, map databases, points of interest databases, and so forth.Software applications 1120, in essence, may provide functionality tosystem 110 and/ordeveloper interface 112 and enable their operation. Alternatively, software applications may be additions tosystem 110 and/ordeveloper interface 112. -
FIGS. 12-16 show various screenshots ofdeveloper interface 112 illustrating creation of entities. As illustrated inFIG. 12 ,developer interface 112 allows defining enumeration of entities if the entities do not have synonyms. For example, entities “red”, “green”, and “blue” are the entities that do not have synonyms. As shown,developer interface 112 allows expanding entities automatically. For example, if an entity “@color” contains colors “red”, “green”, an “blue”,system 110 can automatically understand that “maroon” is also likely a color. As result, for an example pattern “I like @color” the phrase “I like cats” will not be matched while “I like maroon” will be matched. - As illustrated in
FIG. 13 ,developer interface 112 allows a developer to define both examples and patterns. The patterns may be marked by the “@” icon on the left. Examples may be marked by the ‘″’ icon on the left. In some embodiments, parts of examples are automatically identified and highlighted by thedeveloper interface 112. - As illustrated in
FIG. 13 ,developer interface 112 allows a developer to highlight part of an example and assign an entity type. The entity type can be selected or created via acontext menu 1420. - As illustrated in
FIGS. 14 and 15 ,developer interface 112 allows a developer to mouse over an entity to highlight and change entity boundaries. A developer may highlight an incorrectly identified parameter and remove it. The developer may click on the highlighted entity and remove assignment, change entity type, or create a new entity for the highlighted entity. - In some embodiments, if a developer highlights a part of an example and assigns the part to an entity, this information can be used for training of machine learning. For example, “@color” entity includes “green”, “red”, and “blue”. The developer can add an example such as “I like maroon”. “Maroon” is not identified as @color since it is not in the entity definition. The developer can then highlight the “maroon” and identify it as belonging to “@color” entity. The dialog system engine can use this information to train a global natural language understanding model or a developer-specific natural language understanding model.
- Thus, methods and systems for maintaining and enhancing knowledge databases associated with dialog system engines have been described. Although embodiments have been described with reference to specific example embodiments, it will be evident that various modifications and changes can be made to these example embodiments without departing from the broader spirit and scope of the present application. Accordingly, the specification and drawings are to be regarded in an illustrative rather than a restrictive sense. There are many alternative ways of implementing the present technology. The disclosed examples are illustrative and not restrictive.
Claims (20)
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/062,151 US20160260029A1 (en) | 2015-03-06 | 2016-03-06 | Example-driven machine learning scheme for dialog system engines |
US17/499,616 US11983638B2 (en) | 2015-03-06 | 2021-10-12 | Example-driven machine learning scheme for dialog system engines |
US18/662,647 US20240296353A1 (en) | 2015-03-06 | 2024-05-13 | Example-driven machine learning scheme for dialog system engines |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201562129759P | 2015-03-06 | 2015-03-06 | |
US15/062,151 US20160260029A1 (en) | 2015-03-06 | 2016-03-06 | Example-driven machine learning scheme for dialog system engines |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US17/499,616 Continuation US11983638B2 (en) | 2015-03-06 | 2021-10-12 | Example-driven machine learning scheme for dialog system engines |
Publications (1)
Publication Number | Publication Date |
---|---|
US20160260029A1 true US20160260029A1 (en) | 2016-09-08 |
Family
ID=56850810
Family Applications (3)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US15/062,151 Abandoned US20160260029A1 (en) | 2015-03-06 | 2016-03-06 | Example-driven machine learning scheme for dialog system engines |
US17/499,616 Active 2036-04-14 US11983638B2 (en) | 2015-03-06 | 2021-10-12 | Example-driven machine learning scheme for dialog system engines |
US18/662,647 Pending US20240296353A1 (en) | 2015-03-06 | 2024-05-13 | Example-driven machine learning scheme for dialog system engines |
Family Applications After (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US17/499,616 Active 2036-04-14 US11983638B2 (en) | 2015-03-06 | 2021-10-12 | Example-driven machine learning scheme for dialog system engines |
US18/662,647 Pending US20240296353A1 (en) | 2015-03-06 | 2024-05-13 | Example-driven machine learning scheme for dialog system engines |
Country Status (1)
Country | Link |
---|---|
US (3) | US20160260029A1 (en) |
Cited By (40)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10013416B1 (en) | 2015-12-18 | 2018-07-03 | Amazon Technologies, Inc. | Language based solution agent |
US20180248817A1 (en) * | 2017-02-27 | 2018-08-30 | Ncr Corporation | Service assistance and integration |
US10068174B2 (en) | 2012-08-02 | 2018-09-04 | Artifical Solutions Iberia S.L. | Hybrid approach for developing, optimizing, and executing conversational interaction applications |
CN109002477A (en) * | 2018-06-19 | 2018-12-14 | 深圳市元征科技股份有限公司 | Information processing method, device, terminal and medium |
US20190074006A1 (en) * | 2017-09-05 | 2019-03-07 | First Advantage Corporation | Digital assistant |
US20190166069A1 (en) * | 2017-11-27 | 2019-05-30 | Baidu Usa Llc | System and method for visually understanding and programming conversational agents of electronic devices |
US10382370B1 (en) | 2016-08-11 | 2019-08-13 | Amazon Technologies, Inc. | Automated service agents |
US10387463B2 (en) | 2017-07-06 | 2019-08-20 | International Business Machines Corporation | Dialog agent for conducting task-oriented computer-based communications |
CN110249326A (en) * | 2017-02-08 | 2019-09-17 | 语义设备公司 | Natural language contents generator |
CN110383266A (en) * | 2017-03-05 | 2019-10-25 | 微软技术许可有限责任公司 | Use the personalized communication of semantic memory |
US10469665B1 (en) * | 2016-11-01 | 2019-11-05 | Amazon Technologies, Inc. | Workflow based communications routing |
US10484313B1 (en) | 2016-10-28 | 2019-11-19 | Amazon Technologies, Inc. | Decision tree navigation through text messages |
US20200021548A1 (en) * | 2016-09-30 | 2020-01-16 | Orange | Method of playback of a plurality of messages exchanged with a conversational agent |
US10552543B2 (en) | 2017-05-10 | 2020-02-04 | International Business Machines Corporation | Conversational authoring of event processing applications |
CN110998567A (en) * | 2017-07-31 | 2020-04-10 | 微软技术许可有限责任公司 | Knowledge graph for conversational semantic analysis |
US10650621B1 (en) | 2016-09-13 | 2020-05-12 | Iocurrents, Inc. | Interfacing with a vehicular controller area network |
US10713288B2 (en) | 2017-02-08 | 2020-07-14 | Semantic Machines, Inc. | Natural language content generator |
US10740371B1 (en) * | 2018-12-14 | 2020-08-11 | Clinc, Inc. | Systems and methods for intelligently configuring and deploying a machine learning-based dialogue system |
US10754885B2 (en) * | 2017-11-27 | 2020-08-25 | Baidu Usa Llc | System and method for visually searching and debugging conversational agents of electronic devices |
US10762892B2 (en) | 2017-02-23 | 2020-09-01 | Semantic Machines, Inc. | Rapid deployment of dialogue system |
US10824798B2 (en) | 2016-11-04 | 2020-11-03 | Semantic Machines, Inc. | Data collection for a new conversational dialogue system |
CN112053688A (en) * | 2020-08-27 | 2020-12-08 | 海信视像科技股份有限公司 | Voice interaction method, interaction equipment and server |
WO2020261944A1 (en) * | 2019-06-27 | 2020-12-30 | ソニー株式会社 | Information processing device and information processing method |
WO2020262811A1 (en) | 2019-06-26 | 2020-12-30 | Samsung Electronics Co., Ltd. | System and method for complex task machine learning |
US10915588B2 (en) * | 2018-08-02 | 2021-02-09 | International Business Machines Corporation | Implicit dialog approach operating a conversational access interface to web content |
US11031001B1 (en) * | 2019-06-16 | 2021-06-08 | Linc Global, Inc. | Action agent architecture in a scalable multi-service virtual assistant platform |
US11037546B2 (en) | 2018-11-15 | 2021-06-15 | Microsoft Technology Licensing, Llc | Nudging neural conversational model with domain knowledge |
US11069340B2 (en) | 2017-02-23 | 2021-07-20 | Microsoft Technology Licensing, Llc | Flexible and expandable dialogue system |
US11132499B2 (en) | 2017-08-28 | 2021-09-28 | Microsoft Technology Licensing, Llc | Robust expandable dialogue system |
US11195516B2 (en) | 2017-02-23 | 2021-12-07 | Microsoft Technology Licensing, Llc | Expandable dialogue system |
US11211056B1 (en) * | 2019-04-19 | 2021-12-28 | Amazon Technologies, Inc. | Natural language understanding model generation |
US11341962B2 (en) | 2010-05-13 | 2022-05-24 | Poltorak Technologies Llc | Electronic personal interactive device |
US11436265B2 (en) * | 2017-06-13 | 2022-09-06 | Microsoft Technology Licensing, Llc | System for presenting tailored content based on user sensibilities |
US11520989B1 (en) * | 2018-05-17 | 2022-12-06 | Workday, Inc. | Natural language processing with keywords |
US11526801B2 (en) | 2019-05-30 | 2022-12-13 | International Business Machines Corporation | Conversational search in content management systems |
US11853712B2 (en) | 2021-06-07 | 2023-12-26 | International Business Machines Corporation | Conversational AI with multi-lingual human chatlogs |
US11861318B2 (en) | 2018-12-18 | 2024-01-02 | Samsung Electronics Co., Ltd. | Method for providing sentences on basis of persona, and electronic device supporting same |
US11961509B2 (en) | 2020-04-03 | 2024-04-16 | Microsoft Technology Licensing, Llc | Training a user-system dialog in a task-oriented dialog system |
US11967313B2 (en) | 2019-03-06 | 2024-04-23 | Samsung Electronics Co., Ltd. | Method for expanding language used in speech recognition model and electronic device including speech recognition model |
US11983638B2 (en) | 2015-03-06 | 2024-05-14 | Google Llc | Example-driven machine learning scheme for dialog system engines |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030154077A1 (en) * | 2002-02-13 | 2003-08-14 | International Business Machines Corporation | Voice command processing system and computer therefor, and voice command processing method |
US20110301955A1 (en) * | 2010-06-07 | 2011-12-08 | Google Inc. | Predicting and Learning Carrier Phrases for Speech Input |
US20130035961A1 (en) * | 2011-02-18 | 2013-02-07 | Nuance Communications, Inc. | Methods and apparatus for applying user corrections to medical fact extraction |
US20140222422A1 (en) * | 2013-02-04 | 2014-08-07 | Microsoft Corporation | Scaling statistical language understanding systems across domains and intents |
US20140379326A1 (en) * | 2013-06-21 | 2014-12-25 | Microsoft Corporation | Building conversational understanding systems using a toolset |
US20150081290A1 (en) * | 2011-09-27 | 2015-03-19 | Nuance Communications, Inc. | Call steering data tagging interface with automatic semantic clustering |
US20150100943A1 (en) * | 2013-10-09 | 2015-04-09 | Viv Labs, Inc. | Dynamically evolving cognitive architecture system based on contributions from third-party developers |
US20160179801A1 (en) * | 2014-12-23 | 2016-06-23 | Rovi Guides, Inc. | Systems and methods for determining whether a negation statement applies to a current or past query |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7080004B2 (en) | 2001-12-05 | 2006-07-18 | Microsoft Corporation | Grammar authoring system |
AU2002951244A0 (en) | 2002-09-06 | 2002-09-19 | Telstra New Wave Pty Ltd | A development system for a dialog system |
US8972268B2 (en) * | 2008-04-15 | 2015-03-03 | Facebook, Inc. | Enhanced speech-to-speech translation system and methods for adding a new word |
US8024177B2 (en) | 2007-09-28 | 2011-09-20 | Cycorp, Inc. | Method of transforming natural language expression into formal language representation |
US8306807B2 (en) * | 2009-08-17 | 2012-11-06 | N T repid Corporation | Structured data translation apparatus, system and method |
US11403568B2 (en) * | 2010-01-06 | 2022-08-02 | Integral Ad Science, Inc. | Methods, systems, and media for providing direct and hybrid data acquisition approaches |
US8892419B2 (en) * | 2012-04-10 | 2014-11-18 | Artificial Solutions Iberia SL | System and methods for semiautomatic generation and tuning of natural language interaction applications |
US10978052B2 (en) * | 2014-04-16 | 2021-04-13 | Facebook, Inc. | Email-like user interface for training natural language systems |
US10460720B2 (en) * | 2015-01-03 | 2019-10-29 | Microsoft Technology Licensing, Llc. | Generation of language understanding systems and methods |
US9390087B1 (en) | 2015-02-09 | 2016-07-12 | Xerox Corporation | System and method for response generation using linguistic information |
US20160260029A1 (en) | 2015-03-06 | 2016-09-08 | Speaktoit, Inc. | Example-driven machine learning scheme for dialog system engines |
-
2016
- 2016-03-06 US US15/062,151 patent/US20160260029A1/en not_active Abandoned
-
2021
- 2021-10-12 US US17/499,616 patent/US11983638B2/en active Active
-
2024
- 2024-05-13 US US18/662,647 patent/US20240296353A1/en active Pending
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030154077A1 (en) * | 2002-02-13 | 2003-08-14 | International Business Machines Corporation | Voice command processing system and computer therefor, and voice command processing method |
US20110301955A1 (en) * | 2010-06-07 | 2011-12-08 | Google Inc. | Predicting and Learning Carrier Phrases for Speech Input |
US20130035961A1 (en) * | 2011-02-18 | 2013-02-07 | Nuance Communications, Inc. | Methods and apparatus for applying user corrections to medical fact extraction |
US20150081290A1 (en) * | 2011-09-27 | 2015-03-19 | Nuance Communications, Inc. | Call steering data tagging interface with automatic semantic clustering |
US20140222422A1 (en) * | 2013-02-04 | 2014-08-07 | Microsoft Corporation | Scaling statistical language understanding systems across domains and intents |
US20140379326A1 (en) * | 2013-06-21 | 2014-12-25 | Microsoft Corporation | Building conversational understanding systems using a toolset |
US20150100943A1 (en) * | 2013-10-09 | 2015-04-09 | Viv Labs, Inc. | Dynamically evolving cognitive architecture system based on contributions from third-party developers |
US20160179801A1 (en) * | 2014-12-23 | 2016-06-23 | Rovi Guides, Inc. | Systems and methods for determining whether a negation statement applies to a current or past query |
Cited By (58)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11367435B2 (en) | 2010-05-13 | 2022-06-21 | Poltorak Technologies Llc | Electronic personal interactive device |
US11341962B2 (en) | 2010-05-13 | 2022-05-24 | Poltorak Technologies Llc | Electronic personal interactive device |
US10068174B2 (en) | 2012-08-02 | 2018-09-04 | Artifical Solutions Iberia S.L. | Hybrid approach for developing, optimizing, and executing conversational interaction applications |
US11983638B2 (en) | 2015-03-06 | 2024-05-14 | Google Llc | Example-driven machine learning scheme for dialog system engines |
US10013416B1 (en) | 2015-12-18 | 2018-07-03 | Amazon Technologies, Inc. | Language based solution agent |
US10382370B1 (en) | 2016-08-11 | 2019-08-13 | Amazon Technologies, Inc. | Automated service agents |
US10650621B1 (en) | 2016-09-13 | 2020-05-12 | Iocurrents, Inc. | Interfacing with a vehicular controller area network |
US11232655B2 (en) | 2016-09-13 | 2022-01-25 | Iocurrents, Inc. | System and method for interfacing with a vehicular controller area network |
US20200021548A1 (en) * | 2016-09-30 | 2020-01-16 | Orange | Method of playback of a plurality of messages exchanged with a conversational agent |
US10887264B2 (en) * | 2016-09-30 | 2021-01-05 | Orange | Method of playback of a plurality of messages exchanged with a conversational agent |
US10484313B1 (en) | 2016-10-28 | 2019-11-19 | Amazon Technologies, Inc. | Decision tree navigation through text messages |
US10469665B1 (en) * | 2016-11-01 | 2019-11-05 | Amazon Technologies, Inc. | Workflow based communications routing |
US10742814B1 (en) * | 2016-11-01 | 2020-08-11 | Amazon Technologies, Inc. | Workflow based communications routing |
US10824798B2 (en) | 2016-11-04 | 2020-11-03 | Semantic Machines, Inc. | Data collection for a new conversational dialogue system |
US10713288B2 (en) | 2017-02-08 | 2020-07-14 | Semantic Machines, Inc. | Natural language content generator |
CN110249326A (en) * | 2017-02-08 | 2019-09-17 | 语义设备公司 | Natural language contents generator |
EP3552114A4 (en) * | 2017-02-08 | 2020-05-20 | Semantic Machines, Inc. | Natural language content generator |
US11069340B2 (en) | 2017-02-23 | 2021-07-20 | Microsoft Technology Licensing, Llc | Flexible and expandable dialogue system |
US10762892B2 (en) | 2017-02-23 | 2020-09-01 | Semantic Machines, Inc. | Rapid deployment of dialogue system |
US11195516B2 (en) | 2017-02-23 | 2021-12-07 | Microsoft Technology Licensing, Llc | Expandable dialogue system |
US20180248817A1 (en) * | 2017-02-27 | 2018-08-30 | Ncr Corporation | Service assistance and integration |
US11171892B2 (en) * | 2017-02-27 | 2021-11-09 | Ncr Corporation | Service assistance and integration |
CN110383266A (en) * | 2017-03-05 | 2019-10-25 | 微软技术许可有限责任公司 | Use the personalized communication of semantic memory |
US11100295B2 (en) | 2017-05-10 | 2021-08-24 | International Business Machines Corporation | Conversational authoring of event processing applications |
US10552543B2 (en) | 2017-05-10 | 2020-02-04 | International Business Machines Corporation | Conversational authoring of event processing applications |
US11436265B2 (en) * | 2017-06-13 | 2022-09-06 | Microsoft Technology Licensing, Llc | System for presenting tailored content based on user sensibilities |
US10387463B2 (en) | 2017-07-06 | 2019-08-20 | International Business Machines Corporation | Dialog agent for conducting task-oriented computer-based communications |
US10740370B2 (en) | 2017-07-06 | 2020-08-11 | International Business Machines Corporation | Dialog agent for conducting task-oriented computer-based communications |
CN110998567A (en) * | 2017-07-31 | 2020-04-10 | 微软技术许可有限责任公司 | Knowledge graph for conversational semantic analysis |
US11132499B2 (en) | 2017-08-28 | 2021-09-28 | Microsoft Technology Licensing, Llc | Robust expandable dialogue system |
US20220115013A1 (en) * | 2017-09-05 | 2022-04-14 | First Advantage Corporation | Digital assistant |
US11074911B2 (en) * | 2017-09-05 | 2021-07-27 | First Advantage Corporation | Digital assistant |
US20190074006A1 (en) * | 2017-09-05 | 2019-03-07 | First Advantage Corporation | Digital assistant |
US11551692B2 (en) * | 2017-09-05 | 2023-01-10 | First Advantage Corporation | Digital assistant |
US10754885B2 (en) * | 2017-11-27 | 2020-08-25 | Baidu Usa Llc | System and method for visually searching and debugging conversational agents of electronic devices |
US20190166069A1 (en) * | 2017-11-27 | 2019-05-30 | Baidu Usa Llc | System and method for visually understanding and programming conversational agents of electronic devices |
US10666583B2 (en) * | 2017-11-27 | 2020-05-26 | Baidu Usa Llc | System and method for visually understanding and programming conversational agents of electronic devices |
US11520989B1 (en) * | 2018-05-17 | 2022-12-06 | Workday, Inc. | Natural language processing with keywords |
CN109002477A (en) * | 2018-06-19 | 2018-12-14 | 深圳市元征科技股份有限公司 | Information processing method, device, terminal and medium |
US10915588B2 (en) * | 2018-08-02 | 2021-02-09 | International Business Machines Corporation | Implicit dialog approach operating a conversational access interface to web content |
US11037546B2 (en) | 2018-11-15 | 2021-06-15 | Microsoft Technology Licensing, Llc | Nudging neural conversational model with domain knowledge |
US10769384B2 (en) * | 2018-12-14 | 2020-09-08 | Clinc, Inc. | Systems and methods for intelligently configuring and deploying a machine learning-based dialogue system |
US10740371B1 (en) * | 2018-12-14 | 2020-08-11 | Clinc, Inc. | Systems and methods for intelligently configuring and deploying a machine learning-based dialogue system |
US10936936B2 (en) | 2018-12-14 | 2021-03-02 | Clinc, Inc. | Systems and methods for intelligently configuring and deploying a control structure of a machine learning-based dialogue system |
US11481597B2 (en) | 2018-12-14 | 2022-10-25 | Clinc, Inc. | Systems and methods for intelligently configuring and deploying a control structure of a machine learning-based dialogue system |
US11861318B2 (en) | 2018-12-18 | 2024-01-02 | Samsung Electronics Co., Ltd. | Method for providing sentences on basis of persona, and electronic device supporting same |
US11967313B2 (en) | 2019-03-06 | 2024-04-23 | Samsung Electronics Co., Ltd. | Method for expanding language used in speech recognition model and electronic device including speech recognition model |
US11211056B1 (en) * | 2019-04-19 | 2021-12-28 | Amazon Technologies, Inc. | Natural language understanding model generation |
US11526801B2 (en) | 2019-05-30 | 2022-12-13 | International Business Machines Corporation | Conversational search in content management systems |
US11031001B1 (en) * | 2019-06-16 | 2021-06-08 | Linc Global, Inc. | Action agent architecture in a scalable multi-service virtual assistant platform |
EP3948704A4 (en) * | 2019-06-26 | 2022-05-18 | Samsung Electronics Co., Ltd. | System and method for complex task machine learning |
US11875231B2 (en) | 2019-06-26 | 2024-01-16 | Samsung Electronics Co., Ltd. | System and method for complex task machine learning |
WO2020262811A1 (en) | 2019-06-26 | 2020-12-30 | Samsung Electronics Co., Ltd. | System and method for complex task machine learning |
WO2020261944A1 (en) * | 2019-06-27 | 2020-12-30 | ソニー株式会社 | Information processing device and information processing method |
US12038953B2 (en) | 2019-06-27 | 2024-07-16 | Sony Group Corporation | Information processing apparatus and information processing method |
US11961509B2 (en) | 2020-04-03 | 2024-04-16 | Microsoft Technology Licensing, Llc | Training a user-system dialog in a task-oriented dialog system |
CN112053688A (en) * | 2020-08-27 | 2020-12-08 | 海信视像科技股份有限公司 | Voice interaction method, interaction equipment and server |
US11853712B2 (en) | 2021-06-07 | 2023-12-26 | International Business Machines Corporation | Conversational AI with multi-lingual human chatlogs |
Also Published As
Publication number | Publication date |
---|---|
US11983638B2 (en) | 2024-05-14 |
US20220036015A1 (en) | 2022-02-03 |
US20240296353A1 (en) | 2024-09-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11983638B2 (en) | Example-driven machine learning scheme for dialog system engines | |
US12008325B2 (en) | Context-based natural language processing | |
US20220221959A1 (en) | Annotations in software applications for invoking dialog system functions | |
US10546067B2 (en) | Platform for creating customizable dialog system engines | |
US11769184B2 (en) | Enhancing functionalities of virtual assistants and dialog systems via plugin marketplace | |
US11861346B2 (en) | Online marketplace of plugins for enhancing dialog systems | |
US10170106B2 (en) | Parameter collection and automatic dialog generation in dialog systems | |
US20160098994A1 (en) | Cross-platform dialog system |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AS | Assignment |
Owner name: SPEAKTOIT, INC., CALIFORNIA Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:GELFENBEYN, ILYA GENNADYEVICH;GONCHARUK, ARTEM;SIROTIN, PAVEL ALEKSANDROVICH;REEL/FRAME:037900/0554 Effective date: 20160303 |
|
AS | Assignment |
Owner name: GOOGLE INC., CALIFORNIA Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:SPEAKTOIT, INC.;REEL/FRAME:041263/0863 Effective date: 20161202 |
|
AS | Assignment |
Owner name: GOOGLE LLC, CALIFORNIA Free format text: CHANGE OF NAME;ASSIGNOR:GOOGLE INC.;REEL/FRAME:044129/0001 Effective date: 20170929 |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: NON FINAL ACTION MAILED |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: RESPONSE TO NON-FINAL OFFICE ACTION ENTERED AND FORWARDED TO EXAMINER |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: FINAL REJECTION MAILED |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: DOCKETED NEW CASE - READY FOR EXAMINATION |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: RESPONSE TO NON-FINAL OFFICE ACTION ENTERED AND FORWARDED TO EXAMINER |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: FINAL REJECTION MAILED |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: NON FINAL ACTION MAILED |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: RESPONSE TO NON-FINAL OFFICE ACTION ENTERED AND FORWARDED TO EXAMINER |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: FINAL REJECTION COUNTED, NOT YET MAILED |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: FINAL REJECTION MAILED |
|
STCB | Information on status: application discontinuation |
Free format text: ABANDONED -- FAILURE TO RESPOND TO AN OFFICE ACTION |