Intelligent chat channel processor

The ICCP addresses the challenge of navigating high-volume chat forums by using RNN, TF-IDF, and RL to classify and improve answers based on user feedback, ensuring relevant responses are provided efficiently.

CN114386435BActive Publication Date: 2024-12-10INTERNATIONAL BUSINESS MACHINE CORPORATION
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
CN202111224910.4
Authority / Receiving Office
CN · China
Patent Type
Patents(China)
Current Assignee / Owner
Priority Date
2020-10-21
Filing Date
2021-10-21
Publication Date
2024-12-10
Estimated Expiration
2041-10-21

AI Technical Summary

Technical Problem

In high-volume and multi-time-zone chat forums, new or returning participants often struggle to identify previously asked questions and their best answers due to overwhelming historical information, making it difficult to navigate the channel effectively.

Method used

An intelligent chat channel processor (ICCP) uses a combination of recurrent neural networks (RNN), term frequency-inverse document frequency (TF-IDF), and reinforcement learning (RL) to classify user messages as questions or answers, store relevant answers, and adjust responses based on user feedback, providing contextually relevant answers without manual input.

Benefits of technology

The ICCP autonomously identifies and remembers answers, learns question-answer pairs, and improves response accuracy through user voting, enhancing the chat experience by providing relevant answers without disrupting the flow.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN114386435B_ABST
    Figure CN114386435B_ABST
Patent Text Reader

Abstract

Intelligent chat channel processor. A computer-implemented system and method for a chat system is provided for processing chat channel communications. The method includes receiving a user message from a user, and using a classifier to classify the user message into a classified input that is one of a question, an answer, and a statement. When the input is a question, the method includes determining a set of related answers related to the question from an answer database. The method determines a relevance score reflecting the degree of relevance between each related answer in the set of related answers and the question. A top answer is determined from the set of related answers based on the relevance score, and the method presents at least one of the top answer and the set of related answers to the user. When the input is an answer, the method stores the answer in the answer database.
Need to check novelty before this filing date? Find Prior Art

Description

Background Art

[0001] Disclosed herein are systems and related methods for answering questions in high-volume and multi-time-zone chat forums.

[0002] In a large discussion forum, or in a "channel" within a chat application for a specific purpose, many people may enter the forum at different times and from different time zones. Participants entering a channel for the first time are often unaware of the history of the channel, and may be unwilling or unable to browse back to all topics discussed in a timely manner, especially in channels with high traffic volume and / or with extensive historical information. Such a situation may become overwhelming for new or returning participants. For example, if fifteen or more questions have been asked in the past two months, it may be difficult for a new or returning participant to figure out which questions have been asked before and what the best answers to such questions are. Discussed here is an intelligent chat channel handler. Summary of the invention

[0003] According to one aspect disclosed herein, a computer-implemented method for processing chat channel communications in a chat application is provided. The method includes using a processor to perform various operations, including receiving a user message from a user, and using a classifier to classify the user message as a classification input that is one of a question, an answer, and a statement. In response to the classification input being a question, the method includes determining a set of related answers related to the question from an answer database. The method determines a relevance score reflecting the degree of relevance between each related answer in the set of related answers and the question. In addition, the method includes determining a top answer from the set of related answers based on the relevance score, and presenting at least one of the top answer and the set of related answers to the user. In response to the classification input being an answer, the method stores the answer in the answer database. In response to the classification input being a statement, the method discards the classification input. The method also includes receiving a feedback user message that rates the top answer, and modifying a reward score for the top answer based on the feedback user message to adjust future top answer responses.

[0004] According to another aspect disclosed herein, a chat channel processing system is provided, comprising a processor configured to receive a user message from a user and classify the user message into a classification input as one of a question, an answer, and a statement using a classifier. In response to the classification input being a question, the system determines a set of related answers related to the question from an answer database, determines a relevance score reflecting the degree of relevance between each related answer in the set of related answers and the question, and determines a top answer from the set of related answers based on the relevance score. The system presents at least one of the top answer and the set of related answers to the user. In response to the classification input being an answer, the system stores the answer in the answer database. In response to the classification input being a statement, the system discards the classification input. The system also receives a feedback user message rating the top answer, and modifies a reward score for the top answer based on the feedback user message to adjust future top answer responses.

[0005] Furthermore, embodiments may take the form of an associated computer program product accessible from a computer-usable or computer-readable medium providing program code for use by or in connection with a computer or any instruction execution system. For the purposes of this description, a computer-usable or computer-readable medium may be any device that may contain a mechanism for storing, communicating, propagating, or transmitting a program for use by or in connection with an instruction execution system, apparatus, or device. BRIEF DESCRIPTION OF THE DRAWINGS

[0006] Various embodiments are described herein with reference to different subject matters. In particular, some embodiments may be described with reference to methods, while other embodiments may be described with reference to devices and systems. However, one skilled in the art will deduce from the above and following description that, unless otherwise stated, any combination of features belonging to one type of subject matter, any combination between features relating to different subject matters (in particular, between features of methods and features of devices and systems) is also considered to be disclosed in this document.

[0007] The aspects defined above and other aspects disclosed herein are apparent from and are explained with reference to one or more examples of embodiments to be described below, but the invention is not limited thereto. Various embodiments are described only by way of example and with reference to the following drawings:

[0008] Figure 1 A cloud computing environment according to an embodiment of the present invention is depicted.

[0009] Figure 2 Depicted are abstract model layers according to an embodiment of the present invention.

[0010] Figure 3 is a block diagram of a DPS according to one or more embodiments disclosed herein.

[0011] Figure 4 is a block diagram of a chat system according to some implementations.

[0012] Figure 5A and Figure 5B is a portion of a flowchart of an overall process for operating an intelligent chat channel processor according to some embodiments.

[0013] Figure 6 is a flow diagram of a process for cleaning and vectorizing data according to some embodiments.

[0014] Figure 7 is a flow diagram of a process for classifying user input in accordance with some embodiments.

[0015] Figure 8 is a flow chart of a process for performing term frequency-inverse document frequency analysis according to various embodiments.

[0016] Fig. 9 is a flow diagram of a process for operating a reinforcement learning agent according to some embodiments.

[0017] Fig.10 is a flow diagram of a process for receiving user ratings and updating a rewards table according to some embodiments. DETAILED DESCRIPTION

[0018] Overview of the chat system

[0019] An intelligent chat channel processor (ICCP) may be provided as a component of a computer-based chat system or associated with a computer-based chat system. When a user is using a chat service, a user message triggers the ICCP to classify the user's message text to determine whether it is a question. If the user's message is a question, the ICCP matches the user's question with previously collected answers and context data so as to match the question with a relevant answer based on historical user feedback on the suitability of the answer to the given question.

[0020] Answer collection is achieved by using a question classification method to identify text that is not a question, and automatically determining whether the text has a high relevance to a previously identified question, thereby allowing it to subsequently save answers that score as highly relevant, which can then be used the next time a question related to the answer is asked. In order to collect answer data, ICCP monitors the message text of other users posted to the channel. When the message text of other users is classified as an answer to a question, ICCP stores the answer data of the other users in the answer database for future consumption. ICCP can also adjust the answer data by removing data that is outdated to a certain extent and still largely unreferenced, so that such answer data may be useless.

[0021] Answers provided by ICCP to questions posed by chat users may be provided as a chat "thread" for that question, with a confidence level and an indication of the original "responder" who provided the answer in the past. When an answer to a question is given by ICCP, users may then "vote" on whether a given answer is good or bad in the context of the question it is answering, thereby providing the system with a means to select higher rated answers in the future and avoid all poorly rated answers in the context of the question given.

[0022] By providing a "voting" mechanism within the chat, ICCP can learn which responses are most popular and change the "weights" for certain types of answers and original responders within the chat for future improvements to ICCP.

[0023] Thus, ICCP provides chat room users with the ability to ask questions, and ICCP finds the most likely answers to similar questions in the same chat room, placing one or more answers from within the same chat channel as a separate thread in the chat that can be used to further train ICCP. The system can do this by proactively collecting context-specific answers to similar questions in the same chat channel, and providing a collection of answers that users can vote on to further improve future answers.

[0024] According to some embodiments, ICCP can thus: provide "contextually relevant" answers to questions, learn question / answer pairs within the correct context, and / or learn which chat users can be trusted more for giving the "correct answers" to certain types of questions, provide a "thread" of answers so that the overall chat flow is not disrupted. Thus, there is no need to manually provide question / answer examples to the machine learning system, and for specific questions, there is no need to provide direct input queries to the machine.

[0025] These features of ICCP can be provided by a combination of systems, components and / or agents to provide an autonomous question answering system that can identify a user's message as a question, answer or statement without supervision or manual input. ICCP can automatically identify answers to questions and provide learned answers to identified questions by actively identifying and remembering answers in a forum environment using a recurrent neural network (RNN) and a term frequency (TF)-inverse document frequency (IDF) combination (TF-IDF). It can also use RNN, TF-IDF and reinforcement learning (RL) to identify and answer questions in a forum environment. In some embodiments, ICCP can learn the relevance of answers to questions based on user feedback, and use RL to actively learn from user feedback to select better answers.

[0026] According to some embodiments, various possible benefits can be achieved, including: the ability to discern between questions, answers, and statements without supervision or manual input, the ability to associate statements as answers to previously asked questions without manual input, actively identifying and remembering answers in a forum environment using a combination of RNNs and TF-IDF, identifying and answering questions in a forum environment using RNNs, TF-IDF, and RL, the ability to autonomously learn question-answer pairs without any prior input or definition of question-answer pairs, actively learn and respond without input or prompts, actively collect context-specific answers to similar questions in the same chat channel and provide a collection of answers that users can vote on to further improve future answers, automatically adjust the best answer responses through user feedback, and actively learn from user feedback using RL to select better answers.

[0027] According to some embodiments, the above feature combination may operate autonomously, with the only human interaction being the user asking questions in search of answers - which in some embodiments the user may rate.

[0028] The following acronyms may be used below:

[0029] API Application Programming Interface

[0030] ARM Advanced RISC Machine

[0031] CBOW Continuous Bag of Words

[0032] CD-ROM Compact Disc CD

[0033] CMS Content Management System

[0034] CoD Capacity on Demand

[0035] CPU Central Processing Unit

[0036] CUoD on-demand capability upgrade

[0037] DPS Data Processing System

[0038] DVD Digital Versatile Disc

[0039] EPROM Erasable Programmable Read Only Memory

[0040] FPGA Field Programmable Gate Array

[0041] HA High Availability

[0042] IaaS Infrastructure as a Service

[0043] ICCP Intelligent Chat Channel Processor

[0044] IDF Inverse Document Frequency

[0045] I / O Input / Output

[0046] IPL Initial Program Load

[0047] ISP Internet Service Provider

[0048] ISA Instruction Set Architecture

[0049] LAN Local Area Network

[0050] LPAR Logical Partition

[0051] PaaS Platform as a Service

[0052] PDA Personal Digital Assistant

[0053] PLA Programmable Logic Array

[0054] RAM Random Access Memory

[0055] RISC Reduced Instruction Set Computer

[0056] RL Reinforcement Learning

[0057] RNN Recurrent Neural Network

[0058] ROM Read Only Memory

[0059] SaaS Software as a Service

[0060] SAF S-shaped activation function

[0061] SLA Service Level Agreement

[0062] SRAM Static Random Access Memory

[0063] TF word frequency

[0064] WAN Wide Area Network

[0065] General cloud computing

[0066] It should be understood that although the present disclosure includes detailed descriptions about cloud computing, the implementation of the teachings recorded herein is not limited to cloud computing environments. Instead, embodiments of the present invention can be implemented in conjunction with any other type of computing environment now known or later developed.

[0067] Cloud computing is a service delivery model for enabling convenient, on-demand network access to a shared pool of configurable computing resources (e.g., networks, network bandwidth, servers, processing, memory, storage, applications, virtual machines, and services) that can be quickly provisioned and released with minimal management effort or interaction with service providers. The cloud model can include at least five characteristics, at least three service models, and at least four deployment models.

[0068] Features are as follows

[0069] On-demand self-service: Cloud consumers can unilaterally provision computing capabilities, such as server time and network storage, automatically on demand without requiring human interaction with the service provider.

[0070] Broad Network Access: Capabilities are available over the network and accessed through standard mechanisms that facilitate use by heterogeneous thin or thick client platforms (e.g., mobile phones, laptops, and PDAs).

[0071] Resource pooling: The computing resources of a provider are pooled to serve multiple consumers using a multi-tenant model, where different physical and virtual resources are dynamically assigned and reassigned as needed. There is a sense of location independence, as consumers typically have no control or knowledge of the exact location of the provided resources, but may be able to specify the location at a higher level of abstraction (e.g., country, state, or data center).

[0072] Rapid elasticity: Capacity can be quickly and elastically (in some cases, automatically) provisioned to quickly scale out and quickly released to quickly scale in. To the consumer, the capacity available for provisioning generally appears to be unlimited and can be purchased at any time in any quantity.

[0073] Measured services: Cloud systems automatically control and optimize resource usage by leveraging metering capabilities at some level of abstraction appropriate to the type of service (e.g., storage, processing, bandwidth, and active user accounts). Resource usage can be monitored, controlled, and reported, providing transparency to both providers and consumers of the services being employed.

[0074] The service model is as follows:

[0075] Software as a Service (SaaS): The capability provided to the consumer is to use the provider's applications running on the cloud infrastructure. The applications are accessible from a variety of client devices through a thin client interface such as a web browser (e.g., web-based email). The consumer does not manage or control the underlying cloud infrastructure including the network, servers, operating systems, storage, or even individual application capabilities, with the possible exception of limited user-specific application configuration settings.

[0076] Platform as a Service (PaaS): The capability provided to consumers is to deploy applications created or acquired by consumers onto cloud infrastructure, where the applications are created using programming languages ​​and tools supported by the provider. Consumers do not manage or control the underlying cloud infrastructure including networks, servers, operating systems, or storage, but have control over the deployed applications and possibly the configuration of the application hosting environment.

[0077] Infrastructure as a Service (IaaS): The capability provided to consumers is the provisioning of processing, storage, networking, and other basic computing resources, on which consumers can deploy and run arbitrary software, which may include operating systems and applications. Consumers do not manage or control the underlying cloud infrastructure, but have control over the operating system, storage, deployed applications, and possibly limited control over selected networking components (e.g., host firewalls).

[0078] The deployment model is as follows:

[0079] Private Cloud: Cloud infrastructure is operated solely for an organization. It can be managed by the organization or a third party and can exist on-premises or off-premises.

[0080] Community Cloud: Cloud infrastructure is shared by several organizations and supports a specific community with shared concerns (e.g., mission, security requirements, policies, and compliance considerations). It can be managed by the organization or a third party and can exist on-premises or off-premises.

[0081] Public cloud: Cloud infrastructure is made available to the public or large industry groups and is owned by the organization that sells cloud services.

[0082] Hybrid cloud: A cloud infrastructure is a combination of two or more clouds (private, community, or public) that remain unique entities but are bound together by standardized or proprietary technologies that enable data and application portability (e.g., cloud bursting for load balancing between clouds).

[0083] The cloud computing environment is service-oriented and focuses on statelessness, low coupling, modularity, and semantic interoperability. The core of cloud computing is the infrastructure that includes a network of interconnected nodes.

[0084] See now Figure 1 , depicts an illustrative cloud computing environment 50. As shown, the cloud computing environment 50 includes one or more cloud computing nodes 10, and local computing devices used by cloud consumers (such as, for example, personal digital assistants (PDAs) or cellular phones 54A, desktop computers 54B, laptop computers 54C, and / or automotive computer systems 54N) can communicate with one or more cloud computing nodes 10. Nodes 10 can communicate with each other. They can be physically or virtually grouped (not shown) in one or more networks, such as the private clouds, community clouds, public clouds, or hybrid clouds described above, or a combination thereof. This allows the cloud computing environment 50 to provide infrastructure, platforms, and / or software as services without the cloud consumer needing to maintain resources on local computing devices. It should be understood that Figure 1 The types of computing devices 54A-54N shown in are intended to be illustrative only, and computing node 10 and cloud computing environment 50 may communicate with any type of computerized device over any type of network and / or network addressable connection (eg, using a web browser).

[0085] See now Figure 2 , showing the cloud computing environment 50 ( Figure 1 ) provides a set of functional abstraction layers. It should be understood in advance that Figure 2 The components, layers, and functions shown in are intended to be illustrative only, and embodiments of the present invention are not limited thereto. As depicted, the following layers and corresponding functions are provided:

[0086] The hardware and software layer 60 includes hardware and software components. Examples of hardware components include: host 61; server 62 based on RISC (Reduced Instruction Set Computer) architecture; server 63; blade server 64; storage device 65; and network and networking components 66. In some embodiments, software components include network application server software 67 and database software 68.

[0087] Virtualization layer 70 provides an abstraction layer from which the following examples of virtual entities can be provided: virtual servers 71 ; virtual storage 72 ; virtual networks 73 , including virtual private networks; virtual applications and operating systems 74 ; and virtual clients 75 .

[0088] In one instance, the management layer 80 may provide the functionality described below. Resource provisioning 81 provides dynamic acquisition of computing resources and other resources used to perform tasks within a cloud computing environment. Metering and pricing 82 provides cost tracking when resources are employed within a cloud computing environment, and bills or invoices for the consumption of these resources. In one example, these resources may include application software licenses. Security provides authentication of cloud consumers and tasks, as well as protection of data and other resources. User portal 83 provides access to the cloud computing environment for consumers and system administrators. Service level management 84 provides cloud computing resource allocation and management so that the required service levels are met. Service level agreement (SLA) planning and fulfillment 85 provides pre-scheduling and acquisition of cloud computing resources, anticipating future requirements for cloud computing resources based on the SLA.

[0089] The workload layer 90 provides examples of functions that can employ a cloud computing environment. Examples of workloads and functions that can be provided from this layer include: mapping and navigation 91; software development and lifecycle management 92; virtual classroom education delivery 93; data analysis processing 94; transaction processing 95; and mobile desktop 96.

[0090] General data processing system

[0091] Figure 3 1 is a block diagram of an example DPS according to one or more embodiments. The DPS may be used as a cloud computing node 10. In this illustrative example, DPS 100 may include a communication bus 102 that may provide communications between a processor unit 104, a memory 106, a persistent storage 108, a communication unit 110, an I / O unit 112, and a display 114.

[0092] Processor unit 104 is used to execute instructions of software that may be loaded into memory 106. Processor unit 104 may be a plurality of processors, a multi-core processor, or some other type of processor, depending on the specific implementation. The numbers used as reference items in this article represent one or more items. In addition, processor unit 104 may be implemented using a plurality of heterogeneous processor systems, in which a main processor is present on a single chip with a secondary processor. As another illustrative example, processor unit 104 may be a symmetric multiprocessor system comprising a plurality of processors of the same type.

[0093] Memory 106 and permanent storage 108 are examples of storage devices 116. A storage device may be any hardware capable of storing information such as, for example, but not limited to, data, program code in the form of functions, and / or other suitable information on a temporary basis and / or a permanent basis. In these examples, memory 106 may be, for example, a random access memory or any other suitable volatile or non-volatile storage device. Persistent storage 108 may take a variety of forms, depending on the particular implementation.

[0094] For example, permanent storage 108 may include one or more components or devices. For example, permanent storage 108 may be a hard drive, a flash memory, a rewritable optical disk, a rewritable magnetic tape, or some combination thereof. The media used by permanent storage 108 may also be removable. For example, a removable hard drive may be used for permanent storage 108.

[0095] In these examples, communication unit 110 can provide communications with other DPSs or devices. In these examples, communication unit 110 is a network interface card. Communication unit 110 can provide communications using one or both of physical and wireless communication links.

[0096] Input / output unit 112 may allow for input and output of data with other devices that may be connected to DPS 100. For example, input / output unit 112 may provide a connection for user input via a keyboard, a mouse, and / or some other suitable input device. Additionally, input / output unit 112 may send output to a printer. Display 114 may provide a mechanism for displaying information to a user.

[0097] Instructions for the operating system, applications, and / or programs may be located in storage devices 116, which are in communication with processor unit 104 via communication bus 102. In these illustrative examples, the instructions are located in functional form on persistent storage 108. These instructions may be loaded into memory 106 for execution by processor unit 104. The processes of the different embodiments may be performed by processor unit 104 using computer-implemented instructions, which may be located in a memory, such as memory 106.

[0098] These instructions are referred to as program code, computer usable program code, or computer readable program code that can be read and executed by a processor in processor unit 104. The program code in different embodiments may be embodied on different physical or tangible computer readable media, such as memory 106 or persistent storage 108.

[0099] Program code 118 may be located in functional form on a selectively removable computer-readable medium 120 and may be loaded or transferred to DPS 100 for execution by processor unit 104. In these examples, program code 118 and computer-readable medium 120 may form a computer program product 122. In one example, computer-readable medium 120 may be a computer-readable storage medium 124 or a computer-readable signal medium 126. Computer-readable storage medium 124 may include, for example, an optical or magnetic disk that is inserted or placed into a drive or other device that is part of permanent storage 108 for transfer to a storage device (such as a hard drive) that is part of permanent storage 108. Computer-readable storage medium 124 may also take the form of permanent storage connected to DPS 100, such as a hard drive, thumb drive, or flash memory. In some instances, computer-readable storage medium 124 may not be removable from DPS 100.

[0100] Alternatively, the program code 118 may be transmitted to the DPS 100 using a computer readable signal medium 126. The computer readable signal medium 126 may be, for example, a propagated data signal containing the program code 118. For example, the computer readable signal medium 126 may be an electromagnetic signal, an optical signal, and / or any other suitable type of signal. These signals may be transmitted via a communication link, such as a wireless communication link, a fiber optic cable, a coaxial cable, an electrical wire, and / or any other suitable type of communication link. In other words, in the illustrative examples, the communication link and / or connection may be physical or wireless.

[0101] In some demonstrative embodiments, program code 118 may be downloaded from another device or DPS over a network to persistent storage 108 via computer-readable signal media 126 for use within DPS 100. For example, program code stored in a computer-readable storage medium in a server DPS may be downloaded from the server over a network to DPS 100. The DPS providing program code 118 may be a server computer, a client computer, or some other device capable of storing and transmitting program code 118.

[0102] The different components shown for DPS 100 are not meant to provide architectural limitations to the manner in which different embodiments may be implemented. The different illustrative embodiments may be implemented in a DPS including components in addition to or in place of those shown for DPS 100.

[0103] Intelligent Chat Channel Processor (ICCP)

[0104] System Overview

[0105] Figure 44 is a block diagram showing a set of interactive components 400 including an intelligent chat channel processor (ICCP) 410, which extends an existing chat application 300 with a chatbot 310 for a specific chat channel. The ICCP 410 can be implemented separately from the chat application 300, but communicates with the chat application 300, or the ICCP 410 can form an integral part of the chat application 300. The user 200 and other and / or historical users 205 can interact with the chat application 300 as they do in traditional systems. In some implementations, separate chatbots 310 can form part of the chat application 300 and address different topics, issues, etc. The ICCP 410 can be implemented, for example, on the DPS 100 and / or designed to operate in a cloud computing environment 50.

[0106] ICCP 410 may include a data cleaner and vectorizer 412 that takes text input from user 200 and other / historical users 205 and converts them into vectorized messages. User input classifier 415 may be in the form of an RNN agent that takes vectorized messages and classifies them as questions, answers, or statements. Statements may be in the form of answers, but without any related questions to which they apply. TF-IDF routine 420 may be used to search for related / relevant questions and answers in a corresponding database. RL agent 430 may be used to determine the best element from a set of elements. Voting and RL update routine 440 may be used to receive answer rating input from user 200 and subsequently update RL agent 430. The chat application 300 and ICCP 410 may employ information associated with a chat database 450, which includes a user trust rating 455, a recent question database 460, and an answer database 465, which itself may include a reward value table 467 containing reward values ​​associated with answers in the answer database 465. All or part of the chat database 450 may be included in the chat application 300, the ICCP 410, or both. These components are best described below in terms of the processes / functions they perform and in terms of their interactions with each other and with entities outside of the ICCP 410. The data cleaner and vectorizer 412 may be associated with the operation 530 ( Figure 5A ) and process 600( Figure 6 ). The user input classifier (RNN agent) 415 can be associated with operation 535 ( Figure 5A ) and process 700( Figure 7 ) is associated with the TF-IDF routine 420. The TF-IDF routine 420 may be associated with the process 800 ( Figure 8 ) is associated with the following two operations: Operation 545 when using the recent question database 460 ( Figure 5B) and operation 570 when answer database 465 is used ( Figure 5B RL agent 430 can communicate with process 900 ( Fig. 9 ) and the voting routine and RL update 440 can be associated with process 1000 ( Fig.10 ) is associated with.

[0107] Processing Overview

[0108] Figure 5A and Figure 5B 5 is a portion of an overall process 500 that may be used in accordance with some embodiments described herein. The operations of the process have been shown as part of a standard flow (these operations include operations 510-540, shown with cross-hatching), part of a problem branch (these operations include operations 505 and 565-585, shown with diagonal shading), or part of a statement branch (these operations include operations 545-560, shown with horizontal shading).

[0109] In operation 510, the ICCP 410 receives a user 200 message posted to a chat channel received as a chat event 515. The receipt of the message may trigger an application program interface (API) event, which in operation 520 sends an event message to any relevant chatbots 525 (310) of the chat application 300 that are currently subscribed to the API. The API event message may then be retrieved by the corresponding chatbot 310. In operation 530, the content of the message is cleaned up and a vectorized copy of the message is created for further processing.

[0110] In operation 535, in some implementations, the ICCP410 may use a recursive neural network (RNN) agent as a user input classifier 415 to determine the type of message (question, answer, or statement). An RNN is a type of deep neural network created by recursively applying the same set of weights to a structured input to produce structured predictions for a variable-sized input structure by traversing a given structure in a topological order, or to produce scalar predictions for a variable-sized input structure. RNNs can be used to learn sequences and tree structures in natural language processing, primarily continuous representations of phrases and sentences based on word embeddings. In operation 540, if the classifier 415 determines that the message is not a question (i.e., a non-question message) (540: N), then in operation 545, the ICCP410 may perform a term frequency (TF)-inverse document frequency (IDF) (TF-IDF) determination of relevance. Refer to the following. Figure 8460. The relevance of the non-question message to the recent question database 460 is performed to determine the relevance of the non-question message to the questions in the recent question database 460. Although the ICCP 410 has determined that the user input is a non-question, it is still unknown whether the user input constitutes an answer because the non-question may not be related to any question in the recent question database 460. Thus, the recent question database 460 causes the TF-IDF process 800 to be performed on a given string (non-question message) and returns the TF-IDF scores of a set of related questions (i.e., questions from the recent question database 460 that are related to the non-question message) that meet a predefined threshold.

[0111] In operation 550, the RNN agent 415 may determine that the message is not an answer (550: N). This determination may be made if the highest TF-IDF score of any question in the recent questions database 460 does not meet some predefined question relevance threshold. In this case, in operation 555, the message is discarded because it is neither a question nor an answer to a recent question. Otherwise (550: Y), the non-question message has been determined to be an answer because the highest TF-IDF score meets the predefined relevance threshold. In this case, in operation 560, the answer may be stored in the answers database 465 for future retrieval when the question is given, and processing continues at operation 570, as described below.

[0112] If the message is a question (540: yes), then in operation 565, the message is stored in the recent question database 460. In operation 570, the TF-IDF process 800 is performed on the answer database 465, and in operation 575, the top n (e.g., 10) answers with the greatest match to the question are returned as a set of relevant answers by their scores from the TF-IDF process 800. The maximum match can be determined by a relevance score (in this embodiment, a TF-IDF score) that reflects the degree of relevance between each relevant answer in the set of relevant answers and the question. If the TF-IDF score of an answer in the answer database 465 is one of the "n" highest scores, it can be considered an answer to the question. Any number of answers can be specified, for example, by program parameters, user specifications, etc. In some embodiments, if the TF-IDF score exceeds a certain threshold, it can be considered an answer to one of the recent questions. When performed on the answer database in operation 570, the highest TF-IDF score can be considered, and the highest TF-IDF score can be considered the answer most relevant to the question. However, when performed in operation 545 for the recent questions database 460 , the highest TF-IDF score is not required, since the main interest is to obtain questions that violate a predefined threshold.

[0113] In operation 580, these top n answers are passed to the RL agent 430, which performs process 900 and uses the question vector as the state (i.e., the question to which the subsequent operation relates), and in operation 585 (925), the RL agent 430 may select the best answer from the top answers returned by score and according to the previous user 200 feedback score associated with the question. The process may return to the operation of the chatbot 525 upon receipt of another event message.

[0114] The question may be determined "in context" in that different contexts of the same question may return different answers. For example, the question "What are the necessary documents" may have very different answers depending on whether the question is asked by a buyer in a real estate transaction or by a real estate agent. Context determination may be performed using word embeddings, which may provide vectors that give a particular word a position in a multidimensional space where words with similar meanings are closer to that word. For example, these word embeddings may be initially created using one of two methods: a continuous bag of words (CBOW) approach and a skipgram approach, where, for example, a CBOW model gives a neural network a sentence with one word missing; the neural network then predicts the missing word based on the context of the sentence. This combined with TF-IDF may be used to locate answers based on their similarity to the "highest value words" in the query. An RL agent that selects answers based on feedback from previous users may help determine this context.

[0115] Data cleaning and vectorization

[0116] Figure 6 600 (530) is a flow chart of the operation of the data cleaner and vectorizer 412 according to some embodiments, and the data cleaner and vectorizer 412 is used to clean and vectorize the received user message. In operation 605, the user message can be received as a data string originating from the user 200, for example. In operation 610, the string is tokenized into individual tokens. In some embodiments, each word can be taken from the string and placed into an array, but any form of data organization for tagging can be used. By way of illustrative example, the string "Who is running for president?" can be converted into an array or vector ["who", "is", "running", "for", "president?"].

[0117] In operation 615, special characters can be removed from the string. Based on the previous example, the string "President?" can be converted to just "President". In operation 620, stop words can be removed. Stop words are words that are filtered out before or after processing natural language data (text). Stop words are the most commonly used words that provide little or no valuable information. Based on the previous example, "is" and "for" can be considered as stop words that are removed, leaving the vector ["who", "running", "President"]. Any set of words can be selected as stop words for a given purpose.

[0118] In operation 625, the words may be stemmed to shorten the number of unique words that must be compared for easier computation. A word may have a single stem, i.e., the portion common to all inflected variants of the word. Thus, in this usage, all derivational affixes are part of the stem. For example, the stem of "friendships" is "friendship" with the inflectional suffix -s appended. The stem may be a root, such as run, or the stem may be morphologically complex, as in a compound word (e.g., the compound noun "meat ball" or "bottle opener") or a word with derivational morphemes (e.g., the derived verbs "black-en" or "standard-ize"). Thus, the stem of the complex English noun "photographer" is "photo·graph·er", not "photo". As another example, the root of the English verb form "destabilized" is "stabil-", which is a form of "stable" that does not appear alone; the stem is "de·stabilize", which includes the derivational affixes de- and -ize, but does not include the inflected past tense suffix -(e)d. That is, the stem is the portion of the word to which the inflected affix is ​​attached. According to the previous example, the word "running" is stemmed as "run", resulting in the final cleaned data as a vector ["who", "run", "president"]. The actual data strings within the vector can be tokenized into integers, thereby creating a tokenized message vector representing the user's message. A copy of the cleaned data is vectorized into a numbered form, where each word is converted to an integer representing the word. These vectors can be padded or truncated to a common length. Integers can be used to create uniformly distributed word embeddings of fixed-length weights (e.g., a vector of length 32 with weights between -1 and 1) and input to the RNN.

[0119] For example, each word can be mapped to a unique integer, for example, the word "run" can be mapped to the integer 42, so whenever the word "run" appears in a sentence, it will be replaced by the number 42. Then the word embedding matrix can be used, which can be provided by an integer mapping routine in a library, such as Google's Word2Vec or Stanford University's GloVe. Then, the integer 42 can be used as a mapping to the 42nd index of the word embedding matrix, and the word embedding of the word "run" is located in the 42nd index. The word embedding can be a vector of a set length (e.g., 32) given by the integer mapping routine, which can then provide a vector of weights for use in RNN415. The vector is a simple set of values ​​representing the position of the word in a multidimensional space, thereby allowing the word to be measured in proximity to other words, where the distance to another word in the multidimensional space is related to the similarity of the word to the other word in meaning. These weights can then be processed by the mathematical pipeline of RNN415, which outputs a probability set between 0 and 1, etc. In operation 630, the newly created vector representing the string is returned.

[0120] User Input Classifier (RNN)

[0121] Figure 7 700 (535) is a flow chart of the operation of the user input classifier 415 according to some embodiments. In some embodiments, the classifier 415 is an RNN agent, as described above. The following operations are described in an embodiment where words are tokenized into integers and user messages are cleaned and vectorized into integer vectors. However, other embodiments are also contemplated in which different representations of messages are employed in classification.

[0122] In operation 705, the classifier 415 receives an integer vector message, and the process iterates through the integers that make up the vector message by looping between operations 710 and 720, thereby incrementing the 710 integer index and propagating one integer at a time. When the iteration is not completed (operation 720: N), the process continues to loop and fetches the next integer at operation 720. At each iteration, in operation 715, the activation of the current word integer is determined. Each vector is forward propagated in the RNN, thereby multiplying with the hidden layer of long short-term memory (LSTM) units. A "dropout" layer can be used to prevent overfitting of the data.

[0123] As an illustrative example, a given vector with a length of 32 is input to the input layer of the RNN, which will be of fixed length. If we know that word embeddings will all be of length 32, the input layer will also be a 32-length layer or a 32-node layer. Then, the input layer will be connected to the hidden layer via a set of weights, which can be, for example, a layer of 150 nodes. In this case, there will be 32x150 weights, each of which has been initialized to a random value and adjusted by training. These 32 input values ​​are then multiplied by the 32 weights connected to the first node in the hidden layer, then proceed to the second node, etc., and the resulting vectors at each hidden node are summed to create 150 values, and then each of these 150 values ​​is compressed (squash) into a value between 0 and 1 by an activation function (e.g., a sigmoid function), which represents an activation value or probability. The probability set is then looped back to combine the next input value set from the next input vector, thereby adding to the hidden node output of the next round.

[0124] Once all vectors are processed, the final hidden node output is connected to the output layer, in this case a layer of 2 nodes, which again will be connected via a set of weights resulting in 150x2 weights, thereby repeating a process similar to that of the input to the hidden layer, but outputting only two values, which will be a set of probabilities between the values ​​0 and 1, which when added together will equal 1.

[0125] Overfitting occurs when the model is overfitted specifically to the training data, resulting in lower accuracy when given data that was not previously provided to the model. "Dropout" removes repetitive connections that do not carry important information. The output from the LSTM unit is fed back to the input of the next word embedding of the next word in the sequence, thereby creating a feedback loop. When the iteration is complete (operation 720: yes), that is, all words in the vector message have been processed and there are no more words left in the sequence, the result (the vector of the sum generated by multiplying the weight set with the value generated by the hidden layer of the RNN) can be fed to the S-shaped (Sigmoid) activation function, which outputs a vector of two numbers between 0 and 1. Using the above example, there are 150 nodes in the hidden layer and two nodes in the output layer. The results of the 150 hidden layer nodes are multiplied by the 150 weights connected to one of the outputs, and the results of the 150 hidden layer nodes are multiplied by the other 150 weights connected to another output node, thereby generating a pair of vectors, which are then summed to create two values. Once a sigmoid activation function (SAF) is applied to these two values, they are normalized between 0 and 1, giving a probability pair for each output. The process proceeds to operation 735.

[0126] In operation 735, the vector index that creates the maximum activation is determined. This refers to the index of the two values ​​that are the maximum (index (maximum (output vector))). For example, given the vector index [0.75, 0.25], the function provides the index of the value 0.75 in the vector. In this example, it would be index 0, where, for example, element 0 may represent an activation value of "yes" and element 1 may represent an activation value of "no". So, if element 0 is greater than element 1, it is classified as "yes". In operation 740, for example, if the maximum index is not at index 0 (740: N), then in operation 745, the vector message can be classified as a non-question (statement or answer, parsed at operations 545, 550). Otherwise (740: Yes), in operation 750, the vector message can be classified as a question, and processing 700 proceeds to processing 900.

[0127] Term Frequency-Inverse Document Frequency (TF-IDF) Processing

[0128] Figure 8 is a flow chart of a TF-IDF process 800 that may be performed by the TF-IDF routine 420 according to some embodiments. This process may be employed, for example, for the recent question list 460 in operation 545 above and for the answer database 465 in operation 570 above. Figure 8 The “documents” described below refer to these corresponding elements (questions in the recent questions database 460 for operation 545, and answers in the answers database 465 for operation 570) in a generic manner.

[0129] TF-IDF is a numerical statistic that reflects how important a term is to documents in a collection or corpus. It is often used as a weighting factor in searches for information retrieval, text mining, and user modeling. TF-IDF values ​​increase proportionally to the number of times a term appears in a document and are biased by the number of documents in the corpus that contain the term, which helps adjust for the fact that some terms tend to appear more frequently than others. The TF–IDF weighting scheme can be used to score and rank the relevance of documents given a user query. TF–IDF is the product of two statistics: term frequency and inverse document frequency.

[0130] In the case of TF, the simplest option is to use the raw counts of the terms in the document, i.e. the number of times the term appears in the document, although other known variations can be used. For example, given a collection of English text documents and the desire to rank which documents are most relevant to the query "the brown cow", a simple way to start is by eliminating documents that do not contain all three words "the", "brown", and "cow", but this still leaves many documents. To distinguish them further, we can count the number of times each term appears in each document; the number of times a term appears in a document is called the term frequency of the term. However, in cases where the length of documents varies greatly, adjustments can be made. One form of term weighting can be summarized as: the weight of a term appearing in a document is simply proportional to the term frequency.

[0131] IDF is a measure of how much information the word provides, i.e., whether the word is common or rare in all documents. It is the logarithmically scaled inverse score of the documents containing the word (obtained by dividing the total number of documents by the number of documents containing the term and then taking the logarithm of the quotient). For example, because the term "the" is so common, the term frequency will tend to incorrectly emphasize documents that happen to use the word "the" more frequently, without giving enough weight to the more meaningful terms "brown" and "cow". The term "the" is not a good keyword for distinguishing between relevant and irrelevant documents and terms, unlike the less common words "brown" and "cow". Therefore, an inverse document frequency factor is incorporated, which reduces the weight of terms that appear very frequently in a document collection and increases the weight of terms that appear rarely. The specificity of a term can be quantified as an inverse function of the number of documents in which the term appears.

[0132] TF–IDF is then calculated as the product of TF and IDF. A high weight in TF–IDF is achieved by a high term frequency (in a given document) and a low document frequency in the entire document collection; therefore, the weight tends to filter out common terms. Since the ratio within the logarithm (log) function of IDF is always greater than or equal to 1, the value of IDF (and TF–IDF) is greater than or equal to 0. As a term appears in more documents, the ratio within the logarithm approaches 1, making IDF and TF–IDF closer to 0.

[0133] In operation 805, ICCP 410 may retrieve the total number of documents in the database (recent question list 460 or answer database 465). In operation 810, for all terms / words, ICCP 410 obtains the number of documents in which the term / word exists (e.g., if there are 50 documents and the term exists in 25).

[0134] In operation 815, ICCP 410 generates an IDF value for the term, which can be calculated by taking the total document count and dividing the total document count by the number of documents in which the term appears and taking the natural logarithm of the result. To avoid dividing by 0, 1 can be added on both sides.

[0135] In operation 820, the input string is used to find a term frequency (TF) value for each term, where TF is the number of times the term appears in the string divided by the number of unique terms in the string (e.g., given the string "The current Queen is Queen Elizabeth", which becomes "current Queen Queen Elizabeth" after cleaning in process 600, the TF value of "Queen" is 2 / 3 because there are 3 unique terms and "Queen" appears 2 times).

[0136] In operation 825, the TF value from the string is multiplied by the IDF value in each document to generate a TF-IDF score (e.g., using the previous string, where the TF for "Queen" is 0.66, the TF value of the string is multiplied by the IDF value of the document, where the document may contain the terms "current" and "Queen" but not "Elizabeth", resulting in TF(current) = 0.33 times IDF(current), TF(Queen) = 0.66 times IDF(Queen), and TF(Elizabeth) = 0.33 times 0 because the term "Elizabeth" is not in the document. In operation 830, these calculations are summed for the document to get the TF-IDF score, and in operation 835, the score is returned.

[0137] Reinforcement Learning (RL) Agent Processing

[0138] Fig. 9900 (540: yes, 750) of the reinforcement learning (RL) agent process 900 of the operation of the RL agent 430 once a message has been classified as a question in accordance with some embodiments. In operation 905, the RL agent 430 receives an integer vector representing the question string (message) previously passed to the RNN agent 415, and uses the vector as the current (question) state. The state is a representation of the current question being asked. In general, such a state can be a representation of the current state of the world or environment around the agent, allowing the agent to take actions based on the current state. In the current case, the integer vector representing the words in the question can be used as a state to present to the agent to make a decision. The current question vector can be passed to a recent question database 460 containing recent questions (e.g., in the form of an integer vector), which can be used to determine whether the statement previously determined in operation 745 is an answer to the current question or another question.

[0139] TF-IDF process 800 is performed on answer database 465 (operation 570), and the closest matching answer is found in operation 910. A set of actions (here, a set of answers) is received from TF-IDF process 800 from which RL agent 430 can select.

[0140] In operation 915, using the reward table 467 for the question state, the RL agent 430 can look up the previous reward score (related to the user rating) from the reward table 467 for each available action (available answers that have been returned by the TF-IDF system), and select 920 the action that maximizes its reward. Wherein, initially each newly discovered state (a state is a question / integer vector representing a word in a question, and a newly discovered state is a state / question that has not yet been seen by the RL agent) will start with a reward score of 0 for all available actions. When user 200 provides positive or negative feedback to the posted answer provided by ICCP (see Fig.10 , following process 1000), the RL agent 430 adds a positive or negative value to the reward value of the action associated with the state / problem.

[0141] In operation 925, the RL agent 430 may return a final list of the best answers according to the reward scores to the chatbot 310. The chatbot 310 may then post the final list of the best answers to the chat channel using the chat API, and then monitor positive or negative feedback (e.g., thumbs up or thumbs down, star rating system or other forms of ratings for each answer posted), and reward or penalize the reward value 467 of the answer accordingly, such as Fig.10 The process 1000 is shown in FIG.

[0142] In some embodiments, the number of questions stored or searched may be limited in some way to prevent large storage requirements. The limitation may involve filtering by, for example, recency, rating, etc.

[0143] Updating the RL Agent

[0144] Fig.10 1 is a flow chart of a process 1000 for collecting user 200 feedback according to some embodiments, which user 200 feedback can be used to increase or decrease the weight value of the answer. These weight values ​​are presented to the RL agent 430 and are subsequently used to determine the total score of the answer. In operation 1005, the user 200 can rate the answer provided by the chat application 300 in order to provide feedback. The rating can be completed by using a scale (such as 0 to 5), where the user 200 enters a specific rating on the scale. For example, the scale can be presented to the user 200 in the form of stars, and the user 200 can select the rating number by selecting the number of stars corresponding to the rating of the user 200. Any form of rating provided by the user can be adopted. In operation 1010, the system can determine whether the rating is a positive rating or a negative rating. For example, if the scale is 0 to 5, a rating of 2 or less can be considered negative, and a rating of 3 or more can be considered positive.

[0145] In some embodiments, if the rating is negative (1010: N), then in operation 1015, the user trust rating for a particular answer may be multiplied by negative 1. If the rating is positive (1010: P), then the user trust rating is multiplied by positive 1. For example, if the user has a trust rating of 30 and rates positively, then a value of 30 is added to the reward value of that answer associated with the state / question in the RL agent's reward table, making it more likely that the RL agent will select that answer the next time that question is asked in the same or similar context. Conversely, given negative feedback, a value of 30 is subtracted from the reward value, so that the RL agent is less likely to select that answer given the same question in the same or similar context.

[0146] The above embodiment is only one way that the user's rating can be input into the system, and the present invention contemplates many other ways. In operation 1030, the result can be added to the reward value of the answer, and in operation 1035, the reward table of the RL agent can be updated with the new value.

[0147] Technology Application

[0148] Thus, one or more embodiments disclosed herein provide improvements to computer technology. For example, improvements to chat applications allow users to conduct more efficient and effective computer communications. By providing users with the ability to provide relevant information that already exists in a chat database, the application can significantly improve the efficiency of the chat application.

[0149] Computer readable medium

[0150] The present invention may be a system, method and / or computer program product at any possible level of technical detail integration. The computer program product may include a computer-readable storage medium (or multiple media) having computer-readable program instructions thereon, and the computer-readable program instructions are used to cause a processor to perform various aspects of the present invention.

[0151] Computer readable storage medium can be a tangible device that can retain and store instructions for use by instruction execution devices. Computer readable storage medium can be, for example, but not limited to, electronic storage devices, magnetic storage devices, optical storage devices, electromagnetic storage devices, semiconductor storage devices, or any suitable combination of the foregoing. A non-exhaustive list of more specific examples of computer readable storage medium includes the following: portable computer disk, hard disk, random access memory (RAM), read-only memory (ROM), erasable programmable read-only memory (EPROM or flash memory), static random access memory (SRAM), portable compact disk read-only memory (CD-ROM), digital versatile disk (DVD), memory stick, floppy disk, mechanical encoding device (such as punch card or the convex structure in the groove with instructions recorded thereon), and any suitable combination of the foregoing. Computer readable storage medium as used herein should not be interpreted as transient signal itself, such as radio wave or other free propagating electromagnetic wave, electromagnetic wave propagated by waveguide or other transmission medium (for example, light pulse by fiber optic cable), or electrical signal transmitted by wire.

[0152] The computer-readable program instructions described herein may be downloaded from a computer-readable storage medium to a corresponding computing / processing device, or downloaded to an external computer or external storage device via a network (e.g., the Internet, a local area network, a wide area network, and / or a wireless network). The network may include copper transmission cables, optical transmission fibers, wireless transmissions, routers, firewalls, switches, gateway computers, and / or edge servers. The network adapter card or network interface in each computing / processing device receives the computer-readable program instructions from the network, and forwards the computer-readable program instructions to be stored in a computer-readable storage medium within the corresponding computing / processing device.

[0153] The computer-readable program instructions for performing the operation of the present invention may be assembly instructions, instruction set architecture (ISA) instructions, machine instructions, machine-related instructions, microcode, firmware instructions, state setting data, configuration data of an integrated circuit, or source code or object code written in any combination of one or more programming languages, including object-oriented programming languages ​​(such as Smalltalk, C++, etc.) and procedural programming languages ​​(such as "C" programming languages ​​or similar programming languages). The computer-readable program instructions may be executed completely on the user's computer, partially on the user's computer, executed as an independent software package, partially on the user's computer, partially on a remote computer, or completely on a remote computer or server. In the latter case, the remote computer may be connected to the user's computer via any type of network (including a local area network (LAN) or a wide area network (WAN)), or may be connected to an external computer (e.g., via the Internet using an Internet service provider). In some embodiments, an electronic circuit (including, for example, a programmable logic circuit, a field programmable gate array (FPGA), or a programmable logic array (PLA)) may execute a computer-readable program instruction to personalize the electronic circuit by using the state information of the computer-readable program instructions, so as to perform various aspects of the present invention.

[0154] Various aspects of the present invention are described herein with reference to flowchart illustrations and / or block diagrams of methods, devices (systems) and computer program products according to embodiments of the present invention. It should be understood that each box in the flowchart illustration and / or block diagram and the combination of each box in the flowchart illustration and / or block diagram can be implemented by computer-readable program instructions.

[0155] These computer-readable program instructions may be provided to a processor of a general-purpose computer, a special-purpose computer, or other programmable data processing device to produce a machine, such that the instructions executed via the processor of the computer or other programmable data processing device create a device for implementing the functions / actions specified in one or more blocks of the flowchart and / or block diagram. These computer-readable program instructions may also be stored in a computer-readable storage medium, which may direct a computer, a programmable data processing device, and / or other equipment to function in a particular manner, such that the computer-readable storage medium having the instructions stored therein includes an article of manufacture, which includes instructions for implementing various aspects of the functions / actions specified in one or more blocks of the flowchart and / or block diagram.

[0156] Computer-readable program instructions may also be loaded onto a computer, other programmable data processing apparatus, or other device, so that a series of operational steps are performed on the computer, other programmable apparatus, or other device to produce a computer-implemented process, so that the instructions executed on the computer, other programmable apparatus, or other device implement the functions / actions specified in one or more boxes of the flowchart and / or block diagram.

[0157] The flow chart and block diagram in the accompanying drawings illustrate the architecture, function and operation of the possible implementation of the system, method and computer program product according to various embodiments of the present invention.In this respect, each square block in the flow chart or block diagram can represent a part of a module, segment or instruction, which includes one or more executable instructions for realizing the specified logical function.In some alternative implementations, the function marked in the square block may not occur in the order marked in the figure.For example, depending on the function involved, the two square blocks shown in succession can actually be performed substantially at the same time, or these square blocks can sometimes be performed in reverse order.It will also be noted that each square block in the block diagram and / or flow chart description, and the combination of the square blocks in the block diagram and / or flow chart description can be realized by a system based on special-purpose hardware, and the system based on special-purpose hardware performs specified functions or actions, or performs a combination of special-purpose hardware and computer instructions.

[0158] The description of various embodiments of the present invention has been presented for the purpose of illustration, but is not intended to be exhaustive or limited to the disclosed embodiments. Many modifications and variations will be apparent to those of ordinary skill in the art without departing from the scope and spirit of the described embodiments. The terms used herein are selected to best explain the principles of the embodiments, practical applications, or technical improvements over technologies found in the marketplace, or to enable those of ordinary skill in the art to understand the embodiments disclosed herein.

Claims

1. A method for processing chat channel communications in a chat application, the method comprising using a processor to: receiving user messages from users; classifying the user message into a classification input as one of a question, an answer, and a statement using a classifier; In response to the categorized input is the question: determining a set of relevant answers related to the question from an answer database; determining a relevance score reflecting a degree of relevance between each relevant answer in the set of relevant answers and the question; determining a top answer from the set of relevant answers based on the relevance score; as well as presenting at least one of the top answer and the set of related answers to the user; In response to the categorized input is answered: storing the answers in the answers database; In response to the categorized input is stated: discarding the classified input; Receiving a feedback user message rating the top answer; as well as modifying the reward score for the top answer based on the feedback user message to adjust future top answer responses, Wherein, the user message is received as a text string, and the method further comprises processing the text string to generate a tokenized message vector representing the user message.

2. The method of claim 1, wherein: Classifying the user message as a reply further comprises: determining that the user message is not a problem; determining a set of related questions from a recent question database comprising questions that were recently asked; Performing a term frequency-inverse document frequency (TF-IDF) process of the user message on the questions in the recent question database to obtain a relevance score for each question; and Responsive to at least one of the relevance scores exceeding a predefined question relevance threshold, the user message is classified as an answer.

3. The method of claim 2, wherein: The determination of the related question set and the related answer set both adopts the term frequency-inverse document frequency TF-IDF process.

4. The method of claim 1, wherein: The classifier uses a recurrent neural network (RNN) agent.

5. The method of claim 1, wherein: The top answer is determined using a reinforcement learning RL agent.

6. The method of claim 1, wherein: The tokenized message vector includes word integers, wherein the word integers are integers representing words of the user message; and Each word integer has an associated weight.

7. The method of claim 6, wherein: The classifier is a recurrent neural network (RNN), and the method further comprises: determining, by the RNN, an activation for each word integer forward propagated through the RNN; and Applying the result of the activation to a sigmoid activation function to generate a vector index; Wherein, determining the user message as a problem is based on a value associated with the vector index.

8. The method of claim 2, further comprising storing the question in the recent questions database.

9. The method of claim 2, wherein: The answer database and the recent question database are both associated with a public chat channel of the chat application.

10. The method of claim 1, wherein: The determination of the top answers uses the previously modified relevance scores.

11. The method of claim 1, wherein: The reward score is modified by the user trust rating.

12. A chat channel processing system, comprising: A processor configured to implement the steps of one of claims 1 to 11.

13. A computer program product for a chat channel processing system, the computer program product comprising a computer-readable storage medium, the computer-readable storage medium containing a computer-readable program code, and the computer-readable program code implements the steps of one of claims 1-11 when executed on a processor.