Domain Adaptation of AI NLP Encoders with Knowledge Distillation

By adapting a general NLP encoder through distillation and filtering, the system achieves efficient domain-specific performance with reduced resource usage, addressing the impracticality and performance gaps of general models in unique contexts.

JP7735420B2Active Publication Date: 2025-09-08LIVEPERSON INC
View PDF 5 Cites 0 Cited by

Patent Information

Application Number
JP2023560111
Authority / Receiving Office
JP · JP
Patent Type
Patents
Current Assignee / Owner
Priority Date
2021-04-02
Filing Date
2022-04-01
Publication Date
2025-09-08
Estimated Expiration
2042-04-01

AI Technical Summary

Technical Problem

Existing AI and NLP systems require significant computing resources and energy for training and implementation, making them impractical for many environments, and general language models lack domain-specific performance in contexts with unique terminology and misspellings.

Method used

Adapting a general NLP encoder through distillation to create a domain-specific model using a smaller dataset, filtering layers to reduce resource usage while maintaining performance, and employing a distilled encoder for context-specific tasks.

Benefits of technology

The distilled encoder achieves improved NLP performance in domain-specific environments with reduced memory footprint, handling unique terminology and misspellings effectively.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 0007735420000001
    Figure 0007735420000001
  • Figure 0007735420000002
    Figure 0007735420000002
  • Figure 0007735420000003
    Figure 0007735420000003
Patent Text Reader

Abstract

Systems, methods, devices, instructions, and other examples for natural language processing are described. One example includes accessing general encoder data for natural language processing, where the encoder data is generated from a general domain dataset that is not domain specific. A domain-specific dataset is accessed and filtered encoder data is generated using a subset of the encoder data. The filtered encoder data is trained using the domain-specific dataset to generate distilled encoder data, and training values ​​for the distilled encoder data are generated to constitute a task output associated with the domain-specific dataset.
Need to check novelty before this filing date? Find Prior Art

Description

CROSS-REFERENCE TO RELATED APPLICATIONS

[0001]

[0001] This patent application claims the benefit of priority to U.S. Provisional Patent Application No. 63 / 170,240, filed April 2, 2021, the disclosure of which is incorporated herein by reference. [Technical Field]

[0002]

[0002] This disclosure relates generally to communication and language processing using artificial intelligence (AI). [Background technology]

[0003]

[0003] Network-based communications enable complex server-based systems to provide access to complex artificial intelligence (AI) and natural language processing (NLP) systems. AI and NLP systems can be used in conjunction with contextual language models to create complex systems that can respond to a wide variety of inputs. Creating such systems and the encoders used to analyze natural language queries input to such systems involves training using large amounts of data, and such creation and training can consume large amounts of energy and significant computing resources. Summary of the Invention

[0004]

[0004] Machine learning techniques for natural language processing (NLP) are used to process data streams in a wide variety of contexts. BERT (Bidirectional Encoder Representations from Transformers) and ELMo (Embeddings from Language Models) are examples of techniques used as the basis for several different models implemented to perform NLP tasks, such as predicting future text from received text strings or assigning text strings to categories. Aspects described herein include techniques, systems, methods, instructions, and other embodiments provided for adapting an AI natural language processing (NLP) contextual language model to a specific domain and adapting the deployment of the adapted model to an application associated with the specific domain. Encoders are used to identify and parse natural language queries and improve the performance of communication systems having AI platforms associated with the queries.

[0005] The term "embodiment" and similar terms are intended to broadly refer to all of the subject matter of this disclosure and the claims that follow. Statements containing these terms should be understood not to limit the subject matter described herein or to limit the meaning or scope of the claims that follow. The embodiments of the disclosure covered herein are defined by the claims that follow, not this Summary. This Summary is a high-level overview of various aspects of the disclosure and introduces some of the concepts that are further described in the Detailed Description section below. This Summary is not intended to identify key or essential features of the claimed subject matter, nor is it intended to be used alone to determine the scope of the claimed subject matter. The subject matter should be understood by reference to appropriate portions of the entire specification of this disclosure, any or all drawings, and the claims.

[0006] Aspects described herein relate to language models and communication systems configured to use data from such models to improve communication system operation. Such communication systems may include systems configured to respond to a wide variety of user queries, either by human agents or automated machine agents that respond using AI systems. General language models increasingly use large amounts of resources, and as such, implementations of general language models created for the best possible performance may exceed the resources available in many practical environments. Distillation, as described herein, refers to an operation used to reduce the implementation size of a general language model. An example described herein applies distillation to a general encoder and then uses a domain-specific context dataset to distill the general language model into a smaller language model that provides performance similar to that of the general language model but targets a specific language domain. Distillation enables encoders with a smaller resource footprint and improved performance within the context associated with a given domain. For example, a particular domain (e.g., cloud computing, cell biology, astrophysics, baseball, ice hockey, stock trading, Olympic sports, product technical support, etc.) may use unusual definitions for words and context-specific industry terms. Distilling a general language model using domain-specific data can reduce the size of a model that functions in a context associated with a specific domain. In addition, some domains may have common misspellings that can be identified through domain-specific distillation. Examples described herein can improve the operation of communication systems and devices in communication systems using AI language models that have a smaller footprint (e.g., less memory usage) than general models and have comparable or improved performance within a given domain.

[0007] Certain aspects of the present disclosure include systems that may include one or more data processors and a non-transitory computer-readable storage medium containing instructions that, when executed on the one or more data processors, cause the one or more data processors to perform the methods described above and herein.

[0008]

[0008] Some specific embodiments of the present disclosure include a computer program product tangibly embodied in a non-transitory machine-readable storage medium, comprising instructions configured to cause a data processing device to perform the methods described above and herein.

[0009]

[0009] The present disclosure is described in conjunction with the accompanying drawings. [Brief explanation of the drawings]

[0010] [Figure 1A]

[0010] An illustrative embodiment of a network interaction system for use with a domain-specific NLP encoder in accordance with some aspects of the present technology is shown. [Figure 1B]

[0011] 1 illustrates an aspect of an NLP implementation using distilled encoder processing, in accordance with certain aspects of the present technology. [Figure 1C]

[0012] 1 illustrates aspects of encoder processed data that can be used to generate distilled encoder processed data, according to some aspects. [Figure 2]

[0013] 1 illustrates an example embodiment of a network interaction system for use with a domain-specific NLP encoder, in accordance with certain aspects of the present technology. [Figure 3A]

[0014] 1 illustrates an example embodiment of a network interaction system including a connection management system for use with a domain-specific NLP encoder, in accordance with some aspects of the present technology. [Figure 3B]1 illustrates an example embodiment of a network interaction system including a connection management system for use with a domain-specific NLP encoder, in accordance with some aspects of the present technology. [Figure 3C] 1 illustrates an example embodiment of a network interaction system including a connection management system for use with a domain-specific NLP encoder, in accordance with some aspects of the present technology. [Figure 4]

[0015] 1 illustrates a diagram of a protocol stack mapping of the operation of a connection component for use with a domain-specific NLP encoder, in accordance with some aspects of the present technology. [Figure 5]

[0016] 1 illustrates an embodiment of a multi-device communication exchange system for use with a domain-specific NLP encoder, in accordance with aspects of the present technology. [Figure 6]

[0017] 1 illustrates an example embodiment of a connection management system for use with a domain-specific NLP encoder, in accordance with aspects of the present technology. [Figure 7]

[0018] 1 illustrates an example embodiment of a system of task engines that may include one or more engines with domain-specific NLP encoders, in accordance with some aspects of the present technology. [Figure 8]

[0019] 1 illustrates aspects of a distilled encoder process, according to some aspects. [Figure 9]

[0020] 1 shows a flowchart of an embodiment of a method in accordance with some aspects of the present technology; [Figure 10]

[0021] 1 shows a flowchart of an embodiment of a method in accordance with some aspects of the present technology; [Figure 11]

[0022] 1 illustrates an example computing device that can be used to implement aspects of an intent-driven communication system, according to some implementations of the present technology. DETAILED DESCRIPTION OF THE INVENTION

[0011]

[0023] In the accompanying drawings, similar components and / or features may have the same reference label. Furthermore, various components of the same type may be distinguished by following the reference label with a dash and a second label that distinguishes between the similar components. When only a first reference label is used herein, the description is applicable to any one of the similar components having the same first reference label, regardless of the second reference label.

[0012]

[0024] The following description provides examples and is not intended to limit the scope, applicability, or configuration of the present disclosure. Rather, the description of the examples that follows will provide those skilled in the art with an enabling description for implementing the examples. It should be understood that various changes can be made in the function and arrangement of elements without departing from the spirit and scope as set forth in the appended claims.

[0013]

[0025] Examples described herein relate to communication systems configured to provide information to users using artificial intelligence (AI), natural language processing (NLP), and machine analysis-driven systems. Examples herein also relate to systems and methods for generating encoders for use in language engines (e.g., for NLP) in such communication systems. Communication systems configured to provide information to requesters from system resources (e.g., AI or human agents) can use NLP and AI systems in a variety of ways to facilitate information transfer. Such systems can analyze and improve communication systems by improving message routing and response to messages, for example, using natural language processing (NLP), natural language analysis (NLA), neural networks, and various AI and machine learning tools. Such systems can be configured to respond to a wide variety of user queries associated with a wide variety of topics or situations (e.g., different domains).

[0014]

[0026] Natural language processing (NLP) systems can be used for real-time automatic processing of such queries. BERT (Bidirectional encoder representations from transformers) and ELMo (embeddings from language models) are examples of techniques used as the basis for several different models that are implemented as NLP systems to perform NLP tasks.

[0015]

[0027] Examples described herein provide improved NLP systems for context-specific applications of NLP systems. In one example, a distilled encoder for NLP improves the operation of communication systems and devices therein by providing improved NLP performance in context-restricted (e.g., domain) environments while using fewer resources (e.g., memory and processing resources) than a general NLP system adapted for general (e.g., not domain- or context-specific) language processing. In one example, such a distilled encoder is generated from a general NLP encoder (e.g., a general BERT encoder) by filtering layers of the general NLP encoder to generate filtered encoder data. Filtering can remove layers or selected groups of data from the network that constitutes the general NLP encoder. Filtering is not intended to produce a functioning encoder after filtering; given the nature of complex machine networks, such as general NLP encoders, created by training on general data, filtering may result in a filtered encoder that is useless or has low-quality results. However, the filtered encoder retains enough information from the general encoder that additional training can produce performance in a distilled encoder (e.g., a trained version of the filtered encoder) similar to that of the general encoder with a significantly smaller memory size (e.g., smaller memory resource usage or memory footprint in the implemented encoder). Performance can be maintained in a reduced memory footprint, particularly by restricting the training data and performance criteria to a specific information domain.A general encoder may perform better in a general context (e.g., managing general search queries), while a distilled encoder may provide similar performance within the distilled encoder's specified domain (e.g., search queries or other text phrases that are limited to or strongly correlated with a defined domain or context).

[0016]

[0028] The distilled encoder data generated as described above can then be used in a domain-specific application of a communication system. For example, a particular domain used to create the distilled encoder can be technical support for devices. An initial text input to a communication system configured to provide technical support can use the distilled encoder with alignment to determine the intent for the initial text input from a set of intent values ​​(e.g., return, repair, action instructions, general question, etc.). The distilled encoder can use domain-specific language, including device-specific terminology, common typos or errors related to devices or technical support, or other such understanding of the domain-specific language, to identify the intent of the initial text input. Another implementation can be to identify subtopics within the domain associated with the communication. For example, if the domain for the system is computer programming, the distilled encoder with alignment can be configured to identify topics related to the communication, such as programming languages ​​(e.g., C, Java, Python, etc.) or computing platforms (e.g., Android, Windows, etc.). In particular, when domain-specific languages ​​may have different meanings from the meaning of the same word in a general domain (e.g., Java programming compared to java as a term for coffee, or Python programming compared to python as a type of snake), a distilled encoder may not only have a smaller footprint due to the domain-specific focus of the distilled encoder, but may also provide better natural language understanding (NLU) results than a general encoder.

[0017]

[0029] The following description provides details of computing and communication systems in which domain-specific distilled encoders can be used to perform context-specific NLP operations, as well as examples of distilled encoders and the generation of such encoders.

[0018]

[0030] 1A shows a block diagram of an embodiment of a network interaction system 100 that implements and supports certain embodiments and features described herein. One particular embodiment relates to using a distilled NLP encoder to process data streams from a connection between a network device 105 (which may be operated by a user 110) and a terminal device 115 (which may be operated by an agent 120) and / or a client device 130 (which may be operated by a client 125). As mentioned above, NLP can be used at many different points in such a communication system to improve or automate the routing of requests and associated information responses.

[0019]

[0031] In some embodiments, user 110 may be an individual browsing a website or accessing an online service provided by remote server 140. In some embodiments, user 110 may be an individual seeking a service to be performed on their behalf. Such services may include having a question answered, operating another device, getting assistance from an agent with a task or service, conducting a transaction, etc.

[0020]

[0032] A client 125 may be an entity that provides, operates, or administers a website or online service, or an individual employed or appointed by such an entity to perform tasks available to the client 125 as described herein.

[0021]

[0033] An agent 120 may be an individual, such as a support agent or salesperson, tasked with providing support or information to a user 110 regarding a website or online service (e.g., information about products available at an online store). A distilled NLP encoder can be implemented to assist a human agent by filtering or processing information to suggest actions, restrict options, provide data, or support the agent's actions in any way within a communication system. Of multiple agents, a subset of agents (e.g., agents associated with a particular domain or context) may be suitable for providing support or information to a particular client 125. An agent 120 may or may not be affiliated with a client 125. An agent associated with a particular domain or client may have different engines, including a distilled NLP encoder for the agent's particular domain. Each agent may be associated with one or more clients 125. When an agent is associated with multiple domains, the agent may have different assistance engines with distilled NLP encoders for different domains. In some non-limiting examples, user 110 may be an individual shopping at an online store from a personal computing device, client 125 may be a company that sells products online, and agent 120 may be a salesperson employed by the company. In such examples, the agent may use an assistance engine with a distilled NLP coder to perform tasks in the sales domain, the company or product domain, or any other such domain relevant to the context in which the salesperson provides information to customers. In various embodiments, user 110, client 125, and agent 120 may be other individuals or entities.

[0022]

[0034] 1A shows only a single network device 105, terminal device 115, and client device 130, the dialogue system 100 can include multiple or large numbers (e.g., tens, hundreds, or thousands) of each of one or more of these types of devices. Similarly, while FIG. 1A shows only a single user 110, agent 120, and client 125, the dialogue system 100 can include multiple or large numbers of each of one or more of such entities. Each entity or group of entities in such a system can be associated with a different information domain or context that can be used in distilling an encoder for an NLP system for the entity to enable an efficient NLP system for tasks specific to the given entity or group of entities in a given information domain.

[0023]

[0035] The connection management system 150 can facilitate strategic routing of communications between entities in the system. A communication can include a message having content (e.g., defined based on input from the entity, such as typed or spoken input). A communication can also include additional data, such as data about the sending device (e.g., IP address, account identifier, device type, and / or operating system), a destination address, a client identifier, an identifier or online history data of a web page or web page element (e.g., a web page or web page element visited when the communication was generated or otherwise associated with the communication), a time (e.g., time and / or date), and / or a destination address. Other information can be included in the communication. In some embodiments, the connection management system 150 routes the entire communication to another device. In some embodiments, the connection management system 150 modifies the communication (e.g., based on the initial communication) or generates a new communication. The new or modified communication may include at least some (or all) of the message (or a processed version thereof), additional data (e.g., about the sending device, web page, or online history and / or time), and / or other data identified by connection management system 150 (e.g., a particular account identifier or account data associated with the device). The new or modified communication may also include other information.

[0024]

[0036] Part of strategic routing facilitating can include establishing, updating, and using one or more connections between a network device 105 and one or more terminal devices 115. For example, upon receiving a communication from a network device 105, the connection management system 150 can infer which client (if any) the communication corresponds to. Upon identifying the client, the connection management system 150 can identify the terminal device 115 associated with the client for communication with the network device 105. In some embodiments, the identification can include evaluating a profile of each of a plurality of agents (or experts or representatives), each agent (e.g., agent 120) in the plurality of agents associated with a terminal device (e.g., terminal device 115). The evaluation can relate to content in the network device message.

[0025]

[0037] In some embodiments, the connection management system 150 can determine whether any connection is established between the network device 105 and an endpoint associated with the client (or remote server 140), and if so, whether such a channel should be used to exchange a series of communications including the communication.

[0026]

[0038] Upon selecting an endpoint for communicating with the network device 105, the connection management system 150 can establish a connection between the network device 105 and the endpoint. In some embodiments, the connection management system 150 can send a message to the selected endpoint. The message can request acceptance of a proposed assignment for communicating with the network device 105 or can identify that such an assignment has been generated. The message can include information about the network device 105 (e.g., IP address, device type, and / or operating system), information about the associated user 110 (e.g., language spoken, duration of interaction with the client, skill level, emotion, and / or topic preferences), the received communication, code (e.g., a clickable hyperlink) for generating and sending a communication to the network device 105, and / or instructions for generating and sending a communication to the network device 105.

[0027]

[0039] In some embodiments, communications between network device 105 and any endpoint (e.g., terminal device 115, remote server 140, client device 130, etc.) can be routed through connection management system 150. Such a configuration can enable connection management system 150 to monitor communication exchanges and detect problems (e.g., as defined based on rules), such as unresponsiveness or extended latency of any device. Furthermore, such a configuration can facilitate selective or complete storage of communications, which can be used later, for example, to evaluate the quality of the communication exchange and / or to support learning for updating or generating routing rules to promote specific post-communication targets. Additionally, in some examples, connection management system 150 can recognize domains associated with different communications and can manage the filtering or sorting of data for such domains in real time to improve the domain-specific datasets used for the distilled encoder. By continuously updating the domain datasets using system information, the distilled encoder can be improved over time. Similarly, if a new domain is identified without identifying sufficient training data to distill an encoder, the connection management system 150 can identify data associated with the newly identified domain and collect information to be used to train a domain-specific encoder while the general encoder is used for NLP. When sufficient training data has been collected, the examples described herein can be used to generate a distilled encoder. In some examples, the size of the dataset required for effective domain-specific training is small (e.g., less than 3 gigabits, less than 5 gigabits, etc., depending on patterns in the domain data) compared to the general dataset used to generate a general encoder for NLP (e.g., less than 10% of the general dataset size, or other comparable difference, depending on domain patterns).

[0028]

[0040] In some embodiments, connection management system 150 can monitor communication exchanges in real time and perform automated actions (e.g., rule-based actions, artificial intelligence-driven actions, etc.) based on the live communication. For example, if connection management system 150 determines that a communication is about a particular product, connection management system 150 can automatically send an additional message to the endpoint containing additional information about the product (e.g., the quantity of the product in stock, links to support documentation about the product, or other information about the product or similar products).

[0029]

[0041] In some embodiments, designated endpoints can communicate with network devices 105 without relaying the communications through connection management system 150. One or both of devices 105, 115 may (or may not) report certain communication metrics or content to connection management system 150 to facilitate communication monitoring and / or data storage.

[0030]

[0042] As mentioned, connection management system 150 may route selected communications to remote server 140. Remote server 140 may be configured to provide information in a predetermined manner. For example, remote server 140 may access one or more defined text passages, audio recordings, and / or files to send in response to the communication. Remote server 140 may select particular text passages, recordings, or files based on, for example, an analysis (e.g., semantic analysis or mapping analysis) of the received communication.

[0031]

[0043] Routing and / or other decisions or processes performed in the connection management system 150 can be performed based on rules and / or data defined or provided at least in part by one or more client devices 130. For example, a client device 130 may send a communication identifying agent prioritization, terminal device type, and / or topic / skill matching. As another example, a client device 130 may identify one or more weights to apply to various variables potentially affecting routing decisions (e.g., language compatibility, expected response time, device type and capabilities, and / or terminal device load balancing). It should be appreciated that which terminal devices and / or agents should be associated with a client may be dynamic. A communication from a client device 130 and / or terminal device 115 may provide information indicating that a given terminal device and / or agent should be added or removed as associated with the client. For example, a client device 130 may send a communication with an IP address and an indication as to whether a terminal device having that address should be added to or removed from a list identifying terminal devices associated with the client.

[0032]

[0044] Each communication (e.g., between devices, between devices and the connection management system 150, between the remote server 140 and the connection management system 150, or between the remote server 140 and devices) can occur over one or more networks 170. Any combination of open or closed networks can be included in the one or more networks 170. Examples of suitable networks include the Internet, a personal area network, a local area network (LAN), a wide area network (WAN), or a wireless local area network (WLAN). Other networks may also be suitable. One or more networks 170 can be fully embedded within or can include an intranet, an extranet, or a combination thereof. In some embodiments, a network in the one or more networks 170 includes a short-range communication channel, such as a Bluetooth® or Bluetooth Low Energy channel. In one embodiment, communication between two or more systems and / or devices can be achieved by a secure communication protocol, such as Secure Sockets Layer (SSL) or Transport Layer Security (TLS). Additionally, the data and / or transaction details may be encrypted in accordance with any convenient, known, or later developed manner, such as, but not limited to, Data Encryption Standard (DES), Triple DES, Rivest-Shamir-Adleman encryption (RSA), Blowfish encryption, Advanced Encryption Standard (AES), CAST-128, CAST-256, Decorrelated Fast Cipher (DFC), Tiny Encryption Algorithm (TEA), eXtended TEA (XTEA), Corrected Block TEA (XXTEA), and / or RC5, etc.

[0033]

[0045] The network devices 105, terminal devices 115, and / or client devices 130 may include, for example, portable electronic devices (e.g., smartphones, tablets, laptop computers, or smart wearable devices) or non-portable electronic devices (e.g., one or more desktop computers, smart appliances, servers, and / or processors). The connection management system 150 may be housed separately from the network, terminals, IoT devices, and client devices, or may be part of one or more such devices (e.g., via installation of an application on the device). The remote server 140 may be housed separately from each device and connection management system 150 and / or may be part of another device or system. While each device, server, and system in FIG. 1A is shown as a single device, it should be appreciated that multiple devices may instead be used. For example, a set of network devices may be used to transmit various communications from a single user, or the remote server 140 may include a server stack. As described herein, any such device (e.g., network device 105, terminal device 115, and / or client device 130, etc.) can implement an AI engine using a distilled encoder to perform domain-specific tasks. The distilled encoder, when trained for a specific context (e.g., a specific information domain), reduces resource usage (e.g., with a smaller memory footprint) and improves language processing performance.

[0034]

[0046] FIG. 1B illustrates an embodiment of an NLP implementation using a distilled encoder process according to some aspects of the present technology. FIG. 1C illustrates a method for generating a distilled encoder for use in a distilled encoder process such as that illustrated in FIG. 1B. Engine 180 in FIG. 1B can be an AI engine implemented in any device of dialogue system 100 configured to perform domain-specific tasks. As explained above, high-performance NLP systems are currently often trained on large, general datasets, such as data from Wikipedia®, CommonCrawl®, or other large, general collections of text. However, some contexts (e.g., domains or information domains) are not well represented in such “general” datasets. Examples of such contexts include context-specific idioms that are not strongly represented in general datasets, and other broader information domains, such as conversational commerce (e.g., customer service in a particular business domain), technical discussions in a given information domain, or other such contexts. When implemented in engine 180, a language engine for NLP 184 receives a real-time stream 182 of domain-specific data. The real-time stream of data 182 is processed by a distilled encoder process 185, which consists of distilled encoder data (e.g., a distilled neural network structure trained on context-specific data). The output of the distilled encoder process 185 is input to a refinement process 186 (e.g., a system layer) configured with tuning values ​​to manage task performance. The refinement process 186 outputs task results 188, which are results for the specific application to which the engine 180 is applied. For example, the engine 180 can be applied to a sorting task to determine context-specific subcategories (e.g., specific products) in a given information domain (e.g., product support for a company with multiple products).Another such task may be determining the communication intent from a set of predefined intents (eg, appointment scheduling, technical support, sales support, etc.).

[0035]

[0047] Using general language encoders for NLP to process real-time flows of information in a given context is inefficient due to the large size of the typically trained encoders and their lack of customization to context-specific language. Such high-performance general NLP encoders have large sizes due to the large number of layers and parameters from training on a general dataset. While such tasks can be handled by general encoders, examples described herein improve system and device performance using smaller encoders that provide context- (e.g., domain-) specific performance improvements. The resulting distilled encoder is a smaller model specific to a single domain that outperforms models trained on general domain data without distillation. As described below with respect to FIG. 1C, the performance improvement provided for the distilled encoder over the general encoder is preserved using limited domain-specific training data for a filtered encoder generated from the general encoder.

[0036]

[0048] FIG. 1C illustrates aspects of encoder-processed data that can be used to generate distilled encoder-processed data according to some aspects. Blocks 190 and 191 include initial data used for a generic encoder. The generic domain dataset of block 190 can be generic language data from any source, as described above. The model template of block 191 can be a specific implementation of BERT, such as RoBERTa, or any other such specific implementation of a BERT model. In block 192, the model template of block 191 is trained using the generic domain dataset of block 190 to generate generic encoder data in block 193. The generic encoder data of block 193 is a functional encoder that can be used to perform NLP on any message, but due to the likely size of the generic encoder data, such an implementation has limited practical application, especially for devices such as network device 105 or terminal device 115, which are likely to be personal computers or mobile devices (compared to larger server systems). Even for large server systems, implementations may be limited due to the resources consumed by a large general encoder. To create a smaller, more portable encoder, filtering is performed in block 194. The filtering can take the general encoder data of block 193 along with information about the structure of the model template from block 191 that is used to remove data from the general encoder data. Data is not removed based on the content of the data (e.g., attempting to remove certain information from the data), but rather based on the structure of the model used to create the general encoder data. The filtering can involve removing layers in the encoder data template pattern, removing certain parameter structures, or other such simplifications to reduce the footprint of the general encoder data.However, filtering maintains some structure in the template, thereby preserving the patterns from training in block 193. In one example, the initial and final layers are left in place, every other interior layer of the generic encoder data is removed, and the interior data connections within the network are reattached to the remaining layers. For example, in a generic encoder data network having 25 layers labeled 1 through 25, all even-numbered layers can be removed and the remaining layers modified to maintain a functioning network. Additional details of such filtering are described below with respect to Figures 8 and 9.

[0037]

[0049] The filtered encoder data of block 195 is a functioning network (e.g., capable of generating output based on input data), but the filtering operation of block 194 does not maintain all of the integrity of the training of block 192. However, experiments have been used to determine that certain structures remaining in the network, not over-filtered (e.g., by removing more than a critical amount of internal structure in the general encoder data), when trained on domain-specific data, provide improved NLP performance over BERT structures trained solely on domain-specific data. In examples, domain-specific training sets 2 gigabytes in size approached peak performance, and domain-specific datasets achieved peak performance at 3 gigabytes when used to train filtered data generated from approximately 222 gigabytes of general data. The domain-specific dataset of block 198 used in the training of block 196 can be accessed from a variety of different sources. In some examples, the domain-specific dataset is historical data from real-time communications in a system, such as network dialogue system 100, that is limited to a particular domain. In other examples, domain-specific datasets can be collected from sources limited to a given domain, such as technical articles in an information domain, or archives of communications and / or data (e.g., articles, papers, or discussions) associated with a given domain.

[0038]

[0050] Training in block 196 using the domain-specific dataset in block 198 results in distilled encoder data in block 197. The distilled encoder data can then be paired with fine processing values, as illustrated in FIG. 1B, to create a practical implementation of a language engine 184 for performing AI language processing tasks. The distilled encoder data can, for example, be applied to a real-time stream of domain-specific data 182 for distilled encoder processing 185. The output of processing 185 (e.g., processing the real-time data using the distilled encoder data of block 197) is then further processed in fine processing 186 (e.g., using the fine-tuning values ​​in the tuning network) to provide task results 188. Such a language engine 184 performing distilled encoder processing 185 using distilled encoder data generated according to FIG. 1C provides improved device performance with domain-specific performance from training on domain-specific datasets of limited size, while having a limited size (e.g., 40-60% smaller than the associated general encoder-based engine) with more efficient resource usage, along with improved domain-specific performance.

[0039]

[0051] Language engine 184 may be implemented with a software agent or application, which may be installed and / or executable on the illustrated device, system, or server. In one instance, the software agent or application is configured such that the various illustrated elements can operate in a complementary manner. For example, a software agent on the device may be configured to collect and send data about device usage to a separate connection management system, and a software application on the separate connection management system may be configured to receive and process the data. Data sets may thus be collected across the system and used to update or improve a language engine, such as language engine 184. For example, data from client device 130, remote server 140, connection management system 150, network device 105, and terminal device may be shared as part of domain-specific network interaction system 100, and the data collected across system 100 may be used to generate and update domain-specific datasets used for distilling encoder data for the datasets.

[0040]

[0052] Figure 2 shows a block diagram of another embodiment of a network interaction system 200. Generally, Figure 2 illustrates various components constructed and arranged to enable a network device 205 to communicate with one or more terminal devices 215. The illustrated example includes nine terminal devices 215 contained in three local area networks 235.

[0041]

[0053] In some embodiments, communications from network device 205 include destination data (e.g., a destination IP address) that at least partially or completely indicates which end device should receive the communication. Network interaction system 200 may include one or more inter-network connectivity components and / or one or more intra-network connectivity components 255 that can process the destination data and facilitate appropriate routing.

[0042]

[0054] Each interworking component 245 can be connected to multiple networks 235 and can have multiple network cards installed (e.g., each card connected to a different network). For example, an interworking component 245 can be connected to a wide area network 270 (e.g., the Internet) and one or more local area networks 235. In the illustrated example, for a communication to be transmitted from a network device 205 to any of the terminal devices, the communication must be processed by multiple interworking components 245 in the illustrated system.

[0043]

[0055] When network interworking component 245 receives a communication (or a set of packets corresponding to the communication), network interworking component 245 can determine at least a portion of a route for passing the communication to a network associated with the destination. The route can be determined, for example, using a routing table (e.g., stored in a router), which can include one or more routes that are predefined, generated based on an incoming message (e.g., from another router or from another device), or learned.

[0044]

[0056] Examples of network interconnection components 245 include routers 260 and gateways 265. Network interconnection components 245 (e.g., gateways 265) may be configured to translate between network systems or protocols. For example, gateways 265 may facilitate communication between Transmission Control Protocol / Internet Protocol (TCP / IP) devices and Inter-Network Packet Switching / Sequenced Packet Switching (IPX / SPX) devices.

[0045]

[0057] Upon receiving a communication at the local area network 235, further routing may still need to be performed. Such intra-network routing may be performed via an intra-network connectivity component 255, such as a switch 280 or a hub 285. Each intra-network connectivity component 255 may be connected (e.g., wirelessly or wired, such as via an Ethernet cable) to multiple terminal devices 215. The hub 285 may be configured to repeat all received communications for each device to which it is connected. Each terminal device may then evaluate each communication to determine whether the terminal device is the destination device or whether the communication should be ignored. The switch 280 may be configured to selectively direct communications only to the destination terminal device.

[0046]

[0058] In some embodiments, local area network 235 can be divided into multiple segments, each of which can be associated with independent firewalls, security rules, and network protocols. Intra-network connectivity components 255 can be provided within each of one, more than one, or all of the segments to facilitate intra-segment routing. Bridges 290 can be configured to route communications across segments 275.

[0047]

[0059] To properly route communications across or within a network, various components analyze destination data in the communication. For example, such data may indicate which network the communication should be routed to, which device within the network the communication should be routed to, or which communication an end device should process (versus ignore). However, in some embodiments, it is not immediately clear which end device (or even which network) should participate in a communication from a network device.

[0048]

[0060] To illustrate, a set of terminal devices may be configured to provide similar types of response communications. From this, it may be expected that a query in a communication from a network device may be responded to in a similar manner regardless of which network device the communication is routed to. While this assumption may be true at a high level, various details about the terminal devices may result in certain routing being advantageous compared to others. For example, the terminal devices in the set may differ from one another with respect to (for example) which communication channels are supported, geographic and / or network proximity to the network devices, and / or characteristics of the associated agents (e.g., knowledge base, experience, spoken languages, availability, general personality or sentiment, etc.). Therefore, the selected routing may facilitate faster responses that respond more accurately and / or completely to network device communications. The problem is that static routing that maps network devices to terminal devices may not account for variations in communication topic, channel type, agent availability, etc.

[0049]

[0061] 3A, 3B, and 3C illustrate block diagrams of other embodiments of the network interaction system 300 (e.g., systems 300A, 300B, and 300C including a connection management system). While the illustrated systems 300A, 300B, and 300C each show only two local area networks 235 for simplicity, it should be appreciated that the embodiments can be expanded to accommodate a greater number of local area networks. Each of the systems 300A, 300B, and 300C includes a connection management system 150 that can identify which end devices should communicate with the network devices 205, establish and manage (e.g., maintain or close) connections, determine whether and when to reroute communications in an exchange, and the like. Thus, the connection management system 150 can be configured to dynamically and in real time evaluate communications, agent availability, end device or agent capabilities, and the like to influence routing decisions.

[0050]

[0062] 3A , a connection management system 350 (e.g., systems 350A and 350B) is associated with each of the network device 205 and the remote server 340. In some implementations, the connection management system 150 can be installed or stored as a distributed system on each of the network device 205 and the remote server 340, respectively. Execution of an application(s) can facilitate communication between the network device 205 and the remote server 340, for example, to identify the terminal device 215 selected to participate in a communication exchange with the network device 205. The identification can be based on one or more factors disclosed herein (e.g., availability, matching between the topic / level of detail of the communication with an agent or terminal device's knowledge base, expected latency, channel type availability, etc.).

[0051]

[0063] The client device 330 can provide client data that indicates how routing decisions should be made. For example, such data can include indications regarding how particular characteristics should be weighted or matched, or constraints or biases (e.g., regarding load balancing or expected response latency). The client data can also include specifications regarding when a communication channel should be established (or closed) or when communications should be rerouted to a different network device. The client data can be used to define various client-specific rules, such as rules for communication routing, etc.

[0052]

[0064] The connection management system 150b executing on the remote server 340 can monitor various metrics related to the terminal device (e.g., for a given client), such as which communication channels are supported, geographic and / or network proximity to the network device, communication latency and / or stability with the terminal device, the type of terminal device, the capabilities of the terminal device, whether the terminal device (or agent) has previously communicated with the given network device (or user), and / or characteristics of the associated agent (e.g., knowledge base, experience, spoken languages, availability, general personality or mood, etc.). Thus, the connection management system 150b can be enabled to make routing selections to facilitate faster responses that respond more accurately and / or completely to network device communications based on the metrics.

[0053]

[0065] In the example illustrated in FIG. 3A , communication exchanges between network device 205 and remote server 340 can facilitate early identification of a destination address. Network device 205 may then use the destination address to direct subsequent communications. For example, network device 205 may send an initial communication to remote server 340 (e.g., via one or more inter-network connections and a wide area network), and remote server 340 may identify one or more corresponding clients. Remote server 340 may then identify a set of terminal devices associated with the one or more corresponding clients and collect metrics for those terminal devices. The metrics can be evaluated (e.g., by remote server 340) to select terminal devices to engage in the communication exchange, and information about the terminal devices (e.g., IP addresses) can be sent to network device 205. In some embodiments, remote server 340 may continuously or periodically collect and evaluate metrics for various terminal devices and store the evaluation results in a data store. In such an embodiment, upon identifying a set of terminal devices associated with one or more corresponding clients, the remote server 340 may access the stored assessment results from the data store and select the terminal devices for engaging in a communication exchange based on the stored assessment results.

[0054]

[0066] 3B , connection management system 150 can be configured to act as a relay and / or destination address. Thus, for example, a set of network devices 205 may send communications that each identify connection management system 150 as the destination. Connection management system 150 may receive each communication and simultaneously monitor the set of terminal devices (e.g., to generate metrics for each terminal device). Based on the monitoring and rules, connection management system 150 may identify terminal devices 215 that may relay each communication. Depending on the embodiment, terminal device communications may similarly be directed to a consistent destination (e.g., in connection management system 150) for further relaying, or the terminal devices may initiate communication directly with the corresponding network device. These embodiments can facilitate efficient routing and thorough communication monitoring.

[0055]

[0067] The embodiment illustrated in Figure 3C is similar to the embodiment of Figure 3B, however, in some embodiments, the connection management system 150 is directly connected to an in-network component (e.g., an end device, an in-network connection, or otherwise).

[0056]

[0068] 3A-3C are contemplated. For example, connection management system 150 may be associated with a connectivity component (e.g., inter-network connectivity component 245 or intra-network connectivity component 255) such that an application corresponding to connection management system 150 (or a portion thereof) is installed on the component. The application may execute, for example, independently or by communicating with one or more similar or complementary applications (e.g., executing on one or more other components, network devices, or remote servers).

[0057]

[0069] Figure 4 shows a representation of a protocol stack mapping 400 of the operation of connection components. More specifically, Figure 4 identifies the layers of operation in the Open Systems Interaction (OSI) model that correspond to various connection components.

[0058]

[0070] The OSI model can include multiple logical layers 402-414. The layers are arranged in an ordered stack such that layers 402-412 each service a higher level and layers 404-414 are each provided by a lower layer. The OSI model includes a physical layer 402. The physical layer 402 can define the physical communication parameters (e.g., electrical, optical, or electromagnetic). The physical layer 402 also defines connection management protocols, such as protocols for establishing and closing connections. The physical layer 402 can further define flow control protocols and transmission modes.

[0059]

[0071] The link layer 404 may manage communication between nodes. The link layer 404 may detect and correct errors (e.g., transmission errors in the physical layer 402) and manage access permissions. The link layer 404 may include a medium access control (MAC) layer and a logical link control (LLC) layer.

[0060]

[0072] The network layer 406 can coordinate the transfer of data (e.g., of variable length) across nodes in the same network (e.g., as datagrams). The network layer 406 can translate logical network addresses into physical machine addresses.

[0061]

[0073] The transport layer 408 can manage transmission and reception quality. The transport layer 408 can provide a protocol for transferring data, such as Transmission Control Protocol (TCP). The transport layer 408 can perform segmentation / desegmentation of data packets for transmission and can detect and account for transmission errors that occur in layers 402, 404, and 406. The session layer 410 can initiate, maintain, and terminate connections between local and remote applications. Sessions can be used as part of remote procedure interactions. The presentation layer 412 can encrypt, decrypt, and format data based on data types known to be accepted by the application or network layer.

[0062]

[0074] The application layer 414 may interact with software applications that control or manage communications. Through such applications, the application layer 414 may identify (for example) the destination, local resource status or availability, and / or communication content or formatting. The various layers 402, 404, 406, 408, 410, 412, 414 may perform other functions as available and applicable.

[0063]

[0075] Network connectivity components 422, 424 are shown operating at the physical layer 402 and the link layer 404. More specifically, a hub may operate at the physical layer so that operations can be controlled with respect to receiving and transmitting communications. A hub has little or no ability to operate at a higher level because it lacks the ability to address communications or filter data. A switch, on the other hand, may operate at the link layer 404 because it is able to filter communication frames based on addresses (e.g., MAC addresses).

[0064]

[0076] On the other hand, the interworking components 426, 428 are shown operating at a higher level (e.g., layers 406, 408, 410, 412, 414). For example, a router can filter communication data packets based on address (e.g., IP address). A router can forward packets to a particular port based on address to direct the packet to the appropriate network. Gateways operate at the network layer and above and can perform similar filtering and direction, as well as further transformation of data (e.g., across protocols or architectures).

[0065]

[0077] Connection management system 450, in various embodiments, can interact with and / or operate on one, more, all, or any of various layers. For example, connection management system 450 can interact with a hub to dynamically adjust which end devices the hub communicates with. As another example, connection management system 450 can communicate with a bridge, switch, router, or gateway to influence which end device the component selects as a destination (e.g., MAC, logical, or physical) address. As a further example, connection management system 450 can monitor, control, or direct data packet segmentation on transport layer 408, session duration on session layer 410, and / or encryption and / or compression on presentation layer 412. In some embodiments, connection management system 450 can interact with various layers by exchanging communications (e.g., sending commands) with equipment operating on particular layers (e.g., switches operating on link layer 404), by routing or modifying existing communications (e.g., between network devices and end devices) in particular ways, and / or by generating new communications based on existing communications that contain particular information (e.g., new destination addresses). Thus, connection management system 450 can affect communication routing and channel establishment (or maintenance or termination) through interacting with various devices and / or by affecting operations at various protocol stack layers.

[0066]

[0078] 5 illustrates a multi-device communication switching system 500 according to an embodiment. The system 500 includes a network device 505 configured to communicate with various types of endpoints over various types of communication channels.

[0067]

[0079] In the illustrated example, network device 505 may transmit communication 506 over a cellular network (e.g., via base station 510). The communication may be routed to operating network 515. Operating network 515 may include connection management system 150 that receives the communication and identifies which endpoints should respond to the communication. Such determination may depend on identifying a client to which the communication pertains (e.g., based on content analysis or user input indicating the client) and determining one or more metrics for each of one or more endpoints associated with the client. For example, in FIG. 5, each cluster of endpoints 530A, 530B, and 530C may correspond to a different client. The endpoints may be geographically co-located or distributed. The metrics may be determined based on stored or learned data and / or real-time monitoring (e.g., based on availability).

[0068]

[0080] Connection management system 150 may communicate with various endpoints via one or more routers 525 or other inter- or intra-network connectivity components. Connection management system 150 may collect, analyze, and / or store data from or regarding communications, terminal device behavior, client rules, and / or user-related actions (e.g., online activity, account data, purchase history, etc.) in one or more data stores 535. Such data may influence communication routing. In some examples, data store 535 may store data that can be used as part of a general dataset to update training for a general encoder in system 500, and may also store sorted data as part of a context-specific dataset for use in generating distilled encoders, as described below.

[0069]

[0081] In particular, various other devices can also be used to affect communication routing and / or processing. For example, in the illustrated example, connection management system 150 is also connected to web server 540, from which connection management system 150 can retrieve data of interest, such as technical product details, news, current product offerings, current or forecast weather, etc.

[0070]

[0082] Network device 505 may also be connected to web servers (including, for example, streaming web server 545). In some embodiments, communication with such servers provided an initial option for initiating a communication exchange with connection management system 150. For example, network device 505 may detect that a communication opportunity is available while visiting a particular web page and such an option may be presented.

[0071]

[0083] In some embodiments, one or more elements of communication system 500 can also be connected to a social networking server 550. Social networking server 550 can aggregate data received from various user devices. From this, for example, connection management system 150 may be able to infer general (or user-specific) intent for a given topic or general behavior of a given user or class of users. Social networking server 550 can also maintain a social graph for one or more users. The social graph can consist of a social user's first level of connections (direct connections) and additional levels of connections (indirect connections through the user's direct connections).

[0072]

[0084] 6 shows a block diagram of an embodiment of connection management system 600. Message receiver interface 605 can receive messages and store them in message data store 620 for later use by other systems (e.g., context management engine 615, task engine 625, etc.). In some embodiments, the message can be received as part of a communication sent by a source device (e.g., housed separately from or within the same housing as connection management system 150), such as, for example, a network device or an endpoint. In some embodiments, the communication can be part of a series of communications or communication exchanges, which can include a series of messages or communication exchanges being routed between two devices (e.g., a network device and an endpoint). This message or communication exchange can be part of and / or define an interaction between the devices. The communication channel or operating channel can include one or more protocols (e.g., a routing protocol, a task assignment protocol, and / or an addressing protocol) used to facilitate routing and communication exchanges between devices.

[0073]

[0085] In some embodiments, the message may include a message generated based on input received at a user interface. For example, the message may include a message generated based on button or key presses or recorded audio signals, or speech-to-text software. In one case, the message includes an automatically generated message, such as a message generated upon detecting that a network device is presenting a particular app page or web page or providing a particular input command (e.g., a key sequence). The message may include an instruction or request, such as one to initiate a communication exchange.

[0074]

[0086] In some embodiments, the message may be natural language communication, whether spoken or typed. Natural language communication, as used herein, refers to the ordinary use of language used to communicate between humans and is contrasted with the use of language defined by protocols required to communicate with a particular virtual assistant or artificial intelligence tool. Natural language communication should not require constraints such as the use of a wake word to alert an artificial intelligence tool that a communication is intended for it. Additionally, natural language communication should not require a user to identify specific keywords, specific phrases, or explicitly name a service to understand how to service the communication. In some embodiments, natural language may include emoticons and other forms of modern communication.

[0075]

[0087] While the technology utilizes natural language communication, the communication can identify specific keywords, specific phrases, or explicitly name the service. For example, the message can include or be associated with a client's identifier. For example, the message can explicitly identify the client (or a device associated with the client), the message can include or be associated with a web page or app associated with the client, the message can include or be associated with a destination address associated with the client, or the message can include or be associated with an identification of an item (e.g., a product) or service associated with the client (e.g., offered for sale by, sold by, or serviced by the client). By way of example, a network device may be presenting a particular client's app page, which may offer an option to send a communication to an agent. Upon receiving user input corresponding to the message, a communication can be generated to include the message and the particular client's identifier.

[0076]

[0088] The processing engine 610 may process received communications and / or messages. Processing may include, for example, extracting one or more particular data elements (e.g., message, client identifier, network device identifier, account identifier, etc.). Processing may include converting formatting or communication type (e.g., to be compatible with a particular device type, operating system, communication channel type, protocol, and / or network).

[0077]

[0089] The context management engine 615 may evaluate the (e.g., extracted or received) message. The evaluation may include, for example, identifying one or more intents or contexts for the message. Examples of contexts may include (for example) topic, sentiment, complexity, and urgency, as well as product-specific categories or other such restrictions on domains that can be associated with a distilled encoder. Domains may include, but are not limited to, subject matter, product, service, technical issue, usage question, complaint, refund request, or purchase request, etc. The domain may be determined directly from a flag or association in the message indicating that the message is directed to an agent associated with the domain, or machine analysis of the message may select a domain based on semantic analysis of the message (e.g., using NLP by identifying keywords, sentence structure, repeated words, punctuation characters, and / or non-article words), user input (e.g., with one or more categories selected), and / or message-related statistics (e.g., typing speed and / or response latency). Aspects of the context management engine 615 can use machine learning to generate and revise systems for associating incoming communications (e.g., text) from users with contexts or domain categories. For example, machine learning models can use previous data and results of associations between words and phrases in incoming communications, as well as natural language data from current and past communications, to generate and update associations between words and domain categories. Association generation and updating can be done using any combination of supervised learning with constructed datasets and historical data, unsupervised learning based on expectation or projection models of current routing paths through the system and system usage targets, and other data. Any such data can be used in operations for NLP (e.g., natural language understanding, natural language inference, etc.) to generate natural language data or to update machine learning models.Such data can then be used by client systems to improve dynamic message processing (e.g., improved intent indicator data results or response message generation) or shared with applications running on network devices or servers. In some examples, a convolutional neural network can be used with the incoming set of words and phrases along with the output intent category. Such a neural network can be trained on input words and phrases and output correlations to domain categories. Real-time system operations can then use instances of such a neural network to generate data regarding associations between incoming user communications and words in the user communications and intent categories in the system. Based on the output of such a neural network, a domain category can be assigned to the user or user account involved in the communication, and associated actions can be assigned. In some implementations, neural network settings can be modified with real-time dynamic feedback from usage to shift associations between words in user communications and domain categories and actions selected based on those words. These selections can be probabilistic, so that AI and machine learning systems can automatically track shifts in user expectations by integrating user feedback and usage data to improve system performance. For example, once a user is directed to an endpoint action for a particular domain category or subcategory, the user can provide a feedback communication indicating that the user is looking for a different action, which can be used as real-time feedback in the system to shift the probabilities and annotations associated with future domain category assignments.

[0078]

[0090] In some embodiments, the domain can be clarified by engaging the user 110 in a conversation that may include clarifying questions or simply requesting additional information. As described above, various machine learning and AI systems can be used to generate and update the system for responding to the user. For example, in some systems, each domain category and subcategory can have a different associated convolutional neural network. In some examples, the action taken in response to processing words from the user is to associate a domain category and a neural network for the domain category with the communication with the user and process the user communication using the assigned neural network. As described herein, multiple different neural networks can be used over the course of a conversation (e.g., multiple back-and-forth communications between the user and the system), and data for such communications can be used in machine learning operations to update neural networks or other systems used for future interactions with the user, and in operations to associate domain categories and actions with words from the user communication. User usage data can be used to adjust weights in the neural network to improve domain category assignments and to track changes in user domain trends (e.g., final user domain results identified at the end of a user conversation with the system compared to the domain assigned based on initial user communication).

[0079]

[0091] Within the connection management system 600, several different task engines 625 can be implemented to perform classification tasks or other such AI tasks. Any such task can use a distilled encoder as part of a particular domain-specific task engine efficiently configured to perform a task associated with a limited language domain within the connection management system 600.

[0080]

[0092] For example, the dialog management engine 750 of the task engine 625 can determine which endpoint a communication should be routed to and how the receiving and sending devices should communicate. NLP processing of message information can be configured by a distilled encoder associated with the dialog management engine 750 to manage tasks associated with domain-specific language training. The decision for the dialog management engine 750 can depend, for example, on whether a particular network device (or any network device associated with a particular user) has previously communicated with an endpoint in a set of endpoints (e.g., any endpoint associated with the connection management system 150 or any endpoint associated with one or more particular clients). In some examples, the dialog management engine 750 is invoked as an action to route a user communication to a different endpoint based on a domain category assigned to the user communication. This can involve updates to the endpoint (e.g., a particular agent or AI resource) being used during a conversation with the user. In some examples, the dialog management engine 750 can be associated with a particular domain. For example, the dialog management engine 750 can be associated with a domain for a particular company that produces and supports a variety of different products. Such products may vary in type and support infrastructure, but may nevertheless have a domain with a certain linguistic affinity that allows communications coming into the system to be efficiently managed by a distilled coder that focuses on a domain of interactions bounded by the types of interactions historically seen by the system as part of customer system requests associated with the system product. The history of previous communications associated with the enterprise can be used as a domain-specific data set used to train an encoder, as described below, to generate an efficient language engine configured specifically to handle the domain of client communications associated with a particular enterprise's products.In other examples, other data sets can be used to train the domain, in addition to historical data, to create the language engine. Dialogue management engine 750 can process incoming communications using a domain-specific language engine (e.g., including domain-specific distilled encoder data about the distilled encoder processing of the incoming data associated with the domain) to route the communications to different subsystems or to identify other subsystems or AI engines more specifically adapted for the particular communication. As described herein, dialogue management engine 750 can include one distilled encoder adapted to the domain that routes incoming communications to different specialized subjects within the domain (e.g., different product domains within an overall company context), and then each routing endpoint can use a distilled encoder, which can be either the same or a different distilled encoder, depending on the size of the routing domain and how the endpoint domains differ.

[0081]

[0093] With regard to determining how devices communicate, the dialogue management engine 750 can determine (for example) whether an endpoint should respond to a communication via (for example) email, online chat, SMS message, voice call, video chat, etc. The communication type can be selected based, for example, on a communication type priority list (e.g., defined at least in part by a client or user), the type of communication previously received from the network device (e.g., to promote consistency), the complexity of the received message, the capabilities of the network device, and / or the availability of one or more endpoints. Clearly, some communication types result in real-time communication (e.g., where fast message responses are expected), while other communication types can result in asynchronous communication (e.g., where delays (e.g., minutes or hours) between messages are tolerable). As noted above, such analysis can be influenced by a distilled coder trained on the language for the particular context, in addition to any other AI or machine-based decision-making.

[0082]

[0094] In some embodiments, the communication type may be a text messaging or chat application. These communication technologies offer the advantage that no new software needs to be downloaded and executed on the user's network device. In some examples, the communication type may be a voice communication type. In such examples, a speech-to-text system may be used to process the voice communication into words that are parsed by the illustrative systems described herein. In some examples, the words parsed by the system may include words represented by audio data. Thus, as described herein, words may be represented by symbol combinations (e.g., American Standard Code for Information Interchange (ASCII) data) stored in memory or may be represented by audio data (e.g., data representing sound combinations). Any such data may be processed by a distilled encoder as described herein.

[0083]

[0095] Additionally, the dialogue management engine 750 can determine whether a continuous channel between two devices (e.g., for a conversation or repeated transmission between a user device and a system) should be established, used, or terminated. A continuous channel can be constructed to facilitate the routing of future communications from a network device to a specified endpoint. This bias can persist over a message series (e.g., days, weeks, or even months). In some embodiments, a representation of the continuous channel (e.g., identifying the agent) can be included in a presentation to be presented on the network device. In this way, a user can understand that communications should be routed consistently to promote efficiency.

[0084]

[0096] The dialogue management engine 750 or any task engine 625 can interact with the account engine 630 in various contexts. For example, the account engine 630 may look up an identifier of a network device or endpoint in the account data store 635 to identify an account corresponding to a device. Additionally, the account engine 630 can maintain data about previous communication exchanges (e.g., time, other device(s) involved, channel type, resolution stage, topic(s), and / or associated client identifiers), communication channels (e.g., indicating, for each of one or more clients, whether any channels exist, the endpoint associated with each channel, establishment time, frequency of use, date of last use, any channel constraints, and / or types of communication supported), user or agent preferences or constraints (e.g., regarding terminal device selection, response latency, terminal device consistency, agent expertise, and / or communication type preferences or constraints), and / or user or agent characteristics (e.g., age, spoken or preferred language(s), geographic location, interests, etc.). Such information can be used to identify the domain and select between different distilled encoders based on the context or domain identified by the accounting engine 630.

[0085]

[0097] Additionally, the task engine 625 can alert the account engine 630 of various connection channel actions so that the account data store 635 can be updated to reflect current channel data. For example, upon establishing a channel, the interaction management engine 750 can notify the account engine 630 of the establishment and identify one or more of the network device, endpoint, account, and client. The account engine 630 can then notify the user of the existence of the channel so that the user can recognize the consistency of the agent being utilized.

[0086]

[0098] The task engine 625 can further interact with a client mapping engine 640, which can map the communication to one or more clients (and / or associated brands). In some embodiments, the communication received from the network device itself includes an identifier corresponding to the client (e.g., an identifier for the client, product, service, web page, or app page). The identifier can be included as part of the message (e.g., which the client mapping engine 640 can detect) or can be included as other data in the message-containing communication. The client mapping engine 640 can then look up the identifier in a client data store 645 to retrieve additional data about the client and / or the client's identifier; such information can be used to identify the domain or context, as described above, and to assist in selecting between different engines of the task engine 625 having a particular distilled encoder for the particular domain or context.

[0087]

[0099] In some embodiments, the message may not specifically address any client. For example, the message may include a general query. The client mapping engine 640 may, for example, perform semantic analysis on the message to identify one or more keywords and identify one or more clients associated with the keyword(s). In some embodiments, a single client is identified. In some embodiments, multiple clients are identified. The identification of each client may then be presented via the network device so that the user can select a client to communicate with (e.g., via an associated endpoint). In some such examples, the initial analysis with the general encoder may be used to identify a domain for the message, which may enable a distilled encoder of the task engine 625 to perform further processing, or may enable routing of the message to an endpoint (e.g., a different server or device) associated with the domain and having a distilled encoder for that domain according to the description herein.

[0088]

[0100] The client data store 645 may include identification of one or more endpoints (and / or agents) associated with a client. In different examples, information about a client may be associated with a domain, or subareas about a client may be associated with different domains, with different groups of agents and endpoints associated with different sets of domains. The terminal routing engine 650 may retrieve or collect data about each of one, more, or all such endpoints (and / or agents) to influence routing decisions. For example, the terminal routing engine 650 may maintain an endpoint data store 655, which may store information such as the endpoint's device type, operating system, communication type capabilities, installed application accessories, geographic location, and / or identifier (e.g., IP address). The information may also include agent information such as experience level, position, skill level, knowledge base (e.g., the agent's familiarity with and / or level of knowledge about various topics), personality metrics, working hours, language(s) spoken, and / or demographic information. Some information may be dynamically updated. For example, information indicating whether an endpoint is available can be dynamically updated based on (for example) communications from the endpoint (e.g., identifying whether a device is sleeping, turned off / on, idle / active, or identifying whether input has been received within a certain period of time), communication routing (e.g., indicating whether an endpoint is involved in or assigned to be part of a communication exchange), or communications from a network device or endpoint indicating that a communication exchange has ended or started. In different examples, any of the above groupings can serve as a domain, and the limited information is used in the distilled encoder.

[0089]

[0101] It should be appreciated that in various circumstances, being engaged in one or more communication exchanges does not necessarily indicate that an endpoint is unavailable to engage in another communication exchange. Various factors, such as communication type (e.g., text, message, email, chat, phone), client or user identification target response time, and / or system load (e.g., generally or with respect to a user), can affect how many exchanges an endpoint can be involved in.

[0090]

[0102] Once the connection management system 600 has processed a message and determined to relay the message to an endpoint, the message transmitter interface 660 can transmit the communication to the endpoint. The transmission may include, for example, a wired or wireless transmission to a device contained in a separate housing. The endpoint may include an endpoint in the same or a different network (e.g., a local area network) as the connection management system 150. Thus, transmitting a communication to an endpoint may include transmitting the communication to an inter-network or intra-network connection component.

[0091]

[0103] FIG. 7 illustrates illustrative embodiments of different task engines 625 according to some aspects of the present technology. In different examples, the different task engines 625 can reside in the connection management system 600 as described above, while in other examples, task engines according to the description herein can reside in any device, including a client device, an agent device, a customer device, or any other device configured for domain-specific AI processing and task performance. Some examples of task engines 625 can include a taxonomy engine 710, an intent identification engine 715, an annotation engine 720, a quality assessment engine 725, an intent modeling engine 730, an artificial intelligence engine 735, an intent data compiler 740, and a dialogue management engine 750. Different devices can include any combination of such engines or other engines, including distilled coders for domain-specific NLP. Such combinations of engines can generate different combinations of data, and the resulting compiled data can be provided to interfaces of computing devices, such as network devices, client devices, and / or terminal devices, for analysis and / or manipulation, as further described herein.

[0092]

[0104] The communication 705 may be provided to the taxonomy engine 710. The communication 705 may be in natural language as described herein and may include one or more words. In some embodiments, the communication 705 may include words in different languages, words embodied as pictograms or emoticons, or strings of characters or images associated with intent categories regardless of their standard or dictionary meaning. In some examples, the words may be received in the communication 705 as audio data. The taxonomy engine, in cooperation with a processor, may be configured to parse the communication 705 to identify one or more keywords, also referred to herein as “operative words.” The operative words may relate to actions available to the user initiating the communication 705. For example, the communication 705 may state, “I want to pay my bill.” The operative word may be “pay bill.” The taxonomy engine 710 may pass the operative words to an intent identification engine. The intent identification engine 715, in cooperation with the processor, may receive head terms from the taxonomy engine 710. The intent identification engine 715 may use the head terms to identify intents. Illustrative intents include "pay_bill," "change_address," "speak_to_representative," "change_due_date," "product_information," "make_a_reservation," "make_a_purchase," etc. The intents may define actions available to the user originating the communication 705. In some embodiments, the intents may be predefined and stored in the data store 745. In such embodiments, the intent identification engine 715 may query the data store 745 using the head terms to find corresponding predefined intents.For example, the intent identification engine 715 may query the data store 745 with the word "pay bill" to identify the closest matching intent of "pay_current_bill." In some embodiments, the head word may not correspond to an existing intent. In such embodiments, the intent identification engine 715 may create a new intent and store it in the data store 745, correlating it with the received head word. The intent identification engine 715 may pass the identified intent to the annotation engine 720.

[0093]

[0105] In another example, the intent identification engine can be implemented using an AI processor, neural network, or other system for analyzing a communication or portion of the communication 705. This can include natural language processing to select an intent value associated with a message from a client device. For example, if a client device texts “appointments,” the words can be processed to identify an intent category for scheduling using the intent identification engine 715. Such intent category can further include actions or subcategories, such as view all appointments, cancel the appointment, reschedule the appointment, or other such action options for the value. Using the intent identification engine, the text “appointments” can be processed to select a response associated with the intent value. In one example, the machine learning model of the intent identification engine 715 can determine that receiving a response message associated with the intent value of view all appointments most closely corresponds to the intent indicator data “appointments” and respond with a message to clarify the intent category. For example, a response action may be a message with the content "see all appointments?" In contrast, a new message from a client device with the content "new appointment," "cx apptmt," "apt?", "nxt apt," "apt time?", or "cng apt time?" may each cause the intent identification engine 715 to provide a different response based on a different intent value determined from words identified from the message.

[0094]

[0106] The intent identification system can use words from the message as inputs or key words to AI analysis to identify an intent category. The words act as intent data, which can be historical data, user profile data, or any such source, and can be aggregated with them to allow the user to customize intent analysis and select an intent category for communications from the user device. One example can include natural language text from a customer indicating an attempt to transfer money between a main account and a new flex account that has been opened and associated with the customer. The intent processing system can evaluate the words in the user communication to determine the issue the customer wants to address. In this particular case, the customer may be struggling to transfer funds from one online account to another. Based on the provided words, the intent identification engine 715 can collect data from multiple sources to determine which intent category, subcategory, and associated action to use in response to the user communication. In some examples, contextual data can be used in addition to the words in the user message. This contextual data can include intent or action values ​​associated with the context in which the request or issue is shared, the level of urgency, the customer's stress or anxiety level, whether there is a time constraint, etc.

[0095]

[0107] In one example, based on the identified intent category, the intent identification engine 715 selects an artificial intelligence engine 735 based on the identified intent category. This particular artificial intelligence engine 735 can be selected from multiple different AI engine options. For example, different intent categories or groups of categories can be associated with different AI engines, including the AI ​​engine 735. The AI ​​engine 735 is associated with the intent category to resolve the problem or request provided by the customer associated with the identified intent category. For example, based on the intent category identified from the user communication, the system can determine that the account must be authorized before the customer can transfer funds to the account. Further, the system can determine that account authentication can be performed online. Based on the identified process, the intent identification engine 715 selects an AI engine 735 that not only resolves the intent but also facilitates actions to respond to the customer intent in a manner that leads to a positive customer experience. This can include directing the customer to a client customer service node or assisting in establishing a connection channel with such a node. In addition to the routing path selected by the AI ​​engine 735, the system can generate a customized natural language communication associated with the customized routing path based on data (e.g., intent indicator data, action data, user demographic data, etc.). This can include customized language and terminology for the user (e.g., "I see the issue") to provide customized information to the user as an action in response to the user communication and the intent category identified by the intent identification engine 715. Such a system improves device and communication system operation by reducing system resources used by individual users to reach appropriate resolutions and improve communication efficiency.

[0096]

[0108] In some examples, the machine learning models of the intent modeling engine 730 may employ a feedback system that monitors communications between network devices (e.g., customers) and services (e.g., clients). Such a performance monitoring system may monitor interactions between customers and clients to determine whether the clients are effective in addressing the customer's intent. Such monitoring may also provide training data for updates to the intent identification engine 715, the AI ​​engine 735, the intent modeling engine 730, the quality assessment engine 725, or any other aspects of the context management engine 615. For example, the performance monitoring system may evaluate any customer utterances when new intent indicator data is received from the customer to determine whether the intent is being satisfied (e.g., monitoring dissatisfaction levels or machine learning-identified indicators that the customer is not achieving the expected results from the client system's interaction with the current node). As an illustrative example, the performance monitoring system may determine that the customer observed a positive outcome from the routing path provided by the client and that the customer was able to select a routing path to achieve the customer's intent when the customer responded with "Done." Furthermore, when the customer responds with "Thanks! That worked!", the performance monitoring system may determine that the customer's intent has been satisfied. This information can then be used to update machine learning models for any aspect of the system, including analyzing other users' intent indicator data to identify intent values ​​for future system users. For example, the performance monitoring system may implement a research algorithm that monitors client metrics to determine why a particular routing path is selected with a negative or positive customer outcome. Based on this determination, the performance monitoring system can provide feedback to the machine learning algorithm to update operations, node selection, and routing paths to improve system performance.In different implementations, such updates can be aggregated and presented to clients for approval and publication to user-facing communication channels, or can be configured for automatic, continuous real-time or near-real-time dynamic updates (e.g., queued in the system given processing and other resource limitations). In some examples, dynamic updates are performed automatically using threshold tracking to check for shifts in the annotation data and require customer review when a certain threshold is exceeded by an automatic dynamic update. For example, if a particular word is assigned an initial correlation value with an intent category, a threshold change that moves away from the original annotation value by more than a given percentage (e.g., 5%, 20%, 50%, etc.) can require review and approval by a system administrator or client. This can prevent unexpected trends in the data from unexpectedly disrupting system operation or generating actions that are inconsistent with user and client expectations. As described herein, a server system supporting a connection management system (e.g., connection management system 150) can perform any such operations, or the operations can be part of a networked server system with different subsystems or engines that work together to perform such operations.

[0097]

[0109] The annotation engine 720, in cooperation with the processor, may receive the identified intent categories from the intent identification engine 715. The annotation engine 720 may facilitate annotation of the identified intents. The annotation may define the quality of the association between the communication and the identified intent. In some embodiments, the annotation engine 720 may automatically evaluate the quality of the association by applying a formula. For example, the annotation engine 720 may automatically calculate a quality of 66% between the head word "pay bill" and the intent "pay_current_bill," while a quality of 100% may be assigned to the head word "pay bill" and the intent "pay_bill." In some embodiments, the annotation engine 720 may provide the head word and the identified intent to a user interface of the computing device for manual evaluation of the quality of the association. This manual evaluation can be provided as feedback by an agent monitoring the AI-based response to the user communication. This manual evaluation can also be used after communication to generate training data to be used in revisions to any aspect of the context management engine 615.

[0098]

[0110] In some examples, the annotation engine 720 can operate in parallel with the AI ​​engine 735. In such a system, once the intent identification engine 715 selects an intent category, the AI ​​engine and annotation engine 720 are separately provided with the intent category. The AI ​​engine 735 can automatically select one or more actions based on the intent category. The annotation engine 720 can provide confidence feedback regarding any aspect of the context management engine 615's operation. This can include the confidence in the selection of a particular intent category compared to other possible intent categories. This can include the confidence among multiple possible actions identified by the AI ​​engine 735. The annotation engine 720 can provide a quality check on the AI ​​selection operation, which can be used both to set threshold actions for response to the current communication 705 and to generate training data for updating any aspect of the context management engine 615. For example, the annotation engine 720 can identify a qualitative confidence score associated with an intent or action responsive to the communication. In some examples, if the annotation engine 720's qualitative score is below a threshold, a fallback action is taken, such as routing the communication to a specific agent or other endpoint rather than relying on an AI response. In other examples, agents can be grouped by performance. Annotation engine 720 results with a high confidence score can be routed to lower-performing agents because the threshold for error and expected results are less likely to be affected by agent performance. Annotation engine 720 results with a low confidence score, where agent discretion is more likely to be important, can be routed to agents with higher performance scores.This can also be used to increase confidence in the training data, as higher-performing agents review complex aspects of the context management engine 615's performance and provide feedback on intent categories that may result in new categories or other significant system changes. The annotation engine 720 can from this, for example, not only provide qualitative value as part of the intent category feedback, but can also be used to identify missing categories, unnecessary or redundant categories (e.g., intent categories that regularly have similar confidence values ​​and result in similar or identical system actions) that can be added to the system, or other such issues.

[0099]

[0111] The intent modeling engine 730, in cooperation with the processor, is configured to build a model of the intent based on the taxonomies and annotations created for the intent. The model can be used to help refine the intent, add new intents, associate different taxonomies with intents, associate different intents with a particular taxonomy, etc.

[0100]

[0112] The artificial intelligence engine 735, in cooperation with the processor, is configured to apply artificial intelligence to the intent model to aggregate intent-related data and draw conclusions about actions that can be taken based on the results and analysis. The intent data compiler 740, in cooperation with the processor, is configured to aggregate information output by the artificial intelligence engine 735 and formulate it so that it can be displayed by a computing device. The computing device can manipulate and organize the displayed and analyzed data. The artificial intelligence engine 735 may be implemented, for example, by a computer configured with an artificial intelligence system that learns, applies, and iteratively develops better models to reflect intent. These models may be refined over time with incoming data to learn trends in the data and better predict intent. As described above, the artificial intelligence engine 735 may be part of a system with multiple AI engines or may include different AI systems. For example, in a particular system, each intent category may be associated with a different neural network. Prime words or specific combinations of words received in a communication may be analyzed by a specific neural network customized for the specific intent category. By using different neural networks for narrower intent categories, the size and complexity of individual neural networks is limited and can be managed more efficiently in the context of system resource limitations. For example, a neural network that determines whether a user is attempting to pay a current bill, a past bill, or a partial bill will be less complex and resource intensive than a neural network that decides between these options and options for account access help, fraud assistance, new account opening, or other widely divergent actions that may arise in the system.However, using a distilled language coder as part of an engine to perform such tasks in a domain-restricted information environment limits resource usage compared to using a general NLP engine for such tasks.

[0101]

[0113] In any of the above language analysis examples, the distilled encoder can not only perform language analysis but also provide improved results due to the domain-specific training of the distilled encoder data. Many domains are filled with idioms, common misspellings, or other context-specific language that general NLP misses. For example, the programming technology domain can contain words that have specialized meanings within the domain and different, more general meanings outside the domain. "Python," "float," and "terminal" have very different meanings in the programming domain from the most common general language interpretation. While general encoder data is expected to interpret "java" as more similar to coffee, a programming-specific distilled encoder can interpret "java" as referring to the Java programming language. In particular, due to the BERT structure with contextual embeddings in which a single word is represented by multiple token embeddings, the contextual distilled encoder data can provide superior NLP task performance due to capturing the presence of contextually preferred language that is not a primary use in general language datasets.

[0102]

[0114] Furthermore, due to the structure of the training (e.g., as illustrated in Figure 1C), the domain-specific dataset used to train the distilled encoder does not need to be labeled. This allows both the domain-specific data to be used from the domain information environment in training the distilled encoder data without significant processing before use, and the ability to collect domain-specific data from systems that are using the distilled encoder and use that data as part of an updated domain-specific dataset to refine and improve the distilled encoder until it reaches a threshold performance level.

[0103]

[0115] For example, a domain can be identified with a task that would benefit from an engine using a distilled encoder, but where the domain-specific dataset is either unavailable or insufficiently large to produce favorable results. In such an example, an initial NLP encoder can be implemented using either a generic system or a distilled encoder with insufficient domain-specific training. During operation, real-time data received by the domain-specific task engine can be collected and added to the domain-specific dataset. The updated domain-specific dataset can either be used iteratively with performance measured against the NLP criteria until a threshold performance is met, or a threshold amount of domain-specific data can be collected to match the amount of domain-specific data expected to achieve a target result. The domain-specific data collected during use can then be used to train an updated distilled encoder, which can be used in an updated language engine for the domain-specific NLP task. In some examples, a 3-gigabit domain-specific language dataset achieved target performance levels, while domain-specific datasets smaller than 2 gigabits resulted in significantly degraded NLP performance.

[0104]

[0116] As described above, general encoder data can be used to generate functional distilled encoder data, which can then be filtered before being trained with a domain-specific dataset. FIG. 8 illustrates the general structure of an example of general encoder data 830. As described above with respect to FIG. 1C, general encoder data 830 can be generated by starting with a model (e.g., BERT) and training the model using a large general dataset. The structure of the model and resulting dataset can be modified for a particular implementation, but can include layers with different connections and network values ​​(e.g., neural network connections) between layers. From this, FIG. 8 generally describes a high-level encoder structure, and specific implementation details will be apparent to those skilled in the art. The illustrative structure of general encoder data 830 includes N layers: a first layer 835, a second layer 836, and a third layer 837, down to the final three layers 845, 846, and 847. The filtering process described above with respect to block 194 of Figure 1C may involve removing a subset of layers of the general encoder data 830 to generate filtered encoder data. Training the filtered data while preserving the layer structure resulting from the removal of layers in the general encoder data 830 results in the distilled encoder data of Figure 9.

[0105]

[0117] For example, if the general encoder data 830 is constructed with 25 layers and the even layers are removed, this results in filtered encoder data with 13 layers, where the second layer 836 and the (n-1)th layer 846 are removed along with the other central layers. The resulting filtered encoder data (not shown) will lack the precise neural network connections between layers that provided performance for NLP, but will have approximately half the size of the general encoder data 830. Training the filtered encoder data with a domain-specific dataset while maintaining the 13-layer structure of the filtered encoder data can provide domain-specific NLP functions with a significantly reduced memory footprint. An illustrative resulting distilled encoder data 930, with layers named to match those in FIG. 8, includes a distilled first layer 935, a distilled third layer 937, a distilled (N-2)th layer 945, and a distilled Nth layer 947, with the even layers missing due to filtering. With appropriate training and fine-tuning in the engine implementation, the distilled encoder data 930 can provide improved domain-specific performance with reduced resource usage compared to the general encoder data 930. As described above, in some examples, when the distilled encoder data 930 is used in a language engine (e.g., language engine 184, or the language engine of any task engine 625), real-time data processed by the engine can be collected and used to update the domain-specific dataset. The distilled encoder can then be re-trained with the updated domain-specific dataset, and performance can be tested using a different domain-specific dataset (e.g., using both different data and training data of different sizes) compared to performance on the different dataset to find favorable performance that balances the increased distilled encoder size associated with the larger domain-specific training dataset.Such performance can be measured for distilled coders trained on different domain-specific datasets using standardized NLP performance measurement tools, along with domain-specific definitions and analysis of domain-specific language vectors associated with NLP of language.

[0106]

[0118] 10 shows an example flowchart of a method 1000 according to some aspects of the present technology. In some examples, the method 1000 may be performed by a device such as the device of FIG. 11 or any device described herein. In some examples, the method 1000 may be instructions stored in a computer-readable medium that, when executed by one or more processors of the device, cause the device to perform the method 1000.

[0107]

[0119] Operation 1002 of method 1000 includes accessing natural language processing general encoder data, where the encoder data is generated from a general domain dataset that is not domain specific.

[0108]

[0120] Operation 1004 of method 1000 includes accessing a domain-specific dataset. The domain-specific dataset may be any limited dataset described herein, such as data from one or more textbooks, historical data from a business or context-specific dataset (e.g., for a product or set of products), or any other such dataset limited to or targeted to the domain to be used for the trained NLP system.

[0109]

[0121] Operation 1006 of method 1000 includes generating filtered encoder data using the subset of encoder data.

[0110]

[0122] Operation 1008 of method 1000 includes training the filtered encoder data using the domain-specific data set to generate distilled encoder data.

[0111]

[0123] Operation 1010 of method 1000 includes generating adjustments for the distilled encoder data to configure a task output associated with the domain-specific dataset.

[0112]

[0124] In some examples, method 1000 may include additional, repeated, or intervening operations. For example, after generating or updating the training values ​​and / or updating the distilled encoder data, examples may use such training data and distilled encoder data to analyze incoming datasets or communications in real time for domain-specific real-time NLP, as described above.

[0113]

[0125] In some examples, method 1000 may be followed by operations including processing a real-time stream of domain-specific data using the distilled encoder data, updating a domain-specific dataset using the real-time stream of domain-specific data, retraining the filtered encoder data using the updated domain-specific dataset to generate updated distilled encoder data, generating performance metrics for the distilled encoder data and the updated distilled encoder data, and selecting between the distilled encoder data and the updated distilled encoder data based on the performance metrics.

[0114]

[0126] Some examples may operate when the domain-specific dataset is unlabeled data. Some examples may operate when the distilled encoder data is configured to identify categories associated with labels in the domain-specific dataset. Some examples may operate when the domain-specific dataset includes unlabeled data. Some examples may operate when the distilled encoder data is configured to identify real-time data in two-way communication associated with an actionable request. Some examples may operate when training the filtered encoder data using the domain-specific dataset includes performing dynamic masking with randomly selected words in a sufficient amount of the domain-specific dataset to leverage gradient accumulation. Some examples may operate when training the filtered encoder data using the domain-specific dataset includes training the filtered encoder data using a masked language model. Some examples may operate when the domain-specific dataset is smaller than a threshold size, the threshold size being smaller than the general domain dataset. Some examples may operate when the general domain dataset is different from the domain-specific dataset. Some examples may additionally include accessing a general domain dataset used to generate the encoder data and generating the domain-specific dataset as a subset of the general domain dataset.

[0115]

[0127] An additional example may involve accessing distilled encoder data, where the distilled encoder data is generated by filtering encoder data generated from a general domain dataset that is not domain-specific to generate filtered encoder data, generating distilled encoder data from the filtered encoder data using a domain-specific training dataset, accessing a real-time stream of domain-specific data, and processing the real-time stream of domain-specific data using the distilled encoder data to generate task output data.

[0116]

[0128] 11 shows an example flowchart of a method 1100 according to some aspects of the present technology. In some examples, method 1100 can be performed by a device such as the device of FIG. 12 or any device described herein. In some examples, method 1100 can be instructions stored in a computer-readable medium that, when executed by one or more processors of the device, causes the device to perform method 1100. In some examples, method 1000 can be combined with method 1100. In other examples, combinations of operations of methods 1000 and 1100 can be integrated with intervening or repeated operations, or with certain operations combined with any other operations described herein.

[0117]

[0129] Method 1100 includes block 1102, which involves accessing distilled encoder data, where the distilled encoder data is generated by filtering encoder data generated from a general domain dataset that is not domain-specific to generate filtered encoder data, and generating the distilled encoder data from the filtered encoder data using a domain-specific training dataset.

[0118]

[0130] Method 1100 includes block 1104, which involves accessing a real-time stream of domain-specific data. The real-time stream of data can be a query or NLP input associated with a particular domain associated with a domain-specific training dataset. In some implementations, the domain-specific training dataset can include an aggregated domain that is smaller than the domain of the general domain dataset but can be divided into multiple subdomains. For example, the domain of "transportation" can be associated with a domain-specific training dataset, while encompassing other domains such as "automobiles," "boats," "planes," "trains," "motorcycles," etc. The domain of "computer repair" can similarly encompass a wide variety of subdomains associated with different computer failure mechanisms.

[0119]

[0131] Method 1100 includes block 1106, which involves processing a real-time stream of domain-specific data using the distilled encoder data to generate task output data. The processing may include submitting strings of data (e.g., sets of characters including words, sentences, search modifiers, etc.) from the real-time stream of domain-specific data to an AI computing machine or NLP AI system and providing system output to a user or other AI system for further elaboration or processing. As described herein, such real-time access and processing involves input to a device and processing or network delays that occur as the data is analyzed. Such real-time aspects of an operation do not mean that the operation or elements of the operation are instantaneous, but rather that the operation occurs as it is processed and communicated by devices in a networked system, with associated dynamic delays.

[0120]

[0132] In some implementations, domain-specific details in the sources used to create the general domain dataset can be dynamically tracked to identify changes associated with the domain-specific dataset after creation of the distilled encoder data to identify when updates to the distilled encoder data are needed. For example, once the databases and records used to derive the general domain dataset are created, a monitoring system can track domain-specific changes for threshold triggers or significant semantic shifts that may affect the domain-specific NLP dataset. Such tracking can be done in real time or periodically. In some implementations, updates to the general NLP AI system can be analyzed for changes that affect the domain-specific data used to derive the distilled encoder data. Minor changes can be used to verify that no updates to the distilled encoder data are necessary. Changes in the general NLP AI system determined to have an impact on domain-specific results that exceeds a threshold percentage of task output can be used as an automatic trigger for the creation of updated distilled encoder data. Such analysis can be integrated into an automated system for updating distilled encoder data, which can be performed dynamically and automatically in response to real-time or periodic analysis of source data changes.

[0121]

[0133] For example, a domain targeted by a domain-specific encoder may be technical support for websites selling a set of products. Such a domain may include subdomains of both website technical support, technical support for various products and / or subsets of products, and sales support for various products for sale. A general domain dataset may be filtered (e.g., parsed to isolate domain-specific data) to generate filtered encoder data related to the identified domain of websites. The filtered encoder data may then be trained to generate distilled encoder data. An encoder using the distilled encoder data may be tested to identify differences between desired and actual results, and the tuning values ​​may be used along with the distilled encoder data to construct task outputs. During operation of the tuned distilled encoder, a feedback system may track differences between desired and actual results. For example, responses to questions about a particular product that return results for an incorrect product may be tuned using tuning values. Similarly, inputs known to expect responses to technical support that instead return sales support responses may be tuned by adjusting tuning values. Such feedback can be used in real time to dynamically adjust task outputs (e.g., responses to input queries). Such feedback adjustments can, in some cases, allow many users to use the system simultaneously, allowing system operation to be adjusted for subsequent users who begin using the system while previous users, including the user associated with the feedback, continue to use the system simultaneously.

[0122]

[0134] Additionally, while specific examples have been described above, it will be apparent that additional examples are possible in accordance with the details described herein. For example, the operations described above may be repeated or may include additional intervening operations.

[0123]

[0135] FIG. 12 illustrates a computing system architecture 1200 including various components that electrically communicate with each other using a connection 1206, such as a bus, according to some implementations. The illustrative system architecture 1200 includes a processing unit (CPU or processor) 1204 and a system connection 1206 that couples various system components to the processor 1204, including system memory 1220, such as ROM 1218 and RAM 1216. The system architecture 1200 may include a cache 1202 of high-speed memory directly connected to, adjacent to, or integrated as part of the processor 1204. The system 1200 may copy data from the memory 1220 and / or storage device 1208 to the cache 1202 for quick access by the processor 1204. In this manner, the cache may provide a performance boost that prevents the processor 1204 from being delayed while waiting for data. These and other modules may control or be configured to control the processor 1204 to perform various actions.

[0124]

[0136] Other system memory 1220 may also be available for use. Memory 1220 may include multiple different types of memory with different performance characteristics. Processor 1204 may include any general-purpose processor, as well as hardware or software modules such as service 1 1210, service 2 1212, and service 3 1214 stored in storage device 1208 and configured to control processor 1204, and special-purpose processors where software instructions are incorporated into the actual processor design. Processor 1204 may essentially be a completely self-contained computing system and may encompass multiple cores or processors, buses, memory controllers, caches, etc. Multi-core processors may be symmetric or asymmetric.

[0125]

[0137] To enable user communication with computing system architecture 1200, input device(s) 1222 represent any number of input mechanisms, such as a microphone for audio, a touch-sensitive screen for gesture or graphical input, a keyboard, a mouse, motion input, speech, etc. Output device(s) 1224 can also be one or more of several output mechanisms known to those skilled in the art. In some cases, a multimodal system can allow a user to provide multiple types of input for communicating with computing system architecture 1200. Communications interface 1226 can generally orchestrate and control user input and system output. There is no limitation to operating on any particular hardware configuration, and thus the basic features herein can easily be substituted for improved hardware or firmware configurations as they are developed.

[0126]

[0138] The storage device 1208 is a non-volatile memory and may be a hard disk or other type of computer-readable medium capable of storing data that can be accessed by a computer, such as a magnetic cassette, a flash memory card, a solid-state memory device, a digital versatile disk, a cartridge, RAM 1216, ROM 1218, and hybrids thereof.

[0127]

[0139] The storage device 1208 may include services 1210, 1212, 1214 for controlling the processor 1204. Other hardware or software modules are contemplated. The storage device 1208 may be connected to the system connection 1206. In some embodiments, hardware modules that perform particular functions may include software components stored in a computer-readable medium in association with the necessary hardware components, such as the processor 1204, the connection 1206, the output device 1224, etc., to perform the functions.

[0128]

[0140] The disclosed gift selection, attribute, and distribution system can be implemented using a computing system. An illustrative computing system can include a processor (e.g., a central processing unit), memory, non-volatile memory, and interface devices. The memory can store data and / or one or more sets of code, software, scripts, etc. The components of a computer system can be coupled together via a bus or through some other known or convenient device. The processor can be configured to perform, for example, all or part of the methods described herein, for example, by executing code stored in the memory. One or more of the user device or computer, provider server or system, or suspended database update system can include components of a computing system or variations on such a system.

[0129]

[0141] The present disclosure contemplates a computer system taking any suitable physical form. By way of example and not limitation, the computer system may be an embedded computer system, a system-on-chip (SOC), a single-board computer system (SBC) (e.g., a computer-on-module (COM) or system-on-module (SOM)), a desktop computer system, a laptop or notebook computer system, an interactive kiosk, a mainframe, a mesh of computer systems, a mobile phone, a personal digital assistant (PDA), a server, or a combination of two or more of these. Where appropriate, the computer system may include one or more computer systems and may be single or distributed, span multiple locations, span multiple machines, and / or reside in a cloud that may include one or more cloud components in one or more networks. Where appropriate, one or more computer systems may perform one or more steps of one or more methods described or illustrated herein without substantial spatial or temporal limitations. By way of example and not limitation, the one or more computer systems may execute, such as across one or more steps of one or more methods described or illustrated herein, as events occur or in a batch mode that aggregates multiple events. One or more computer systems may, where appropriate, perform one or more steps of one or more methods described or illustrated herein at different times or in different locations.

[0130]

[0142] The processor may be, for example, a conventional microprocessor such as an Intel Pentium® microprocessor or a Motorola PowerPC microprocessor. Those skilled in the art will recognize that the terms "machine-readable (storage) medium" or "computer-readable (storage) medium" include any type of device that can be accessed by a processor.

[0131]

[0143] The memory may be coupled to the processor by, for example, a bus. The memory may include, by way of example and not limitation, random access memory (RAM), such as dynamic RAM (DRAM) and static RAM (SRAM). The memory may be local, remote, or distributed.

[0132]

[0144] The bus may also couple the processor to non-volatile memory and drive units. Non-volatile memory is often a magnetic floppy or hard disk, a magnetic-optical disk, an optical disk, a CD-ROM, a read-only memory (ROM) such as an EPROM or EEPROM, a magnetic or optical card, or another form of storage for large amounts of data. Some of this data is often written into memory by a direct memory access process during execution of software in the computer. Non-volatile storage can be local, remote, or distributed. Non-volatile memory is optional, as the system can be populated with all applicable data available in memory. A typical computer system will usually include at least a processor, memory, and a device (e.g., a bus) coupling the memory to the processor.

[0133]

[0145] Software can be stored in non-volatile memory and / or in a drive unit. In fact, for large programs, it may not even be possible to store the entire program in memory. Nevertheless, it should be understood that to execute the software, the software is moved, if necessary, to a computer-readable location suitable for processing, and for illustrative purposes, that location will be referred to herein as memory. Even when software is moved to memory for execution, the processor may utilize hardware registers to store values ​​associated with the software and, ideally, a local cache, which serves to speed up execution. As used herein, a software program is assumed to be stored in any known or convenient location (from non-volatile storage to hardware registers) when the software program is referred to as being "implemented in a computer-readable medium." A processor is considered "configured to execute a program" when at least one value associated with the program is stored in a register readable by the processor.

[0134]

[0146] The bus may also couple the processor to a network interface device. The interface may include one or more of a modem or a network interface. It should be appreciated that the modem or network interface may be considered to be part of the computer system. The interface may include an analog modem, an Integrated Services Digital Network (ISDN) modem, a cable modem, a token ring interface, a satellite transmission interface (e.g., "Direct PC"), or other interface for coupling the computer system to other computer systems. The interface may include one or more input and / or output (I / O) devices. The I / O devices may include, by way of example and not limitation, a keyboard, a mouse or other pointing device, a disk drive, a printer, a scanner, and other input and / or output devices including a display device. The display device may include, by way of example and not limitation, a cathode ray tube (CRT), a liquid crystal display (LCD), or any other applicable known or convenient display device.

[0135]

[0147] In operation, a computer system may be controlled by operating system software that includes a file routing system, such as a disk operating system. One example of operating system software having associated file routing system software is the family of operating systems known as Windows® from Microsoft Corporation (Redmond, WA) and their associated file routing system. Another example of operating system software having its associated file routing system software is the Linux® operating system and its associated file routing system. The file routing system may be stored in non-volatile memory and / or a drive unit and may cause a processor to perform various operations involving the operating system to input and output data and store data in memory, including storing files in the non-volatile memory and / or a drive unit.

[0136]

[0148] Some portions of the detailed description may be presented in terms of algorithms and symbolic representations of operations on data bits within a computer memory. These algorithmic descriptions and representations are the means used by those skilled in the data processing arts to most effectively convey the substance of their work to others skilled in the art. An algorithm is here, and generally, conceived to be a self-consistent sequence of operations leading to a desired result. The operations are those requiring physical manipulations of physical quantities. Usually, though not necessarily, these quantities take the form of electrical or magnetic signals capable of being stored, transferred, combined, compared, and otherwise manipulated. It has proven convenient at times, principally for reasons of common usage, to refer to these signals as bits, values, elements, symbols, characters, terms, numbers, or the like.

[0137]

[0149] It should be borne in mind, however, that all of these and similar terms are to be associated with the appropriate physical quantities and are merely convenient labels applied to these quantities. As will be apparent from the discussion that follows, unless otherwise specified, it will be recognized that throughout this description, discussions utilizing terms such as "processing" or "calculating" or "computing" or "determining" or "displaying" or "generating" refer to the actions and processes of a computer system or similar electronic computing device that manipulates and converts data represented as physical (electronic) quantities in the computer system's registers and memory into other data that is similarly represented as physical quantities in the computer system's memory or registers or other such information storage, transmission, or display device.

[0138]

[0150] The algorithms and displays presented herein are not inherently related to any particular computer or other apparatus. Various general-purpose systems may be used with programs in accordance with the teachings herein, or it may prove convenient to construct more specialized apparatus to perform some of the example methods. The structure involved in a variety of these systems will be apparent from the description below. In addition, the techniques are not described with reference to any particular programming language, and various examples may, to this end, be implemented using a variety of programming languages.

[0139]

[0151] In various implementations, the system operates as a standalone device or may be connected (e.g., networked) to other systems. In a networked deployment, the system may operate in the capacity of a server or a client system in a client-server network environment, or as a peer system in a peer-to-peer (or distributed) network environment.

[0140]

[0152] The system may be a server computer, a client computer, a personal computer (PC), a tablet PC, a laptop computer, a set-top box (STB), a personal digital assistant (PDA), a mobile phone, an iPhone®, a Blackberry, a processor, a telephone, a web appliance, a network router, switch or bridge, or any system capable of executing a set of instructions (sequential or otherwise) that specify actions to be taken by that system.

[0141]

[0153] Generally, the routines executed to implement implementations of the present disclosure may be implemented as part of an operating system or application, a component, a program, an object, a module, or a sequence of instructions referred to as a “computer program.” A computer program typically resides at various times in various memory and storage devices in a computer and includes one or more instructions that, when read and executed by one or more processing units or processors in the computer, cause the computer to perform operations to implement elements associated with various aspects of the present disclosure.

[0142]

[0154] Furthermore, while the examples have been described in the context of fully functional computers and computer systems, those skilled in the art will recognize that various examples may be distributed as program objects in a variety of forms, and furthermore, the present disclosure applies equally regardless of the particular type of machine-readable or computer-readable medium used to actually accomplish the distribution.

[0143]

[0155] Further examples of machine-readable storage media, machine-readable media, or computer-readable (storage) media include, but are not limited to, recordable-type media such as volatile and non-volatile memory devices, floppy and other removable disks, hard disk drives, optical disks (e.g., compact disk read-only memory (CD ROM), digital versatile disk (DVD), etc.), and transmission-type media such as digital and analog communications links, among others.

[0144]

[0156] In some situations, the operation of a memory device, such as changing state from a binary 1 to a binary 0 or vice versa, may involve a transformation, such as, for example, a physical transformation. In certain types of memory devices, such a physical transformation may involve the physical transformation of an article to a different state or thing. For example, but not limited to, for some types of memory devices, a change of state may involve the accumulation and storage of an electric charge or the release of a stored electric charge. Similarly, in other memory devices, a change of state may involve a physical change or transformation in magnetic orientation, or a physical change or transformation in molecular structure, such as from crystalline to amorphous or vice versa. The foregoing is not intended to be an exhaustive list of all examples in which a change of state from a binary 1 to a binary 0 or vice versa in a memory device may involve a transformation, such as a physical transformation. Rather, the foregoing is intended as an illustrative example.

[0145]

[0157] Storage media may typically be non-transitory or may include non-transitory devices. In this context, non-transitory storage media may include devices that are tangible, meaning that the device has a concrete physical form, although the device may change its physical state. Thus, for example, non-transitory refers to a device that remains tangible despite this change in state.

[0146]

[0158] The above description and drawings are illustrative and should not be construed as limiting the subject matter to the precise form disclosed. Those skilled in the art will recognize that many modifications and variations are possible in light of the above disclosure. Numerous details are set forth to provide a thorough understanding of the present disclosure. However, in certain instances, well-known or conventional details are not described in order to avoid obscuring the description.

[0147]

[0159] As used herein, the terms "connected," "coupled," or any variation thereof, when applied to modules of a system, means any connection or coupling, either direct or indirect, between two or more elements, and the coupling of connections between elements may be physical, logical, or any combination thereof. Additionally, the words "herein," "above," "below," and words of similar import, when used in this application, shall refer to this application as a whole and not to any particular portions of this application. Where the context permits, words in the above Detailed Description using the singular or plural may also include the plural or singular, respectively. The word "or" in reference to a list of two or more items covers all of the following interpretations of the word: any of the items in the list, all of the items in the list, or any combination of the items in the list.

[0148]

[0160] Those skilled in the art will recognize that the disclosed subject matter may be embodied in other forms and manners not set forth below. It should be understood that the use of relational terms, if any, such as first, second, top, and bottom, is used only to distinguish one entity or action from another, and does not necessarily require or imply any actual relationship or ordering between such entities or actions.

[0149]

[0161] While processes or blocks are presented in a given order, alternative implementations may perform routines with steps or use systems with blocks in a different order, and some processes or blocks may be deleted, moved, added, subdivided, substituted, combined, and / or modified to provide alternative or subcombinations. Each of these processes or blocks may be implemented in a variety of different ways. Also, while processes or blocks are sometimes shown as being performed sequentially, these processes or blocks may instead be performed in parallel or at different times. Furthermore, any numbers described herein are examples only, and alternative implementations may use different values ​​or ranges.

[0150]

[0162] The teachings of the disclosure provided herein may be applied to other systems, not necessarily the systems described above, and elements and operations of the various examples described above may be combined to provide further examples.

[0151]

[0163] Any patents and applications and other references mentioned above, including any that may be listed in accompanying application documents, are incorporated herein by reference. Aspects of the present disclosure can be modified, if necessary, to employ the systems, functions, and concepts of the various references described above to provide still further examples of the present disclosure.

[0152]

[0164] These and other modifications can be made to the present disclosure in light of the above detailed description. While the above description illustrates certain examples and sets forth the best mode contemplated, no matter how detailed the above appears in text, the present teachings can be implemented in many ways. The details of the system may vary considerably in their implementation details while still being encompassed by the subject matter disclosed herein. As noted above, specific terminology used when describing certain features or aspects of the present disclosure should not be construed to imply that the terminology has been redefined herein to be limited to any characteristic, feature, or aspect of the present disclosure to which it pertains. In general, the terms used in the following claims should not be construed to limit the disclosure to the implementations disclosed herein unless the above detailed description section explicitly defines such terms. Therefore, the actual scope of the present disclosure encompasses not only the disclosed implementations but also all equivalent ways of practicing or implementing the disclosure under the scope of the claims.

[0153]

[0165] Although certain aspects of the present disclosure are presented below in certain claim forms, the inventors contemplate various aspects of the present disclosure in any number of claim forms. Any claim intended to be covered under 35 U.S.C. § 112(f) will begin with the words "means for." Accordingly, applicants reserve the right to add additional claims after filing to pursue such additional claim forms for other aspects of the present disclosure.

[0154]

[0166] The terms used in this specification generally have their ordinary meaning in the art within the context of this disclosure and in the context in which each term is used. Certain terms used to describe this disclosure have been discussed above or elsewhere in this specification to provide additional guidance to practitioners regarding the description of this disclosure. For convenience, certain terms may be highlighted, for example, using capital letters, italics, and / or quotation marks. The use of highlighting does not affect the scope and meaning of a term; the scope and meaning of a term are the same in the same context, regardless of whether it is highlighted. It should be recognized that the same element can be described in more than one way.

[0155]

[0167] Consequently, alternative language and synonyms may be used for any one or more of the terms discussed herein, and no particular significance is placed on whether a term is recited or discussed herein. Synonyms for certain terms are provided. The listing of one or more synonyms does not exclude the use of other synonyms. The use of examples anywhere in this specification, including examples of any term discussed herein, is illustrative only and is not intended to further limit the scope and meaning of the disclosure or any exemplified term. Likewise, the disclosure is not limited to the various examples provided herein.

[0156]

[0168] Without intending to further limit the scope of the present disclosure, examples of instruments, devices, methods, and their related results according to examples of the present disclosure are provided below. Note that titles or subtitles may be used in the examples for the convenience of the reader and should in no way limit the scope of the present disclosure. Unless otherwise defined, all technical and scientific terms used herein have the same meaning as commonly understood by one of ordinary skill in the art to which the present invention pertains. In case of conflict, the present specification, including definitions, will control.

[0157]

[0169] Some portions of this description will describe examples in terms of algorithms and symbolic representations of operations on information. These algorithmic descriptions and representations are commonly used by those skilled in the data processing arts to effectively convey the substance of their work to others skilled in the art. While these operations are described functionally, computationally, or logically, it will be understood that they may be implemented by computer programs or equivalent electrical circuits, microcode, or the like. Further, it has proven convenient at times to refer to organizations of these operations as modules, without loss of generality. The described operations and their associated modules may be embodied in software, firmware, hardware, or any combination thereof.

[0158]

[0170] Any of the steps, operations, or processes described herein may be performed or implemented using one or more hardware or software modules, alone or in combination with other devices. In some examples, software modules are implemented using computer program objects that include a computer-readable medium containing computer program code, which can be executed by a computer processor to perform any or all of the steps, operations, or processes described.

[0159]

[0171] Examples may also relate to an apparatus for performing the operations herein. This apparatus may be specially constructed for the purposes involved and / or it may comprise a general-purpose computing device selectively activated or reconfigured by a computer program stored in the computer. Such a computer program may be stored on a non-transitory tangible computer-readable storage medium that may be coupled to a computer system bus, or any type of medium suitable for storing electronic instructions. Furthermore, any computing system referred to herein may include a single processor or may be an architecture that employs a multiple processor design to increase computing power.

[0160]

[0172] Examples may also relate to objects generated by the computing processes described herein. Such objects may include information resulting from the computing processes, where the information is stored on a non-transitory tangible computer-readable storage medium and may include any implementation of a computer program object or other data combination described herein.

[0161]

[0173] The language used herein has been selected primarily for ease of reading and instructional purposes, and may not have been selected to delineate or limit the subject matter. Accordingly, the scope of the disclosure is intended to be limited not by this detailed description, but rather by any claims that issue on an application based thereon. Accordingly, the disclosure of the examples is intended to be illustrative, but not limiting, of the scope of the subject matter set forth in the following claims.

[0162]

[0174] Details have been provided in the preceding description to provide a thorough understanding of various implementations of systems and components for a context-connected system. However, it will be understood by those skilled in the art that the above-described implementations may be practiced without these specific details. For example, circuits, systems, networks, processes, and other components may be shown as components in block diagram form in order to avoid obscuring the examples in unnecessary detail. In other instances, well-known circuits, processes, algorithms, structures, and techniques may be shown without unnecessary detail in order to avoid obscuring the examples.

[0163]

[0175] It should also be noted that each implementation may be described as a process that is depicted as a flowchart, a flow diagram, a data flow diagram, a structure diagram, or a block diagram. While a flowchart may describe operations as a sequential process, many of the operations may be performed in parallel or simultaneously. Additionally, the order of operations may be rearranged. A process is terminated when the operation is completed, but may have additional, uninvolved steps. A process may correspond to a method, a function, a procedure, a subroutine, a subprogram, etc. When a process corresponds to a function, its termination may correspond to a return of the function to the calling function or the main function.

[0164]

[0176] Client devices, network devices, and other devices may be computing systems that include, among other things, one or more integrated circuits, input devices, output devices, data storage devices, and / or network interfaces. Integrated circuits may include, for example, one or more processors, volatile memory, and / or non-volatile memory, among other things. Input devices may include, for example, a keyboard, a mouse, a keypad, a touch interface, a microphone, a camera, and / or other types of input devices. Output devices may include, for example, a display screen, a speaker, a haptic feedback system, a printer, and / or other types of output devices. Data storage devices such as hard drives or flash memory may enable computing devices to temporarily or permanently store data. Network interfaces such as wireless or wired interfaces may enable computing devices to communicate with a network. Examples of computing devices include desktop computers, laptop computers, server computers, handheld computers, tablets, smartphones, personal digital assistants, digital home assistants, and machines and devices incorporating computing devices.

[0165]

[0177] The term "computer-readable medium" includes, but is not limited to, portable or non-portable storage devices, optical storage devices, and various other media capable of storing, containing, or transporting instruction(s) and / or data. Computer-readable media may also include non-transitory media on which data may be stored and which do not include carrier waves and / or transitory electronic signals propagating wirelessly or over wired connections. Examples of non-transitory media may include, but are not limited to, magnetic disks or tapes, optical storage media such as compact discs (CDs) or digital versatile discs (DVDs), flash memory, memory, or memory devices. A computer-readable medium may store code and / or machine-executable instructions, which may represent a procedure, a function, a subprogram, a program, a routine, a subroutine, a module, a software package, a class, or any combination of instructions, data structures, or program statements. A code segment may be coupled to another code segment or a hardware circuit by passing and / or receiving information, data, arguments, parameters, or memory contents. Information, arguments, parameters, data, etc. may be passed, forwarded, or transmitted via any suitable means including memory sharing, message passing, token passing, network transmission, etc.

[0166]

[0178] The various examples discussed above may further be implemented by hardware, software, firmware, middleware, microcode, hardware description languages, or any combination thereof. When implemented in software, firmware, middleware, or microcode, program code or code segments (e.g., a computer program product) to perform the necessary tasks may be stored in a computer-readable or machine-readable storage medium (e.g., a medium for storing program code or code segments). Processor(s) implemented in integrated circuits may perform the necessary tasks.

[0167]

[0179] The program code may be executed by a processor, which may include one or more processors, such as one or more digital signal processors (DSPs), general-purpose microprocessors, application-specific integrated circuits (ASICs), field-programmable logic arrays (FPGAs), or other equivalent integrated or discrete logic circuitry. Such a processor may be configured to perform any of the techniques described in this disclosure. A general-purpose processor may be a microprocessor, but alternatively, the processor may be any conventional processor, controller, microcontroller, or state machine. A processor may also be implemented as a combination of computing devices, such as a combination of a DSP and a microprocessor, multiple microprocessors, one or more microprocessors in conjunction with a DSP core, or any other such configuration. Thus, the term “processor,” as used herein, may refer to any of the foregoing structures, any combination of the foregoing structures, or any other structure or apparatus suitable for implementing the techniques described herein. Additionally, in some aspects, the functionality described herein may be provided within dedicated software or hardware modules configured to implement a paused database update system.

[0168]

[0180] Where a component is described as being "configured" to perform a particular 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.

[0169]

[0181] The various illustrative logical blocks, modules, circuits, and algorithm steps described in connection with the implementations disclosed herein may be implemented as electronic hardware, computer software, firmware, or combinations thereof. To clearly illustrate this interchangeability of hardware and software, various illustrative components, blocks, modules, circuits, and steps have been described above generally in terms of their functionality. Whether such functionality is implemented as hardware or software depends on the particular application and design constraints imposed on the overall system. Those skilled in the art may implement the described functionality in varying ways for each particular application, but such implementation decisions should not be interpreted as causing a departure from the scope of the present disclosure.

[0170]

[0182] The foregoing detailed description of the present technology has been presented for purposes of illustration and description. It is not intended to be exhaustive or to limit the technology to the precise form disclosed. Many modifications and variations are possible in light of the above teachings. The described examples were selected to best explain the principles of the technology, its practical application, and to enable those skilled in the art to utilize the technology in various instances and with various modifications suitable for the particular uses contemplated. It is intended that the scope of the present technology be defined by the claims. The following is a summary of the claims as originally filed: [C1] A computer-implemented method comprising: accessing natural language processing (NLP) general encoder data, wherein the NLP general encoder data is generated from a general domain dataset that is not domain specific; Access to domain-specific datasets and generating filtered encoder data using a subset of the NLP general encoder data; training the filtered encoder data using the domain-specific dataset to generate distilled encoder data; generating adjustments for the distilled encoder data to construct a task output associated with the domain-specific dataset; and 1. A computer-implemented method comprising: [C2] The computer-implemented method of C1, wherein the domain-specific dataset is unlabeled data. [C3] The computer-implemented method of C1, wherein the distilled encoder data is configured to identify categories associated with labels of the domain-specific dataset. [C4] The computer-implemented method of C1, wherein the domain-specific dataset comprises unlabeled data. [C5] The computer-implemented method of C1, wherein the distilled encoder data is configured to identify real-time data in a bidirectional communication associated with an actionable request. [C6] The computer-implemented method of C1, wherein training the filtered encoder data using the domain-specific dataset includes performing dynamic masking with randomly selected words in the domain-specific dataset in a sufficient amount to leverage gradient accumulation. [C7] The computer-implemented method of C1, wherein training the filtered encoder data using the domain-specific data set includes training the filtered encoder data using a masked language model. [C8] The computer-implemented method of C1, wherein the domain-specific dataset is smaller than a threshold size, and the threshold size is smaller than the general domain dataset. [C9] The computer-implemented method of C1, wherein the general domain dataset is different from the domain-specific dataset. [C10] accessing the general domain dataset used to generate the NLP general encoder data; generating the domain-specific dataset as a subset of the general domain dataset; 4. The computer-implemented method of claim 1, further comprising: [C11] accessing the distilled encoder data; and Accessing real-time streams of domain-specific data; and processing the real-time stream of domain-specific data using the distilled encoder data to generate task output data; and 4. The computer-implemented method of claim 1, further comprising: [C12] A device, Memory and one or more processors coupled to the memory; wherein the one or more processors: accessing encoder data, wherein the encoder data is generated from a general domain dataset that is not domain specific; Access to domain-specific datasets and generating filtered encoder data using the subset of encoder data; training the filtered encoder data using the domain-specific dataset to generate distilled encoder data; generating adjustments for the distilled encoder data to construct a task output associated with the domain-specific dataset; and 12. A device configured to perform operations comprising: [C13] The device of C12, wherein the domain-specific dataset is unlabeled data. [C14] The device of C12, wherein the distilled encoder data is configured to identify categories associated with labels of the domain-specific dataset. [C15] The device of C12, wherein the domain-specific dataset includes unlabeled data. [C16] The device of C12, wherein the distilled encoder data is configured to identify real-time data in a bidirectional communication associated with an actionable request. [C17] The device of C12, wherein training the filtered encoder data using the domain-specific dataset includes performing dynamic masking with randomly selected words in the domain-specific dataset in a sufficient amount to leverage gradient accumulation. [C18] A non-transitory computer-readable storage medium comprising instructions that, when executed by one or more processors of a device, cause the device to: accessing encoder data, wherein the encoder data is generated from a general domain dataset that is not domain specific; Access to domain-specific datasets and generating filtered encoder data using the subset of encoder data; training the filtered encoder data using the domain-specific dataset to generate distilled encoder data; generating adjustments for the distilled encoder data to construct a task output associated with the domain-specific dataset; and 1. A non-transitory computer-readable storage medium for causing a computer to perform operations comprising: [C19] The non-transitory computer-readable medium of C19, wherein the domain-specific dataset is unlabeled data. [C20] The non-transitory computer-readable medium of C19, wherein the distilled encoder data is configured to identify categories associated with labels of the domain-specific dataset. [C21] The non-transitory computer-readable medium of C19, wherein the domain-specific dataset comprises unlabeled data. [C22] The non-transitory computer-readable medium of C19, wherein the distilled encoder data is configured to identify real-time data in a bidirectional communication associated with an actionable request. [C23] The non-transitory computer-readable medium of C19, wherein training the filtered encoder data using the domain-specific dataset includes performing dynamic masking with randomly selected words in the domain-specific dataset in a sufficient amount to leverage gradient accumulation. [C24] The non-transitory computer-readable medium of C19, wherein training the filtered encoder data using the domain-specific dataset includes training the filtered encoder data using a masked language model. [C25] The non-transitory computer-readable medium of C19, wherein the domain-specific dataset is smaller than a threshold size, and the threshold size is smaller than the general domain dataset. [C26] The non-transitory computer-readable medium of C19, wherein the general domain dataset is different from the domain-specific dataset. [C27] The instructions are to instruct the device to: accessing the general domain dataset used to generate the NLP general encoder data; generating the domain-specific dataset as a subset of the general domain dataset; 19. The non-transitory computer-readable medium of claim 19, further comprising: [C28] accessing the distilled encoder data; and Accessing real-time streams of domain-specific data; and processing the real-time stream of domain-specific data using the distilled encoder data to generate task output data; and 19. The non-transitory computer-readable medium of claim 19, further comprising:

Claims

1. 1. A computer-implemented method comprising: accessing natural language processing (NLP) generic encoder data, wherein the NLP generic encoder data is generated from a non-domain specific generic domain dataset; Access to domain-specific datasets and generating filtered encoder data using a subset of the NLP general encoder data; training the filtered encoder data using the domain-specific dataset to generate distilled encoder data; generating adjustments for the distilled encoder data to construct a task output associated with the domain-specific dataset; and 1. A computer-implemented method comprising:

2. The computer-implemented method of claim 1 , wherein the domain-specific dataset is unlabeled data.

3. The computer-implemented method of claim 1 , wherein the distilled encoder data is configured to identify categories associated with labels of the domain-specific dataset.

4. The computer-implemented method of claim 1 , wherein the domain-specific dataset comprises unlabeled data.

5. The computer-implemented method of claim 1 , wherein the distilled encoder data is configured to identify real-time data in a two-way communication associated with an actionable request.

6. 2. The computer-implemented method of claim 1, wherein training the filtered encoder data using the domain-specific dataset comprises performing dynamic masking with randomly selected words in the domain-specific dataset in a sufficient amount to take advantage of gradient accumulation.

7. 2. The computer-implemented method of claim 1 , wherein training the filtered encoder data using the domain-specific data set comprises training the filtered encoder data using a masked language model.

8. The computer-implemented method of claim 1 , wherein the domain-specific dataset is smaller than a threshold size, the threshold size being smaller than the general domain dataset.

9. The computer-implemented method of claim 1 , wherein the general domain dataset is different from the domain-specific dataset.

10. accessing the general domain dataset used to generate data for the NLP general encoder; generating the domain-specific dataset as a subset of the general domain dataset; The computer-implemented method of claim 1 further comprising:

11. accessing the distilled encoder data; and Accessing real-time streams of domain-specific data; and processing the real-time stream of domain-specific data using the distilled encoder data to generate task output data; and The computer-implemented method of claim 1 further comprising:

12. A device, Memory and one or more processors coupled to the memory; wherein the one or more processors: accessing encoder data, wherein the encoder data is generated from a general domain dataset that is not domain specific; Access to domain-specific datasets and generating filtered encoder data using a subset of the encoder data; training the filtered encoder data using the domain-specific dataset to generate distilled encoder data; generating adjustments for the distilled encoder data to construct a task output associated with the domain-specific dataset; and 12. A device configured to perform operations comprising:

13. The device of claim 12 , wherein the domain-specific dataset is unlabeled data.

14. The device of claim 12 , wherein the distilled encoder data is configured to identify categories associated with labels of the domain-specific dataset.

15. The device of claim 12 , wherein the domain-specific dataset comprises unlabeled data.

16. The device of claim 12 , wherein the distilled encoder data is configured to identify real-time data in a two-way communication associated with an actionable request.

17. 13. The device of claim 12, wherein training the filtered encoder data using the domain-specific dataset comprises performing dynamic masking with randomly selected words in the domain-specific dataset in a sufficient amount to leverage gradient accumulation.

18. A non-transitory computer-readable storage medium comprising instructions that, when executed by one or more processors of a device, cause the device to: accessing encoder data, wherein the encoder data is generated from a general domain dataset that is not domain specific; Access to domain-specific datasets and generating filtered encoder data using a subset of the encoder data; training the filtered encoder data using the domain-specific dataset to generate distilled encoder data; generating adjustments for the distilled encoder data to construct a task output associated with the domain-specific dataset; and 1. A non-transitory computer-readable storage medium for causing a computer to perform operations comprising:

19. 20. The non-transitory computer-readable storage medium of claim 18, wherein the domain-specific dataset is unlabeled data.

20. 20. The non-transitory computer-readable storage medium of claim 18, wherein the distilled encoder data is configured to identify categories associated with labels of the domain-specific dataset.

21. 20. The non-transitory computer-readable storage medium of claim 18, wherein the domain-specific dataset comprises unlabeled data.

22. 20. The non-transitory computer-readable storage medium of claim 18, wherein the distilled encoder data is configured to identify real-time data in a two-way communication associated with an actionable request.

23. 20. The non-transitory computer-readable storage medium of claim 18, wherein training the filtered encoder data using the domain-specific dataset comprises performing dynamic masking with randomly selected words in the domain-specific dataset in a sufficient amount to leverage gradient accumulation.

24. 20. The non-transitory computer-readable storage medium of claim 18, wherein training the filtered encoder data using the domain-specific data set comprises training the filtered encoder data using a masked language model.

25. 20. The non-transitory computer-readable storage medium of claim 18, wherein the domain-specific dataset is smaller than a threshold size, the threshold size being smaller than the general domain dataset.

26. 20. The non-transitory computer-readable storage medium of claim 18, wherein the general domain dataset is different from the domain-specific dataset.

27. The instructions may cause the device to: accessing the general domain data set used to generate data for the encoder; generating the domain-specific dataset as a subset of the general domain dataset; 20. The non-transitory computer-readable storage medium of claim 18, further causing the computer to perform operations comprising:

28. accessing the distilled encoder data; and Accessing real-time streams of domain-specific data; and processing the real-time stream of domain-specific data using the distilled encoder data to generate task output data; and 20. The non-transitory computer-readable storage medium of claim 18, further comprising:

Citation Information

Patent Citations

  • Pre-training model compression method and device and electronic equipment

    CN111667069A

  • Model compression method and device

    CN112257858A

  • Methods for generating natural language processing systems

    US20160162456A1

  • Application development platform and software development kits that provide comprehensive machine learning services

    WO2019216938A1

  • Decentralised artificial intelligence (AI) / machine learning training system

    WO2021056043A1