Noise data augmentation for natural language processing
Patent Information
- Application Number
- JP2025125324
- Authority / Receiving Office
- JP · JP
- Patent Type
- Patents
- Current Assignee / Owner
- Priority Date
- 2020-03-30
- Filing Date
- 2025-07-28
- Publication Date
- 2026-09-17
- Estimated Expiration
- 2040-09-11
Smart Images

Figure 0007923375000010 
Figure 0007923375000011 
Figure 0007923375000012
Abstract
Description
Technical Field
[0001] Priority Claim This application claims the benefit and priority under 35 U.S.C. § 119(e) to the non-provisional application of U.S. Provisional Application No. 63 / 002,066 filed on March 30, 2020, entitled "NOISE DATA AUGMENTATION FOR NATURAL LANGUAGE PROCESSING" . The entire content of the above application is hereby incorporated by reference in its entirety for all purposes.
[0002] Field of the Invention The present disclosure relates generally to chatbot systems, and more specifically to techniques for noise data augmentation for training chatbot systems in natural language processing.
Background Art
[0003] Background Many users worldwide are on instant messaging or chat platforms to get immediate responses. Organizations often use these instant messaging or chat platforms to engage in live conversations with customers (or end users). However, hiring service personnel to engage in live communication with customers or end users can be very expensive for organizations. Chatbots or bots began to be developed, especially on the internet, to simulate conversations with end users. End users can communicate with bots through messaging apps that they have already installed and are using. Intelligent bots, generally driven by artificial intelligence (AI), can communicate more intelligently and contextually in live conversations, and thus enable more natural conversations between bots and end users for an improved conversational experience. Instead of end users learning a fixed set of keywords or commands that the bot knows how to respond to, intelligent bots can understand the end user's intent based on the end user's natural language utterances and respond accordingly.
[0004] However, building chatbots is challenging because these automated solutions require specific knowledge in a particular field and the application of specific technologies, which may only be within the capabilities of expert developers. As part of building such a chatbot, developers may first understand the needs of the company and end users. Then, developers may analyze and make decisions related to, for example, selecting the dataset to be used for analysis, preparing the input dataset for analysis (e.g., data cleansing, pre-analysis data extraction, formatting and / or transformation, performing data feature engineering, etc.), identifying appropriate machine learning (ML) techniques or models to perform the analysis, and improving the techniques or models to improve results / outcomes based on feedback. The task of identifying appropriate models may include developing multiple models, possibly in parallel, and identifying a particular model for use after iteratively testing and experimenting with these models. Furthermore, supervised learning-based solutions typically include a training phase, a subsequent application (i.e., inference) phase, and an iterative loop between the training and application phases. Developers may be responsible for carefully executing and monitoring these phases to achieve an optimal solution. For example, ML techniques or models are used to train ML techniques or models, and to predict desired outcomes (e.g., inferring intent from utterances). Accurate training data is required to enable algorithms to understand and learn specific patterns or features (for example, in the case of chatbots—not just raw language processing, but intent extraction and careful parsing). To ensure that ML techniques or models properly learn these patterns and features, developers may be responsible for selecting, enriching, and optimizing the set of training data for the ML techniques or models. [Overview of the Initiative] [Means for solving the problem]
[0005] overview The techniques disclosed herein relate, in general, to chatbots. More specifically, and not limited to, the techniques disclosed herein relate to techniques for noise data augmentation of training data sets for training chatbot systems in natural language processing. A chatbot can classify user utterances into different classes, such as predefined user intents. The classifier of a chatbot may include a trained ML model that generates outputs (e.g., intents) based on inputs (e.g., user utterances). If the training data used to train the trained ML model is inadequate, the chatbot may more frequently identify incorrect intents. The techniques disclosed herein can provide noise-augmented datasets for training ML models so that the ML models are more robust to irrelevant contexts and learn intent patterns or boundaries more accurately.
[0006] In various embodiments, a computer-implemented method is provided, the method comprising: a data processing system receiving a training set of utterances for training an intent classifier to identify one or more intents for one or more utterances; the data processing system extending the training set of utterances with noise text to generate an extended training set of utterances, the extension comprising: obtaining the noise text from a list of words unrelated to the original text in the utterances of the training set of utterances, a text corpus, a publication, a dictionary, or any combination thereof; and incorporating the noise text within the utterances with respect to the original text in the utterances of the training set of utterances at a predefined extension ratio to generate the extended utterances, the method further comprising the data processing system training the intent classifier using the extended training set of utterances.
[0007] In some embodiments, the noise text is provided in a predefined expansion ratio of 1:0.5 to 1:5, either (i) before the original text in the utterance, (ii) after the original text in the utterance, (iii) adjacent to the original text in the utterance, (iv) integrated into the original text in the utterance, or (v) or a combination thereof.
[0008] In one embodiment, the noise text is a random string of text automatically generated from a stop word list.
[0009] In one embodiment, the noise text is a sentence of text that is automatically copied word for word from a corpus.
[0010] In one embodiment, the noise text is a random string of text automatically generated from a corpus.
[0011] In one embodiment, the noise text is a random string of text automatically generated from a dictionary. This is a random string, generated without considering the frequency of any words or characters selected for the random string of text above.
[0012] In one embodiment, the noise text is a random string of text automatically generated from a dictionary, taking into account the frequency of words or characters selected for the random string of text.
[0013] In various embodiments, a computer-implemented method is provided, which includes a chatbot system receiving utterances generated by a user interacting with the chatbot system, and classifying the utterances into intent categories corresponding to intents using an intent classifier deployed within the chatbot system, the intent classifier including a plurality of model parameters identified using training data, the training data including a training set of augmented utterances for training the intent classifier to identify one or more intents for one or more utterances, the training set of augmented utterances being artificially generated from the training set of utterances to include augmented utterances, the augmented utterances being generated by incorporating noise text into the utterances from the training set of utterances at a predefined augmentation ratio with respect to the original text in the utterances, the plurality of model parameters being identified using the training data based on minimizing a loss function, and the method further includes using the intent classifier to output the intents based on the classification.
[0014] In various embodiments, a system is provided that includes one or more data processors and a non-temporary computer-readable storage medium containing instructions that, when executed on one or more data processors, cause one or more data processors to perform some or all of the methods disclosed herein.
[0015] In various embodiments, a computer program product is provided which includes instructions that are tangibly embodied in a non-temporary machine-readable storage medium and configured to cause one or more data processors to perform some or all of the methods disclosed herein.
[0016] Some embodiments of this disclosure include a system comprising one or more data processors. In some embodiments, the system includes a non-temporary computer-readable storage medium that, when executed on one or more data processors, causes one or more data processors to perform some or all of one or more of the methods disclosed herein and / or some or all of one or more processes. Some embodiments of this disclosure include a computer program product tangibly embodied in a non-temporary machine-readable storage medium that includes instructions configured to cause one or more data processors to perform some or all of the methods disclosed herein and / or some or all of one or more processes.
[0017] The technologies described above and below can be implemented in several ways and in several situations. Several exemplary implementations and situations are provided with reference to the following drawings, as will be described in more detail below. However, the following implementations and situations represent only a small fraction of the many. [Brief explanation of the drawing]
[0018] [Figure 1] This is a simplified block diagram of a distributed environment incorporating an exemplary embodiment. [Figure 2] This is a simplified block diagram of a computing system that implements a master bot according to one embodiment. [Figure 3] This is a simplified block diagram of a computing system that implements a skill bot according to one embodiment. [Figure 4] This is a simplified block diagram of chatbot training and deployment systems in various embodiments. [Figure 5] This figure shows the process flow for augmenting a training dataset with noise using various embodiments. [Figure 6] This is a simplified diagram of a distributed system for realizing various embodiments. [Figure 7]It is a simplified block diagram of one or more components of a system environment, where the services provided by the one or more components of the system according to various embodiments can be provided as a cloud service. [Figure 8] FIG. 1 is a diagram showing an exemplary computer system that can be used to implement various embodiments. DETAILED DESCRIPTION OF THE INVENTION
[0019] Detailed Description In the following description, for purposes of explanation, specific details are set forth to facilitate a complete understanding of particular embodiments. However, it will be apparent that various embodiments may be practiced without these specific details. The figures and description are not intended to be limiting. The term "exemplary" is used herein to mean "serving as an example, instance, or illustration". Any embodiment or design described herein as "exemplary" is not necessarily to be construed as preferred or advantageous over other embodiments or designs.
[0020] Introduction A digital assistant is an artificial intelligence-driven interface that helps users accomplish various tasks in natural language conversations. For each digital assistant, a customer may assemble one or more skills. Skills (also referred to herein as chatbots, bots, or skill bots) are individual bots that focus on specific types of tasks, such as tracking inventory, submitting time cards, and creating expense reports. When an end user engages with the digital assistant, the digital assistant evaluates the end user input, routes the conversation to an appropriate chatbot, and routes the conversation from the appropriate chat. The digital assistant may be made available to end users via various channels such as FACEBOOK® Messenger, SKYPE MOBILE® Messenger, or Short Message Service (SMS). A channel passes chats back and forth between end users and the digital assistant and its various chatbots on various messaging platforms. Channels may also support user agent escalation, event-initiated conversations, and testing.
[0021] Intents enable a chatbot to understand what a user wants the chatbot to do. An intent consists of a permutation of typical user requests and statements, also referred to as utterances (e.g., get account balance, make purchase). In this context, an utterance or message can refer to a set of words (e.g., one or more sentences) exchanged during a conversation with the chatbot. An intent may be created by providing a name for some user action (e.g., order a pizza) and compiling a set of real-life user statements or utterances that are commonly associated with triggering that action. Since the chatbot's cognition is derived from these intents, each intent may be constructed from a robust dataset (1 to over 20 utterances) and may vary to allow the chatbot to interpret ambiguous user input. A rich set of utterances enables the chatbot to understand what a user wants when it receives messages that mean the same thing but are expressed differently, such as "ignore this order" or "cancel delivery!". Collectively The intents and the utterances belonging to them constitute a training corpus for chat. By training a model using the corpus, customers can transform that model into a reference tool for resolving end-user input into a single intent. Customers can improve the cognitive agility of chat through a cycle of intent testing and intent training.
[0022] However, building a chatbot that can determine an end-user's intent based on user utterances is a challenging task, partly due to the nuances and ambiguities of natural language, as well as the dimensionality of the input space (e.g., possible user utterances) and the size of the output space (number of intents). Therefore, it may be necessary to train, monitor, debug, and retrain chatbots to improve their performance and the user experience they provide. Traditional systems provide training systems for training and retraining machine learning models of digital assistants or chatbots in Spoken Language Understanding (SLU) and Natural Language Processing (NLP). Traditionally, models used in chatbot systems are trained in NLP with "manufactured" utterances for any given intent. For example, using the utterance "Do you do price changes?", this type of utterance can be retrained to "Do you offer a price match?" The classification model of the chatbot system may be trained to classify intents as such. Training the model with manufactured utterances initially helps train the chatbot system to provide the service, and then the chatbot system may be retrained once it is deployed and begins to receive actual utterances from users.
[0023] Traditional training of text classification models begins with pre-labeled data. One option for obtaining labeled data is to manually read each text and annotate all the data yourself by classifying that text (e.g., classifying utterances as intents). Another option is to outsource the labeling to a freelancer or company specializing in data labeling. Both options are time-consuming and expensive. To overcome this problem in similar technological spaces such as image analysis, data augmentation has been used to increase the size of image datasets for image classification tasks and to accelerate the labeling process. For images, there are natural augmentation primitives such as rotation, small translational shifts, and additive Gaussian noise, but similar primitives are not as well developed for text data. For example, in text-based data augmentation, the input data should be modified while the class labels are preserved. If the meaning of an utterance (e.g., a sentence or phrase) changes significantly due to the augmentation approach, the original class labels may no longer be valid. Since longer sentences or phrases have more words than shorter ones, these types of text can absorb more noise while preserving their original class labels. Therefore, conventional augmentation primitives developed for text preserve the original class labels of sentences or phrases by focusing on the words present in each sentence (e.g., synonym substitution, random insertion by synonyms, random exchange, random deletion, etc.) and the length of the sentence or phrase. However, these approaches can be difficult to implement in enterprise systems employing many chatbot systems trained on many different tasks in multiple languages, receiving a wide variety of utterances for each task (many of which are very short). Systems employing such chatbots need to automatically apply augmentation in a synthetic, agnostic manner to quickly and efficiently generate large corpora of training data in multiple languages for many different chatbots.
[0024] Therefore, different approaches are needed to address these problems. Various embodiments provide a method that includes receiving a training set of text data for an utterance or message, and augmenting the training set of text data with noise text to obtain an augmented training set of text data. Augmentation includes (i) obtaining noise text from a list of words irrelevant to the utterance or message, a text corpus, a publication, a dictionary, or any combination thereof, and (ii) incorporating the noise text into the training set of text data with respect to the utterance or message at a predefined augmentation ratio. A computer-implemented method further includes using the augmented training set of text data to train a predictive model to determine the likelihood that an utterance or message represents a task configured for a skill bot to perform, or to match an utterance or message to an intent associated with a skill bot.
[0025] Bot and analytics systems A bot (also known as a skill, chatbot, chatterbot, or talkbot) is a computer program that can engage in conversations with end users. Bots can generally respond to natural language messages (e.g., questions or comments) through messaging applications that use natural language messaging. Businesses may use one or more bot systems to communicate with end users through messaging applications. These messaging applications, sometimes called channels, can be the end user's preferred messaging application, one they have already installed and are familiar with. Therefore, end users do not need to download and install a new application to chat with the bot system. Examples of messaging applications include over-the-top (OTT) messaging channels (e.g., Facebook Messenger, Facebook WhatsApp, WeChat, Line, Kik, Telegram, Talk, Skype, Slack, or SMS), and virtual private assistants (e.g., Amazon Dot, Echo, or Show, Google® Home, Apple HomePod, etc.). ), mobile and web app extensions that extend native or hybrid / responsive mobile apps or web applications with chat functionality, or voice-based input (e.g., Siri, Cortana, Google Voice, or other voice input for dialogue) This may include devices or applications that have an interface to use.
[0026] In some examples, a bot system may be associated with a Unified Resource Identifier (URI). A URI can identify a bot system using a string. A URI can be used as a webhook for one or more messaging application systems. A URI can include, for example, a Unified Resource Location Specifier (URL) or a Unified Resource Name (URN). A bot system may be designed to receive messages (e.g., Hypertext Transfer Protocol (HTTP) post-call messages) from messaging application systems. HTTP post-call messages may be directed from messaging application systems to URIs. In some embodiments, messages may differ from HTTP post-call messages. For example, a bot system may receive messages from the Short Message Service (SMS). The discussion here may refer to communications that a bot system receives as messages, but it should be understood that messages can be HTTP post-call messages, SMS messages, or any other type of communication between two systems.
[0027] End users can interact with bot systems through conversational dialogue (sometimes called a conversational user interface (UI)), similar to how people interact with each other. In some cases, the dialogue might involve the end user saying "Hello" to the bot. The bot may respond with "Hi" and ask the end user how it can help. In some cases, the interaction may also be a transactional interaction with a banking bot, such as transferring money from one account to another; an informational interaction with an HR bot, such as checking a vacation balance; or an interaction with a retail bot, such as discussing returning a purchased item or seeking technical support.
[0028] In some embodiments, the bot system can intelligently handle end-user interactions without interaction with the bot system's administrator or developers. For example, an end-user may send one or more messages to the bot system to achieve a desired goal. The messages may contain some content, such as text, emojis, audio, images, video, or other means of conveying the message. In some embodiments, the bot system converts the content into a standardized format (e.g., a representational state transfer (REST) call to an enterprise service with appropriate parameters) and translates it into natural language. The system can generate an answer. The bot system can also prompt the end user for additional input parameters or request other additional information. In some embodiments, the bot system may also initiate communication with the end user rather than passively responding to the end user utterance. Various techniques for identifying explicit invocations of bot systems and determining input to the bot system being invoked are described here. In some embodiments, explicit invocation analysis is performed by the master bot based on the detection of an invocation name in the utterance. In response to the detection of an invocation name, the utterance may be refined for input to the skill bot associated with the invocation name.
[0029] A conversation with a bot can follow a specific conversational flow that includes multiple states. The flow can define what happens next based on the input. In some embodiments, a bot system can be implemented using a state machine that includes user-defined states (e.g., end-user intents) and actions to be taken in or from a state. A conversation can take different paths based on end-user input, which can influence the decisions the bot makes about the flow. For example, in each state, based on end-user input or utterance, the bot can determine the end-user intent and decide on the appropriate next action. Here, and in the context of utterances, the term “intent” refers to the intent of the user who gave the utterance. For example, if a user intends to engage the bot in a conversation to order a pizza, the user’s intent might be expressed by the utterance “order a pizza.” A user’s intent can be directed towards a specific task that the user wants the chatbot to perform on their behalf. Thus, utterances can be expressed as questions, commands, requests, etc., that reflect the user’s intent. An intent can include goals that the end-user wishes to achieve.
[0030] In the context of chat configuration, the term "intent" here refers to configuration information for mapping user utterances to specific tasks / actions or categories of tasks / actions that a chatbot can perform. To distinguish between utterance intents (i.e., user intents) and chatbot intents, the latter may be referred to here as "bot intents." A bot intent may include a set of one or more utterances associated with that intent. For example, an intent to order a pizza could have various permutations of utterances expressing the desire to order a pizza. These associated utterances may be used to train the chatbot's intent classifier, which can then determine whether an input utterance from the user matches the pizza order intent. A bot intent may be associated with one or more dialogue flows for initiating a conversation with the user in a certain state. For example, the first message for the pizza order intent might be "What kind of pizza?" The question could be, "Is that alright?" In addition to the associated utterance, a bot intent may also include a named entity associated with that intent. For example, a pizza order intent may include variables or parameters used to perform the task of ordering a pizza, such as topping 1, topping 2, pizza type, pizza size, pizza quantity, etc. The values of the entities are typically obtained through conversation with the user.
[0031] Figure 1 is a simplified block diagram of an environment 100 incorporating a chatbot system according to a specific embodiment. Environment 100 includes a Digital Assistant Builder Platform (DABP) 102, which enables users of DABP 102 to create and deploy digital assistant or chatbot systems. DABP 102 can be used to create one or more digital assistants (or DAs) or chatbot systems. For example, as shown in Figure 1, a user 104 representing a specific company can use DABP 102 to create and deploy a digital assistant 106 for users of that company. For example, a bank can use DABP 102 to create one or more digital assistants for use by its customers. Multiple companies can use the same DABP 102 platform to create digital assistants. As another example, the owner of a restaurant (e.g., a pizza shop) can use DABP 102 to create and deploy a digital assistant that enables restaurant customers to order food (e.g., order pizza).
[0032] For the purposes of this disclosure, “digital assistant” is an entity that helps the user of the digital assistant accomplish various tasks through natural language conversation. A digital assistant may be implemented using only software (for example, a digital assistant is a digital entity implemented using a program, code, or instructions that can be executed by one or more processors), using hardware, or using a combination of hardware and software. A digital assistant may be embodied or implemented in various physical systems or devices, such as computers, mobile phones, watches, appliances, vehicles, etc. A digital assistant is also sometimes referred to as a chatbot system. Therefore, for the purposes of this disclosure, the terms digital assistant and chatbot system are interchangeable.
[0033] A digital assistant such as a digital assistant 106 built using DABP 102 can be used to perform various tasks through natural language-based conversations between the digital assistant and its user 108. As part of the conversation, the user may provide one or more user inputs 110 to the digital assistant 106 and receive responses 112 from the digital assistant 106. The conversation may include one or more of the inputs 110 and responses 112. Through these conversations, the user may request that one or more tasks be performed by the digital assistant 106, and in response, the digital assistant 106 is configured to perform the user-requested tasks and respond to the user with appropriate responses.
[0034] User input 110 is generally in natural language form and is called utterance. User utterance 110 can be in text form, such as when the user types a sentence, a question, a piece of text, or even a single word and provides it to the digital assistant 106 as input. In some embodiments, user utterance 110 can be in voice input or utterance form, such as when the user says or speaks something that is provided to the digital assistant 106 as input. Utterance is typically the language spoken by the user 108. For example, utterance may be English or some other language. If utterance is in voice form, voice input is converted into a text-form utterance in that particular language, and then the text utterance is provided to the digital assistant The input is processed by the Tant 106. Various speech-to-text processing techniques may be used to convert speech or auditory input into text utterances, which are then processed by the digital assistant 106. In some embodiments, the speech-to-text conversion may be performed by the digital assistant 106 itself.
[0035] Utterances, which may be text utterances or voice utterances, may include fragments, sentences, multiple sentences, one or more words, one or more questions, or combinations of the aforementioned types. The digital assistant 106 is configured to apply natural language understanding (NLU) techniques to utterances in order to understand the meaning of user input. As part of the NLU processing of an utterance, the digital assistant 106 is configured to perform processing to understand the meaning of the utterance, which involves identifying one or more intents and one or more entities corresponding to the utterance. Once the meaning of the utterance is understood, the digital assistant 106 can perform one or more actions or behaviors in response to the understood meaning or intent. For the purposes of this disclosure, we assume that utterances are either text utterances provided directly by the user 108 of the digital assistant 106, or the result of a conversion of input voice utterances into text format. However, this is not intended to be limiting or restrictive in any way.
[0036] For example, user 108's input may be a request to order a pizza by providing an utterance such as "I want to order a pizza." Upon receiving such an utterance, the digital assistant 106 is configured to understand the meaning of the utterance and take appropriate action. Appropriate action may include responding to the user with a question requesting user input, such as the type of pizza the user wants to order, the size of the pizza, and any toppings. The responses provided by the digital assistant 106 may also be in natural language form and may typically be in the same language as the input utterance. As part of generating these responses, the digital assistant 106 may perform natural language generation (NLG). In order for the user to order a pizza, the digital assistant may guide the user through a conversation with the user to provide all the necessary information to order the pizza, and then, at the end of the conversation, have the user order the pizza. The digital assistant 106 may terminate the conversation by outputting information to the user indicating that the pizza has been ordered.
[0037] At a conceptual level, the digital assistant 106 performs various processes in response to utterances received from the user. In some embodiments, this process involves a series of processing steps or a pipeline of processing steps, including, for example, understanding the meaning of the input utterance (sometimes called natural language understanding (NLU)), determining what action should be taken in response to the utterance, triggering the action to be taken where appropriate, generating a response to be output to the user in response to the user utterance, and outputting the response to the user. NLU processing may include parsing the received input utterance to understand its structure and meaning, and refining and reconstructing the utterance to develop a more understandable form (e.g., logical form) or structure for the utterance. Generating a response may include using NLG techniques.
[0038] NLU processing performed by a digital assistant such as the digital assistant 106 may include various NLP-related processes such as sentence analysis (e.g., tokenization, sorting, part-of-speech tagging for sentences, named entity recognition in sentences, generation of dependency trees to represent sentence structure, sentence splitting into clauses, analysis of individual clauses, resolution of anaphora, and chunking). In some embodiments, the NLU processing or a part of it is performed by the digital assistant 106 itself. In some other embodiments, the digital assistant 106 may perform a part of the NLU processing using other resources. For example, the structure of the input utterance Sentences and structures may be identified by processing the sentence using parsing, part-of-speech tagging, and / or named entity recognition. In one implementation, for English, parsing, part-of-speech tagging, and named entity recognition, such as those provided by the Stanford Natural Language Processing (NLP) Group, are used to parse sentence structure and syntax. These are provided as part of the Stanford CoreNLP toolkit.
[0039] The various examples provided in this disclosure demonstrate English utterances, but these are meant to be examples only. In certain embodiments, the digital assistant 106 may also process utterances in languages other than English. The digital assistant 106 may provide subsystems (e.g., components that implement NLU functionality) configured to perform processing for different languages. These subsystems may be implemented as pluggable units that can be invoked using service calls from the NLU core server. This makes the NLU processing flexible and extensible for each language, including allowing processing in different orders. Language packs may be provided for individual languages, and language packs may register a list of subsystems that can be serviced from the NLU core server.
[0040] Digital assistants such as the digital assistant 106 shown in Figure 1 can be made available or accessible to their user 108 through various different channels, including, but not limited to, a certain application, a social media platform, various messaging services and applications, and other applications or channels. A single digital assistant can have several channels configured for it, so that it can run on different services simultaneously and be accessed by different services simultaneously.
[0041] A digital assistant or chatbot system typically includes or is associated with one or more skills. In some embodiments, these skills are individual chatbots (referred to as skillbots) configured to interact with the user and fulfill specific types of tasks, such as tracking inventory, submitting time cards, creating expense reports, ordering food, verifying bank accounts, making reservations, and purchasing widgets. For example, in the embodiment shown in Figure 1, the digital assistant or chatbot system 106 includes skills 116-1, 116-2, etc. For the purposes of this disclosure, the term “skill” is used synonymously with the term “skillbot.”
[0042] Each skill associated with a digital assistant helps the user complete tasks through conversation with the user, and the conversation may include a combination of text or auditory input provided by the user and responses provided by the skill bot. These responses may take the form of text or auditory messages to the user, and / or use simple user interface elements (e.g., a selection list) that present the user with a choice to make.
[0043] There are various ways in which skills or skillbots can be associated with or added to a digital assistant. In one example, a skillbot may be developed by a company and then added to a digital assistant using DABP102. In another example, a skillbot may be developed and created using DABP102 and then added to a digital assistant created using DABP102. In yet another example, DABP102 provides an online digital store (called a "skill store") offering multiple skills aimed at a wide range of tasks. Skills offered through the skill store may also be published to various cloud services. To add skills to a digital assistant generated using DABP102, a DABP102 user accesses the skill store via DABP102, selects the desired skill, and the selected skill is added to DABP102. It can be indicated that skills will be added to digital assistants created using 2. Skills from the skill store can be added to digital assistants either as is or in a modified form (for example, a DABP102 user may select and clone a specific skill bot provided by the skill store, customize or modify the selected skill bot, and then add the modified skill bot to a digital assistant created using DABP102).
[0044] Various different architectures may be used to implement a digital assistant or chatbot system. For example, in one embodiment, the digital assistant created and deployed using DABP102 may be implemented using a master-bot / child (or sub)bot paradigm or architecture. According to this paradigm, the digital assistant is implemented as a master bot that interacts with one or more child bots, which are skill bots. For example, in the embodiment shown in Figure 1, the digital assistant 106 includes a master bot 114 and skill bots 116-1, 116-2, etc., which are child bots of the master bot 114. In certain embodiments, the digital assistant 106 itself is considered to act as the master bot.
[0045] A digital assistant implemented according to a master-sub-bot architecture allows users of the digital assistant to interact with multiple skills through an integrated user interface, i.e., through the master bot. When a user engages with the digital assistant, user input is received by the master bot. The master bot then performs processing to determine the meaning of the user input utterance. The master bot then determines whether the task requested by the user in the utterance can be handled by the master bot itself. If not, the master bot selects an appropriate skill bot to handle the user request and routes the conversation to the selected skill bot. This allows the user to converse with the digital assistant through a common, single interface while still providing the ability to use several skill bots configured to perform specific tasks. For example, in the case of a digital assistant developed for an enterprise, the digital assistant's master bot can interface with skill bots having specific functions, such as a CRM bot to perform functions related to customer relationship management (CRM), an ERP bot to perform functions related to enterprise resource planning (ERP), and an HCM bot to perform functions related to human capital management (HCM). Thus, end-users or consumers of digital assistants only need to know how to access the digital assistant through a common master bot interface, with multiple skill bots provided behind the scenes to handle user requests.
[0046] In one embodiment, in a master-bot / child-bot infrastructure, the master bot is configured to recognize a list of available skill bots. The master bot may have access to various available skill bots and, for each skill bot, metadata that identifies the capabilities of each skill bot, including tasks that each skill bot can perform. Upon receiving a user request in the form of an utterance, the master bot is configured to identify or predict from among several available skill bots which particular skill bot is best suited to respond to or process the user request. The master bot then routes the utterance (or a portion of the utterance) to that particular skill bot for further processing. Thus, control flows from the master bot to the skill bots. The master bot may support multiple input and output channels.
[0047] The embodiment shown in Figure 1 illustrates a digital assistant 106 comprising a master bot 114 and skill bots 116-1, 116-2, and 116-3, but this is not intended to be limiting. It is not a digital assistant. A digital assistant may include various other components (e.g., other systems and subsystems) that provide the functionality of the digital assistant. These systems and subsystems may be implemented using software only (e.g., code, instructions stored on a computer-readable medium and executable by one or more processors), hardware only, or a combination of software and hardware.
[0048] DABP102 provides infrastructure, services, and features that enable DABP102 users to create digital assistants that include one or more skill bots associated with the digital assistant. In some cases, skill bots can be created by cloning existing skill bots, for example, by cloning skill bots provided by the skill store. As mentioned above, DABP102 provides a skill store or skill catalog that offers multiple skill bots for performing various tasks. DABP102 users can clone skill bots from the skill store. If necessary, they may modify or customize the cloned skill bots. In some other cases, DABP102 users have created skill bots from scratch using the tools and services provided by DABP102. As mentioned above, the skill store or skill catalog provided by DABP102 may offer multiple skill bots for performing various tasks.
[0049] In a particular embodiment, creating or customizing a skill bot at a higher level includes the following steps: (1) Configure settings for the new skillbot (2) Set one or more intents for SkillBot (3) Set up one or more entities for one or more intents (4) Train SkillBot (5) Create a dialog flow for SkillBot (6) Add custom components to the skillbot as needed (7) Test and deploy the skillbot. The following is a brief explanation of each step.
[0050] (1) Configure settings for a new skillbot - various settings may be configured for the skillbot. For example, a skillbot designer can specify one or more invocation names for the skillbot being created. These invocation names can then be used by the digital assistant user to explicitly invoke the skillbot. For example, a user can explicitly invoke the corresponding skillbot by typing the invocation name into their utterance.
[0051] (2) Setting up one or more intents and associated exemplary utterances for a skillbot - The skillbot designer specifies one or more intents (also called bot intents) for the skillbot being created. The skillbot is then trained based on these specified intents. These intents represent categories or classes for which the skillbot is trained to infer about input utterances. Upon receiving an utterance, the trained skillbot infers the intent for the utterance, and the inferred intent is selected from a predefined set of intents used to train the skillbot. The skillbot then takes the appropriate action to respond to the utterance based on the inferred intent for that utterance. In some cases, the intents for a skillbot represent tasks that the skillbot can perform for the user of the digital assistant. Each intent has an intent identifier. Alternatively, an intent name may be given. For example, in the case of a skill bot trained for a bank, the intents assigned to that skill bot could be "CheckBalance," "TransferMoney," "DepositCheck," etc. It may be included.
[0052] For each intent defined for a skillbot, the skillbot designer may also provide one or more exemplary utterances that represent that intent. These exemplary utterances are intended to represent utterances that a user may input to the skillbot for that intent. For example, for the balance inquiry intent, exemplary utterances may include: "What's my savings account balance?", "How much is in my checking account?", "How much money do I have in my account?", etc. This is also acceptable. Therefore, various permutations of typical user utterances may be specified as utterance examples for intents.
[0053] Intents and their associated exemplary utterances are used as training data to train a skillbot. Various different training techniques may be used. As a result of this training, a predictive model is generated, which is configured to take utterances as input and output intents inferred about the utterances by the predictive model. In some cases, the input utterances are provided to an intent analysis engine, which is configured to predict or infer intents for the input utterances using the trained model. The skillbot may then take one or more actions based on the inferred intents.
[0054] (3) Set up one or more entities for one or more intents - In some examples, additional context may be required to enable the skillbot to respond appropriately to user utterances. For example, there may be situations where user input utterances resolve to the same intent in the skillbot. For example, in the example above, both the utterances "What's my savings account balance?" and "How much is in my checking account?" resolve to the same balance While these utterances resolve to the same intent, they represent different requests that desire different things. To clarify such requests, one or more entities are added to the intent. Using the example of a banking skills bot, an entity called AccountType defines values called "checking" and "saving," which are then added to the intent. It may be possible to allow Lubot to parse user requests and respond appropriately. In the example above, the utterances resolve to the same intent, but the values associated with the AccountType entity are different. The two utterances are different. This allows the skillbot to perform different actions for two utterances, even though they resolve to the same intent. One or more entities may be specified for a particular intent set for the skillbot. Thus, entities are used to add context to the intent itself. Entities help to better describe the intent, enabling the skillbot to complete the user request.
[0055] In one embodiment, there are two types of entities: (a) built-in entities provided by DABP102, and (2) custom entities that may be specified by the skill bot designer. Built-in entities are general-purpose entities that can be used with a wide variety of bots. Examples of built-in entities include, but are not limited to, entities related to time, date, address, number, email address, duration, cycle period, currency, telephone number, URL, etc. Custom entities are used for more customized applications. For example, for banking skills, AccountType entities... The Entity may be defined by the SkillBot designer to enable various banking transactions by checking user input for keywords such as current, savings, and credit card.
[0056] (4) Training the SkillBot - The SkillBot is configured to receive user input in the form of utterances, parse or otherwise process the received input, and identify or select intents related to the received user input. As described above, the SkillBot must be trained for this purpose. In one embodiment, the SkillBot is trained on intents set for it and exemplary utterances associated with those intents (collectively, the training data), so that the SkillBot can resolve user input utterances to one of the SkillBot's set intents. In a particular embodiment, the SkillBot uses a predictive model that is trained with the training data and enables the SkillBot to identify what the user is saying (or, in some cases, what the user is trying to say). DABP102 provides a variety of different training techniques that can be used by SkillBot designers to train SkillBots, including a variety of machine learning-based training techniques, rule-based training techniques, and / or combinations thereof. In one embodiment, a portion of the training data (e.g., 80%) is used to train the SkillBot model, and another portion (e.g., the remaining 20%) is used to test or validate the model. Once trained, the trained model (sometimes called a trained skillbot) can then be used to process and respond to user utterances. In some cases, a user utterance may be a question that requires only a single answer and does not require further conversation. To address such situations, a Q&A (question and answer) intent may be defined for the skillbot. This allows the skillbot to output a response to a user request without needing to update the dialogue definition. Q&A intents are generated in the same way as regular intents. The dialogue flow for Q&A intents may differ from the dialogue flow for regular intents.
[0057] (5) Create a dialogue flow for the skillbot - The dialogue flow specified for the skillbot describes how the skillbot responds when different intents to the skillbot are resolved in response to received user input. The dialogue flow defines the actions or behaviors that the skillbot takes, such as how the skillbot responds to user utterances, how the skillbot prompts the user for input, and how the skillbot returns data. The dialogue flow is like a flowchart that the skillbot follows. The skillbot designer specifies the dialogue flow using a language such as Markdown. In one embodiment, a version of YAML called OBotML can be used to specify the dialogue flow for the skillbot. The dialogue flow definition for the skillbot acts as a model of the conversation itself, allowing the skillbot designer to choreograph the interaction between the skillbot and the user it corresponds to.
[0058] In one embodiment, the SkillBot's dialog flow definition includes three sections: (a) Context section (b) Default transition section (c) State section.
[0059] Context Section - Skillbot designers can define variables used in the conversation flow in the context section. Other possible variables include, but are not limited to, variables for error handling, variables for built-in or custom entities, and user variables that enable the skillbot to recognize and persist user preferences.
[0060] Default Transition Section - Transitions for SkillBot can be defined in either a Dialogflow State section or a Default Transition section. Transitions defined in the Default Transition section act as fallbacks and are triggered when there are no applicable transitions defined within a state or when the conditions necessary to trigger a state transition are not met. The Default Transition section can be used to define routing that allows SkillBot to smoothly handle unexpected user actions.
[0061] The State Section – Dialog Flow and its associated behavior are defined as a set of transient states that govern the logic within the dialog flow. Each state node in the dialog flow definition designates a component that provides the functionality required for that point in the dialog. In this way, states are built around the components. Each state contains component-specific characteristics and defines transitions to other states that are triggered after the component has been executed.
[0062] Special case scenarios can be handled using the state section. For example, you might want to give a user the option to temporarily leave the first skill they are working on and do something in a second skill within the digital assistant. For instance, if a user is engaged in a conversation with a shopping skill (e.g., the user has made some selections for a purchase), they might want to jump to a banking skill (e.g., the user wants to make sure they have enough money for the purchase) and then return to the shopping skill to complete their order. To address this, an action in the first skill can be configured to initiate a conversation with a second, different skill within the same digital assistant, and then return to the original flow.
[0063] (6) Adding Custom Components to the SkillBot - As described above, the states specified in the dialog flow for the SkillBot designate the components that provide the necessary functionality corresponding to that state. The components enable the SkillBot to perform the functionality. In one embodiment, DABP102 provides a set of pre-configured components for performing a wide range of functions. The SkillBot designer can select one or more of these pre-configured components and associate them with states in the dialog flow for the SkillBot. The SkillBot designer can also create custom or new components using the tools provided by DABP102 and associate the custom components with one or more states in the dialog flow for the SkillBot.
[0064] (7) Test and deploy SkillBots - DABP102 provides several features that enable SkillBot designers to test SkillBots under development. The SkillBots can then be deployed and included in a digital assistant.
[0065] The above explanation describes how to create a skill bot, but similar techniques can also be used to create a digital assistant (or master bot). At the master bot or digital assistant level, you can set up embedded system intents for the digital assistant. These embedded system intents are used by the digital assistant itself (i.e., the master bot) in relation to the digital assistant. This is used to identify common tasks that can be handled without calling up the associated skillbot. Examples of system intents defined for the master bot include: (1) Exit: when the user wants to end the current conversation or context in the digital assistant; (2) Help: when the user is seeking help or direction; (3) Unresolved Intent: for user input that does not well match the Exit intent or Help intent. The digital assistant also stores information about one or more skillbots associated with it. This information allows the master bot to select a specific skillbot to process the utterance.
[0066] At the master bot or digital assistant level, when a user inputs a phrase or utterance into the digital assistant, the digital assistant is configured to process how to route the utterance and the associated conversation. The digital assistant makes this determination using a routing model that can be rule-based, AI-based, or a combination of both. Using the routing model, the digital assistant determines whether the conversation corresponding to the user-input utterance should be routed to a specific skill for processing, processed by the digital assistant or master bot itself according to an embedded system intent, or processed as a different state in the current conversation flow.
[0067] In certain embodiments, as part of this process, the digital assistant determines whether the user input utterance explicitly identifies a skillbot using its invocation name. If an invocation name is present in the user input, it is treated as an explicit invocation of the skillbot corresponding to the invocation name. In such scenarios, the digital assistant can route the user input to the explicitly invoked skillbot for further processing. If there is no specific or explicit invocation, in some embodiments, the digital assistant evaluates the received user input utterance and calculates confidence scores for the system intents and skillbots associated with the digital assistant. The scores calculated for a skillbot or system intent represent the likelihood that the user input represents a task or system intent configured for the skillbot to perform. System intents or skillbots whose associated calculated confidence scores exceed a threshold (e.g., Confidence Threshold routing parameter) are selected as candidates for further evaluation. The digital assistant then selects a specific system intent or skillbot from the identified candidates for further processing of the user input utterance. In certain embodiments, after one or more skill bots are identified as candidates, the intents associated with those candidate skills are evaluated (according to the intent model for each skill), and a confidence score is determined for each intent. Generally, intents with a confidence score exceeding a threshold (e.g., 70%) are treated as candidate intents. If a specific skill bot is selected, the user utterance is routed to that skill bot for further processing. If a system intent is selected, one or more actions are performed by the master bot itself according to the selected system intent.
[0068] Figure 2 is a simplified block diagram of a master bot (MB) system 200 according to one embodiment. The MB system 200 can be implemented using software only, hardware only, or a combination of hardware and software. The MB system 200 includes a preprocessing subsystem 210, a multiple intent subsystem (MIS) 220, an explicit call subsystem (EIS) 230, a skillbot call unit 240, and a data store 250. The MB system 200 shown in Figure 2 is merely an example of the configuration of components in a master bot. Those skilled in the art will recognize many possible variations, substitutions, and modifications. For example, in some implementations, the MB system 200 may have more or fewer systems or components than those shown in Figure 2, may combine two or more subsystems, or may have subsystems with different configurations or arrangements.
[0069] The preprocessing subsystem 210 receives the utterance "A" 202 from the user and processes the utterance through the language detection unit 212 and the language parser 214. As described above, the utterance can be provided in various ways, including speech or text. The utterance 202 may be a fragment, a complete sentence, multiple sentences, etc. The utterance 202 may include punctuation. For example, if the utterance 202 is provided as speech, the preprocessing subsystem 210 may convert the speech to text using a speech-to-text converter (not shown) that inserts punctuation, such as commas, semicolons, periods, etc., into the resulting text.
[0070] The language detection unit 212 detects the language of the utterance 202 based on the text of the utterance 202. Since each language has its own grammar and semantics, the way in which the utterance 202 is processed depends on that language. Language differences are taken into consideration when analyzing the syntax and structure of the utterance.
[0071] The language parser 214 syntactically analyzes the utterance 202 and extracts part-of-speech (POS) tags for each individual linguistic unit (e.g., word) within the utterance 202. POS tags include, for example, nouns (NN), pronouns (PN), verbs (VB), etc. The language parser 214 may also tokenize the linguistic units of the utterance 202 (e.g., to convert each word into a separate token) and make the words headwords. Headwords are the primary forms of the set of words represented in the dictionary (e.g., "run" is a headword for run, runs, ran, running, etc.). Other types of preprocessing that the language parser 214 can perform include chunking compound expressions, for example, combining "credit" and "card" into a single expression "credit_card". 214 may also identify relationships between words within the utterance 202. For example, in some embodiments, the language parser 214 generates a dependency tree indicating which parts of the utterance (e.g., certain nouns) are direct objects, which parts are prepositions, etc. The results of the processing performed by the language parser 214 form extracted information 205, which is provided to the MIS 220 as input along with the utterance 202 itself.
[0072] As described above, utterance 202 may contain multiple sentences. For the purpose of detecting multiple intents and explicit calls, utterance 202 may be treated as a single unit, even if it contains multiple sentences. However, in some embodiments, preprocessing may be performed, for example by the preprocessing subsystem 210, to identify a single sentence among multiple sentences for multiple intent analysis and explicit call analysis. Generally, the results produced by MIS220 and EIS230 are substantially the same whether utterance 202 is processed at the level of individual sentences or as a single unit containing multiple sentences.
[0073] MIS220 determines whether utterance 202 represents multiple intents. While MIS220 can detect the presence of multiple intents in utterance 202, the processing performed by MIS220 does not involve determining whether the intent in utterance 202 matches any intent configured for the bot. Instead, the processing to determine whether the intent in utterance 202 matches a bot intent may be performed by the intent classification unit 242 of the MB system 200 or by the skill bot's intent classification unit (for example, as shown in the embodiment of Figure 3). The processing performed by MIS220 assumes that there is a bot (e.g., a specific skill bot or the master bot itself) that can process utterance 202. Therefore, the processing performed by MIS220 determines what bots are in the chatbot system. It does not require any prior knowledge (for example, the identity of a skill bot registered with a master bot) or knowledge of what intents are set for a particular bot.
[0074] To determine that utterance 202 contains multiple intents, MIS220 applies one or more rules from the set of rules 252 in datastore 250. The rules applied to utterance 202 are language-dependent of utterance 202 and may include sentence patterns indicating the presence of multiple intents. For example, a sentence pattern may include a conjunction connecting two parts of a sentence (e.g., a coordinating term), where both parts correspond to separate intents. If utterance 202 matches a sentence pattern, it can be inferred that utterance 202 represents multiple intents. Note that an utterance with multiple intents does not necessarily have different intents (e.g., intents directed to different bots, or different intents within the same bot). Instead, the utterance may have separate instances of the same intent, e.g., "order a pizza using payment account X, then order a pizza using payment account Y."
[0075] As part of determining that utterance 202 represents multiple intents, MIS220 also determines which parts of utterance 202 are associated with each intent. For each intent represented in an utterance containing multiple intents, MIS220 constructs a new utterance for different processing in place of the original utterance, e.g., utterance "B" 206 and utterance "C" 208, as shown in Figure 2. Thus, the original utterance 202 can be split into two or more separate utterances, each handled one at a time. Using the extracted information 205 and / or from an analysis of utterance 202 itself, MIS220 determines which of the two or more utterances should be processed first. For example, MIS220 may determine that utterance 202 contains a marker word indicating that a particular intent should be handled first. The newly formed utterance corresponding to this particular intent (e.g., one of utterances 206 or 208) will be sent first for further processing by EIS230. After the conversation triggered by the first utterance has ended (or been temporarily interrupted), the next highest priority utterance (e.g., utterance 206 or the other of utterance 208) may then be sent to the EIS230 for processing.
[0076] The EIS230 determines whether an received utterance (e.g., utterance 206 or utterance 208) contains a skillbot invocation name. In one embodiment, each skillbot in the chatbot system is assigned a unique invocation name that distinguishes it from other skillbots in the chatbot system. A list of invocation names can be maintained in the data store 250 as part of the skillbot information 254. When an utterance contains a word that matches an invocation name, the utterance is considered an explicit invocation. If the bot is not explicitly invoked, the utterance received by the EIS230 is considered an implicit invocation utterance 234 and is fed into the master bot's intent classifier (e.g., intent classifier 242) to determine which bot to use to process the utterance. In some examples, the intent classifier 242 determines that the master bot should process implicit invocation utterances. In other examples, the intent classifier 242 determines which skillbot to route the utterance to for processing.
[0077] The explicit call functionality provided by EIS230 offers several advantages. It can reduce the amount of processing that the master bot must perform. For example, with explicit calls, the master bot does not need to perform any intent classification analysis (e.g., using the intent classification unit 242), or it may only need to perform a reduced intent classification analysis to select a skill bot. Therefore, explicit call analysis does not rely on intent classification analysis to select a specific skill bot. It may be acceptable to allow options.
[0078] Furthermore, there may be situations where functionality overlaps among multiple skill bots. This can occur, for example, when intents handled by two skill bots overlap or are very close to each other. In such situations, it can be difficult for the master bot to identify which of the multiple skill bots to select based solely on intent classification analysis. In such scenarios, explicit invocation resolves the ambiguity regarding which specific skill bot should be used.
[0079] In addition to determining that an utterance is an explicit invocation, the EIS230 is responsible for determining whether any part of the utterance should be used as input to an explicitly invoked skillbot. Specifically, the EIS230 can determine whether any part of the utterance is not associated with an invocation. The EIS230 can make this determination through analysis of the utterance and / or analysis of the extracted information 205. Instead of sending the entire utterance received by the EIS230, the EIS230 can send the portion of the utterance that is not associated with an invocation to the invoked skillbot. In some examples, the input to the invoked skillbot is formed simply by removing any portion of the utterance that is associated with an invocation. For example, "I want to order a pizza using Pizza Bot" It can be shortened to "I want to order a pizza" because "using PizzaBot" This is because it relates to the invocation of PizzaBot, but not to any processing performed by PizzaBot. In some cases, EIS230 may reformat the parts to be sent to the invoked bot, for example, to form a complete sentence. Thus, EIS230 determines not only whether there is an explicit invocation, but also what should be sent to the skill bot when there is an explicit invocation. In some cases, there may be no text to input to the invoked bot. For example, if the utterance was "Pizza Bot" In other words, EIS230 may determine that PizzaBot has been called, but there is no text to be processed by PizzaBot. In such a scenario, EIS230 may indicate to SkillBot Call Unit 240 that there is nothing to send.
[0080] The skillbot invocation unit 240 invokes skillbots in various ways. For example, the skillbot invocation unit 240 may invoke a bot in response to receiving instruction 235 that a particular skillbot has been selected as a result of an explicit invocation. Instruction 235 may be sent by the EIS 230 along with input to the explicitly invoked skillbot. In this scenario, the skillbot invocation unit 240 takes control of the conversation to the explicitly invoked skillbot. The explicitly invoked skillbot determines an appropriate response to the input from the EIS 230 by treating the input as an independent utterance. For example, the response may be to perform a specific action or to start a new conversation in a specific state, the initial state of the new conversation depending on the input sent from the EIS 230.
[0081] Another way in which the skillbot invocation unit 240 can invoke a skillbot is through an implicit invocation using the intent classifier unit 242. The intent classifier unit 242 is trained using machine learning and / or rule-based training techniques to determine the likelihood that a given utterance represents a task configured for a particular skillbot to perform. The intent classifier unit 242 is trained in different classes, one class per skillbot. For example, each time a new skillbot is registered with the master bot, the intent classifier unit 242 can be trained using a list of exemplary utterances associated with the new skillbot to determine the likelihood that a particular utterance represents a task that the new skillbot can perform. The parameters generated as a result of this training (e.g., a set of values for parameters in a machine learning model) can be stored as part of the skillbot information 254.
[0082] In one embodiment, the intent classifier 242 is implemented using a machine learning model, as described in more detail here. Training the machine learning model may involve inputting at least a subset of utterances from exemplary utterances associated with various skill bots in order to generate inferences as the output of the machine learning model about which bot is the correct bot to process any particular training utterance. For each training utterance, instructions for the correct bot to use for that training utterance may be provided as ground truth information. The behavior of the machine learning model can then be adapted (e.g., through backpropagation) to minimize the difference between the generated inferences and the ground truth information.
[0083] In certain embodiments, the intent classifier 242 determines a confidence score for each skill bot registered with the master bot, indicating the likelihood that the skill bot can process a given utterance (e.g., an implicit invocation utterance 234 received from the EIS 230). The intent classifier 242 may also determine a confidence score for each configured system-level intent (e.g., Help, Exit). If a particular confidence score satisfies one or more conditions, the skill bot invocation unit 240 will invoke the bot associated with that particular confidence score. For example, a certain threshold confidence score value may need to be met. Thus, the output 245 of the intent classifier 242 is either an identification of a system intent or an identification of a particular skill bot. In some embodiments, in addition to meeting a threshold confidence score value, the confidence score must exceed the next higher confidence score by a certain win margin. Imposing such conditions allows routing to a particular skill bot when the confidence scores of multiple skill bots each exceed a threshold confidence score value.
[0084] After identifying a bot based on the confidence score evaluation, the skill bot call unit 240 hands over processing to the identified bot. In the case of a system intent, the identified bot is the master bot. Otherwise, the identified bot is a skill bot. Furthermore, the skill bot call unit 240 will determine what to provide as input 247 to the identified bot. As described above, in the case of an explicit call, input 247 may be based on a portion of an utterance not associated with the call, or input 247 may be nothing (e.g., an empty string). In the case of an implicit call, input 247 may be the entire utterance.
[0085] The data store 250 comprises one or more computing devices that store data used by various subsystems of the master bot system 200. As described above, the data store 250 includes rules 252 and skill bot information 254. Rules 252 include, for example, rules for determining by the MIS 220 when an utterance represents multiple intents and how to divide an utterance representing multiple intents. Rules 252 further include rules for determining by the EIS 230 which parts of an utterance that explicitly invokes a skill bot should be sent to the skill bot. Skill bot information 254 includes the invocation names of skill bots in the chatbot system, for example, a list of the invocation names of all skill bots registered with a particular master bot. Skill bot information 254 may also include information used by the intent classification unit 242 to determine a confidence score for each skill bot in the chatbot system, for example, parameters of a machine learning model.
[0086] Figure 3 is a simplified block diagram of a SkillBot system 300 according to a specific embodiment. The SkillBot system 300 is a computing system that can be implemented using software only, hardware only, or a combination of hardware and software. In some embodiments, such as the one shown in Figure 1, the skillbot system 300 can be used to implement one or more skillbots within a digital assistant.
[0087] The skillbot system 300 includes an MIS 310, an intent classification unit 320, and a conversation manager 330. The MIS 310 is similar to the MIS 220 in Figure 2 and provides similar functionality, including being operable to determine (1) whether an utterance represents multiple intents, and if so, (2) how to divide the utterance into separate utterances for each of the multiple intents, using rules 352 in the data store 350. In one embodiment, the rules applied by the MIS 310 to detect multiple intents and divide the utterance are the same as the rules applied by the MIS 220. The MIS 310 receives an utterance 302 and extracted information 304. The extracted information 304 is similar to the extracted information 205 in Figure 1 and can be generated using a language parser 214 or a language parser local to the skillbot system 300.
[0088] The intent classifier 320 can be trained in a similar manner to the intent classifier 242 discussed above in relation to the embodiment of Figure 2, as will be described in more detail here. For example, in a particular embodiment, the intent classifier 320 is implemented using a machine learning model. The machine learning model of the intent classifier 320 is trained for a particular skill bot using at least a subset of exemplary utterances associated with that skill bot as training utterances. The ground truth for each training utterance would be the particular bot intent associated with that training utterance.
[0089] Utterance 302 can be received directly from the user or supplied via a master bot. When utterance 302 is supplied via a master bot, for example, as a result of processing through MIS220 and EIS230 in the embodiment shown in Figure 2, MIS310 can be bypassed to avoid repeating processing already performed by MIS220. However, when utterance 302 is received directly from the user, for example during a conversation that occurs after routing to a skill bot, MIS310 can process utterance 302 to determine whether utterance 302 represents multiple intents. If utterance 302 represents multiple intents, MIS310 applies one or more rules to split utterance 302 into separate utterances for each intent, for example, utterance "D" 306 and utterance "E" 308. If utterance 302 does not represent multiple intents, MIS 310 forwards utterance 302 to intent classification unit 320 for intent classification without splitting it.
[0090] The intent classifier 320 is configured to match an received utterance (e.g., utterance 306 or 308) with an intent associated with the skillbot system 300. As described above, a skillbot can be configured with one or more intents, each intent including at least one exemplary utterance associated with that intent and used to train the classifier. In the embodiment of Figure 2, the intent classifier 242 of the masterbot system 200 is trained to determine the confidence score of individual skillbots and the confidence score of system intents. Similarly, the intent classifier 320 may be trained to determine the confidence score of each intent associated with the skillbot system 300. The classification performed by the intent classifier 242 is at the bot level, while the classification performed by the intent classifier 320 is at the intent level and therefore of finer granularity. The intent classifier 320 has access to intent information 354. The intent information 354 represents the meaning of each intent associated with the skillbot system 300. and typically includes a list of utterances associated with tasks that can be performed by that intent. The intent information 354 may further include parameters generated as a result of training on this list of utterances.
[0091] The conversation manager 330 receives, as output from the intent classifier 320, an instruction 322 for a specific intent identified by the intent classifier 320 as the best match for the utterance input to the intent classifier 320. In some cases, the intent classifier 320 may be unable to determine any match. For example, the confidence score calculated by the intent classifier 320 may fall below a threshold confidence score value if the utterance is directed to a system intent or an intent of a different skillbot. When this occurs, the skillbot system 300 may leave the utterance to the master bot for processing, for example, to route it to a different skillbot. However, if the intent classifier 320 successfully identifies an intent within the skillbot, the conversation manager 330 initiates a conversation with the user.
[0092] A conversation initiated by the conversation manager 330 is a conversation specific to an intent identified by the intent classifier 320. For example, the conversation manager 330 may be implemented using a state machine configured to execute a certain dialogue flow for an identified intent. The state machine may include a default initiation state (for example, when an intent is invoked without any additional input) and one or more additional states, each associated with an action to be performed by the skillbot (e.g., execute a purchase transaction) and / or a dialogue to be presented to the user (e.g., a question, response). Thus, when the conversation manager 330 receives an instruction 322 that identifies an intent, it can determine an action / dialogue 335, and can determine additional actions or dialogues in response to subsequent utterances received during the conversation.
[0093] The data store 350 comprises one or more computing devices that store data used by various subsystems of the skillbot system 300. As shown in Figure 3, the data store 350 includes rule 352 and intent information 354. In certain embodiments, the data store 350 can be integrated with the data store of the master bot or digital assistant, for example, the data store 250 in Figure 2.
[0094] Noise data expansion Models used to classify utterances as intents have been found to perform poorly with text containing irrelevant context (for example, actual utterances often have context or irrelevant information that is unrelated to the question presented by the user or the problem the user has). To overcome this problem, various embodiments have focused on techniques to augment the training data with noise (e.g., adding unrelated words around the original data) to make the model more robust to irrelevant context. By augmenting the training data with random words surrounding the original examples, the model becomes better at focusing on and directing towards the most important parts of the original examples that tie them to their classes. This has also been unexpectedly found to help improve training performance for shorter test utterances that do not contain irrelevant context. Models trained on augmented text data may be implemented in chatbot systems, as described with respect to Figures 1, 2, and 3. Advantageously, these models and chatbots perform better with utterances that have irrelevant context and regular utterances (with little irrelevant context), because the models can better focus on and direct towards the important parts of the utterance. Furthermore, extensions are combined Because it is applied automatically in a systematic, agnostic manner, customers or clients do not need to worry about adding irrelevant context to the training data.
[0095] Figure 4 is a block diagram showing a view of a chatbot system 400 configured to train and utilize a classification unit (for example, the intent classification unit 242 or 320 described in relation to Figures 2 and 3) based on text data 405. As shown in Figure 4, the text classification performed by the chatbot system 400 in this example includes various stages, namely, a predictive model training stage 410, a skillbot invocation stage 415 for determining the likelihood that an utterance represents a task configured for a particular skillbot to perform, and an intent prediction stage 420 for classifying the utterance as one or more intents. The predictive model training stage 410 constructs and trains one or more predictive models 425a to 425n (where "n" represents any natural number) (which may be individually called predictive models 425 or collectively called predictive models 425) to be used by the other stages. For example, the predictive model 425 could include a model for determining the likelihood that an utterance represents a task configured for a particular skillbot to perform, another model for predicting intent from an utterance for a first type of skillbot, and another model for predicting intent from an utterance for a second type of skillbot. Further other types of predictive models may be implemented in other examples provided herein.
[0096] Predictive model 425 may be a machine learning ("ML") model such as a convolutional neural network ("CNN"), e.g., an inception neural network, a residual neural network ("Resnet"), or a recurrent neural network, e.g., a long short-term memory ("LSTM") model or a gated recurrent unit ("GRU") model, or other variants of a deep neural network ("DNN") (e.g., a multilevel n binary DNN classifier or a multiclass DNN classifier for single-intent classification). Predictive model 425 may also be any other suitable ML model trained for natural language processing, such as a naive Bayes classifier, a linear classifier, a support vector machine, a random forest model, a bagging model, a boosting model, a shallow neural network, or a combination of one or more such techniques, e.g., a CNN-HMM or MCNN (multiscale convolutional neural network). The chatbot system 400 may employ the same or different types of predictive models to determine the likelihood of a task configured for a particular skillbot to perform, to predict intents from utterances for a first type of skillbot, and to predict intents from utterances for a second type of skillbot. Further other types of predictive models may be implemented in other examples provided herein.
[0097] To train various predictive models 425, the training phase 410 consists of three main components: dataset preparation 430, feature engineering 435, and model training 440. Dataset preparation 430 includes the process of loading data assets 445, dividing the data assets 445 into training and validation sets 445a-n, and performing basic preprocessing so that the system can train and test predictive models 425. Data assets 445 may include at least a subset of utterances from exemplary utterances associated with various skillbots. As mentioned above, utterances can be provided in various ways, including speech or text. Utterances can be fragments, complete sentences, multiple sentences, etc. For example, if utterances are provided as speech, data preparation 430 may convert speech to text using a speech-to-text converter (not shown) that inserts punctuation, e.g., commas, semicolons, periods, etc., into the resulting text. In some examples, exemplary utterances are provided by a client or customer. Provided by the customer. In other examples, exemplary utterances are automatically generated from a library of previous utterances (e.g., identifying utterances from a specific library for the skills the chatbot learns). The data asset 445 for the predictive model 425 may include input text or speech (or input features of text or speech frames) and labels 450 corresponding to the input text or speech (or input features) as a matrix or table of values. For example, for each training utterance, instructions for the correct bot to use for that training utterance may be provided as ground truth information for the labels 450. The behavior of the predictive model 425 can then be adapted (e.g., through backpropagation) to minimize the difference between the generated inferences and the ground truth information. The predictive model 425 may be trained for a particular skill bot using at least a subset of exemplary utterances associated with that particular skill bot as training utterances. The ground truth for the labels 450 for each training utterance would be the specific bot intent associated with that training utterance.
[0098] In various embodiments, data preparation 430 includes noise augmentation 455 of the data assets 445 to include noise (e.g., by adding irrelevant words around the original data) to make the predictive model 425 more robust to irrelevant context. By augmenting the data assets 445 with random words surrounding the original examples, the predictive model 425 becomes better at focusing on and directing towards the most important parts of the original examples that tie them to their classes. Augmentation 455 is implemented using noise augmentation techniques to incorporate text irrelevant to the original text of the data assets 445 (noise text). Noise augmentation techniques generally include five operations: (i) obtaining noise text from a list of words, a text corpus (e.g., a large and structured set of texts), a publication, or a dictionary unrelated to the original text (in other words, the resulting noise text is independent of and based on the original text); and (ii) incorporating the noise text into each data asset 445 with respect to the original text at a predefined augmentation ratio. For example, noise text may be placed before, after, adjacent to, or merged with the original text, with an expansion ratio of 1:0.5 to 1:5 (1:0.5 to 1:5) for original text:noise text, for example, an expansion ratio of 1:1.2 or 1:2. The expansion ratio is chosen to preserve the original class label for a sentence or phrase.
[0099] One noise expansion operation that may be used is to expand the original text with a random string of text generated from a list of stop words. Stop words are a set of words that are commonly used in any language. For example, in English, "the", "is", etc. The words "and" are considered stop words. NLP and text mining applications In logic, stop words are typically removed, allowing the algorithm to focus on important words. However, in this case, as shown in Table 1, stop words are introduced into the original text to generate noise or irrelevant text.
[0100] [Table 1]
[0101] In one example, this noise expansion operation is used for intradomain intents (i.e., within a set or group of intents specific to a particular vertical, such as ordering a pizza), and the use of stop words for intradomain intents means that they are less likely to produce false positives in those intents.
[0102] Another noise augmentation operation that may be used is to augment the original text with sentences from a corpus (copied word for word). The corpus may contain monolingual text (monologue corpus) or multilingual text data (multilingual corpus). In some examples, the corpus is annotated with additional information, such as part-of-speech tagging, where information about the part of speech (verb, noun, adjective, etc.) of each word is added to the corpus in the form of tags. Sentences from the corpus are introduced into the original text word for word (using the exact same words originally used) to generate noise or irrelevant text, as shown in Table 2.
[0103] [Table 2]
[0104] This noise expansion operation preserves the actual sentence structure and provides more robust training because it is similar to what the model will receive as input during expansion.
[0105] Another noise augmentation operation that may be used is to augment the original text with sentences from a corpus (which have been rearranged and copied). The sentences from the corpus are rearranged (randomly or using an algorithm) and introduced into the original text to generate noise or irrelevant text, as shown in Table 3.
[0106] [Table 3]
[0107] This noise expansion operation preserves the word distribution from the actual sentence, and the unstructured nature of the noise may mean that false positives are less likely to occur.
[0108] Another noise expansion operation that may be used is to expand the original text with random strings generated from a dictionary. Sentences from the dictionary are introduced into the original text without frequency (i.e., regardless of the number of repetitions or occurrences of words in the random strings) to generate noise or irrelevant text, as shown in Table 4.
[0109] [Table 4]
[0110] In this noise expansion operation, data is easy to obtain, and the unstructured nature of the noise may mean that false positives are less likely to occur.
[0111] Another noise expansion operation that may be used is to expand the original text with random strings generated from a dictionary. Sentences from the dictionary are introduced into the original text along with their frequencies (i.e., in terms of the number of repetitions or occurrences of words in the random strings) to generate noise or irrelevant text, as shown in Table 5.
[0112] [Table 5]
[0113] In this noise expansion operation, the data is easy to obtain, the word distribution in the generated string is more realistic, and the unstructured nature of the noise may mean that false positives are less likely to occur.
[0114] The introduction of noise augmentation techniques allows predictive model 425 to perform better with utterances that have irrelevant context and regular utterances (with little irrelevant context), because predictive model 425 can better focus on and target the important parts of the utterances. Furthermore, since noise augmentation is applied automatically in a synthetic agnostic manner, customers or clients do not need to worry about adding irrelevant context to the training data. As shown in Table 6, the baseline multiclass model (without noise augmentation) returned either inaccurate top-rank intents or top-rank intents with confidence scores below the support threshold (e.g., 0.7 or 70%), whereas the noise-augmented model was able to return accurate top-rank intents and isolate them from others (confidence scores >0.7 or 70%).
[0115] [Table 6-1]
[0116] [Table 6-2]
[0117] On average, the top-returned intents have higher confidence scores in the noise-enhanced model compared to the baseline model, as shown in Tables 7 and 8.
[0118] [Table 7]
[0119] [Table 8]
[0120] In some examples, additional augmentation (with noise augmentation) may be applied to data asset 445. For example, Easy Data Augmentation (EDA) techniques may be used to improve the performance of a text classification task. EDA includes four operations, namely synonym substitution, random insertion, random exchange, and random deletion, to prevent overfitting and help train a more robust model. In contrast to noise augmentation, EDA operations generally (i) take words from the original text and (ii) incorporate those words into each data asset 445 relative to the original text. For example, a synonym substitution operation involves randomly selecting n non-stop words from the original sentence (e.g., utterance) and replacing each of these words with one of its randomly selected synonyms. A random insertion operation involves finding a random synonym for a random non-stop word in the original sentence n times and inserting that synonym at a random position in the sentence. A random exchange operation involves randomly selecting two words in a sentence n times and swapping their positions. A random deletion operation involves randomly deleting each word in a sentence with probability p.
[0121] In various embodiments, feature engineering 435 includes converting the data asset 445 into a feature vector (with noise augmentation) and / or creating new features using the data asset 445 (with noise augmentation). The feature vector may include count vectors as features, word frequency-inverse document frequency (TF-IDF) vectors as features such as word level, n-gram level or character level, word embeddings as features, text / NLP as features, topic models as features, or a combination thereof. In the count vector, each row represents an utterance, and each column This is a matrix representation of data asset 445, where represents words from utterances, and each cell represents the frequency count of a particular word within an utterance. The TF-IDF score represents the relative importance of a word in an utterance. Word embeddings are a form of representing words and utterances using dense vector representations. The position of a word in the vector space is learned from the text and is based on the words that surround that word when it is used. Text / NLP-based features may include the number of words in an utterance, the number of characters in an utterance, the average word density, the number of punctuation marks, the number of capital letters, the number of headwords, the frequency distribution of part-of-speech tags (e.g., nouns and verbs), or any combination thereof. Topic modeling is a technique for identifying groups of words (called topics) that contain the best information in a collection of utterances.
[0122] In various embodiments, model training 440 includes training the classification unit using the feature vectors and / or new features created in feature engineering 435. In some examples, the training process includes iterative operations to find a set of parameters for the predictive model 425 that minimizes a loss function or error function for the predictive model 425. Each iteration may involve finding a set of parameters for the predictive model 425 such that the value of the loss function or error function using the set of parameters for the predictive model 425 is smaller than the value of the loss function or error function using a different set of parameters in the previous iteration. The loss function or error function can be constructed to measure the difference between the output predicted using the predictive model 425 and the labels 450 contained in the data asset 445. Once the set of parameters is identified, the predictive model 425 is trained and can be used for prediction as designed.
[0123] In addition to the data asset 445, labels 450, feature vectors, and / or new features, other techniques and information may also be employed to improve the training process of the predictive model 425. For example, feature vectors and / or new features may be combined with each other to help improve the accuracy of the classification unit or the model. In addition, or alternatively, hyperparameters may be tuned or optimized, and several parameters such as tree length, leaves, and network parameters may be fine-tuned to obtain a best-fit model. However, the training mechanisms described herein mainly focus on training the predictive model 425. These training mechanisms may also be used to fine-tune an existing predictive model 425 trained from other data assets. For example, in some cases, the predictive model 425 may have been pre-trained using utterances specific to a different skillbot. In such cases, the predictive model 425 may be retrained using the data asset 445 (with noise augmentation), as discussed herein.
[0124] The predictive model training stage 410 outputs a trained predictive model 425, which includes a task predictive model 460 and an intent predictive model 465. The task predictive model 460 may be used in the skillbot invocation stage 415 to determine the likelihood that an utterance represents a task configured for a particular skillbot to perform (470), and the intent predictive model 465 may be used in the intent predictive stage 420 to classify an utterance as one or more intents (475). In some examples, the skillbot invocation stage 415 and the intent predictive stage 420 may proceed independently, using separate models in some examples. For example, the trained intent predictive model 465 may be used in the intent predictive stage 420 to predict intents for a skillbot without first identifying the skillbot in the skillbot invocation stage 415. Similarly, the task prediction model 460 may be used in the skillbot invocation stage 415 to predict the task or skillbot that should be used for the utterance, without identifying the intent of the utterance in the intent prediction stage 420.
[0125] Alternatively, the skillbot invocation stage 415 and the intent prediction stage 420 may be performed sequentially, with one stage using the output of the other stage as input, or one stage being invoked in a specific manner for a particular skillbot based on the output of the other stage. For example, for a given text data 405, the skillbot invocation unit can invoke a skillbot through an implicit invocation using the skillbot invocation stage 415 and the task prediction model 460. The task prediction model 460 is trained using machine learning and / or rule-based training techniques to determine the likelihood that a given utterance represents a task configured for a particular skillbot 470 to perform. Then, for the identified or invoked skillbot and the given text data 405, the intent prediction stage 420 and the intent prediction model 465 can be used to match the received utterance (e.g., an utterance in a given data asset 445) to an intent 475 associated with the skillbot. As described herein, a skillbot can be composed of one or more intents, each intent including at least one exemplary utterance associated with that intent and used to train a classification unit. In some embodiments, the skillbot call stage 415 and task prediction model 460 used in a master bot system are trained to determine confidence scores for individual skillbots and for system intents. Similarly, the intent prediction stage 420 and intent prediction model 465 may be trained to determine confidence scores for each intent associated with the skillbot system. The classification performed by the skillbot call stage 415 and task prediction model 460 is at the bot level, while the classification performed by the intent prediction stage 420 and intent prediction model 465 is at the intent level and therefore of finer granularity.
[0126] Techniques for noise data augmentation and speech classification Figure 5 is a flowchart of a process 500 for augmenting a training dataset with noise, according to several embodiments. The process shown in Figure 5 may be implemented by software (e.g., code, instructions, programs), hardware, or a combination thereof, executed by one or more processing units (e.g., processors, cores) of each system. The software may be stored on a non-temporary storage medium (e.g., on a memory device). The methods presented in Figure 5 and described below are intended to be illustrative and non-limiting. Figure 5 shows various processing steps occurring in a particular sequence or order, but this is not intended to be limiting. In certain alternative embodiments, those steps may be executed in some different order, or some steps may be executed in parallel. In some embodiments, such as those shown in Figures 1 to 4, the process shown in Figure 5 may be executed by a preprocessing subsystem (e.g., preprocessing subsystem 210 or predictive model training stage 410) to generate a noise-augmented dataset for training by one or more predictive models (e.g., intent classifiers 242 or 320 or predictive model 425).
[0127] In 505, a training set of utterances is received by a data processing system (e.g., the chatbot system 400 described with respect to Figure 4). In some examples, the training set of utterances is used to train an intent classifier to identify one or more intents for one or more utterances. In 510, the training set of utterances is augmented by the data processing system with noise text to obtain an augmented training set of utterances. In various embodiments, augmentation involves (i) obtaining noise text from a list of words unrelated to the original text in the utterances of the training set of utterances, a text corpus, publications, dictionaries, or any combination thereof, and (ii) applying the noise text to the utterances, in the context of the utterances. This includes generating an augmented utterance by incorporating the original text in the utterance of a ningset at a predefined augmentation ratio. The noise text may be provided at a predefined augmentation ratio of 1:0.5 to 1:5 in (i) before the original text in the utterance, (ii) after the original text of the utterance, (iii) adjacent to the original text of the utterance, (iv) integrated into the original text of the utterance, or (v) or a combination thereof. The noise text may be a random string of text automatically generated from a stop word list. The noise text may be a sentence of text automatically copied word for word from a corpus. The noise text may be a random string of text automatically generated from a corpus. The noise text may be a random string of text automatically generated from a dictionary, and may be generated without considering the frequency of words or characters selected for the random string of text. The noise text may be a random string of text automatically generated from a dictionary, and may be generated considering the frequency of words or characters selected for the random string of text.
[0128] In 515, a predictive model is trained using an expanded set of text data to determine the likelihood that an utterance or message represents a task configured for a skillbot to perform, or to match an utterance or message to an intent associated with a skillbot. Then, in 520, the trained predictive model may be deployed within the chatbot system (for example, as part of a skillbot) to determine the likelihood that an utterance or message represents a task configured for a skillbot to perform, or to match an utterance or message to an intent associated with a skillbot. For example, an utterance may be received and analyzed to determine whether it contains a skillbot invocation name. If no invocation name is found, the utterance is considered an implicit invocation, and the process proceeds to the intent classification unit, such as the trained model. If a invocation name is found, the utterance is considered an explicit invocation, and the process proceeds to determine which part of the utterance is associated with the invocation name.
[0129] When a trained model is invoked, the entire received utterance is provided as input to the intent classifier. The intent classifier receiving the utterance may be the intent classifier of the master bot (e.g., intent classifier 242 in Figure 2). The intent classifier may be a machine learning-based or rule-based classifier trained with noise-enhanced data to determine whether the intent of the utterance matches a system intent (e.g., exit, help) or a specific skill bot. As described here, the intent analysis performed by the master bot may be limited to matching against a specific skill bot without determining which intent within that skill bot is the best match for the utterance. Thus, the intent classifier receiving the utterance may identify a specific skill bot to be invoked. Alternatively, if the utterance represents a specific system intent (e.g., the utterance contains the words "exit" or "help"), the intent classifier receiving the utterance may identify that specific system intent to trigger a conversation between the master bot and the user based on a dialogue flow configured for that specific system intent.
[0130] If a call name exists, one or more explicit call rules are applied to determine which part of the utterance is associated with the call name. This determination may be based on an analysis of the utterance's sentence structure, using POS tags, dependency information, and / or other extracted information received with the utterance. For example, a part associated with a call name could be a noun phrase containing the call name, or a prepositional object corresponding to the call name. Any part associated with a call name, as determined based on the processing, is removed. Other parts of the utterance that are not necessary to convey the meaning of the utterance (e.g., prepositional words) may also be removed. Removing specific parts of an utterance generates input for the skillbot associated with the invocation name. If any parts of the received utterance remain after removal, those remaining parts form a new utterance for input to the skillbot, for example, as a text string. Otherwise, if the received utterance is completely removed, the input may be an empty string.
[0131] Subsequently, the skillbot associated with the invocation name is invoked, and the generated input is provided to that skillbot. Upon receiving the generated input, the invoked skillbot processes it by performing intent analysis, for example, using the skillbot's intent classifier trained on noise-enhanced data, to identify bot intents that match the user intents represented in the input. As a result of identifying matching bot intents, the skillbot may perform a specific action or initiate a conversation with the user according to the dialogue flow associated with the matching bot intent. For example, if the input is an empty string, the conversation may begin in a default state defined for the dialogue flow, such as a welcome message. Alternatively, if the input is not an empty string, for example, if the input contains a value about an entity or some other information that the skillbot received as part of the input and no longer needs to ask the user for, the conversation may begin in some intermediate state. As another example, the skillbot may determine that it cannot process the input (for example, because the confidence scores of all bot intents configured for the skillbot fall below a certain threshold). In this situation, the skill bot may return the input to the master bot for processing (for example, intent analysis using the master bot's intent classification unit), or the skill bot may prompt the user for clarification.
[0132] In various embodiments, the deployment and use of an intent classifier within a chatbot system includes the chatbot system receiving utterances generated by a user interacting with the chatbot system, classifying the utterances into intent categories corresponding to intents using an intent classifier deployed within the chatbot system, and outputting intents based on the classification using the intent classifier. The intent classifier includes a number of model parameters identified using training data, which includes a training set of augmented utterances for training the intent classifier to identify one or more intents for one or more utterances, the training set of augmented utterances being artificially generated from the training set of utterances to include augmented utterances, in which noise text is incorporated into the utterances from the training set of utterances at a predefined augmentation ratio relative to the original text in the utterances to generate augmented utterances. The number of model parameters are identified using the training data based on minimizing a loss function.
[0133] Exemplary System Figure 6 shows a simplified diagram of a distributed system 600. In the illustrated example, the distributed system 600 includes one or more client computing devices 602, 604, 606, and 608 connected to a server 612 via one or more communication networks 610. The client computing devices 602, 604, 606, and 608 may be configured to run one or more applications.
[0134] In various examples, server 612 may be adapted to run one or more services or software applications that enable one or more embodiments of the present disclosure. In some examples, server 612 may also provide other services or software applications that may include non-virtual and virtual environments. In some examples, these services are provided to client computing devices 602, 604, 606 and / or to 608 users, under the Software as a Service (SaaS) model, web-based services or cloud services and They may be provided as such. Users operating client computing devices 602, 604, 606 and / or 608 may utilize the services provided by these components by interacting with server 612 using one or more client applications.
[0135] In the configuration shown in Figure 6, server 612 may include one or more components 618, 620, and 622 that implement the functions performed by server 612. These components may include one or more processors, hardware components, or software components that can be executed by a combination thereof. It should be recognized that a wide variety of system configurations are possible, which may differ from the distributed system 600. Therefore, the example shown in Figure 6 is an example of a distributed system for implementing the example system, and is not intended to be limiting.
[0136] A user may use client computing devices 602, 604, 606, and / or 608 to run one or more applications, models, or chatbots, which may generate one or more events or models, which may then be implemented or processed in accordance with the teachings of this disclosure. A client device may provide an interface that allows a user of the client device to interact with the client device. A client device may also output information to the user through this interface. Although Figure 6 shows only four client computing devices, any number of client computing devices may be supported.
[0137] Client devices may include various types of computing systems, such as portable handheld devices, general-purpose computers like personal computers and laptops, workstation computers, wearable devices, game systems, thin clients, various messaging devices, sensors or other sensing devices. These computing devices may have various types and versions of software applications and operating systems (e.g., Microsoft Windows®, Apple Macintosh®, UNIX® or UNIX-like operating systems, Linux® or Linux-like operating systems), various mobile operating systems (e.g., Microsoft Windows Mobile®, iOS®, Windows Phone®, Android®) This may include Google Chrome OS, including BlackBerry®, Palm OS®, and other similar technologies. Portable handheld devices include cellular phones, smartphones, etc. Examples include iPhone (registered trademark), tablets (for example, iPad (registered trademark)), and personal digital assistants (PDAs). This may include the following. Wearable devices may include Google Glass® head-mounted displays and other devices. Game systems may include various handheld game devices and internet-connected game devices (e.g., Microsoft Xbox® game consoles with or without Kinect® gesture input devices, Sony PlayStation® systems, and various game systems provided by Nintendo®). Client devices may be capable of running a wide variety of applications, such as various internet-related applications and communication applications (e.g., email applications, short message service (SMS) applications), and may use various communication protocols.
[0138] Network 610 is any type of network known to those skilled in the art, which can support data communication using any of the various available protocols. The above protocols include, but are not limited to, TCP / IP (Transmission Control Protocol / Internet Protocol), SNA (System Network Architecture), IPX (Internet Packet Switching), AppleTalk (registered trademark), etc. This is merely an example. Network 610 includes local area networks (LANs), Ethernet®-based networks, Token Ring, wide area networks (WANs), the Internet, virtual networks, virtual private networks (VPNs), intranets, extranets, public switched telephone networks (PSTNs), infrared networks, wireless networks (for example, wireless networks operating under any of the IEEE 802.11 protocol suites, Bluetooth®, and / or any other This may include other wireless protocols, and / or any combination of these and / or other networks.
[0139] Server 612 may consist of one or more general-purpose computers, dedicated server computers (including, for example, PC (personal computer) servers, UNIX® servers, midrange servers, mainframe computers, rack-mount servers, etc.), server farms, server clusters, or other appropriate configurations and / or combinations. Server 612 may include one or more virtual machines running a virtual operating system, or other computing architectures with virtualization. This could be, for example, one or more flexible pools of logical storage that can be virtualized to maintain virtual storage for the server. In various examples, Server 612 may be adapted to run one or more services or software applications that provide the functions described above.
[0140] The computing system within server 612 may run one or more operating systems, including any of the above-mentioned operating systems, and commercially available server operating systems. Server 612 may also run any of a variety of other server applications and / or middle-tier applications, including HTTP (Hypertext Transfer Protocol) servers, FTP (File Transfer Protocol) servers, CGI (Common Gateway Interface) servers, JAVA® servers, and database servers. Illustrative database servers include, but are not limited to, those commercially available from Oracle®, Microsoft®, Sybase®, IBM® (International Business Machines), and others. do not have.
[0141] In some implementations, server 612 may include one or more applications for analyzing and organizing data feeds and / or event updates received from users of client computing devices 602, 604, 606, and 608. For example, data feeds and / or event updates may include, but are not limited to, Twitter® feeds, Facebook® updates, or real-time updates received from one or more third-party sources and continuous data streams, including real-time events related to sensor data applications, financial stock market boards, network performance measurement tools (e.g., network monitoring and traffic management applications), clickstream analysis tools, and automotive traffic monitoring. Server 612 may also include one or more applications for displaying data feeds and / or real-time events via one or more display devices on client computing devices 602, 604, 606, and 608.
[0142] The distributed system 600 may also include one or more data repositories 614, 616. In a particular example, these data repositories may be used to store data and other information. Data can be stored. For example, one or more of the data repositories 614, 616 can be used to store information such as information related to chatbot performance or generated models for use by the chatbot used by the server 612 when performing various functions according to various embodiments. The data repositories 614, 616 can reside in various locations. For example, the data repository used by the server 612 may be located locally with the server 612 or may be located remotely from the server 612 and communicate with the server 612 via a network-based connection or a dedicated connection. The data repositories 614, 616 may be of different types. In a particular example, the data repository used by the server 612 may be a database, such as a relational database provided by Oracle Corporation® and other manufacturers. One or more of these databases may be adapted to allow data to be stored, updated, and retrieved from the database in response to commands in SQL format.
[0143] In a particular example, one or more of the data repositories 614, 616 may be used by the application to store application data. The data repositories used by the application may be of various types, such as a key-value store repository, an object store repository, or a general-purpose storage repository supported by the file system.
[0144] In a particular example, the functions described herein may be provided as services through a cloud environment. Figure 7 is a simplified block diagram of a cloud-based system environment that may provide various services as cloud services in a particular example. In the example shown in Figure 7, the cloud infrastructure system 702 may provide one or more cloud services that a user may request using one or more client computing devices 704, 706, and 708. The cloud infrastructure system 702 may include one or more computers and / or servers, which may include those described above with respect to server 612. The computers within the cloud infrastructure system 702 may be organized as general-purpose computers, dedicated server computers, server farms, server clusters, or any other appropriate arrangement and / or combination.
[0145] Network 710 can facilitate data communication and exchange between clients 704, 706, and 708 and the cloud infrastructure system 702. Network 710 may include one or more networks. The networks may be of the same type or different types. Network 710 may support one or more communication protocols, including wired and / or wireless protocols, to facilitate communication.
[0146] The example shown in Figure 7 is merely one example of a cloud infrastructure system and is not intended to be limiting. It should be understood that in several other examples, the cloud infrastructure system 702 may have more or fewer components than those shown in Figure 7, may combine two or more components, or may have components in different configurations or arrangements. For example, while Figure 7 shows three client computing devices, any number of client computing devices may be supported in alternative examples.
[0147] The term "cloud service" is generally used to refer to services that are made available to users on demand via communication networks such as the Internet, through a service provider's system (e.g., cloud infrastructure system 702). Typically, in a public cloud environment, the servers and systems that make up the cloud service provider's system are different from the customer's own on-premises servers and systems. The cloud service provider's system is managed by the cloud service provider. Therefore, customers can use the cloud services provided by the cloud service provider without having to purchase separate licenses, support, or hardware and software resources for the service. For example, the cloud service provider's system can host applications, and users can order and use applications on demand via the internet without having to purchase infrastructure resources to run the applications. Cloud services are designed to provide easy and scalable access to applications, resources, and services. Several providers offer cloud services. For example, some cloud services, such as middleware services, database services, and Java® cloud services, are offered by Oracle Corporation® in Redwood Shores, California.
[0148] In a particular example, the cloud infrastructure system 702 may provide one or more cloud services using various models, including a hybrid service model, such as a Software as a Service (SaaS) model, a Platform as a Service (PaaS) model, and an Infrastructure as a Service (IaaS) model. The cloud infrastructure system 702 may include a suite of applications, middleware, databases, and other resources that enable the provisioning of various cloud services.
[0149] The SaaS model enables the delivery of applications or software as a service to customers over a communication network such as the internet, without requiring customers to purchase the underlying hardware or software for the application. For example, the SaaS model can be used to allow customers to access on-demand applications hosted on a cloud infrastructure system 702. Examples of SaaS services offered by Oracle Corporation® include, but are not limited to, various services for human resource / capital management, customer relationship management (CRM), enterprise resource planning (ERP), supply chain management (SCM), enterprise performance management (EPM), analytics services, and social applications.
[0150] The IaaS model is generally used to provide flexible computing and storage capabilities by offering infrastructure resources (such as servers, storage, hardware, and networking resources) to customers as cloud services. Various IaaS services are offered by Oracle Corporation®.
[0151] The PaaS model is generally used to provide a platform and environmental resources as a service, enabling customers to develop, run, and manage applications and services without having to procure, build, or manage those resources themselves. Examples of PaaS services offered by Oracle Corporation® include, but are not limited to, Oracle Java Cloud Service (JCS), Oracle Database Cloud Service (DBCS), data management cloud services, and various application development solution services.
[0152] Cloud services are generally delivered in an on-demand, self-service, subscription-based, flexibly scalable, reliable, highly available, and secure manner. For example, customers can access cloud infrastructure through subscription orders. A customer may order one or more services provided by the structure system 702. The cloud infrastructure system 702 then provides the services requested in the customer's subscription order by performing processing. For example, a user may use an utterance to request the cloud infrastructure system to take a specific action (e.g., an intent) as described above, and / or to provide services for a chatbot system as described herein. The cloud infrastructure system 702 may be configured to provide one cloud service or more cloud services.
[0153] The cloud infrastructure system 702 can provide cloud services through various deployment models. In a public cloud model, the cloud infrastructure system 702 may be owned by a third-party cloud service provider, and the cloud services are provided to a general public customer. This customer may be an individual or a company. In another example, under a private cloud model, the cloud infrastructure system 702 may function within an organization (for example, within a corporate organization), and the services are provided to customers within this organization. For example, this customer may be various departments within the company, such as the human resources department or the payroll department, or an individual within the company. In yet another example, under a community cloud model, the cloud infrastructure system 702 and the services provided may be shared among various organizations within the relevant community. Other models, such as hybrid models of the above models, may also be used.
[0154] The client computing devices 704, 706, and 708 may be of different types (for example, client computing devices 602, 604, 606, and 608 shown in Figure 6) and may be capable of operating one or more client applications. Users can interact with the cloud infrastructure system 702, such as requesting services provided by the cloud infrastructure system 702, by using the client devices. For example, a user can use a client device to request information or actions from a chatbot, as described in this disclosure.
[0155] In some examples, the processing performed by the cloud infrastructure system 702 to provide services may include model training and deployment. This analysis may include training and deploying one or more models by using, analyzing, and processing a dataset. This analysis may be performed by one or more processors, which may, in some cases, process the data in parallel and run simulations using the data. For example, big data analysis may be performed by the cloud infrastructure system 702 to generate and train one or more models for a chatbot system. The data used in this analysis may be structured data (e.g., data stored in a database or data structured according to a structured model) and / or unstructured data (e.g., data blobs (binary large objects)). It may include binary large objects.
[0156] As shown in the example in Figure 7, the cloud infrastructure system 702 may include infrastructure resources 730 that are used to facilitate the provisioning of various cloud services provided by the cloud infrastructure system 702. Infrastructure resources 730 may include, for example, processing resources, storage or memory resources, networking resources, etc. In a particular example, a storage virtual machine available to handle storage requested by an application may be part of the cloud infrastructure system 702. In other examples, storage A virtual machine may be part of a different system.
[0157] In certain examples, resources may be grouped into resource sets or resource modules (also referred to as "pods") to facilitate the efficient provisioning of these resources to support various cloud services provided by the cloud infrastructure system 702 to different customers. Each resource module or pod may contain a pre-integrated and optimized combination of one or more types of resources. In certain examples, different pods may be pre-provisioned for different types of cloud services. For example, a first set of pods may be provisioned for a database service, and a second set of pods, which may contain different resource combinations than the pods in the first set, may be provisioned for a Java service, etc. For some services, resources allocated to provisioning these services may be shared among the services.
[0158] The cloud infrastructure system 702 itself may internally use services 732 that are shared by different components of the cloud infrastructure system 702 and facilitate the provisioning of services by the cloud infrastructure system 702. These internally shared services may include, but are not limited to, security and identity services, integration services, enterprise repository services, enterprise manager services, virus scanning and whitelisting services, high availability, backup and recovery services, services that enable cloud support, email services, notification services, and file transfer services.
[0159] The cloud infrastructure system 702 may include multiple subsystems. These subsystems may be implemented in software, hardware, or a combination thereof. As shown in Figure 7, the subsystem may include a user interface subsystem 712 that enables users or customers of the cloud infrastructure system 702 to interact with the cloud infrastructure system 702. The user interface subsystem 712 may include various different interfaces, such as a web interface 714, an online store interface 716 where cloud services offered by the cloud infrastructure system 702 are advertised and available for purchase by consumers, and other interfaces 718. For example, a customer may use a client device to request (service request 734) one or more services that the cloud infrastructure system 702 offers using one or more of the interfaces 714, 716, and 718. For example, a customer may access an online store, browse the cloud services offered by the cloud infrastructure system 702, and place a subscription order for one or more services offered by the cloud infrastructure system 702 that the customer wishes to subscribe to. This service request may include information identifying the customer and the one or more services that the customer wishes to subscribe to. For example, a customer can place an order for services provided by the cloud infrastructure system 702. As part of the order, the customer can provide information identifying the chatbot system on which the service will be provided, and optionally one or more credentials for the chatbot system.
[0160] In a specific example, such as the example shown in Figure 7, the cloud infrastructure system 702 may include an order management subsystem (OMS) 720 configured to process new orders. As part of this process, the OMS 720 creates a customer account if one does not already exist, receives billing and / or account information from the customer to be used to charge the customer in order to provide the requested services to the customer, verifies the customer information, and after verification reserves this order for the customer, and each The seed workflow may be configured to prepare orders for provisioning by adjusting it.
[0161] If properly validated, the OMS720 may invoke the Order Provisioning Subsystem (OPS)724, which is configured to provision resources for this order, including processing, memory, and networking resources. Provisioning may include allocating resources for the order and configuring those resources to facilitate the services requested by the customer order. The way resources are provisioned for an order and the types of resources provisioned may depend on the type of cloud service ordered by the customer. For example, following a certain workflow, the OPS724 may be configured to determine the specific cloud service being requested and to identify the number of pods that would have been pre-configured for that particular cloud service. The number of pods allocated for an order may depend on the size / volume / level / scope of the requested service. For example, the number of pods to allocate may be determined based on the number of users the service should support, the duration for which the service is requested, etc. The allocated pods may then be customized to suit the specific customer making the request in order to provide the requested service.
[0162] In certain cases, the setup phase process may be performed by the cloud infrastructure system 702 as part of the provisioning process, as described above. The cloud infrastructure system 702 can generate an application ID and select a storage virtual machine for the application from among the storage virtual machines provided by the cloud infrastructure system 702 itself, or from storage virtual machines provided by other systems other than the cloud infrastructure system 702.
[0163] The cloud infrastructure system 702 may send a response or notification 744 to the requesting customer to indicate when the requested service will be available. In some examples, the customer may be sent information (e.g., a link) that enables the customer to begin using and utilizing the benefits of the requested service. In certain examples, the response to the customer requesting the service may include a chatbot system ID generated by the cloud infrastructure system 702 and information identifying a chatbot system selected by the cloud infrastructure system 702 for the chatbot system corresponding to the chatbot system ID.
[0164] The cloud infrastructure system 702 may provide services to multiple customers. For each customer, the cloud infrastructure system 702 manages information related to one or more subscription orders received from the customer, maintains customer data related to the orders, and provides the requested services to the customer. The cloud infrastructure system 702 may also collect usage statistics about the customer's use of the subscribed services. For example, statistics may be collected on the amount of storage used, the amount of data transferred, the number of users, and the amount of system uptime and system downtime. This usage information may be used to charge customers. Billing may be done, for example, on a monthly basis.
[0165] The cloud infrastructure system 702 may provide services to multiple customers in parallel. The cloud infrastructure system 702 may store information about these customers, including, in some cases, copyright information. In a particular example, the cloud infrastructure system 702 includes an Identity Management Subsystem (IMS) 728 configured to manage customer information and separate the managed information so that information about one customer cannot be accessed from information about another customer. IMS728 may be configured to provide various security-related services, such as identity services including information access management, authentication and authorization services, and services for managing customer identities and roles and related capabilities.
[0166] Figure 8 shows an example of computer system 800. In some examples, computer system 800 can be used to implement any digital assistant or chatbot system in a distributed environment, as well as the various servers and computer systems described above. As shown in Figure 8, computer system 800 includes various subsystems, including a processing subsystem 804 that communicates with several other subsystems via a bus subsystem 802. These other subsystems may include a processing acceleration unit 806, an I / O subsystem 808, a storage subsystem 818, and a communication subsystem 824. The storage subsystem 818 may include a non-temporary computer-readable storage medium, including a storage medium 822 and system memory 810.
[0167] The bus subsystem 802 provides a mechanism for various components and subsystems of the computer system 800 to communicate with each other as intended. Although the bus subsystem 802 is schematically shown as a single bus, alternative examples of the bus subsystem may utilize multiple buses. The bus subsystem 802 may be one of several types of bus structures, including a memory bus or memory controller, peripheral bus, local bus, etc., using one of various bus architectures. For example, such architectures include the Industry Standard Architecture (ISA) bus, Micro Channel Architecture (MCA) bus, Enhanced ISA (EISA) bus, Video Electronics Standards Association (VESA) local bus, and manufactured according to the IEEE P1386.1 standard. This may include peripheral component interconnect (PCI) buses, which can be implemented as mezzanine buses.
[0168] The processing subsystem 804 controls the operation of the computer system 800 and may include one or more processors, application-specific integrated circuits (ASICs), or field-programmable gate arrays (FPGAs). The processors may include single-core or multi-core processors. The processing resources of the computer system 800 can be organized into one or more processing units 832, 834, etc. A processing unit may include one or more processors, one or more cores from the same or different processors, a combination of cores and processors, or other combinations of cores and processors. In some examples, the processing subsystem 804 may include one or more dedicated coprocessors, such as graphics processors or digital signal processors (DSPs). In some examples, some or all of the processing units in the processing subsystem 804 may use customized circuitry, such as application-specific integrated circuits (ASICs) or field-programmable gate arrays (FPGAs).
[0169] In some examples, processing units within the processing subsystem 804 may execute instructions stored in system memory 810 or computer-readable storage medium 822. In various examples, processing units may execute various programs or code instructions and maintain multiple programs or processes running concurrently. At any given time, some or all of the program code to be executed may reside in system memory 810 and / or computer-readable storage medium 822, which may contain one or more storage devices. Through appropriate programming, the processing subsystem 804 may provide the various functions described above. The computer system 800 is running one or more virtual machines. In this example, one or more processing units may be assigned to each virtual machine.
[0170] In a particular example, a processing acceleration unit 806 may be optionally provided to perform customized processing to accelerate the overall processing performed by the computer system 800, or to offload a portion of the processing performed by the processing subsystem 804.
[0171] The I / O subsystem 808 may include devices and mechanisms for inputting information into and / or outputting information from or through the computer system 800. Generally, the use of the term “input device” is intended to include all conceivable types of devices and mechanisms for inputting information into the computer system 800. User interface input devices may include, for example, pointing devices such as keyboards, mice or trackballs, touchpads or touchscreens integrated into displays, scroll wheels, click wheels, dials, buttons, switches, keypads, voice input devices with voice command recognition systems, microphones, and other types of input devices. User interface input devices may also include motion sensing and / or gesture recognition devices, such as Microsoft Kinect® motion sensors, Microsoft Xbox® 360 game controllers, and devices that provide interfaces for receiving input using gestures and voice commands, enabling users to control and interact with input devices. The user interface input device detects the user's eye movements (for example, blinking while taking a photo and / or selecting from a menu) and translates the eye gestures into input to the input device (for example, Google Glass®). The user interface input device may also include eye gesture recognition devices such as Glass® blink detectors. Furthermore, the user interface input device may include voice recognition sensing devices that enable the user to interact with a voice recognition system (e.g., Siri® Navigator) via voice commands.
[0172] Other examples of user interface input devices may include, but are not limited to, three-dimensional (3D) mice, joysticks or pointing sticks, gamepads and graphic tablets, as well as auditory / visual devices such as speakers, digital cameras, digital camcorders, portable media players, webcams, image scanners, fingerprint scanners, barcode readers, 3D scanners, 3D printers, laser rangefinders, and eye-tracking devices. User interface input devices may also include medical imaging input devices such as computed tomography, magnetic resonance imaging, positional emission tomography, and medical ultrasound devices. User interface input devices may also include audio input devices such as MIDI keyboards and digital musical instruments.
[0173] Generally, the use of the term "output device" is intended to include all conceivable types of devices and mechanisms for outputting information from the computer system 800 to a user or another computer. User interface output devices may include non-visual displays such as display subsystems, indicator lights, or audio output devices. Display subsystems may include flat panel devices such as those using cathode ray tubes (CRTs), liquid crystal displays (LCDs), or plasma displays, planning devices, touchscreens, etc. For example, user interface output devices may include various display devices that visually convey text, graphics, and audio / video information, such as monitors, printers, speakers, headphones, car navigation systems, plotters, audio output devices, and modems. That's good, but it's not limited to those.
[0174] The storage subsystem 818 provides a repository or datastore for storing information and data used by the computer system 800. The storage subsystem 818 provides a tangible, non-temporary, computer-readable storage medium for storing basic programming and data configurations that provide some example functionality. Software (e.g., programs, code modules, instructions) that, when executed by the processing subsystem 804, provides the above-described functionality may be stored in the storage subsystem 818. The software may be executed by one or more processing units of the processing subsystem 804. The storage subsystem 818 may also provide authentication in accordance with the teachings of this disclosure.
[0175] The storage subsystem 818 may include one or more non-temporary memory devices, including volatile and non-volatile memory devices. As shown in Figure 8, the storage subsystem 818 includes system memory 810 and computer-readable storage medium 822. The system memory 810 may include several memories, including volatile primary random access memory (RAM) for storing instructions and data during program execution, and non-volatile read-only memory (ROM) or flash memory for storing fixed instructions. In some implementations, a basic input / output system (BIOS), which includes basic routines to assist in the transfer of information between elements within the computer system 800 during startup, etc., may typically be stored in ROM. Typically, The RAM contains data and / or program modules currently being operated and executed by the processing subsystem 804. In some implementations, the system memory 810 may include several different types of memory, such as static random access memory (SRAM) and dynamic random access memory (DRAM).
[0176] As an example, without limitation, as shown in Figure 8, the system memory 810 may load a running application program 812, program data 814, and operating system 816, which may include various applications such as a web browser, middle-tier applications, and relational database management systems (RDBMS). As an example, the operating system 816 may be Microsoft Windows®, Apple Macintosh®, and / or Linux operating systems. The system, various commercially available UNIX® or UNIX-like operating systems (including, but not limited to, various GNU / Linux operating systems, Google Chrome® OS, etc.), and / or iOS®, Windows Phone, Android® OS, BlackBerry® OS, Palm® OS This could include various versions of mobile operating systems, such as operating systems themselves.
[0177] The computer-readable storage medium 822 can store programming and data structures that provide several example functions. The computer-readable storage medium 822 can provide storage for computer-readable instructions, data structures, program modules, and other data for the computer system 800. Software (programs, code modules, instructions) that provides the above functions when executed by the processing subsystem 804 may be stored in the storage subsystem 818. As an example, the computer-readable storage medium 822 may include non-volatile memory such as a hard disk drive, magnetic disk drive, optical disk drive such as a CD-ROM, DVD, Blu-ray® disc, or other optical media. The computer-readable storage medium 822 may also include Zip® drives, flash memory cards, Universal Serial Bus (USB) flash drives, Secure Digital (SD) cards, DVD discs, and digital media. Computer-readable storage media 822 may include, but are not limited to, videotapes and the like. Solid-state drives (SSDs) based on non-volatile memory such as flash memory-based SSDs, enterprise flash drives, and solid-state ROMs, SSDs based on volatile memory such as solid-state RAM, dynamic RAM, and static RAM, DRAM-based SSDs, magnetoresistive RAM (MRAM) SSDs, and hybrid SSDs that use a combination of DRAM and flash memory-based SSDs.
[0178] In certain examples, the storage subsystem 818 may also include a computer-readable storage medium reader 820 that can be further connected to the computer-readable storage medium 822. The reader 820 may be configured to receive and read data from memory devices such as disks, flash drives, etc.
[0179] In certain cases, computer system 800 may support virtualization technologies, including but not limited to the virtualization of processing and memory resources. For example, computer system 800 may provide support for running one or more virtual machines. In certain cases, computer system 800 may run programs such as hypervisors that facilitate the configuration and management of virtual machines. Each virtual machine may be allocated memory, computing resources (e.g., processors, cores), I / O, and networking resources. Each virtual machine typically runs independently of other virtual machines. A virtual machine typically runs its own operating system, which may be the same as or different from the operating system run by other virtual machines run by computer system 800. Thus, potentially multiple operating systems may run simultaneously by computer system 800.
[0180] The communication subsystem 824 provides interfaces to other computer systems and networks. It functions as an interface for sending and receiving data between other systems and the computer system 800. For example, the communication subsystem 824 may enable the computer system 800 to establish communication channels to one or more client devices via the internet in order to send and receive information with one or more client devices. For instance, if the computer system 800 is used to implement the bot system 120 shown in Figure 1, the communication subsystem may be used to communicate with a chatbot system selected for the application.
[0181] The communication subsystem 824 may support both wired and / or wireless communication protocols. In some examples, the communication subsystem 824 may include radio frequency (RF) transceiver components for accessing wireless voice and / or data networks (using, for example, cellular telephone technology, 3G, 4G, or EDGE (High Speed Data Rate for Global Evolution)), a Global Positioning System (GPS) receiver component, and / or other components. In some examples, the communication subsystem 824 may provide a wired network connection (e.g., Ethernet®) in addition to or instead of a wireless interface.
[0182] The communication subsystem 824 can receive and transmit data in various formats. In some examples, in addition to other formats, the communication subsystem 824 may receive input communications in the form of structured data feeds and / or unstructured data feeds 826, event streams 828, event updates 830, etc. For example, the communication subsystem 824 is a social media network and / or Twitter® fee This includes updates from Facebook®, Rich Site Summary (RSS) feeds, etc. It may be configured to receive (or send) data feeds 826 in real time from users of other communication services, such as web feeds and / or real-time updates from one or more third-party sources.
[0183] In certain examples, the communication subsystem 824 may be configured to receive data in the form of a continuous data stream, which may include an event stream 828 and / or event update 830 of real-time events that are inherently continuous or infinite and do not have a clear end. Examples of applications that generate continuous data include, for example, sensor data applications, financial stock market boards, network performance measurement tools (e.g., network monitoring and traffic management applications), clickstream analysis tools, and automotive traffic monitoring.
[0184] The communication subsystem 824 may be configured to transmit data from computer system 800 to other computer systems or networks. This data may be transmitted in various different formats, such as structured and / or unstructured data feeds 826, event streams 828, event updates 830, etc., to one or more databases that can communicate with one or more streaming data source computers connected to computer system 800.
[0185] Computer system 800 may be one of many types, including handheld portable devices (e.g., iPhone® cellular phone, iPad® computing tablet, PDA), wearable devices (e.g., Google Glass® head-mounted display), personal computers, workstations, mainframes, kiosks, server racks, or other data processing systems. Because the nature of computers and networks is constantly changing, the description of computer system 800 shown in Figure 8 is intended only as a specific example. Many other configurations are possible, having more or fewer components than the system shown in Figure 8. Based on the disclosures and teachings herein, it should be recognized that there are other embodiments and / or methods for realizing various examples.
[0186] While specific examples have been described, various variations, modifications, alternative configurations, and equivalents are possible. The examples are not limited to operation within a specific data processing environment, but can freely operate within multiple data processing environments. Furthermore, although the examples were illustrated using a specific set of transactions and steps, it should be apparent to those skilled in the art that this is not intended as limitation. While some flowcharts illustrate operations as sequential processes, many of these operations may be executed in parallel or concurrently. In addition, the order of operations may be re-specified. Processes may have additional steps not shown in the diagrams. The various features and aspects of the above examples may be used individually or together.
[0187] Furthermore, while specific examples have been described using particular combinations of hardware and software, it should be understood that other combinations of hardware and software are also possible. The specific examples may be implemented using hardware alone, software alone, or a combination thereof. The various processes described herein may be implemented on the same processor or on different processors in any combination.
[0188] Where it is stated that a device, system, component, or module is configured to perform a particular operation or function, such configuration can be achieved, for example, by designing electronic circuits to perform the operation; by programming programmable electronic circuits (such as a microprocessor) to perform the operation; by executing computer instructions or code, or any combination thereof, stored in a non-temporary memory medium, or by executing a processor or core. Processes can communicate using a variety of techniques, including but not limited to conventional techniques for inter-process communication, different pairs of processes may use different techniques, and the same pair of processes may use different techniques at different times.
[0189] This disclosure provides specific details to ensure that the examples are fully understood. However, the examples can be implemented without these specific details. For example, well-known circuits, processes, algorithms, structures, and techniques are shown without unnecessary details in order to avoid ambiguity in the examples. This specification provides only exemplary examples and is not intended to limit the scope, applicability, or configuration of other examples. Rather, the above description of the examples provides a description that enables the implementation of various examples for those skilled in the art. Various modifications are possible within the scope of the function and configuration of the elements.
[0190] Therefore, the specification and drawings should be considered illustrative rather than restrictive. However, it will be clear that additions, reductions, deletions, and other modifications and changes may be made to them without departing from the broader spirit and scope set forth in the claims. Thus, specific examples have been described, but these are not intended to be limiting. Various variations and equivalents are within the scope of the attached claims.
[0191] While the above specification illustrates aspects of the disclosure with reference to specific examples, those skilled in the art will recognize that the disclosure is not limited thereto. The various features and aspects of the above disclosure may be used individually or together. Furthermore, the examples can be used in a variety of environments and applications beyond those described herein, without departing from the broader spirit and scope of the specification. Therefore, the specification and drawings should be considered illustrative rather than restrictive.
[0192] In the above description, the method is presented in a specific order for illustrative purposes. It should be understood that in alternative examples, the method may be executed in a different order than described. It should also be understood that the above method may be executed by hardware components, or it may be embodied in a sequence of machine-executable instructions, which, when used, may cause a machine such as a general-purpose or dedicated processor or logic circuit programmed with such instructions to execute the method. These machine-executable instructions may be stored on one or more machine-readable media, or other types of machine-readable media suitable for storing electronic instructions, such as CD-ROMs or other types of optical discs, floppy disks, ROMs, RAMs, EPROMs, EEPROMs, magnetic or optical cards, or flash memory. Alternatively, these methods may be executed by a combination of hardware and software.
[0193] Where a component is described as being configured to perform a particular operation, such configuration may be achieved, for example, by designing an electronic circuit or other hardware to perform a particular operation, by programming a programmable electronic circuit (e.g., a microprocessor or other suitable electronic circuit) to perform a particular operation, or by any combination thereof.
[0194] While examples illustrating this application are described in detail here, it should be understood that the concepts of the present invention can be embodied and adopted in various other aspects, and that the claims are intended to be interpreted to include such variations, unless limited by the prior art.
Claims
1. A method implemented by a computer, Receiving a training set of utterances in order to train the intent classifier to identify one or more intents for one or more utterances, This includes extending the training set of utterances with noise text to generate an extended training set of utterances, wherein the extension is performed using one or more noise extension operations, and the one or more noise extension operations are The noise text is obtained as a random string of text generated from a list or dictionary of stop words, or as a sentence copied word for word or rearranged from a corpus of text, wherein the noise text is obtained independently of the original text in the utterances of the training set of utterances, and the one or more noise augmentation operations further include: The process includes incorporating the noise text within the utterance to the original text in the utterance of the training set of the utterance to generate an extended utterance, and the incorporation is (i) incorporating a random string of text generated from the list of stop words or the dictionary within the utterance, before the original text, after the original text of the utterance, adjacent to the original text of the utterance, integrated into the original text of the utterance, or in a combination thereof, (ii) The method further includes incorporating the word-for-word copied sentence or the rearranged copied sentence within the utterance before the original text, after the original text of the utterance, adjacent to the original text of the utterance, integrated into the original text of the utterance, or in a combination thereof, the method further A method comprising training the intent classifier using the aforementioned extended speech training set.
2. The method according to claim 1, wherein the noise text is incorporated into the utterance at a predefined expansion ratio selected to preserve the original class label for the utterance.
3. The method according to claim 1 or 2, wherein the noise text is obtained as a random string of the text automatically generated from the list of stop words.
4. The method according to any one of claims 1 to 3, wherein the noise text is obtained as a sentence of the text that is automatically copied word for word from a corpus of the text.
5. The method according to any one of claims 1 to 4, wherein the noise text is obtained as a random string of the text automatically generated from the dictionary.
6. The method according to any one of claims 1 to 5, wherein the noise text is obtained as a sentence of the text that has been automatically rearranged and copied from a corpus of the text.
7. The method according to any one of claims 1 to 6, wherein the noise text is obtained as a random string of the text automatically generated from the dictionary, with or without consideration of the frequency of words or characters selected for the random string of the text.
8. It is a system, One or more data processors, The system comprises a non-temporary computer-readable storage medium containing instructions, wherein, when the instructions are executed on one or more data processors, the one or more data processors cause the data processors to perform an action, and the action is Receiving a training set of utterances in order to train the intent classifier to identify one or more intents for one or more utterances, This includes extending the training set of utterances with noise text to generate an extended training set of utterances, wherein the extension is performed using one or more noise extension operations, and the one or more noise extension operations are The noise text is obtained as a random string of text generated from a list or dictionary of stop words, or as a sentence copied word for word or rearranged from a corpus of text, wherein the noise text is obtained independently of the original text in the utterances of the training set of utterances, and the one or more noise augmentation operations further include: The process includes incorporating the noise text within the utterance to the original text in the utterance of the training set of the utterance to generate an extended utterance, and the incorporation is (i) incorporating a random string of text generated from the list of stop words or the dictionary within the utterance, before the original text, after the original text of the utterance, adjacent to the original text of the utterance, integrated into the original text of the utterance, or in a combination thereof, (ii) The action includes incorporating the word-for-word copied sentence or the rearranged copied sentence within the utterance before the original text, after the original text in the utterance, adjacent to the original text in the utterance, integrated into the original text in the utterance, or in a combination thereof, the action further: A system comprising training the intent classifier using the aforementioned extended speech training set.
9. The system according to claim 8, wherein the noise text is incorporated into the utterance at a predefined expansion ratio selected to preserve the original class label for the utterance.
10. The system according to claim 8 or 9, wherein the noise text is obtained as a random string of the text automatically generated from the list of stop words.
11. The system according to any one of claims 8 to 10, wherein the noise text is obtained as a sentence of the text that is automatically copied word for word from a corpus of the text.
12. The system according to any one of claims 8 to 11, wherein the noise text is obtained as a random string of the text automatically generated from the dictionary.
13. The system according to any one of claims 8 to 12, wherein the noise text is obtained as a sentence of the text that has been automatically rearranged and copied from the corpus of the text.
14. The system according to any one of claims 8 to 13, wherein the noise text is obtained as a random string of the text automatically generated from the dictionary, with or without consideration of the frequency of words or characters selected for the random string of the text.
15. A program for causing a system to perform the method described in any one of claims 1 to 7.
Citation Information
Patent Citations
Natural language processing method and device, and method and device of learning natural language processing model
JP2018081298A