Deep Learning Techniques for Extracting Embedded Data from Documents

JP2024540111A5Active Publication Date: 2025-03-06ORACLE INT CORP
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
JP2024525422
Authority / Receiving Office
JP · JP
Patent Type
Applications
Current Assignee / Owner
Priority Date
2022-08-12
Filing Date
2022-08-15
Publication Date
2025-03-06
Estimated Expiration
2042-08-15

AI Technical Summary

Technical Problem

Training chatbots to interact effectively with humans is a time- and resource-intensive task due to the need for large amounts of manually labeled training data, especially from unstructured documents like PDFs, which are not directly usable by current chatbot systems, leading to inefficiencies and delays in deployment.

Method used

Deep learning techniques are employed to automatically extract question and answer pairs from unstructured text data, such as PDFs, generating embeddings and predictions that can be used to train chatbot models without manual intervention, reducing human error and accelerating the training process.

Benefits of technology

This approach enables faster, more accurate extraction of training data from unstructured documents, reducing resource consumption and deployment time while minimizing human biases, allowing chatbots to respond effectively to human queries.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 00000000_0000_ABST
    Figure 00000000_0000_ABST
Patent Text Reader

Abstract

Deep learning techniques for extraction of embedded data from documents are disclosed. In an exemplary technique, a set of unstructured text data is received. One or more text groups are generated by processing the set of unstructured text data. One or more text group embeddings are generated based on the one or more generated text groups in a format for input to a machine learning model. One or more output predictions are generated by inputting the one or more text group embeddings to the machine learning model. Each output prediction of the one or more output predictions corresponds to a predicted aspect of one of the one or more text groups.
Need to check novelty before this filing date? Find Prior Art

Description

[Technical field]

[0001] CROSS-REFERENCE TO RELATED APPLICATIONS This application claims the benefit of priority to U.S. Provisional Application No. 63 / 273,761, filed October 29, 2021, which claims the benefit of U.S. Provisional Application No. 17 / 819,445, filed August 12, 2022, the specifications of each of which are incorporated herein by reference in their entireties.

[0002] Field The present disclosure relates generally to chatbot systems, and more particularly to deep learning techniques for the extraction of question and answer pairs from data. [Background technology]

[0003] background Instant messaging and automated chat platforms are efficient solutions to modern customer service problems. Organizations can leverage these practices to provide timely and responsive service to their customers without allocating expensive human resources to individual user questions. Modern automated chat platforms can utilize "chatbots" to handle customer service requests or other interactions with humans. Some chatbots may be designed and trained to handle specific requests, such as answering questions posed by humans.

[0004] Training a chatbot to effectively interact with humans is a time- and resource-intensive task. Often, a large amount of training data is required during the training process, and the chatbot model being trained may be assigned a task for which the existing set of training data is not suitable. Obtaining sufficient training data for training these chatbots often requires users to manually create the training data or parse documents to extract data and label the data in a way that the chatbot model can interact with. This is an extremely time- and resource-intensive task for humans, slowing down the deployment of chatbots. For example, training a chatbot to answer questions posed by humans may require the chatbot to parse thousands of examples of questions and corresponding sample answers that must be manually written or modified by humans.

[0005] A large number of documents containing questions and answers are digitally available. For example, a customer training a new chatbot may utilize existing documents on the customer's website, such as frequently asked questions (FAQs), to generate a set of training data. These existing documents are often in an unstructured format, such as portable document format files (PDF files), in which the chatbot cannot be trained because the chatbot does not accept the files as training input. Furthermore, before training can begin, a human user must parse the unstructured documents themselves and manually modify or regenerate the data in the appropriate embedded format that fits the chatbot. Summary of the Invention [Means for solving the problem]

[0006] overview Deep learning techniques for the extraction of embedded data from documents are disclosed.

[0007] In various embodiments, a method includes receiving, at a data processing system, a set of unstructured textual data; generating, by the data processing system, one or more text groups by processing the set of unstructured textual data; generating, by the data processing system, one or more text group embeddings based on the one or more generated text groups in a format for input to a machine learning model; and generating, by the data processing system, one or more output predictions by inputting the one or more text group embeddings to the machine learning model, each output prediction of the one or more output predictions corresponding to a predicted aspect of a text group of the one or more text groups.

[0008] In various embodiments, a system can extract embedded data from a document. The system can include one or more processors and a non-transitory computer-readable medium coupled to the one or more processors. The non-transitory computer-readable medium can store instructions executable by the one or more processors to cause the one or more processors to perform various operations. The system can receive a set of unstructured text data. The system can generate one or more text groups by processing the set of unstructured text data. The system can generate one or more text group embeddings based on the one or more generated text groups in a format for input to a machine learning model. The system can generate one or more output predictions by inputting the one or more text group embeddings to the machine learning model. Each output prediction of the one or more output predictions can correspond to a predicted aspect of one of the one or more text groups.

[0009] In various embodiments, a non-transitory computer-readable medium may store instructions executable by one or more processors to cause one or more processors to perform various operations related to extracting embedded data from a document. The operations may include receiving a set of unstructured textual data. The operations may include generating one or more text groups by processing the set of unstructured textual data. The operations may include generating one or more text group embeddings based on the one or more generated text groups in a format for input to a machine learning model. The operations may include generating one or more output predictions by inputting the one or more text group embeddings to the machine learning model. Each output prediction of the one or more output predictions may correspond to a predicted aspect of one of the one or more text groups.

[0010] In some further embodiments, the set of unstructured textual data is one or more portable document format (PDF) text files. In some embodiments, processing the set of unstructured textual data includes extracting one or more sets of characters from the set of unstructured textual data, and generating the one or more text groups includes grouping the one or more sets of characters according to a relative position of each character within the set of unstructured textual data.

[0011] In some embodiments, generating the one or more text group embeddings includes generating a plurality of portion embeddings based on the set of unstructured textual data or the one or more text groups, and generating the one or more text groups based on the plurality of portion embeddings. In some further embodiments, one portion embedding of the plurality of portion embeddings is a text portion embedding generated based on one or more semantic aspects of the one or more text groups. In some further embodiments, one portion embedding of the plurality of portion embeddings is a boundary portion embedding generated based on one or more extracted spatial boundaries of characters in the set of unstructured textual data. In some further embodiments, one portion embedding of the plurality of portion embeddings is a visual portion embedding generated based on one or more extracted image-based aspects of the set of unstructured textual data. In some further embodiments, one portion embedding of the plurality of portion embeddings is a relative font portion embedding generated based on one or more different visual fonts of text in the set of unstructured textual data.

[0012] In some embodiments, the one or more text groups are one or more sentences of structured characters extracted by processing the set of unstructured text data, and the one or more output predictions are one or more sentence labels, each sentence label corresponding to a predicted relative order of a sentence within the group of related sentences. In some further embodiments, the method further includes determining, by the data processing system, a set of ground truth training data, the set of ground truth training data including at least a known label corresponding to one of the one or more sentence labels, and training the machine learning model by comparing the one of the one or more sentence labels to the corresponding known label to determine an objective function value, and modifying a configuration of the machine learning model based on the objective function value. In some embodiments, the method further includes processing the one or more sentences and the one or more sentence labels to generate one or more question and answer pairs, each of the one or more question and answer pairs being associated with at least one sentence as a text question and at least one corresponding sentence as a text answer to the text question.

[0013] The techniques described above and below may be implemented in multiple ways and multiple contexts. Several example implementations and contexts are provided with reference to the following figures, which are described in more detail below. However, the following implementations and contexts are only some of the many implementations and contexts. [Brief description of the drawings]

[0014] [Figure 1] FIG. 1 is a simplified block diagram of a distributed environment incorporating an example embodiment. [Diagram 2] FIG. 1 is a simplified block diagram of a master bot (MB) system, according to one embodiment. [Diagram 3] FIG. 1 is a simplified block diagram of a Skillbot system, according to one embodiment. [Figure 4] FIG. 1 is a simplified block diagram of a computing system implementing a data processing system for generating text embeddings in accordance with various embodiments. [Diagram 5] FIG. 1 is a simplified block diagram of a computing system for training a machine learning model in accordance with various embodiments. [Figure 6] FIG. 1 is a simplified block diagram of a computing system for generating inferences via machine learning models in accordance with various embodiments. [Figure 7] FIG. 1 is a simplified block diagram of a computing system for feature extraction of text groups in accordance with various embodiments. [Figure 8] FIG. 1 illustrates a process flow for generating text group embeddings for machine learning processes in accordance with various embodiments. [Figure 9] 1 is a simplified diagram of a distributed system for implementing various embodiments. [Figure 10] FIG. 1 is a simplified block diagram of one or more components of a system environment in which services provided by one or more components of an embodiment system may be offered as cloud services, according to various embodiments. [Figure 11] FIG. 1 illustrates an example computer system that can be used to implement various embodiments. DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS

[0015] Detailed Description In the following description, for purposes of explanation, specific details are set forth in order to provide a thorough understanding of certain embodiments. It will be apparent, however, that various embodiments may be practiced without those specific details. The figures and descriptions are not intended to be limiting. The word "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.

[0016] Training a chatbot to effectively interact with humans is a time- and resource-intensive task. Untrained chatbots may not be able to process new or complex data well and may return no answer or an incorrect answer in response to various utterances, such as questions, posed to the chatbot. A large amount of data is often required to train a chatbot model to the point where it can effectively answer human utterances in most cases. This data includes labeled training data, and a chatbot model, such as a neural network, may be trained by generating predicted data for an utterance and then comparing the predicted data to ground truth data. Using an objective function, the difference between the predicted data and the ground truth data may be measured and used to improve the model (e.g., to learn model parameters by backpropagation).

[0017] Labeled training data is typically generated manually by reviewing documents that contain data that is desired to be included as training data. Humans may parse documents themselves for question and answer pairs that can be converted into training data for chatbot models. Humans copy the questions and answers to which the chatbot should "learn" and use the pairs to generate a training data set that is used to train the chatbot. To do this, human users must manually review documents for question and answer pairs, and often do not notice where the question and answer pairs are located or overlook them due to human error. This results in inefficient utilization of resources and delays in training and deployment of chatbot models.

[0018] To overcome these and other challenges, deep learning techniques are described herein for the extraction of embedded data from documents that can be used to train chatbot models. The deep learning techniques described herein enable automatic and dynamic extraction of embedded data that can be used to train machine learning models without the need for human action or intervention. Automated dynamic extraction allows chatbot models to be trained more quickly, comprehensively, and thoroughly because it removes human error and inefficiencies in the training data generation process. For example, deep learning techniques not only extract question and answer pairs from digital documents faster and more accurately than humans, but also prevent human bias and include contextually relevant embeddings in the training data that humans may not notice or would otherwise not include when manually generating the training data.

[0019] Exemplary Chatbot System A bot (also called a skill, chatbot, chatterbot, or talkbot) is a computer program that can conduct a conversation with an end user. A bot can respond to natural language messages (e.g., questions or comments), typically through a messaging application that uses natural language messages. Businesses can use one or more bot systems to communicate with end users through messaging applications. The messaging application, sometimes called a channel, can be the end user's preferred messaging application that the end user already has installed and is familiar with. Thus, end users do not need to download and install a new application to chat with a bot system. Messaging applications may include, for example, over-the-top (OTT) messaging channels (such as Facebook Messenger, Facebook WhatsApp, WeChat, Line, Kik, Telegram, Talk, Skype, Slack, or SMS), virtual private assistants (such as Amazon Dot, Echo, or Show, Google Home®, Apple HomePod), mobile and web app extensions that extend native or hybrid / responsive mobile apps or web applications with chat capabilities, or voice-based input (such as devices or apps with an interface that uses Siri, Cortana, Google Voice, or other voice input for interaction).

[0020] In some examples, the bot system may be associated with a Uniform Resource Identifier (URI). The URI may identify the bot system using a character string. The URI may be used as a webhook for one or more messaging application systems. The URI may include, for example, a Uniform Resource Locator (URL) or a Uniform Resource Name (URN). The bot system may be designed to receive a message (e.g., a hypertext transfer protocol (HTTP) post-invoke message) from the messaging application system. The HTTP post-invoke message may be directed to the URI from the messaging application system. In some embodiments, the message may be different from the HTTP post-invoke message. For example, the bot system may receive a message from a Short Message Service (SMS). Although the description herein refers to a communication received by the bot system as a message, it should be understood that the message may be an HTTP post-invoke message, an SMS message, or any other type of communication between the two systems.

[0021] An end user may interact with a bot system through conversational interactions (sometimes referred to as a conversational user interface (UI)) similar to human interactions. In some cases, an interaction may include an end user saying "hello" to a bot, with the bot responding "hey" and asking the end user how they can help. In some cases, an interaction may be a transactional interaction, e.g., with a banking bot, such as transferring money from one account to another, an informational interaction, e.g., with an HR bot, such as checking remaining vacation days, or an interaction, e.g., with a retail bot, such as discussing returning a purchased item or requesting technical assistance.

[0022] In some embodiments, the bot system may intelligently process end-user interactions without interaction with an administrator or developer of the bot system. For example, an end user may send one or more messages to the bot system to achieve a desired goal. The message may include some content, such as text, emojis, voice, images, video, or other methods of conveying a message. In some embodiments, the bot system may convert the content into a standardized form (e.g., a representational state transfer (REST) ​​call to a service of the enterprise with appropriate parameters) and generate a natural language response. The bot system may prompt the end user for additional input parameters or request other additional information. In some embodiments, the bot system may initiate communication with the end user rather than passively responding to the end user's utterance. Various techniques are described herein for identifying explicit invocations of the bot system and determining the input of the bot system being invoked. In an embodiment, an analysis of the explicit invocation is performed by the master bot based on detecting an invocation name in the utterance. In response to detecting the invocation name, the utterance may be refined for input to a skill bot associated with the invocation name.

[0023] A conversation with a bot may follow a specific conversation flow that includes multiple states. This flow may define what happens next based on the input. In some embodiments, a state machine that includes user-defined states (e.g., end user intent) and actions to take in or between states may be used to implement the bot system. A conversation may proceed in different ways based on end user input that may affect the decisions the bot makes regarding the flow. For example, at each state, based on the end user input or utterance, the bot may determine the end user intent to determine the appropriate action to take next. As used herein, in the context of an utterance, the term "intent" refers to the intent of the user who provided the utterance. For example, a user may attempt to converse with a bot to order a pizza, such that the user's intent may be expressed by the utterance "order a pizza". The user's intent may be directed to a specific task that the user wants the chatbot to perform on his or her behalf. Thus, an utterance may be phrased as a question, command, request, etc. that reflects the user's intent. The intent may include a goal that the end user wants to achieve.

[0024] In the context of chatbot configuration, the term "intent" is used herein to refer to configuration information for mapping a user's utterance to a specific task / action or a category of tasks / actions that the chatbot can perform. To distinguish between an utterance intent (i.e., a user's intent) and a chatbot's intent, the latter may be referred to herein as a "bot's intent." A bot's intent may include a set of one or more utterances associated with the intent. For example, an intent to order pizza may include various permutations of utterances expressing a desire to order pizza. These related utterances may be used to train a chatbot's intent classifier such that the intent classifier can later determine whether an input utterance from a user matches the intent to order pizza. A bot's intent may be associated with one or more dialogue flows at a state to start a conversation with a user. For example, a first message for an intent to order pizza can be the question, "What kind of pizza do you like?" In addition to the related utterances, a bot's intent may further include a named entity associated with the intent. For example, an intent to order a pizza may include variables or parameters that are used to perform the task of ordering a pizza, such as topping 1, topping 2, type of pizza, size of pizza, number of pizzas, etc. The values ​​of the entities are typically obtained through a conversation with the user.

[0025] FIG. 1 is a simplified block diagram of an environment 100 incorporating a chatbot system according to an embodiment. The environment 100 includes a digital assistant builder platform (DABP) 102 that allows a user of the DABP 102 to create and deploy a digital assistant or chatbot system. The DABP 102 can be used to create one or more digital assistants (or DAs) or chatbot systems. For example, as shown in FIG. 1, a user 104 representing a particular business can use the DABP 102 to create and deploy a digital assistant 106 for users of the particular business. For example, the DABP 102 can be used by a bank to create one or more digital assistants for use by customers of the bank. The same DABP 102 platform can be used by multiple businesses to create digital assistants. As another example, an owner of a restaurant (e.g., a pizza place) may use the DABP 102 to create and deploy a digital assistant that allows customers of the restaurant to order food (e.g., order pizza).

[0026] For purposes of this disclosure, a "digital assistant" is an entity that assists a user of the digital assistant in accomplishing various tasks through natural language conversation. A digital assistant may be implemented using only software (e.g., a digital assistant is a digital entity implemented using programs, codes, or instructions executable by one or more processors), using hardware, or using a combination of hardware and software. A digital assistant may be embodied or implemented in a variety of physical systems or devices, such as a computer, a mobile phone, a watch, an appliance, a vehicle, etc. A digital assistant may also be referred to as a chatbot system. Thus, for purposes of this disclosure, the terms digital assistant and chatbot system are interchangeable.

[0027] A digital assistant, such as a digital assistant 106 built using DABP 102, can be used to perform a variety of tasks via a natural language-based conversation between the digital assistant and its user 108. As part of the conversation, the user can provide one or more user inputs 110 to the digital assistant 106 and receive responses 112 back from the digital assistant 106. A conversation can include one or more of the inputs 110 and responses 112. Through these conversations, the user can request one or more tasks to be performed by the digital assistant, and in response, the digital assistant is configured to perform the task requested by the user and respond to the user with an appropriate response.

[0028] The user input 110 is typically in the form of natural language and is considered an utterance. The user's utterance 110 can be in the form of text, such as when the user inputs a sentence, a question, a fragment of text, or a single word and provides it as an input to the digital assistant 106. In some embodiments, the user's utterance 110 can be in the form of voice input or utterance, such as when the user says or speaks something that is provided as an input to the digital assistant 106. The utterance is typically in the language spoken by the user 108. For example, the utterance may be in English or some other language. If the utterance is in the form of utterance, the voice input is converted into a textual utterance in that particular language, and the textual utterance is then processed by the digital assistant 106. Various speech-to-text processing techniques may be used to convert the voice input or voice input into a textual utterance, and the textual utterance is then processed by the digital assistant 106. In some embodiments, the speech-to-text conversion may be performed by the digital assistant 106 itself.

[0029] The utterance, which may be a text utterance or a voice utterance, can be a fragment, a sentence, multiple sentences, one or more words, one or more questions, a combination of the aforementioned types, and the like. The digital assistant 106 is configured to apply natural language understanding (NLU) techniques to the utterance to understand the meaning of the user input. As part of the NLU processing of the utterance, the digital assistant 106 is configured to perform processing to understand the meaning of the utterance, including identifying one or more intents and one or more entities corresponding to the utterance. Once the digital assistant 106 understands the meaning of the utterance, it may perform one or more actions or behaviors in response to the understood meaning or intent. For purposes of this disclosure, it is assumed that the utterance is a voice of text provided directly by a user 108 of the digital assistant 106 or is the result of a voice conversion of an input voice utterance into a form of text. However, this is not intended to be limiting or restrictive in any way.

[0030] For example, user 108 input may request that a pizza be ordered by providing an utterance such as "I would like to order a pizza." When the digital assistant 106 receives such an utterance, it is configured to understand the meaning of the utterance and take appropriate action. The appropriate action may include, for example, responding to the user with a question requesting user input regarding the type of pizza the user would like to order, the size of the pizza, any toppings on the pizza, etc. The responses provided by the digital assistant 106 may be in the form of natural language, and typically in the same language as the input utterance. As part of generating these responses, the digital assistant 106 may perform natural language generation (NLG). When the user orders a pizza via a conversation between the user and the digital assistant 106, the digital assistant may guide the user to provide all necessary information regarding the pizza order, and then, upon completion of the conversation, cause the pizza to be ordered. The digital assistant 106 may end the conversation by outputting information to the user indicating that the pizza has been ordered.

[0031] At a conceptual level, the digital assistant 106 performs various processing in response to utterances received from a user. In some embodiments, this processing includes a series or pipeline of processing steps, including, for example, understanding the meaning of the input utterance (sometimes referred to as natural language understanding (NLU)), determining an action to be performed in response to the utterance, causing the action to be performed, if appropriate, generating a response to be output to the user in response to the user's utterance, outputting the response to the user, etc. NLU processing can include parsing the received input utterance to understand the structure and meaning of the utterance, and improving and modifying the utterance to develop a better understandable form (e.g., logical form) or structure of the utterance. Generating the response may include using NLG techniques.

[0032] NLU processing performed by a digital assistant such as digital assistant 106 can include various NLP-related processing such as parsing (e.g., tokenization, lemmatization, identifying part-of-speech tags for sentences, identifying named entities within sentences, generating dependency trees to represent sentence structure, splitting sentences into clauses, analyzing individual clauses, resolving anaphora, performing chunking, etc.). In an embodiment, the NLU processing, or portions thereof, is performed by the digital assistant 106 itself. In some other embodiments, the digital assistant 106 may use other resources to perform portions of the NLU processing. For example, the syntax and structure of sentences in an input utterance may be identified by processing the sentences using a parser, a part-of-speech tagger, and / or a named entity recognizer. In one implementation, for English, a parser, a part-of-speech tagger, and a named entity recognizer such as those provided by the Stanford University Natural Language Processing (NLP) Group are used to analyze sentence structure and syntax. These are provided as part of the Stanford Core NLP toolkit.

[0033] Although the various examples provided in this disclosure show speech in English, this is intended to be merely an example. In an embodiment, the digital assistant 106 can also process speech in languages ​​other than English. The digital assistant 106 can provide subsystems (e.g., components implementing NLU functions) configured to perform processing for different languages. These subsystems can be implemented as connectable units that can be invoked using service calls from the NLU core server. This makes NLU processing flexible and extensible for each language, including allowing different orders of processing. Language packs for individual languages ​​can be provided, and the language packs can register a list of subsystems that can be provided from the NLU core server.

[0034] A digital assistant, such as the digital assistant 106 shown in FIG. 1, may be made available for use or access by its user 108 through a wide variety of channels, such as, but not limited to, through an application, through social media platforms, through various messaging services and applications, and through other applications or channels. A single digital assistant can have multiple channels configured for it such that it can be simultaneously running and accessed by different services.

[0035] A digital assistant or chatbot system typically includes or is associated with one or more skills. In an embodiment, these skills are individual chatbots (called skillbots) configured to interact with a user and perform specific types of tasks, such as tracking inventory, submitting a timecard, creating an expense report, ordering food, checking a bank account, making a reservation, purchasing a widget, etc. For example, for the embodiment shown in FIG. 1, the digital assistant or chatbot system 106 includes skills 116-1, 116-2, etc. For purposes of this disclosure, the terms "skill" and "skills" are used interchangeably with the terms "skillbot" and "skillbot," respectively.

[0036] Each skill associated with the digital assistant assists a user of the digital assistant in completing a task through a conversation with the user, which may include a combination of text or voice input provided by the user and responses provided by the skill bot. These responses may be in the form of text or voice messages to the user and / or using simple user interface elements (e.g., list selections) that are presented to the user for the user to make a selection.

[0037] There are various ways in which skills or skillbots can be associated with or added to a digital assistant. In some examples, skillbots can be developed by a company and then added to a digital assistant using DABP 102. In other examples, skillbots can be developed and created using DABP 102 and then added to a digital assistant created using DABP 102. In yet other examples, DABP 102 provides an online digital store (referred to as a "skill store") that offers multiple skills covering a wide range of tasks. Skills offered by the skill store may expose various cloud services. To add a skill to a digital assistant being created using DABP 102, a user of DABP 102 can access the skill store via DABP 102, select the desired skill, and indicate that the selected skill is to be added to the digital assistant created using DABP 102. Skills from the skill store can be added to the digital assistant as is or in modified form (e.g., a user of DABP102 may select and clone a particular skillbot provided by the skill store, make customizations or modifications to the selected skillbot, and then add the modified skillbot to a digital assistant created using DABP102).

[0038] A variety of different architectures may be used to implement a digital assistant or chatbot system. For example, in one embodiment, a digital assistant created and deployed using DABP 102 may be implemented using a masterbot / child (or sub)bot framework or architecture. According to this framework, the digital assistant is implemented as a masterbot that interacts with one or more child bots, which are skillbots. For example, in the embodiment shown in FIG. 1, the digital assistant 106 comprises a masterbot 114 and skillbots 116-1, 116-2, etc., that are child bots of the masterbot 114. In one embodiment, the digital assistant 106 is considered to function as a masterbot itself.

[0039] A digital assistant implemented according to the master / child bot architecture allows a user of the digital assistant to interact with multiple skills through a unified user interface, i.e., through the master bot. When a user interacts with the digital assistant, user input is received by the master bot. The master bot then performs processing to determine the meaning of the utterance of the user input. The master bot then determines whether the task requested by the user in the utterance can be handled by the master bot itself, and if not, the master bot selects a suitable skill bot to handle the user request and routes the conversation to the selected skill bot. This allows a user to converse with the digital assistant through a single common interface and further provides the ability for a skill to use multiple skill bots configured to perform specific tasks. For example, in the case of a digital assistant developed for an enterprise, the master bot of the digital assistant may interface with skill bots having specific capabilities, such as a CRM bot for performing functions related to customer relationship management (CRM), an ERP bot for performing functions related to enterprise resource planning (ERP), and an HCM bot for performing functions related to human capital management (HCM). In this way, the end user or consumer of the digital assistant only needs to know how to access the digital assistant through a common master bot interface, and behind the scenes, multiple skill bots are provided to handle user requests.

[0040] In an embodiment, in a master bot / child bot infrastructure, the master bot is configured to be aware of an available list of skill bots. The master bot may be able to access metadata that identifies the various available skill bots and, for each skill bot, identifies the skill bot's capabilities, including the work that may be performed by the skill bot. Upon receiving a user request in the form of an utterance, the master bot is configured to identify or predict, from a number of available skill bots, a particular skill bot that can best serve and optimally 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. In this manner, control flows from the master bot to the skill bot. The master bot may support multiple input and output channels.

[0041] 1 illustrates a digital assistant 106 with a masterbot 114 and skillbots 116-1, 116-2, and 116-3, but this is not intended to be limiting. The 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 solely in software (e.g., code, instructions executable by one or more processors, stored on a computer-readable medium), solely in hardware, or in an implementation using a combination of software and hardware.

[0042] DABP 102 provides infrastructure and various services and features that enable a user of DABP 102 to create a digital assistant that includes one or more skill bots associated with the digital assistant. In some examples, a skill bot may be created by duplicating an existing skill bot, for example, duplicating a skill bot provided by a skill store. As previously indicated, DABP 102 provides a skill store or skill catalog that provides multiple skill bots for performing various tasks. A user of DABP 102 can duplicate a skill bot from the skill store. Modifications or customizations may be made to the duplicated skill bot as needed. In some other examples, a user of DABP 102 creates a skill bot from scratch using tools and services provided by DABP 102. As previously indicated, a skill store or skill catalog provided by DABP 102 may provide multiple skill bots for performing various tasks.

[0043] In one embodiment, at a high level, creating or customizing a skillbot includes the following steps: (1) Configure the settings for your new skill bot (2) Configure one or more intents for the skill bot (3) constitute one or more entities with respect to one or more intentions (4) Train the Skillbot (5) Create a dialogue flow for the skill bot (6) Optionally, add custom components to your skill bot (7) Test and deploy the skill bot Each of the above steps is briefly described below.

[0044] (1) Configure Settings for a New Skillbot - Various settings may be configured for a skillbot. For example, a skillbot designer may specify one or more invocation names for the skillbot being created. These invocation names may then be used by a user of the digital assistant to explicitly invoke the skillbot. For example, a user may enter an invocation name in the user's speech to explicitly invoke the corresponding skillbot.

[0045] (2) Configure one or more intents and associated example utterances for the skillbot - A 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 that the skillbot is trained to infer about input utterances. Upon receiving an utterance, the trained skillbot infers the intent of the utterance, and the inferred intent is selected from a predefined set of intents used to train the skillbot. The skillbot then takes an appropriate action in response to the utterance based on the intent inferred about the utterance. In some examples, the intents of the skillbot represent tasks that the skillbot can perform for a user of the digital assistant. Each intent is given an intent identifier or intent name. For example, for a skillbot trained on banking, the intents specified for this skillbot may include "check balance", "transfer money", "check deposit", etc.

[0046] For each intent defined for a skillbot, the skillbot designer may provide one or more example utterances that express and illustrate the intent. These example utterances are intended to represent utterances that a user may input to the skillbot for that intent. For example, for a check balance intent, example utterances may include "What's the balance in my savings account?", "How much is in my checking account?", "How much money do I have in my account?", etc. Thus, various permutations of standard user utterances may be specified as example utterances for the intent.

[0047] The intents and their associated example utterances are used as training data to train the skill bot. A variety of different training techniques may be used. As a result of this training, a predictive model is generated that is configured to receive an utterance as input and output an intent inferred for the utterance by the predictive model. In some examples, the input utterance is provided to an intent analysis engine that is configured to predict or infer an intent of the input utterance using the trained model. The skill bot may then take one or more actions based on the inferred intent.

[0048] (3) Configuring an entity for one or more intents of the skillbot - In some examples, additional context may be required to enable the skillbot to respond appropriately to a user utterance. For example, there may be situations where a user input utterance resolves to the same intent in the skillbot. For example, in the above example, the utterances "What is the balance in my savings account?" and "How much is in my checking account?" both resolve to the same balance check intent, but these utterances are different requests asking to do different things. To disambiguate such requests, one or more entities are added to the intent. Using the banking skillbot example, an entity called account type that defines values ​​called "checking" and "savings" may enable the skillbot to parse the user request and respond appropriately. In the above example, the utterance resolves to the same intent, but the values ​​associated with the account type entity are different in the two utterances. This allows the skillbot to perform potentially different actions for the two utterances even though they resolve to the same intent. For an intent configured for a skillbot, one or more entities may be specified. Entities are thus used to add context to the intent itself. Entities help to more fully express the intent, enabling the skillbot to complete the user request.

[0049] In an embodiment, there are two types of entities: (a) built-in entities provided by DABP 102, and (2) custom entities that may be specified by a skill bot designer. Built-in entities are general entities that may be used in 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, recurring period, currency, phone number, URL, etc. Custom entities are used for more customized applications. For example, for a banking skill, an account type entity may be defined by the skill bot designer that allows various banking transactions by checking user input for keywords such as checking, savings, and credit card.

[0050] (4) Train 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 an intent associated with the received user input. As indicated above, the skillbot needs to be trained for this. In an embodiment, the skillbot is trained based on the intents configured for the skillbot and example utterances associated with the intents (collectively, training data) so that the skillbot can resolve the user input utterance to one of the configured intents. In an embodiment, the skillbot uses a predictive model, which is trained using the training data to enable the skillbot to identify what the user is saying (or, in some cases, what they are trying to say). DABP 102 provides a variety of different training techniques that may be used by the skillbot designer to train the skillbot, including various machine learning based training techniques, rule-based training techniques, and / or combinations thereof. In an 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 referred to as a trained skillbot) can be used to process and respond to user utterances. In some cases, the user utterance may be a question that requires only a single answer and no further conversation. To handle such situations, a Q&A (Question and Answer) intent may be defined for the skillbot, which allows the skillbot to output an answer to a user request without the need to update the dialogue definition. A Q&A intent is created in a similar manner as a standard intent. The dialogue flow of a Q&A intent can differ from the dialogue flow of a standard intent.

[0051] (5) Create a dialogue flow for the skillbot - The dialogue flow specified for the skillbot represents how the skillbot reacts when the different intents of the skillbot are resolved in response to the received user input. The dialogue flow defines the actions or behaviors that the skillbot takes, for example, 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 language. In one embodiment, a version of YAML called OBotML may be used to specify the dialogue flow of the skillbot. The dialogue flow definition for the skillbot serves as a model of the conversation itself, i.e., a model that allows the skillbot designer to direct the interaction between the skillbot and the user that the skillbot serves.

[0052] In one embodiment, a skill bot's dialogue flow definition includes three sections: (a) Context Section (b) Default transition section (c) Status Section Context Section - In the context section, the skillbot designer can define variables that will be used in the conversation flow. Other variables that may be specified in the context section include, but are not limited to, variables for error handling, variables for built-in or custom entities, user variables that allow the skillbot to recognize and retain user preferences, etc.

[0053] Default Transitions Section - In the dialogue flow states section or in the default transitions section, transitions for the skill bot can be defined. Transitions defined in the default transitions section act as fallbacks and are triggered if there are no applicable transitions defined within a state or the conditions required to trigger a state transition cannot be met. The default transitions section can be used to define routing that allows the skill bot to gracefully handle unexpected user behavior.

[0054] State Section - The dialogue flow and its associated behaviors are defined as a set of temporary states that govern the logic within the dialogue flow. Each state node in the dialogue flow definition specifies a component that provides the functionality required at that point in the dialogue. Thus, states are built around components. A state contains characteristics specific to a component and defines the transitions to other states that are triggered after the execution of the component.

[0055] The state section may be used to handle special case scenarios. For example, there may be times when you want to provide a user with an option to temporarily leave a first skill they are interacting with in order to do something in a second skill within the digital assistant. For example, if a user is engaged in a conversation using a shopping skill (e.g., the user has selected something for purchase), the user may want to jump to a banking skill (e.g., the user may want to ensure they have enough money for the purchase) and then return to the shopping skill to complete the user's order. To address this, an action in the first skill may be configured to initiate an interaction with a second, different skill within the same digital assistant and then return to the original flow.

[0056] (6) Adding Custom Components to a Skillbot - As previously described, a state specified in a skillbot's dialogue flow specifies a component that provides the required functionality corresponding to the state. The component enables the skillbot to perform the functionality. In an embodiment, DABP 102 provides a set of pre-configured components to perform a wide range of functions. A skillbot designer can select one or more of these pre-configured components and associate them with a state in the skillbot's dialogue flow. A skillbot designer can also create custom or new components using tools provided by DABP 102 and associate the custom components with one or more states in the skillbot's dialogue flow.

[0057] (7) Test and Deploy Skillbots - DABP 102 provides several features that enable skillbot designers to test the skillbots being developed, which can then be deployed and included in the digital assistant.

[0058] Although the above description describes how to create a skillbot, similar techniques may be used to create a digital assistant (or masterbot). At the masterbot or digital assistant level, built-in system intents may be configured for the digital assistant. These built-in system intents are used to identify common tasks that the digital assistant itself (i.e., the masterbot) can handle without invoking a skillbot associated with the digital assistant. Examples of system intents defined for a masterbot include: (1) exit: applies when a user indicates a desire to end a current conversation or context in the digital assistant, (2) assist: applies when a user requests assistance or guidance, and (3) unresolved intent: applies to user input that does not sufficiently match the exit and assist intents. The digital assistant also stores information about one or more skillbots associated with the digital assistant. This information enables the masterbot to select a specific skillbot to process an utterance.

[0059] At the MasterBot or Digital Assistant level, when a user inputs a phrase or utterance into the digital assistant, the digital assistant is configured to execute a process to determine how to route the utterance and associated conversation. The digital assistant determines this using a routing model, which can be rule-based, AI-based, or a combination of these. The digital assistant uses the routing model to determine whether the conversation corresponding to the user input utterance is routed to a specific skill for processing, is processed by the digital assistant or MasterBot itself according to built-in system intent, or is processed as a different state within the current conversation flow.

[0060] In an embodiment, as part of this processing, the digital assistant determines whether the user input utterance explicitly identifies a skill bot using its invocation name. If the invocation name is present in the user input, the invocation name is treated as an explicit invocation of the skill bot corresponding to the invocation name. In such a scenario, the digital assistant may route the user input to the explicitly invoked skill bot for further processing. If neither a specific invocation nor an explicit invocation is present, in an embodiment, the digital assistant evaluates the received user input utterance and calculates a reliability score for the system intent and the skill bot associated with the digital assistant. The calculated score for the skill bot or system intent represents the degree of likelihood that the user input represents the work that the skill bot is configured to perform or represents the system intent. All system intents or skill bots with an associated calculated reliability score that exceeds a threshold (e.g., a reliability threshold routing parameter) are selected as candidates for further evaluation. The digital assistant then selects a specific system intent or skill bot from the identified candidates for further processing of the user input utterance. In an embodiment, after one or more skill bots are identified as candidates, the intents associated with those candidate skills (according to the intent model for each skill) are evaluated, and a reliability score is determined for each intent. In general, all intents with a reliability score above a threshold (e.g., 70%) are treated as candidate intents. If a particular skill bot is selected, the user's 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.

[0061] FIG. 2 is a simplified block diagram of a master bot (MB) system 200, according to an embodiment. The MB system 200 may be implemented in software only, hardware only, or a combination of hardware and software. The MB system 200 includes a pre-processing subsystem 210, a multiple intent subsystem (MIS) 220, an explicit invocation subsystem (EIS) 230, a skill bot invoker 240, and a data store 250. The MB system 200 shown in FIG. 2 is only an example of an arrangement of components in a master bot. Those skilled in the art will recognize many possible variations, alternatives, and modifications. For example, in some implementations, the MB system 200 may include more or fewer systems or components than those shown in FIG. 2, may combine two or more subsystems, or may include a different configuration or arrangement of subsystems.

[0062] The pre-processing subsystem 210 receives an utterance "A" 202 from a user and processes the utterance via a language detector 212 and a language parser 214. As indicated above, the utterance may be provided in a variety of ways, including as audio or text. The utterance 202 can be a sentence fragment, a complete sentence, multiple sentences, etc. The utterance 202 may include punctuation marks. For example, if the utterance 202 is provided as audio, the pre-processing subsystem 210 may convert the speech to text using a speech-to-text converter (not shown) that inserts punctuation marks (e.g., commas, semicolons, periods, etc.) into the resulting text.

[0063] The language detector 212 detects the language of the utterance 202 based on the text of the utterance 202. The way in which the utterance 202 is processed is language dependent, as each language has its own grammar and semantics. Differences between languages ​​are taken into account when analyzing the syntax and structure of the utterance.

[0064] The linguistic parser 214 parses the utterance 202 to extract part of speech (POS) tags for individual linguistic units (e.g., words) in the utterance 202. POS tags include, for example, noun (NN), pronoun (PN), verb (VB), etc. The linguistic parser 214 may tokenize the linguistic units of the utterance 202 (e.g., to convert each word into a separate token) and lemmatize the words. A lemma is the primary form of a set of words as represented in a dictionary (e.g., "run" is a lemma for run, runs, ran, running, etc.). Other types of preprocessing that the linguistic parser 214 can perform include chunking of compound expressions, for example, combining "credit" and "card" into a single expression "credit card." The linguistic parser 214 may identify relationships between words in the utterance 202. For example, in some embodiments, the linguistic parser 214 generates a dependency tree that indicates which parts of the utterance (e.g., particular nouns) are direct objects, which parts of the utterance are prepositions, etc. The results of the processing performed by the linguistic parser 214 form the extracted information 205, which is provided as input to the MIS 220 along with the utterance 202 itself.

[0065] As indicated above, the utterance 202 may include more than one sentence. For purposes of detecting multiple intents and explicit invocation, the utterance 202 may be treated as a single unit even if it includes multiple sentences. However, in an embodiment, preprocessing may be performed, for example by the preprocessing subsystem 210, to identify a single sentence of the multiple sentences for multiple intents analysis and explicit invocation analysis. In general, the results generated by the MIS 220 and the EIS 230 are substantially the same regardless of whether the utterance 202 is processed at the level of individual sentences or as a single unit including multiple sentences.

[0066] The MIS 220 determines whether the utterance 202 expresses multiple intents. Although the MIS 220 can detect the presence of multiple intents in the utterance 202, the process performed by the MIS 220 does not include determining whether the intent of the utterance 202 matches any intent configured for the bot. Instead, the process to determine whether the intent of the utterance 202 matches the intent of the bot may be performed by the intent classifier 242 of the MB system 200 or by the intent classifier of the skill bot (e.g., as shown in the embodiment of FIG. 3). The process performed by the MIS 220 assumes that there exists a bot (e.g., a particular skill bot or the master bot itself) that can process the utterance 202. Thus, the process performed by the MIS 220 does not require knowledge of which bots exist in the chatbot system (e.g., the identity of the skill bot registered with the master bot), nor knowledge of which intents are configured for a particular bot.

[0067] To determine that an utterance 202 includes multiple intents, the MIS 220 applies one or more rules from a set of rules 252 in the data store 250. The rules applied to the utterance 202 depend on the language of the utterance 202 and may include a sentence pattern that indicates the presence of multiple intents. For example, the sentence pattern may include a coordinating conjunction (e.g., a conjunction) that joins two parts of a sentence, both parts corresponding to separate intents. If the utterance 202 matches the sentence pattern, it may be inferred that the utterance 202 represents multiple intents. It should be noted that an utterance that includes multiple intents does not necessarily include different intents (e.g., intents targeting different bots or different intents within the same bot). Instead, the utterance may include separate instances of the same intent, such as, for example, "order pizza using payment account X, then order pizza using payment account Y."

[0068] As part of the determination that the utterance 202 represents multiple intents, the MIS 220 also determines which portions of the utterance 202 are associated with each intent. For each intent represented in the utterance that includes multiple intents, the MIS 220 constructs a new utterance for separate processing in place of the original utterance, e.g., utterance “B” 206 and utterance “C” 208 as shown in FIG. 2 . Thus, the original utterance 202 may be split into two or more separate utterances that are processed one by one. The MIS 220 determines which of the two or more utterances should be processed first using the extracted information 205 and / or from an analysis of the utterance 202 itself. For example, the MIS 220 may determine that the utterance 202 includes an indicator word that indicates that a particular intent should be processed first. The newly formed utterance corresponding to this particular intent (e.g., one of the utterances 206 or utterance 208) is first sent for further processing by the EIS 230. After the conversation triggered by the first utterance has ended (or been temporarily stopped), the next highest priority utterance (e.g., the other one of utterance 206 or utterance 208) may be sent to EIS 230 for processing.

[0069] The EIS 230 determines whether the utterance it receives (e.g., utterance 206 or utterance 208) includes an invocation name of a skillbot. In an embodiment, each skillbot in the chatbot system is assigned a unique invocation name that distinguishes the skillbot from other skillbots in the chatbot system. A list of invocation names may be maintained as part of the skillbot information 254 in the data store 250. An utterance is considered to be an explicit invocation if the utterance includes a word match with the invocation name. If the bot is not explicitly invoked, the utterance received by the EIS 230 is considered an implicit invocation utterance 234 and is input to the masterbot's intent classifier (e.g., intent classifier 242) to determine which bot should be used to process the utterance. In some examples, the intent classifier 242 determines that the masterbot should process the implicit invocation utterance. In other examples, the intent classifier 242 determines which skillbot the utterance should be routed to for processing.

[0070] The explicit call feature provided by the EIS 230 has several advantages. This feature can reduce the amount of processing that the masterbot needs to perform. For example, if an explicit call is present, the masterbot may not need to perform any intent classification analysis (e.g., using the intent classifier 242) or may need to perform a reduced intent classification analysis to select a skillbot. Thus, analysis of the explicit call may enable selection of a particular skillbot without using intent classification analysis.

[0071] Also, there may be situations where there is overlap in functionality between multiple skillbots. This may occur, for example, when the intents handled by two skillbots overlap or are very close to each other. In such situations, it may be difficult for the masterbot to identify which of the multiple skillbots to select based solely on the analysis of the intent classification. In such scenarios, the explicit invocation disambiguates the specific skillbot to be used.

[0072] In addition to determining that an utterance is an explicit invocation, EIS 230 is responsible for determining whether any portion of the utterance should be used as input to the skill bot being explicitly invoked. In particular, EIS 230 may determine whether any portion of the utterance is not associated with the invocation. EIS 230 may perform this determination by analyzing the utterance and / or by analyzing the extracted information 205. Instead of sending the entire utterance received by EIS 230, EIS 230 may send the portion of the utterance that is not associated with the invocation to the invoked skill bot. In some examples, the input to the invoked skill bot is formed by simply removing any portion of the utterance that is associated with the invocation. For example, "I want to order a pizza using Pizza Bot" may be shortened to "I want to order a pizza" because "using Pizza Bot" is related to the invocation of Pizza Bot but is unrelated to any processing performed by Pizza Bot. In some examples, EIS 230 may reformat the portion sent to the invoked bot, for example to form a complete sentence. Thus, EIS 230 not only determines that an explicit call exists, but also determines what to send to the skill bot if an explicit call exists. In some instances, there may be no text to input to the bot being called. For example, if the utterance was "pizza bot," EIS 230 may determine that the pizza bot is being called, but there is no text to be processed by the pizza bot. In such a scenario, EIS 230 may indicate to the skill bot invoker 240 that there is nothing to send.

[0073] The skillbot invoker 240 invokes a skillbot in a variety of ways. For example, the skillbot invoker 240 can invoke the bot in response to receiving an indication 235 that a particular skillbot has been selected as a result of an explicit invocation. The indication 235 can be sent by the EIS 230 along with the input of the explicitly invoked skillbot. In this scenario, the skillbot invoker 240 hands over 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 can be to perform a particular action or to start a new conversation in a particular state, where the initial state of the new conversation depends on the input sent from the EIS 230.

[0074] Another way that the skillbot invoker 240 can invoke a skillbot is by implicit invocation using the intent classifier 242. The intent classifier 242 can be trained using machine learning techniques and / or rule-based training techniques to determine the likelihood that an utterance represents a task that a particular skillbot is configured to perform. The intent classifier 242 is trained for different classes, one class per skillbot. For example, each time a new skillbot is registered with the masterbot, a list of example utterances associated with the new skillbot can be used to train the intent classifier 242 to determine the likelihood that a particular utterance represents a task that the new skillbot can perform. Parameters (e.g., a set of values ​​for parameters of a machine learning model) generated as a result of this training can be stored as part of the skillbot information 254.

[0075] In an embodiment, the intent classifier 242 is implemented using a machine learning model, as described in more detail herein. Training the machine learning model may include inputting at least a subset of utterances from example utterances associated with various skill bots, and generating, as an output of the machine learning model, an inference as to which bot is the correct bot for processing any particular training utterance. For each training utterance, an indication of the correct bot to use for the training utterance may be provided as ground truth information. The behavior of the machine learning model may then be adapted (e.g., by backpropagation) to minimize the difference between the generated inference and the ground truth information.

[0076] In one embodiment, the intent classifier 242 determines, for each skill bot registered with the master bot, a reliability score indicating the likelihood that the skill bot can process the utterance (e.g., the implicit invocation utterance 234 received from the EIS 230). The intent classifier 242 may determine a reliability score for each configured system-level intent (e.g., assist, terminate). If a particular reliability score satisfies one or more conditions, the skill bot invoker 240 invokes the bot associated with this particular reliability score. For example, a threshold reliability score value may need to be met. Thus, the output 245 of the intent classifier 242 is either an identity of the system intent or an identity of the particular skill bot. In some embodiments, in addition to meeting the threshold reliability score value, the reliability score must exceed the next highest reliability score by a certain win margin. Imposing such a condition allows routing to a particular skill bot when each reliability score of multiple skill bots exceeds the threshold reliability score value.

[0077] After identifying the bot based on the evaluation of the reliability score, the skillbot invoker 240 hands over the processing to the identified bot. In case of system intent, the identified bot is a master bot. Otherwise, the identified bot is a skill bot. Furthermore, the skillbot invoker 240 decides what to provide to the identified bot as input 247. As indicated above, in case of an explicit invocation, the input 247 can be based on a portion of the utterance that is not associated with the invocation, or the input 247 can be nothing (e.g., an empty string). In case of an implicit invocation, the input 247 can be the entire utterance.

[0078] The data store 250 comprises one or more computing devices that store data used by various subsystems of the masterbot system 200. As described above, the data store 250 includes rules 252 and skillbot information 254. The rules 252 include rules for determining, for example, by the MIS 220, when an utterance expresses multiple intents and how to split an utterance expressing multiple intents. The rules 252 further include rules for determining, by the EIS 230, which part of an utterance that explicitly invokes a skillbot is sent to the skillbot. The skillbot information 254 includes the invocation names of the skillbots in the chatbot system, for example, a list of the invocation names of all skillbots registered to a particular masterbot. The skillbot information 254 can also include information used by the intent classifier 242 to determine a confidence score for each skillbot in the chatbot system, for example, parameters of a machine learning model.

[0079] 3 is a simplified block diagram of a Skillbot system 300, according to an embodiment. The Skillbot system 300 is a computing system that may be implemented in software only, hardware only, or a combination of hardware and software. In an embodiment, such as the embodiment shown in FIG. 1, the Skillbot system 300 may be used to implement one or more Skillbots in a digital assistant.

[0080] The Skillbot system 300 includes an MIS 310, an intent classifier 320, and a conversation manager 330. The MIS 310 is similar to the MIS 220 of FIG. 2 and provides similar functionality, including being operable to determine, using rules 352 in a data store 350, (1) whether an utterance represents multiple intents, and if so, (2) how to split the utterance into separate utterances for each of the multiple intents. In an embodiment, the rules applied by the MIS 310 to detect multiple intents and to split the utterance are the same as the rules applied by the MIS 220. The MIS 310 receives the utterance 302 and the extracted information 304. The extracted information 304 is similar to the extracted information 205 of FIG. 1 and may be generated using the language parser 214 or a language parser local to the Skillbot system 300.

[0081] The intent classifier 320 may be trained in a manner similar to the intent classifier 242, as described above in connection with the embodiment of FIG. 2 and in further detail herein. For example, in an 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 the example utterances associated with that particular skill bot as training utterances. The ground truth for each training utterance is the intent of the particular bot associated with the training utterance.

[0082] The utterance 302 may be received directly from a user or provided via a masterbot. For example, as a result of processing by the MIS 220 and EIS 230 in the embodiment shown in FIG. 2, if the utterance 302 is provided via a masterbot, the MIS 310 may be bypassed to avoid repeating processing already performed by the MIS 220. However, if the utterance 302 is received directly from a user, for example during a conversation occurring after routing to a skillbot, the MIS 310 may process the utterance 302 and determine whether the utterance 302 represents multiple intents. If the utterance 302 represents multiple intents, the MIS 310 applies one or more rules to split the utterance 302 into separate utterances for each intent, e.g., utterance "D" 306 and utterance "E" 308. If the utterance 302 does not represent multiple intents, the MIS 310 forwards the utterance 302 to the intent classifier 320 for intent classification and does not split the utterance 302.

[0083] The intent classifier 320 is configured to match the received utterance (e.g., utterance 306 or 308) with the intent associated with the skillbot system 300. As described above, a skillbot can be configured with one or more intents, with each intent including at least one example utterance associated with the intent that is used to train the classifier. In the embodiment of FIG. 2, the intent classifier 242 of the masterbot system 200 is trained to determine the reliability score of the individual skillbot and the reliability score of the system intent. Similarly, the intent classifier 320 can be trained to determine the reliability score for each intent associated with the skillbot system 300. The classification performed by the intent classifier 242 is at the level of the bot, whereas the classification performed by the intent classifier 320 is at the level of the intent and is therefore more fine-grained. The intent classifier 320 can have access to intent information 354. The intent information 354 includes, for each intent associated with the skillbot system 300, a list of utterances that represent and indicate the meaning of the intent and are typically associated with the tasks that can be performed by the intent. The intent information 354 may further include parameters generated as a result of training on this list of utterances.

[0084] The conversation manager 330 receives as an output of the intent classifier 320 an indication 322 of a particular intent identified by the intent classifier 320 as the best match to the utterance input to the intent classifier 320. In some instances, the intent classifier 320 is 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 targets the system intent or the intent of a different skill bot. If this occurs, the skill bot system 300 may refer the utterance to the master bot for processing, e.g., for routing to a different skill bot. However, if the intent classifier 320 is successful in identifying the intent within the skill bot, the conversation manager 330 initiates a conversation with the user.

[0085] A conversation initiated by the conversation manager 330 is a conversation specific to the intent identified by the intent classifier 320. For example, the conversation manager 330 may be implemented using a state machine configured to execute the dialogue flow of the identified intent. The state machine may include a default starting state (e.g., for when the intent is invoked without any additional input) and one or more additional states, each state associating with the state an action to be performed by the skill bot (e.g., performing a purchase transaction) and / or a dialogue to be presented to the user (e.g., questions, responses). Thus, the conversation manager 330 may determine an action / dialogue 335 upon receipt of an instruction 322 identifying the intent, and may determine the additional action or dialogue in response to subsequent utterances received during the conversation.

[0086] 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 rules 352 and intent information 354. In an embodiment, the data store 350 may be integrated into a masterbot or digital assistant data store, such as data store 250 of Figure 2.

[0087] Exemplary Data Processing System Figure 4 is a simplified block diagram of a computing system implementing a data processing system for text embedding generation in accordance with various embodiments. The arrangement illustrated in Figure 4 is an exemplary embodiment of a data processing system that may be utilized to perform all or a portion of the methods described herein, but the system illustrated in Figure 4 is not the only system capable of performing those methods. The data processing system 400 illustrated in Figure 4 may be implemented exclusively in software, exclusively in hardware, or in a combination of hardware and software.

[0088] As shown in FIG. 4, data processing system 400 may be a system for training and deploying machine learning models for chatbot applications. Data processing system 400 may include various components and subsystems to receive text data and generate text embeddings for training chatbot-based machine learning models. For example, data processing system 400 may include a repository of deployable chatbot models that can be trained using data from text-based documents. Subsystems of data processing system 400 may be first trained to extract training data from these text documents. After training, different subsystems of data processing system 400 may use the trained extraction models to extract training data from the text-based documents and send this training data to the chatbot-based subsystems to train the chatbot to interact with humans.

[0089] As shown in FIG. 4, the data processing system 400 includes a training subsystem 410, an inference subsystem 420, and a chatbot subsystem 430. The training subsystem 410 may be a subsystem of the data processing system 400 configured to receive training data for training a deep learning model to extract text embeddings from unstructured document data, for example. For example, the training subsystem 410 may be configured to receive unstructured text data and ground truth data. The deep learning model may be utilized to generate output predictions, such as classification labels for sentences in the unstructured text data, and compare the output predictions to the ground truth data. For example, the difference between the output predictions and the ground truth data may be used to modify the configuration of the machine learning model by modifying neural network model parameters in the model according to an objective function based on the difference between the output predictions and the ground truth data.

[0090] The deep learning model may be utilized by the inference subsystem 420 to generate output predictions for a set of unstructured textual data some time after training occurs in the training subsystem 410. For example, the inference subsystem 420 may be involved in generating output prediction classification labels for sentences in the unstructured textual data as part of a service provided to a customer utilizing a chatbot. The inference subsystem 420 may generate classification labels for sentences in the unstructured textual data and generate corresponding training data that is utilized by the chatbot system to train the chatbot. For example, a customer may submit unstructured textual data to the inference subsystem 420, triggering the generation of training data that the customer can use to train their own chatbot.

[0091] In some embodiments, the training data output by the inference subsystem 420 may be utilized by the chatbot subsystem 430 of the data processing system 400 to train a chatbot or otherwise store the resulting training data. For example, the chatbot subsystem 430 may receive the training data generated by the inference subsystem 420 and utilize this training data to train one or more chatbots associated with the chatbot subsystem 430. The use of deep learning models to generate this training data for training chatbots from unstructured text data removes the need for costly and time-inefficient manual generation of training data by humans.

[0092] In an exemplary embodiment, a client of the data processing system 400 utilizes a service that includes a question-and-answer (QA) chatbot configured to receive questions in the form of text from a human and send back predicted answers to the human. The client may utilize the service and the QA chatbot as part of the client's own services for its own customers. The client may send unstructured text data, e.g., a digital PDF document containing frequently asked questions (FAQs) and corresponding answers, to the data processing system to train the QA chatbot. A deep learning model for extracting QA training data may already be trained by the training subsystem 410. The trained deep learning model may receive the unstructured text data or a preprocessed version of the unstructured text data and generate predicted labels for sentences contained therein. The predicted labels may be used to generate QA training data for training the QA chatbot and may be stored in the chatbot subsystem 430 along with the client FAQ data. As a result, the next time the QA chatbot is deployed, it is better configured to answer questions similar to those contained in the FAQ document submitted by the client.

[0093] Returning to FIG. 4 , the data processing system 400 may include a communication portal 402. The communication portal 402 may be a subsystem of the data processing system 400 configured to take in communications and data received from external systems and perform the embodiments described herein. In various embodiments, the communication portal 402 is configured to determine which subsystem of the data processing system 400 to route data to for further processing based on any received document data 406. For example, the communication portal 402 may include chatbot routing instructions 404, which may be a set of instructions for determining how to process the received document data 406. The document data may include metadata indicating, for example, whether the received data is training data used to train a deep learning model in the training subsystem 410 or inference data used to generate a set of training data for a chatbot in the inference subsystem 420. For example, in response to receiving the received document data 406, the communication portal 402 may extract metadata from the received document data 406. The extracted metadata may be processed by the chatbot routing instructions to determine whether the received document data 406 is a training data set that is sent to the training subsystem 410 and used to train a deep learning model, or an inference data set that is sent to the inference subsystem 420 and input to a deep learning model, triggering the generation of chatbot training data.

[0094] The training subsystem 410 may include separate subsystems for extracting classification labels by a deep learning model and for training the deep learning model using the extracted classification labels and the labeled ground truth data. For example, the training subsystem 410 may include an extraction subsystem 412 as a first domain where extraction of classification labels from unstructured text data occurs. The deep learning model may be part of this extraction domain because it is used to extract data and generate predicted classification labels as part of the training process of the deep learning model. The classification labels may be sent to components of the retraining subsystem 414 to generate an objective function using the labeled ground truth data. The objective function may then be utilized to retrain the deep learning model in the extraction domain. The training process of the deep learning model and domain is further described below with reference to FIG. 5.

[0095] The inference subsystem 420 may include separate subsystems for extracting classification labels by the deep learning model and for using the extracted classification labels to generate training data for chatbot models. For example, the inference subsystem 420 may include an extraction subsystem 422 as a first area where extraction of classification labels from unstructured text data occurs. The extraction subsystem 422 of the inference subsystem 420 may be similar to the extraction subsystem 412 of the training subsystem 410. For example, the extraction subsystem 412 and the extraction subsystem 422 are both areas where the deep learning model extracts data from the unstructured text data and generates classification labels for text groups of the unstructured text data, which are then used to retrain the model or generate chatbot training data, respectively. In the inference subsystem 420, the classification labels may be sent to components of the data generation subsystem 424 for further processing. For example, the data generation subsystem may utilize the classification labels to generate training data for one or more chatbot models. The inference and data generation processes of deep learning models and areas are described in more detail below.

[0096] The chatbot subsystem 430 may be a subsystem of the data processing system 400 configured to perform processing or storage functions related to a chatbot. For example, the chatbot subsystem 430 may include a chatbot repository 432, which may be a repository of chatbot models that may be trained and deployed for use by a service or client. The chatbot training subsystem 434 may be a subsystem of the chatbot subsystem 430 configured to utilize training data to train machine learning models of the chatbot. For example, the chatbot training subsystem 434 may receive training data generated by the inference subsystem 420 and cause training of the chatbot models stored in the chatbot repository 432. The training data repository 436 may be a repository for storing training data generated by the inference subsystem 420 for later training chatbot models. For example, a training dataset associated with a client utilizing a chatbot may be stored in the training data repository such that training data does not need to be regenerated for each new chatbot generated for a particular client. The extraction model repository may be a repository of deep learning models utilized as part of an extraction subsystem and extraction process, such as the extraction subsystem 412 or the extraction subsystem 422. The chatbot subsystem 430 may be communicatively coupled to the training subsystem 410 and the inference subsystem 420 to facilitate the embodiments described herein.

[0097] Exemplary Machine Learning Embodiments FIG. 5 is a simplified block diagram of a computing system for training a machine learning model, according to various embodiments. The block diagram shown in FIG. 5 may be implemented in software (e.g., code, instructions, programs) executed by one or more processing units (e.g., processors, cores) of the respective system, hardware, or a combination thereof. The software may be stored in a non-transitory storage medium (e.g., in a memory device). The data flows and components presented in FIG. 5 and described below are intended to be exemplary and non-limiting. Although FIG. 5 shows various steps occurring in a particular sequence or order, this is not intended to be limiting. In an alternative embodiment, these steps may be performed in some different order, or some steps may be performed in parallel.

[0098] 5, system 500 is a system for retraining one or more deep learning models to generate sentence label data utilizing raw text document data. System 500 may include an extraction layer 501 and a training layer 502. In various embodiments, system 500 is training subsystem 410, extraction layer 501 is part of extraction subsystem 412, and training layer 502 is part of retraining subsystem 414. In various embodiments, system 500 operates as part of a sentence labeling model configured to generate one or more labels corresponding to sentences extracted from digital documents containing text.

[0099] The extraction layer 501 may receive or retrieve raw text document data 505 from storage. The raw text document data 505 may be one or more sets of unstructured text data, such as documents, files, or other text data. For example, the raw text document data may be one or more digital files in a format, such as a PDF, a spreadsheet, a slideshow, text, an image, or other format. The raw text document data 505 may include one or more visual representations of text characters representing a grammatically structured language. For example, a PDF file may include a number of characters in a format and order that represents a set of sentences structured according to English grammar.

[0100] The sentence data extractor 510 may receive the raw textual document data 505 to extract data related to one or more sentences. For example, the sentence data extractor 510 may parse the raw textual document data 505 to determine one or more aspects of the raw textual document data that may be used to identify and group structured sentences according to a language grammar. In some embodiments, the sentence data extracted from the raw textual document data 505 includes text data that represents semantic aspects of one or more text sentences represented in the raw textual document data 505. For example, the extracted text data may include a set of ASCII characters determined to be represented in the raw textual document data 505. In another example, the text data includes an indication of one or more semantic aspects of the sentence, such as whether the sentence is compound, whether it includes punctuation, whether it includes capital letters, etc.

[0101] In some embodiments, the sentence data extracted from the raw textual document data 505 includes box data representing bounding boxes of characters in the raw textual document data 505. For example, the extracted box data may include a set of coordinates of bounding boxes of characters in the raw textual document data 505. For example, PDF files often inherently include metadata corresponding to bounding boxes of visually represented characters in the PDF document that may be extracted. In another example, the box data is generated by the sentence data extractor 510 based on pixel-based representations of characters in the document by determining and measuring bounding boxes around characters represented by the raw textual document data 505, for example, using an artificial neural network.

[0102] In some embodiments, the sentence data extracted from the raw textual document data 505 includes font data corresponding to fonts or styles of characters in the raw textual document data 505. For example, the extracted font data may include one or more indications of known or unknown font styles for representing characters in the raw textual document data 505. The font data may be generated by the sentence data extractor 510 based on a pixel-based representation of the characters in the document, for example, by using an artificial neural network to determine and measure relative pixel colorings for each predicted character in the raw textual document data 505. In some embodiments, the font data includes relative font data, such as data related to differences between characters of different fonts, colors, sizes, styles, etc. represented by the raw textual document data 505. One example of the sentence data extractor 510 is the PDFMiner text extraction tool for PDF documents available at https: / / pypi.org / project / pdfminer / .

[0103] The system 500 may include a post-processor 515 or similar component to further process the data extracted and generated by the sentence data extractor 510. The post-processor 515 may be configured to convert the raw sentence data extracted and generated by the sentence data extractor 510 into a new form of sentence data that is acceptable to a model. For example, the post-processor 515 may convert the raw data, which includes many sets of bounding box coordinates extracted from the raw text document data, into a linked list of coordinate data that can be parsed by another model in the system 500. The output of the post-processor 515 is sentence data 520.

[0104] The sentence data 520 may then be sent to a feature extractor 525 component of the extraction layer 501. The feature extractor 525 may be a component or subsystem configured to receive the sentence data as input and output an embedded version of the sentence data. The output embedded version of the sentence data may be acceptable as input to one or more deep learning models configured to generate classification labels for one or more sentences represented in the raw text document data 505. The feature extractor 525 is described in further detail below with respect to FIG. 5.

[0105] The feature extractor 525 outputs sentence embedding data 530. The sentence embedding data 530 may be an embedded version of the sentence data 520 in a format that can be accepted as input by one or more deep learning models. For example, the extraction layer 501 includes a context model 535. The context model 535 may be a deep learning machine learning model configured to receive the sentence embedding data 530 as input and output one or more predicted context values. The one or more predicted context values ​​may be related to one or more context-aware values ​​of the sentences extracted from the raw text document data. The context model 535 may be a deep learning model, such as an artificial neural network that may be trained to take the sentence embedding data as input and apply a set of weights in a node hierarchy to generate one or more context-based output values ​​from a set of terminal nodes in the artificial neural network. The context model 535 may be retrained based on an objective function to change parameters / weights of the nodes in the artificial neural network.

[0106] The context-aware values ​​output from the context model 535 may be further input to a classification model 540 configured to generate classification labels for sentences extracted from the raw text document data 505. The classification model 540 may be a deep learning model configured to receive the context-aware values ​​from the context model 535 as input and output one or more sentence labels as sentence label data 545. For example, the classification model 540 may be a deep learning model, such as an artificial neural network that may be trained to take the context-aware values ​​from the context model 535 as input and apply a set of weights in a hierarchy of nodes to generate one or more labels for one or more sentences extracted from the raw text document data 505 from a set of terminal nodes in the artificial neural network. In various embodiments, the context model 535 and the classification model 540 are combined as a single deep learning model to take in sentence embedding data and output sentence label data 545.

[0107] The sentence label data output by the classification model 540 may be a set of data related to a predicted type or structure of a sentence relative to other sentences in the raw text document data 505. For example, the sentence label data 545 may include, for each extracted sentence, a corresponding label that represents a prediction of the type and position of the sentence relative to other sentences. The label may indicate, for example, whether it is a question-related sentence or a question-related statement (e.g., an "answer"). Additionally, the label may indicate whether the sentence is part of a single sentence question / statement, a multiple sentence question / statement (e.g., a set of sentences where each sentence depends on each other sentence to give the question / statement a complete context), and whether the particular sentence is a first sentence, a last sentence, or a middle sentence in a multiple sentence structure. The label may indicate whether the sentence does not have a representation as either a question or an answer (e.g., it is a series of symbols that does not include a language-based semantic value). Thus, the extraction layer 501 is configured to utilize the raw text document data 505 to extract one or more sentences from the document data and generate sentence label data 545 for each of the sentences.

[0108] The training layer 502 may be a group of components and data that interact with the extraction layer 501 to train one or more deep learning models included in the extraction layer 501. For example, after it is generated by the classification model, the sentence label data 545 may be sent to an objective function component of the training layer 502. The sentence label data 545 may be compared to a ground truth data set, such as ground truth sentence label data 555, to determine the difference between the two data sets. The objective function 550 determines the difference between the data and uses the difference to retrain one or more deep learning models of the extraction layer 501. For example, the context model 535 may generate the context data based on the sentence embedding data, and the classification model 540 may generate the sentence label data 545 based on the context data. This data is compared to the corresponding ground truth data in the ground truth sentence label data 555 to determine an objective function that modifies the operating parameters and weights of the context model 535 and the classification model 540.

[0109] FIG. 6 is a simplified block diagram of a computing system for generating inferences by a machine learning model, according to various embodiments. The block diagram shown in FIG. 6 may be implemented in software (e.g., code, instructions, programs) executed by one or more processing units (e.g., processors, cores) of the respective system, hardware, or a combination thereof. The software may be stored in a non-transitory storage medium (e.g., in a memory device). The data flows and components presented in FIG. 6 and described below are intended to be exemplary and non-limiting. Although FIG. 6 shows various steps occurring in a particular sequence or order, this is not intended to be limiting. In an alternative embodiment, these steps may be performed in some different order, or some steps may be performed in parallel.

[0110] As shown in FIG. 6, system 600 is a system for generating question and answer pair data using raw text document data. System 600 may include an extraction layer 601 and an inference layer 602. In various embodiments, system 600 is an inference subsystem 420, extraction layer 601 is part of extraction subsystem 422, and inference layer 602 is part of data generation subsystem 424. In various embodiments, system 600 operates as part of a sentence labeling model configured to generate one or more labels corresponding to sentences extracted from digital documents containing text and generate training data for a chatbot model using the QA data.

[0111] The extraction layer 601 in FIG. 6 may be similar to the extraction layer 501 shown in FIG. 5. For example, the extraction layer 601 may be a pre-trained version of the extraction layer 501, in which deep learning models such as the context model 535 and the classification model 540 have been pre-trained according to the objective function 550. The extraction layer 601 includes the same components 505-545 for extraction of sentence label data 545 from the raw text document data 505. The sentence label data 545 may then be sent to the decoder / post-processor 610 of the inference layer 602 to convert the sentence label data 545 into question / answer pairs 620. For example, the decoder / post-processor 610 may be a subsystem configured to combine the sentence label data 545, which includes one or more sentences and one or more predicted labels for the one or more sentences, with training data in a particular format acceptable by the chatbot model for training. In this example, the chatbot model may receive one or more sentences in a combined format with the predicted labels corresponding to the one or more sentences as ground truth labels. The chatbot model may generate a predicted intent for the sentence, and the predicted intent is compared to the labels associated with the sentence to form an objective function that is used to retrain the chatbot model.

[0112] FIG. 7 is a simplified block diagram of a computing system for feature extraction of text groups, according to various embodiments. The block diagram shown in FIG. 7 may be implemented in software (e.g., code, instructions, programs) executed by one or more processing units (e.g., processors, cores) of the respective system, hardware, or a combination thereof. The software may be stored in a non-transitory storage medium (e.g., in a memory device). The data flows and components presented in FIG. 7 and described below are intended to be exemplary and non-limiting. Although FIG. 7 shows various steps occurring in a particular sequence or order, this is not intended to be limiting. In an alternative embodiment, these steps may be performed in some different order, or some steps may be performed in parallel.

[0113] FIG. 7 illustrates an exemplary embodiment of a feature extractor 525 operating as part of an extraction layer, such as extraction layer 501 or extraction layer 601. In particular, FIG. 7 illustrates a block diagram of components of the feature extractor 525 that facilitate the conversion of sentence data 520 into sentence embedding data 530. As described herein, raw text document data is desirable for training a chatbot model. For example, raw text document data (such as FAQ documents) are often associated with specific policies or procedures that a chatbot model can recognize and help provide better chatbot service to users. However, raw text document data is often in an unstructured format from which training data for a chatbot is not easily extracted. Furthermore, there are various unstructured document types, and the information that can be extracted is highly diverse. The feature extractor 525 may be a subsystem of the extraction layer configured to convert individual data containing sentences into sequence embedding data in a format acceptable by a contextual deep learning model, such as a context model 535, a classification model 540, etc. The individual data may be, for example, sentence data 520 received from a post-processor 515 to generate data for input to a deep learning model.

[0114] 7, sentence data 520 may be input to feature extractor 525 for further processing. Sentence data 520 may include text data 700, box data 702(1)-702(N), font data 704, or any other data to facilitate the embodiments described herein, in any combination or configuration. Feature extractor 525 may utilize any subset of sentence data 520 to generate final sentence embeddings as sentence embedding data 530. Various components of feature extractor 525 may be utilized to generate sentence embedding data 530.

[0115] The text data 700 may be data related to semantic aspects of the sentence data 520. For example, the text data 700 may be represented by a list of ASCII characters in an ordered sequence corresponding to a natural language. The text data 700 may be parsed by a text embedding generator 710 to generate text embeddings 715. For example, the text embedding generator 710 may receive the text data 700 as input and parse the text data. The text embedding generator 710 may generate one or more sets of embedding data based on the text data related to aspects of the text data 700, such as semantic meaning, contextual meaning, comparative meaning between two sentences, punctuation, type of natural language, etc. An example of the text embedding generator 710 is the multilingual unsupervised and supervised embeddings library (MUSE), available at https: / / github.com / facebookresearch / MUSE. The resulting text embeddings 715 may be embeddings that relate to semantic aspects of the sentence data 520 and that can be parsed by a deep learning model.

[0116] Box data 702(1)-702(N) may be data associated with a data structure, such as a bounding box, for representing a character- or sentence-based region of an unstructured text document. For example, box data 702(1)-702(N) may include dual coordinate point data of N characters or sentences in an unstructured text document. Box data 702(1)-(N) may be transmitted to a box data embedding generator 720 to generate embeddings of the box data as box data embeddings 722(1)-722(N). Box data embeddings 722(1)-(N) may be associated data corresponding to embeddings of the bounding box data represented by box data 702(1)-702(N). Each of the separate box data embeddings 722(1)-(N) may be transmitted to a layout aggregator 726. Layout aggregator 726 may be configured to generate layout embeddings 726 utilizing the received box data embeddings 722(1)-(N). The layout embedding 726 may be data related to the box data embeddings 722(1)-(N) in a unified form, including data for each of the bounding boxes in the unstructured text document. In various embodiments, the layout aggregator 724 is configured to generate a successive embedding of the box data embeddings by an aggregated long short-term memory (LSTM) artificial neural network. The resulting layout embedding includes a unified set of bounding box data related to all the bounding box data in the unstructured text document.

[0117] In various embodiments, layout information such as layout embedding 726 is generated based on the relative horizontal / vertical distance between the bounding boxes of two characters / sentences. For example, layout aggregator 724 may be further configured to determine the horizontal, vertical, and edge differences between two bounding boxes. For example, if two bounding boxes are around two sentences that intersect each other in an unstructured text document, the horizontal / vertical distance between the two bounding boxes is zero. The calculated difference may be included as part of layout embedding 726. In some embodiments, a lookup embedding table is utilized in combination with the difference between the boxes to determine the difference used as part of the layout embedding. In some embodiments, the distance / difference between the boxes may be directly encoded using a mathematical formula. For example, the formula below shows an exemplary formula for determining the difference in distance between two bounding boxes. Examples of these formulas are provided in Appendix A below.

[0118] The box data 702(1)-(N) may be further utilized to generate a set of visual embeddings included in the sentence embedding data 530. For example, as shown in FIG. 7, a document image 730 may be included in the feature extractor 525. The document image 730 may correspond to digital image data for representing an unstructured text document in a visual format. The document image 730 may be passed to a visual backbone 732. The visual backbone 732 may be a system or mapping configured to determine a relevant layout of the document image 730 to generate the visual embeddings. For example, if the document image 730 is a PDF image, the visual backbone 732 may determine one or more relative sections of the PDF file, such as a header section, a footer section, a document boundary, a paragraph, an image, a table, a list, etc. The information derived by the visual backbone 732 may be input to a region of interest alignment subsystem 734 along with the box data 702(1)-(N). The region of interest alignment subsystem 734 may be a subsystem of the feature extractor 525 configured to utilize the box data 702(1)-(N) and visual data from the visual backbone 732 to determine one or more regions of interest of objects in the document image 730. For example, the region of interest alignment subsystem 734 may be configured to generate region of interest data associated with a coordinate-based representation of significant or relatively significant portions of the document image 730.

[0119] The subject area data from the subject area alignment subsystem 734 may be sent to a visual data aggregator 736 to generate visual embeddings 738. The visual embeddings 738 may relate to embeddings of data related to relevant portions of the document image 730 used to generate the sentence embedding data 530. In some embodiments, the visual data aggregator 736 includes a neural network model for receiving the subject area data from the subject area alignment subsystem 734 as input and outputting embedded features of the figure, such as subject areas to be embedded, relatively dense or empty areas of the document, document features such as headers, footers, margins, symbols, icons, and / or marks in the document image 730.

[0120] The font data 704 of the sentence data 520 may be used to generate font embeddings 740. For example, the font data 704 may be processed by a machine learning model configured to receive as input metadata related to fonts of characters / sentences in the sentence data 520 and output font embeddings 740 related to relative differences between fonts throughout the unstructured text document. After the text embeddings 715, layout embeddings 726, visual embeddings 738, and font embeddings 740, or some subset thereof, are generated, an embedding aggregator 750 may aggregate the embedding data and utilize the embedding data to generate sentence embeddings. For example, the embedding aggregator may combine, modify, add, remove, or otherwise transform the received embeddings into a final set of sentence embeddings 530 in a format acceptable by deep learning. The sentence embeddings 530 may represent aspects of each of the text, bounding boxes, and fonts of the portion of the sentence data, for example, in relative proportions or weights sufficient for input into a deep learning model to generate predicted classification data for the sentence. Other examples of sentence characteristics that may be included in the final sentence embedding data include font characteristics, text style, line stroke type, stroke color, non-stroke color, etc.

[0121] Exemplary Feature Extraction Process FIG. 8 illustrates a process flow for generating text group embeddings for machine learning processes, according to various embodiments. The process illustrated in FIG. 6 may be implemented in software (e.g., code, instructions, programs) executed by one or more processing units (e.g., processors, cores) of the respective systems, hardware, or a combination thereof. The software may be stored in a non-transitory storage medium (e.g., in a memory device). The method presented in FIG. 8 and described below is intended to be exemplary and non-limiting. Although FIG. 8 illustrates various processing steps occurring in a particular sequence or order, this is not intended to be limiting. In an alternative embodiment, these steps may be performed in some different order, or some steps may be performed in parallel.

[0122] At 810, a set of unstructured textual data is received. The unstructured textual data may be digital documents or files containing character-based text in an unspecified format. For example, in contrast to a structured textual document that may include metadata corresponding to the format of the text in the structured textual document, the unstructured textual document may not include such metadata or may not be structured in a format. The received unstructured textual data may be document data containing any text presented in a natural language, from which embeddings may be extracted to generate classification data for sentences of the unstructured textual data. In some embodiments, the set of unstructured textual data includes one or more documents, such as PDF files. The one or more documents may be received at an extraction subsystem configured to extract classification data from the unstructured textual data as part of a process for generating classification data or for retraining a deep learning model used to generate training data for a chatbot model.

[0123] At 820, the unstructured text data received at 810 is processed to generate one or more text groups. The one or more text groups may be any relative grouping of text or characters according to a natural language. For example, the one or more text groups may be one or more sentences that correspond to semantic and grammatical groupings of text that make appropriate linguistic statements based on the rules of natural language.

[0124] At 830, one or more text group embeddings are generated based on the one or more text groups generated at 820. The one or more text group embeddings are generated as embeddings that can be accepted by a deep learning model to generate predicted aspects of the one or more text groups. For example, the one or more text groups may be parsed by an encoder model configured to take the one or more text groups and output an encoded embedding of the one or more text groups that is an acceptable input format for the deep learning model.

[0125] At 840, the one or more text group embeddings are input into a machine learning model to generate one or more output predictions corresponding to predicted aspects of the one or more text groups. The one or more output predictions may be predictions regarding a corresponding classification of the one or more text groups. For example, the one or more text groups may be sentences, and the one or more output predictions may correspond to a predicted classification of an aspect of the sentence, such as a designation of the sentence as simple or compound, a context of the sentence, such as a question or statement, a relative position of the sentence within a set of questions or statements of the sentence, etc.

[0126] Exemplary System 9 shows a simplified diagram of a distributed system 900. In the illustrated example, the distributed system 900 includes one or more client computing devices 902, 904, 906, and 908 coupled to a server 912 via one or more communication networks 910. The client computing devices 902, 904, 906, and 908 may be configured to execute one or more applications.

[0127] In various examples, the server 912 may be adapted to execute one or more services or software applications that enable one or more embodiments described in this disclosure. In some examples, the server 912 may provide other services or software applications that may include non-virtual and virtual environments. In some examples, these services may be provided as web-based or cloud services, such as according to a Software as a Service (SaaS) model to users of the client computing devices 902, 904, 906, and / or 908. Users operating the client computing devices 902, 904, 906, and / or 908 may then utilize one or more client applications to interact with the server 912 and utilize the services provided by these components.

[0128] In the configuration shown in Figure 9, server 912 may include one or more components 918, 920, and 922 that perform functions performed by server 912. These components may include software components that may be executed by one or more processors, hardware components, or a combination thereof. It should be understood that various system configurations are possible that may differ from distributed system 900. Thus, the example shown in Figure 9 is one example of a distributed system for implementing an exemplary system and is not intended to be limiting.

[0129] A user may use client computing devices 902, 904, 906, and / or 908 to execute one or more applications, models, or chatbots that may generate one or more events or models that may then be implemented or serviced in accordance with the teachings of this disclosure. The client device may provide an interface that allows a user of the client device to interact with the client device. The client device may output information to the user through this interface. Although FIG. 9 shows only four client computing devices, any number of client computing devices may be supported.

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

[0131] Network 910 may be any type of network familiar to those skilled in the art that is capable of supporting data communications using any of a variety of available protocols, including, but not limited to, TCP / IP (transmission control protocol / Internet protocol), SNA (systems network architecture), IPX (Internet packet exchange), AppleTalk, etc. By way of example only, network 910 may be a local area network (LAN), an Ethernet-based network, token ring, a wide-area network (WAN), the Internet, a virtual network, a virtual private network (VPN), an intranet, an extranet, a public switched telephone network (PSTN), an infrared network, a wireless network (e.g., a network operating according to any of the IEEE (Institute of Electrical and Electronics Engineers) 1002.11 protocol suite, Bluetooth, and / or any other wireless protocol), and / or any combination of these and / or other networks.

[0132] The servers 912 may be comprised of one or more general purpose computers, dedicated server computers (including, by way of example, personal computer (PC) servers, UNIX servers, mid-range servers, mainframe computers, rack-mounted servers, etc.), server farms, server clusters, or any other suitable arrangement and / or combination. The servers 912 may include other computing architectures that include virtualization, such as one or more virtual machines running a virtual operating system, or one or more flexible pools of logical storage devices that may be virtualized to maintain the server's virtual storage devices. In various examples, the servers 912 may be adapted to run one or more services or software applications that provide the functionality described in the preceding disclosure.

[0133] The computing system of server 912 may run one or more operating systems, including any of the operating systems mentioned above, as well as any commercially available server operating system. Server 912 may run any of a variety of additional server and / or mid-tier applications, including a hypertext transport protocol (HTTP) server, a file transfer protocol (FTP) server, a common gateway interface (CGI) server, a JAVA server, a database server, etc. Examples of database servers include, but are not limited to, commercially available database servers from Oracle, Microsoft, Sybase, IBM (International Business Machines), etc.

[0134] In some implementations, the server 912 may include one or more applications for analyzing and consolidating data feeds and / or event updates received from users of the client computing devices 902, 904, 906, and 908. Examples of data feeds and / or event updates may include, but are not limited to, Twitter® feeds, Facebook® updates, or real-time updates received from one or more third party information sources and continuous data streams that may include real-time events related to sensor data applications, financial tickers, network performance measurement tools (e.g., network monitoring and traffic management applications), clickstream analysis tools, automobile traffic monitoring, etc. The server 912 may include one or more applications for displaying the data feeds and / or real-time events via one or more display devices of the client computing devices 902, 904, 906, and 908.

[0135] The distributed system 900 may include one or more data repositories 914, 916. These data repositories may be used to store data and other information in some examples. For example, one or more of the data repositories 914, 916 may be used to store information such as information related to the performance of the chatbot or models generated for use by the chatbot that are used by the server 912 in performing various functions according to various embodiments. The data repositories 914, 916 may reside in various locations. For example, the data repository used by the server 912 may be local to the server 912 or may be remote from the server 912 and communicate with the server 912 via a network-based or dedicated connection. The data repositories 914, 916 may be various types of data repositories. In some examples, the data repository used by the server 912 may be a database, for example, a relational database such as databases provided by Oracle Corporation® and other vendors. One or more of these databases may be adapted to allow data to be stored, updated, and retrieved from the database in response to SQL-formatted commands.

[0136] In one example, one or more of the data repositories 914, 916 may be used by an application to store application data. The data repositories used by the application may be various types of data repositories, such as, for example, a key-value store repository, an object store repository, or a general storage repository backed by a file system.

[0137] In an example, the functionality described in this disclosure may be provided as a service via a cloud environment. FIG. 10 is a simplified block diagram of a cloud-based system environment in which various services may be provided as cloud services, according to an example. In the example shown in FIG. 10, a cloud infrastructure system 1002 may provide one or more cloud services that may be requested by a user using one or more client computing devices 1004, 1006, and 1008. The cloud infrastructure system 1002 may comprise one or more computers and / or servers, which may include the computers and / or servers described above with respect to server 712. The computers in the cloud infrastructure system 1002 may be organized as general purpose computers, dedicated server computers, server farms, server clusters, or any other suitable arrangement and / or combination.

[0138] The network 1010 may facilitate communication and exchange of data between the clients 1004, 1006, and 1008 and the cloud infrastructure system 1002. The network 1010 may include one or more networks. The networks may be of the same type or different types of networks. The network 1010 may support one or more communication protocols, including wired and / or wireless protocols, to facilitate communication.

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

[0140] The term cloud service is typically used to refer to services made available to users on demand over a communications network such as the Internet by a service provider's system (e.g., cloud infrastructure system 1002). 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-premise servers and systems. The cloud service provider's system is managed by the cloud service provider. Thus, customers may utilize the cloud services provided by the cloud service provider itself without needing to purchase separate licenses, support, or hardware and software resources for the services. For example, the cloud service provider's system may host applications, and users may order and use the applications over the Internet on demand, without the user having to purchase infrastructure resources to run the applications. Cloud services are designed to provide easy and scalable access to applications, resources, and services. Multiple providers offer cloud services. For example, multiple cloud services are offered by Oracle Corporation of Redwood Shores, California, such as middleware services, database services, Java cloud services, etc.

[0141] In one example, cloud infrastructure system 1002 may provide one or more cloud services using various models, such as according to a Software as a Service (SaaS) model, a Platform as a Service (PaaS) model, an Infrastructure as a Service (IaaS) model, and other models including hybrid service models. Cloud infrastructure system 1002 may include a set of applications, middleware, databases, and other resources that enable the provision of various cloud services.

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

[0143] The IaaS model is typically used to provide infrastructure resources (e.g., server resources, storage resources, hardware resources, and network resources) for providing elastic computing and storage capabilities to customers as cloud services. Various IaaS services are offered by Oracle Corporation.

[0144] The PaaS model is typically used to provide platform and environment resources that enable customers to develop, run, and manage applications and services as a service, without the customer having to procure, build, or maintain such resources. 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.

[0145] Cloud services are typically provided on an on-demand self-service basis, on a subscription basis, in an elastically scalable, reliable, highly available, and secure manner. For example, a customer may order one or more services provided by cloud infrastructure system 1002 through a subscription order. Cloud infrastructure system 1002 then executes processing to provide the services requested in the customer's subscription order. For example, a user may use speech to request the cloud infrastructure system to take an action (e.g., an intent), as previously described, and / or provide a service of a chatbot system, as described herein. Cloud infrastructure system 1002 may be configured to provide one or more cloud services.

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

[0147] Client computing devices 1004, 1006, and 1008 may be different types of client computing devices (such as client computing devices 902, 904, 906, and 908 shown in FIG. 9 ) and may be capable of operating one or more client applications. Users may use the client devices to interact with cloud infrastructure system 1002, such as to request services provided by cloud infrastructure system 1002. For example, users may use the client devices to request information or actions from a chatbot, as described in this disclosure.

[0148] In some examples, the processing performed by the cloud infrastructure system 1002 to provide services may include training and deployment of models. This analysis may include using, analyzing, and manipulating a data set to train and deploy one or more models. This analysis may be performed by one or more processors, possibly processing the data in parallel, running simulations using the data, etc. For example, big data analysis may be performed by the cloud infrastructure system 1002 to generate and train one or more models for a chatbot system. The data used for this analysis may include structured data (e.g., data stored in a database or structured according to a structured model) and / or unstructured data (e.g., data blobs (binary large objects)).

[0149] 10, cloud infrastructure system 1002 may include infrastructure resources 1030 that are utilized to facilitate the provision of various cloud services provided by cloud infrastructure system 1002. Infrastructure resources 1030 may include, for example, processing resources, storage or memory resources, network resources, etc. In one example, storage virtual machines that can be used to provide storage services requested by applications may be part of cloud infrastructure system 1002. In other examples, the storage virtual machines may be part of a different system.

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

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

[0152] Cloud infrastructure system 1002 may comprise multiple subsystems. These subsystems may be implemented in software, or hardware, or a combination thereof. As shown in FIG. 10, the subsystems may include a user interface subsystem 1012 that allows users or customers of cloud infrastructure system 1002 to interact with cloud infrastructure system 1002. User interface subsystem 1012 may include a variety of different interfaces, such as a web interface 1014, an online store interface 1016 where cloud services offered by cloud infrastructure system 1002 are advertised and may be purchased by consumers, and other interfaces 1018. For example, a customer may use one or more of interfaces 1014, 1016, and 1018 using a client device to request one or more services offered by cloud infrastructure system 1002 (service request 1034). For example, a customer may access an online store, browse cloud services offered by cloud infrastructure system 1002, and order a subscription for one or more services offered by cloud infrastructure system 1002 for which the customer wishes to sign up. A service request may include information identifying a customer and one or more services for which the customer wishes to sign up. For example, a customer may order a subscription to a service provided by cloud infrastructure system 1002. As part of the order, the customer may provide information identifying the chatbot system for which the service is to be provided and, optionally, one or more credentials for the chatbot system.

[0153] 10, the cloud infrastructure system 1002 may include an order management subsystem (OMS) 1020 configured to process new orders. As part of this processing, the OMS 1020 may be configured to create an account for the customer if one has not already been created, receive billing and / or accounting information from the customer that is used to invoice the customer for providing the customer with the requested services, verify the customer information, and upon verification, book the customer's order and coordinate various workflows to prepare the order for provisioning.

[0154] After proper validation, the OMS 1020 may invoke an order provisioning subsystem (OPS) 1024 configured to provision resources for the order, including processing resources, memory resources, and network resources. This provisioning may include allocating resources to the order and configuring the resources to facilitate the services requested by the customer order. The manner in which resources for the order are provisioned and the types of resources provisioned may depend on the type of cloud service ordered by the customer. For example, according to one workflow, the OPS 1024 may be configured to determine the specific cloud service being requested and identify the number of pods that may be pre-configured for that specific cloud service. The number of pods allocated to the order may depend on the size / amount / level / scope of the requested service. For example, the number of pods allocated may be determined based on the number of users supported by the service, the duration for which the service is requested, etc. The allocated pods may then be customized for the specific requesting customer to provide the requested service.

[0155] In one example, the configuration phase operations described above may be performed by cloud infrastructure system 1002 as part of the provisioning process. Cloud infrastructure system 1002 may generate an application ID and select a storage virtual machine for the application from among those provided by cloud infrastructure system 1002 itself or from those provided by other systems other than cloud infrastructure system 1002.

[0156] The cloud infrastructure system 1002 may send a response or notification 1044 to the requesting customer to indicate if the requested service is now ready for use. In some examples, information (e.g., a link) may be sent to the customer that allows the customer to begin using and enjoy the benefits of the requested service. In one example, for the customer requesting the service, the response may include a chatbot system ID generated by the cloud infrastructure system 1002 and information identifying the chatbot system selected by the cloud infrastructure system 1002 for the chatbot system corresponding to the chatbot system ID.

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

[0158] Cloud infrastructure system 1002 may provide services to multiple customers simultaneously. Cloud infrastructure system 1002 may store information about these customers, possibly including confidential information. In one example, cloud infrastructure system 1002 comprises an identity management subsystem (IMS) 1028 configured to manage customer information and provide separation of managed information such that information related to one customer is not accessible by another customer. IMS 1028 may be configured to provide various security-related services, such as identity services, e.g., services for managing customer identities as well as roles and associated capabilities, such as information access management, authentication, and authorization services.

[0159] FIG. 11 illustrates an example of a computer system 1100. In some examples, the computer system 1100 may be used to implement either a digital assistant or chatbot system in a distributed environment, as well as the various servers and computer systems previously described. As illustrated in FIG. 11, the computer system 1100 includes various subsystems, including a processing subsystem 1104 that communicates with multiple other subsystems via a bus subsystem 1102. These other subsystems may include a processing acceleration unit 1106, an I / O subsystem 1108, a storage subsystem 1118, and a communication subsystem 1124. The storage subsystem 1118 may include a non-transitory computer-readable storage medium, including a storage medium 1122 and a system memory 1110.

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

[0161] The processing subsystem 1104 controls the operation of the computer system 1100 and may comprise 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 1100 may be organized into one or more processing units 1132, 1134, etc. The processing units may include one or more processors, one or more cores of the same or different processors, combinations of cores and processors, or other combinations of cores and processors. In some examples, the processing subsystem 1104 may include one or more dedicated co-processors, such as a graphics processor, digital signal processor (DSP), etc. In some examples, some or all of the processing units of the processing subsystem 1104 may be implemented using customized circuitry, such as an application specific integrated circuit (ASIC) or field programmable gate array (FPGA).

[0162] In some examples, the processing units of the processing subsystem 1104 may execute instructions stored in the system memory 1110 or the computer readable storage medium 1122. In various examples, the processing units may execute various program or code instructions and may maintain multiple simultaneously executing programs or processes. At any particular time, some or all of the program code being executed may reside in the system memory 1110 and / or in the computer readable storage medium 1122, including possibly on one or more storage devices. With appropriate programming, the processing subsystem 1104 may provide the various functions discussed above. In examples where the computer system 1100 is running one or more virtual machines, one or more processing units may be assigned to each virtual machine.

[0163] In one example, a processing acceleration unit 1106 may optionally be provided to perform customized processing or to offload part of the processing performed by the processing subsystem 1104 so as to accelerate the overall processing performed by the computer system 1100.

[0164] The I / O subsystem 1108 may include devices and mechanisms for inputting information into the computer system 1100 and / or outputting information from or through the computer system 1100. In general, use of the term input device is intended to include all possible types of devices and mechanisms for inputting information into the computer system 1100. User interface input devices may include, for example, keyboards, pointing devices such as 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 include motion detection and / or gesture recognition devices, such as a Microsoft Kinect® motion sensor that allows a user to control and interact with the input device, a Microsoft Xbox® 360 game controller, and devices that provide an interface for receiving input using gestures and spoken commands. The user interface input devices may include eye gesture recognition devices, such as a Google Glass® blink detector that detects a user's eye activity (e.g., "blinking" when taking a photo and / or selecting a menu) and translates the eye gestures as input to the input device (e.g., Google Glass®). Additionally, the user interface input devices may include a voice recognition detection device that allows a user to interact with a voice recognition system (e.g., the Siri® navigator) via voice commands.

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

[0166] In general, use of the term output device is intended to include all possible types of devices and mechanisms for outputting information from computer system 1100 to a user or to another computer. User interface output devices may include a display subsystem, indicator lights, or non-visual displays such as audio output devices. The display subsystem may be a flat panel device such as a flat panel device using a cathode ray tube (CRT), a liquid crystal display (LCD), or a plasma display, a projection device, a touch screen, and the like. For example, user interface output devices may include, but are not limited to, various display devices that visually convey textual, graphical, and audio / video information, such as monitors, printers, speakers, headphones, navigation systems, plotters, audio output devices, and modems.

[0167] The storage subsystem 1118 provides a repository or data store for storing information and data used by the computer system 1100. The storage subsystem 1118 provides a tangible, non-transitory computer readable storage medium for storing basic programming and data configurations that provide some example functionality. The storage subsystem 1118 may store software (e.g., programs, code modules, instructions) that, when executed by the processing subsystem 1104, provide the aforementioned functionality. The software may be executed by one or more processing units of the processing subsystem 1104. The storage subsystem 1118 may provide authentication in accordance with the teachings of the present disclosure.

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

[0169] 11, system memory 1110 may load application programs 1112 to be executed, which may include various applications such as a web browser, mid-tier applications, a relational database management system (RDBMS), program data 1114, and an operating system 1116. Examples of operating system 1116 may include various versions of Microsoft Windows, Apple Macintosh, and / or Linux operating systems, various commercially available UNIX or UNIX-like operating systems (including, but not limited to, various GNU / Linux operating systems, Google Chrome OS, etc.), and / or mobile operating systems such as iOS, Windows Phone, Android OS, BlackBerry OS, Palm OS operating systems, etc.

[0170] The computer readable storage medium 1122 may store programming and data configurations that provide some example functionality. The computer readable medium 1122 may provide storage of computer readable instructions, data structures, program modules, and other data for the computer system 1100. Software (programs, code modules, instructions) that provide the aforementioned functionality when executed by the processing subsystem 1104 may be stored in the storage subsystem 1118. Examples of the computer readable storage medium 1122 may include non-volatile memory, such as hard disk drives, magnetic disk drives, optical disk drives such as CD ROMs, DVDs, Blu-ray disks, or other optical media. The computer readable storage medium 1122 may include, but is not limited to, Zip drives, flash memory cards, universal serial bus (USB) flash drives, secure digital (SD) cards, DVD disks, digital video tapes, and the like. The computer-readable storage medium 1122 may include flash memory-based solid-state drives (SSDs), enterprise flash drives, solid-state drives (SSDs) based on non-volatile memory such as semiconductor ROM, semiconductor RAM, dynamic RAM, static RAM, DRAM-based SSDs, volatile memory-based SSDs such as magnetoresistive RAM (MRAM) SSDs, as well as hybrid SSDs that use a combination of DRAM and flash memory-based SSDs.

[0171] In one example, storage subsystem 1118 may include a computer readable storage medium reader 1120, which may be further connected to a computer readable storage medium 1122. Reader 1120 may be configured to receive and read data from a memory device, such as a disk, a flash drive, or the like.

[0172] In an example, computer system 1100 may support virtualization techniques, including but not limited to virtualization of processing and memory resources. For example, computer system 1100 may support running one or more virtual machines. In an example, computer system 1100 may run a program, such as a hypervisor, that facilitates configuration and management of virtual machines. Each virtual machine may be assigned memory resources, computational resources (e.g., processors, cores), I / O resources, and network 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 or different from the operating systems run by other virtual machines run by computer system 1100. Thus, multiple operating systems may be run simultaneously by computer system 1100.

[0173] The communication subsystem 1124 provides an interface to other computer systems and networks. The communication subsystem 1124 serves as an interface for receiving data from other systems and for transmitting data from the computer system 1100 to other systems. For example, the communication subsystem 1124 may enable the computer system 1100 to establish a communication channel to one or more client devices over the Internet to receive and transmit information to and from the client devices. For example, if the computer system 1100 is used to implement the bot system 120 shown in FIG. 1, the communication subsystem may be used to communicate with a chatbot system selected for the application.

[0174] The communications subsystem 1124 may support both wired and / or wireless communications protocols. In some examples, the communications subsystem 1124 may include radio frequency (RF) transceiver components for accessing wireless voice and / or data networks (e.g., using cellular technology, advanced data network technologies such as 3G, 4G, or EDGE (enhanced data rates for global evolution), WiFi (IEEE 802.XX family of standards), or other mobile communications technologies, or any combination thereof), global positioning system (GPS) receiver components, and / or other components. In some examples, the communications subsystem 1124 may provide wired network connections (e.g., Ethernet) in addition to or instead of a wireless interface.

[0175] The communications subsystem 1124 may receive and transmit data in a variety of forms. In some examples, the communications subsystem 1124 may receive incoming communications in the form of structured and / or unstructured data feeds 1126, event streams 1128, event updates 1130, etc., among other forms. For example, the communications subsystem 1124 may be configured to receive (or transmit) data feeds 1126 in real time from users of social media networks and / or other communications services, such as Twitter® feeds, Facebook® updates, web feeds, such as rich site summary (RSS) feeds, and / or real-time updates from one or more third-party information sources.

[0176] In an example, the communications subsystem 1124 may be configured to receive data in the form of a continuous data stream, which may include an event stream 1128 of real-time events and / or event updates 1130 that may have no explicit end and may be continuous in nature or without boundaries. Examples of applications that generate continuous data may include, for example, sensor data applications, financial tickers, network performance measurement tools (e.g., network monitoring and traffic management applications), clickstream analysis tools, automobile traffic monitoring, etc.

[0177] The communications subsystem 1124 may be configured to communicate data from the computer system 1100 to other computer systems or networks. The data may be communicated in various forms, such as structured and / or unstructured data feeds 1126, event streams 1128, event updates 1130, etc., to one or more databases that may be in communication with one or more streaming data source computers coupled to the computer system 1100.

[0178] The computer system 1100 may be one of a variety of types, including a handheld portable device (e.g., an iPhone® mobile phone, an iPad® computing tablet, a PDA), a wearable device (e.g., a Google Glass® head-mounted display), a personal computer, a workstation, a mainframe, an automated ticket machine, a server rack, or any other data processing system. Due to the ever-changing nature of computers and networks, the description of the computer system 1100 shown in FIG. 11 is intended to be merely a specific example. Many other configurations are possible that include more or fewer components than the system shown in FIG. 11. It should be understood that there are other approaches and / or methods for implementing the various examples based on the disclosure and teachings provided herein.

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

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

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

[0182] In this disclosure, specific details are given to enable a thorough understanding of the embodiments. However, the embodiments may be practiced without these specific details. For example, well-known circuits, processes, algorithms, structures, and techniques are shown without unnecessary detail to avoid obscuring the embodiments. This description merely provides exemplary embodiments and is not intended to limit the scope, applicability, or configuration of other embodiments. Rather, the foregoing description of the embodiments provides those skilled in the art with an enabling description for implementing various embodiments. Various changes may be made in the function and arrangement of elements.

[0183] Accordingly, the specification and drawings are to be regarded in an illustrative rather than restrictive sense. However, it will be apparent that additions, subtractions, deletions, and other modifications and changes may be made without departing from the broader spirit and scope as set forth in the appended claims. Thus, although specific embodiments have been described, these are not intended to be limiting. Various modifications and equivalents are within the scope of the following claims.

[0184] Although aspects of the disclosure have been described in the foregoing specification with reference to specific examples, those skilled in the art will recognize that the disclosure is not limited thereto. Various features and aspects of the foregoing disclosure may be used individually or together. Moreover, the embodiments may be utilized in any number of environments and applications beyond those described herein without departing from the broader spirit and scope of the specification. Accordingly, the specification and drawings should be regarded as illustrative rather than restrictive.

[0185] In the preceding description, the methods have been described in a particular order for purposes of illustration. It should be understood that in alternative embodiments, the methods may be performed in an order different from that described. It should also be understood that the methods described above may be performed by hardware components or embodied in a series of machine-executable instructions that can be used to cause a machine, such as a general-purpose or special-purpose processor or logic circuitry programmed with the instructions, to perform the method. These machine-executable instructions may be stored on one or more machine-readable media, such as a CD-ROM or other type of optical disk, a floppy disk, a ROM, a RAM, an EPROM, an EEPROM, a magnetic or optical card, a flash memory, or any other type of machine-readable medium suitable for storing electronic instructions. Alternatively, the methods may be performed by a combination of hardware and software.

[0186] Where a component is described as being configured to perform a certain operation, such configuration may be achieved, for example, by designing electronic circuitry or other hardware to perform the operation, by programming a programmable electronic circuit (e.g., a microprocessor or other suitable electronic circuitry) to perform the operation, or by any combination thereof.

[0187] Although illustrative embodiments of the present application have been described in detail herein, it is to be understood that the concepts of the present invention may be embodied and employed in various other ways, and that the appended claims are intended to be construed to include such modifications except insofar as limited by the prior art.

Claims

1. receiving, at a data processing system, a set of unstructured textual data; generating one or more text groups by processing the set of unstructured text data by the data processing system; generating, based on the one or more generated text groups, one or more text group embeddings in a format for input to a machine learning model; generating one or more output predictions by inputting the one or more text group embeddings into the machine learning model, each output prediction among the one or more output predictions corresponding to a predicted aspect of a text group among the one or more text groups.

2. The method of claim 1 , wherein the set of unstructured textual data is one or more Portable Document Format (PDF) text files.

3. Processing the set of unstructured textual data includes extracting one or more sets of characters from the set of unstructured textual data; The method of claim 1 or 2, wherein generating the one or more text groups comprises grouping the one or more sets of characters according to a relative position of each character within the set of unstructured text data.

4. 3. The method of claim 1, wherein generating the one or more text group embeddings comprises: generating a plurality of partial embeddings based on the set of unstructured text data or the one or more text groups; and generating the one or more text groups based on the plurality of partial embeddings.

5. The method of claim 4 , wherein a part embedding of the plurality of part embeddings is a text part embedding generated based on one or more semantic aspects of the one or more text groups.

6. 5. The method of claim 4, wherein a sub-embedding of the plurality of sub-embeddings is a boundary sub-embedding generated based on one or more extracted spatial boundaries of characters in the set of unstructured text data.

7. 5. The method of claim 4, wherein a part embedding of the plurality of part embeddings is a visual part embedding generated based on one or more extracted image-based aspects of the set of unstructured textual data.

8. 5. The method of claim 4, wherein a portion embedding of the plurality of portion embeddings is a relative font portion embedding generated based on one or more different visual fonts of text in the set of unstructured textual data.

9. the one or more text groups being one or more sentences of structured characters extracted by processing the set of unstructured text data; 3. The method of claim 1 or 2, wherein the one or more output predictions are one or more sentence labels, each sentence label corresponding to a predicted relative order of a sentence within a group of related sentences.

10. The method further includes the data processing system determining a set of ground truth training data, the set of ground truth training data including at least a known label corresponding to a sentence label of the one or more sentence labels; 10. The method of claim 9, further comprising: the data processing system training the machine learning model by comparing the one sentence label of the one or more sentence labels to the corresponding known label to determine an objective function value and altering a configuration of the machine learning model based on the objective function value.

11. 10. The method of claim 9, further comprising: the data processing system processing the one or more sentences and the one or more sentence labels to generate one or more question and answer pairs, each of the one or more question and answer pairs being associated with at least one sentence as a textual question and at least one corresponding sentence as a textual answer to the textual question.

12. one or more processors; and a computer-readable medium coupled to the one or more processors, the computer-readable medium storing instructions executable by the one or more processors to cause the one or more processors to perform operations, the operations including: Receiving a set of unstructured text data; generating one or more text groups by processing the set of unstructured text data; generating one or more text group embeddings based on the generated one or more text groups in a format for input to a machine learning model; and generating one or more output predictions by inputting the one or more text group embeddings into the machine learning model, each output prediction among the one or more output predictions corresponding to a predicted aspect of a text group among the one or more text groups.

13. The act of processing the set of unstructured textual data includes extracting one or more sets of characters from the set of unstructured textual data; 13. The system of claim 12, wherein the act of generating the one or more text groups comprises grouping the one or more sets of characters according to a relative position of each character within the set of unstructured text data.

14. 14. The system of claim 12 or 13, wherein the operation of generating the one or more text group embeddings comprises: generating a plurality of partial embeddings based on the set of unstructured text data or the one or more text groups; and generating the one or more text groups based on the plurality of partial embeddings.

15. a part embedding of the plurality of part embeddings is a text part embedding generated based on one or more semantic aspects of the one or more text groups; a sub-embedding of the plurality of sub-embeddings is a boundary sub-embedding generated based on one or more extracted spatial boundaries of characters in the set of unstructured text data; a part embedding of the plurality of part embeddings is a visual part embedding generated based on one or more extracted image-based aspects of the set of unstructured textual data; or 15. The system of claim 14, wherein a portion embedding of the plurality of portion embeddings is a relative font portion embedding generated based on one or more different visual fonts of text in the set of unstructured textual data.

16. the one or more text groups being one or more sentences of structured characters extracted by processing the set of unstructured text data; 14. The system of claim 12 or 13, wherein the one or more output predictions are one or more sentence labels, each sentence label corresponding to a predicted relative order of a sentence within a group of related sentences.

17. 1. A computer readable program storing instructions executable by one or more processors to cause the one or more processors to perform operations, the operations comprising: Receiving a set of unstructured text data; generating one or more text groups by processing the set of unstructured text data; generating one or more text group embeddings based on the generated one or more text groups in a format for input to a machine learning model; and generating one or more output predictions by inputting the one or more text group embeddings into the machine learning model, each output prediction among the one or more output predictions corresponding to a predicted aspect of a text group among the one or more text groups.

18. The act of processing the set of unstructured textual data includes extracting one or more sets of characters from the set of unstructured textual data; 20. The computer readable program of claim 17, wherein the act of generating the one or more text groups comprises grouping the one or more sets of characters according to a relative position of each character within the set of unstructured text data.

19. 20. The computer readable program of claim 17 or 18, wherein the operation of generating the one or more text group embeddings comprises: generating a plurality of partial embeddings based on the set of unstructured text data or the one or more text groups; and generating the one or more text groups based on the plurality of partial embeddings.

20. a part embedding of the plurality of part embeddings is a text part embedding generated based on one or more semantic aspects of the one or more text groups; a sub-embedding of the plurality of sub-embeddings is a boundary sub-embedding generated based on one or more extracted spatial boundaries of characters in the set of unstructured text data; a part embedding of the plurality of part embeddings is a visual part embedding generated based on one or more extracted image-based aspects of the set of unstructured textual data; or 20. The computer readable program of claim 19, wherein a portion embedding of the plurality of portion embeddings is a relative font portion embedding generated based on one or more different visual fonts of text in the set of unstructured textual data.