Method for processing chat channel communications, chat channel processing system, and program (intelligent chat channel processor)
The intelligent chat channel processor addresses the challenge of overwhelming chat forums by classifying and ranking answers based on user feedback, enhancing the retrieval of relevant information without manual input.
Patent Information
- Application Number
- JP2021170219
- Authority / Receiving Office
- JP · JP
- Patent Type
- Patents
- Current Assignee / Owner
- Priority Date
- 2020-10-21
- Filing Date
- 2021-10-18
- Publication Date
- 2025-08-12
- Estimated Expiration
- 2041-10-18
AI Technical Summary
In high-traffic, multi-time zone chat forums, new or returning participants often struggle to understand the history of the channel due to overwhelming amounts of questions and answers, making it difficult to identify relevant information without reading through extensive discussions.
An intelligent chat channel processor that classifies user messages as questions, answers, or descriptions, determines relevant answers based on relationship scores, and adjusts answer rankings through user feedback, providing contextually relevant responses without manual input.
Facilitates efficient retrieval of relevant answers by autonomously learning from user feedback, improving answer quality and reducing the need for manual input, while maintaining chat flow.
Smart Images

Figure 0007721214000003 
Figure 0007721214000004 
Figure 0007721214000005
Abstract
Description
[Technical Field]
[0001] SUMMARY OF THE INVENTION Disclosed herein are systems and related methods for answering questions in high-traffic, multi-time zone chat forums. Summary of the Invention [Problem to be solved by the invention]
[0002] In large discussion forums or "channels" within special-purpose chat applications, many people may enter the forum at different times and from different time zones. Participants who first enter the channel often do not know the history of the channel and may be unwilling or unable to read back through all the topics discussed in time, especially in channels with high traffic and / or large historical information. Such situations can be overwhelming for new or returning participants. For example, if there are 15 or more questions asked in the last two months, it may be difficult for a new or returning participant to understand which questions have already been asked and which are the best answers to those questions. An intelligent chat channel processor is described herein. [Means for solving the problem]
[0003] According to one aspect disclosed herein, a computer-implemented method is provided for processing chat channel communications in a chat application. The method includes using a processor for various operations, including receiving a user message from a user and classifying the user message into a categorized input, the categorized input being one of a question, an answer, or a description, using a classification means. In response to the input classified as a question, the method includes determining a set of related answers from an answer database associated with the question. The method determines a relationship score reflecting a degree of relatedness between each related answer in the set of related answers and the question. Additionally, the method includes determining a top answer from the set of related answers based on the relationship score and presenting at least one top answer and the set of related answers to the user. In response to the input classified as an answer, the method stores the answer in the answer database. In response to the input classified as a description, the method discards the categorized input. The method further includes receiving a feedback user message rating the top answer and modifying a reward score for the top answer based on the feedback user message to modify future top answer responses.
[0004] According to another aspect disclosed herein, a chat channel processing system is provided, including a processor configured to receive a user message from a user and classify the user message into a categorized input, the categorized input being one of a question, an answer, and a description, using a classification means. In response to the input categorized as a question, the system determines a set of related answers from an answer database associated with the question, determines a relationship score reflecting a degree of relatedness 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 relationship score. The system presents at least one of the top answer and the set of related answers to the user. In response to the input categorized as an answer, the system stores the answer in the answer database. In response to the input categorized as a description, the system discards the categorized input. The system further 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 modify future top answer responses.
[0005] Furthermore, embodiments may take the form of a related computer program product accessible from a computer-usable or computer-readable medium that provides program code for use by or in connection with a computer or any instruction execution system. For purposes of this description, a computer-usable or computer-readable medium may include any apparatus that may include a mechanism for storing, communicating, propagating, or transporting a program for use by or in connection with an instruction execution system, apparatus, or device. [Brief explanation of the drawings]
[0006] Various embodiments are described herein with reference to different subject matter. In particular, some embodiments may be described with reference to methods, while other embodiments may be described with reference to devices and systems. However, a person skilled in the art will, unless otherwise informed, glean from the above and following descriptions any combination of features belonging to one type of subject matter, as well as any combination between features relating to different subjects, in particular between method features and between device and system features, which will be considered to be disclosed in this document.
[0007] The above-defined aspects, and further aspects disclosed herein, will be apparent from and will be explained with reference to one or more example embodiments described hereinafter, without the invention being limited thereto. Various embodiments are described, by way of example only, with reference to the following drawings:
[0008] [Figure 1] FIG. 1 illustrates a cloud computing environment according to an embodiment of the present invention.
[0009] [Figure 2] FIG. 2 illustrates abstraction model layers according to an embodiment of the present invention.
[0010] [Figure 3] FIG. 1 is a block diagram of a DPS according to one or more embodiments disclosed herein.
[0011] [Figure 4] FIG. 1 is a block diagram of a chat system according to some implementations.
[0012] [Figure 5A] 1 is a flowchart portion of an overall process for operating an intelligent chat channel processor according to some embodiments. [Figure 5B]1 is a flowchart portion of an overall process for operating an intelligent chat channel processor according to some embodiments.
[0013] [Figure 6] 1 is a flowchart of a process for data cleaning and vectorization according to some embodiments.
[0014] [Figure 7] 1 is a flowchart of a process for classifying user input according to some embodiments.
[0015] [Figure 8] 1 is a flowchart of a process for performing a term frequency-reverse literature frequency analysis according to some embodiments.
[0016] [Figure 9] 1 is a flowchart of a process for operating a reinforcement learning agent according to some embodiments.
[0017] [Figure 10] 10 is a flowchart of a process for receiving user ratings and updating a reward table according to some embodiments. DETAILED DESCRIPTION OF THE INVENTION
[0018] Chat System Overview An Intelligent Chat Channel Processor (ICCP) can be provided as a component of or associated with a computer-based chat system. When a user is using a chat service, a user message triggers the ICCP to perform classification to determine whether the user's message text is a question. If the user's message is a question, the ICCP matches the user's question with previously collected answer and contextual data to match the user's question to relevant answers based on historical user feedback regarding the suitability of answers to a given question.
[0019] Answer collection is achieved by using a question classification method that recognizes non-question text, automatically determining whether the text has high relevance to a previously recognized question, and allowing answers that score highly relevant to be saved for use the next time a question related to that answer is asked. To collect answer data, ICCP monitors other users' message text posted to a channel. When another user's message text is classified as an answer to a question, ICCP stores the other user's answer data in an answer database for future consumption. ICCP may also refine the answer data by filtering out data that is somewhat obsolete and remains rarely referenced, thus rendering such answer data likely useless.
[0020] Answers provided by the ICCP to questions posed by chat users may be provided as a chat "thread" to the question, along with the confidence level and an indication of the original "answerer" who previously provided the answer. When a question is answered by the ICCP, users can "vote" whether the given answer is good or bad within the context of the question it was answering, providing the system with a means to select higher-rated answers in the future and avoid answers that have received low ratings in all contexts of a given question.
[0021] By providing a "voting" mechanism within the chat, ICCP can learn which responses are most preferred within this chat, changing the "weight" of certain types of answers and original responders for future improvements of ICCP.
[0022] Thus, ICCP provides chat room users with the ability to ask a question, and ICCP finds the most likely answers to similar questions in the same chat room and places 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 may do this by actively collecting context-specific answers to similar questions in the same chat channel and providing a set of answers that users can vote on to further improve future answers.
[0023] According to some embodiments, the ICCP can thus provide "contextually relevant" answers to questions, learn question / answer pairs in the correct context, and / or learn which chat users can be more trusted to provide the "right answers" to certain types of questions, providing a "thread" of answers that does not disrupt the overall chat flow. Thus, there is no need to manually provide example questions / answers to the machine learning system, and there is no need to provide direct input queries to the machine for specific questions.
[0024] These features of ICCP may be provided by a combination of systems, components, and / or agents that provide an autonomous question-answering system capable of identifying user messages as questions, answers, or statements without supervision or manual input. ICCP may automatically identify answers to questions and provide learned answers to identified questions by using a recurrent neural network (RNN) and a combination of term frequency (TF) and inverse document frequency (IDF) (TF-IDF) to actively identify and memorize answers in a forum environment. Identifying and answering questions in a forum environment may also use RNNs, TF-IDF, and reinforcement learning (RL). In some embodiments, ICCP may learn the relevance of answers to questions based on user feedback and may utilize RL to actively learn from user feedback to select better answers.
[0025] Various possible advantages are realized by several embodiments, including the ability to distinguish between questions, answers, or statements without supervision or manual input; the ability to associate statements as answers to previously asked questions without manual input; using a combination of RNNs and TF-IDF to actively identify and remember answers in a forum environment; using RNNs, TF-IDF, and RL to identify and answer questions in a forum environment; the ability to autonomously learn question-answer pairs without previous input or definition of question-answer pairs; actively learning and responding without input or prompts; actively collecting context-specific answers to similar questions in the same chat channel to provide a set of answers that users can vote on to further improve future answers; automatically adjusting the best answer response with user feedback; and using RL to actively learn from user feedback in selecting better answers.
[0026] According to some embodiments, the above combination of features may operate autonomously, with the only human interaction being the user asking the question for which the answer is sought, and in some embodiments the user may provide a rating to the answer.
[0027] The following acronyms may be used below: [Table 1] [Table 2] General Cloud Computing
[0028] Although this disclosure includes detailed descriptions related to cloud computing, it should be understood that implementation of the teachings recited herein is not limited to cloud computing environments. Rather, embodiments of the present invention can be implemented in connection with any other type of computing environment now known or later developed.
[0029] 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 rapidly provisioned and released with minimal management effort or interaction with the service provider. The cloud model can include at least five characteristics, at least three service models, and at least four deployment models. The characteristics are as follows:
[0030] On-Demand Self-Service: Cloud consumers can unilaterally provision computing capacity, such as server time and network storage, automatically as needed, without requiring human interaction with the service provider.
[0031] Broad Network Access: Capabilities are available over the network and accessed through standard mechanisms (eg, cell phones, laptops, and PDAs) facilitating use by heterogeneous thin or thick client platforms.
[0032] Resource Pool: A provider's computing resources are pooled and serve multiple consumers using a multi-tenant model, with different physical and virtual resources dynamically allocated and reallocated according to demand. Location independence means that consumers generally have no control or knowledge over the exact location of the resources provided, but may be able to specify the location at a higher level of abstraction (e.g., country, state, or data center).
[0033] Rapid Elasticity: Capacity can be rapidly and elastically provisioned, in some cases automatically, for fast scale out, and rapidly released for fast scale in. To the consumer, the capabilities available for delivery often appear unlimited and can be purchased at any time and in any quantity.
[0034] Measured Services: Cloud systems automatically control and optimize resource usage by leveraging measurement capabilities at some level of abstraction appropriate to the type of service (e.g., storage, processing, bandwidth, and active user accounts). Resource utilization can be monitored, controlled, and reported, providing transparency to both providers and consumers of the services used. The service model is as follows:
[0035] Software as a Service (SaaS): The consumer is offered the ability to use a provider's applications running on a 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 functions, with the possible exception of limited user-specific application configuration settings.
[0036] Platform as a Service (PaaS): The capability offered to consumers is to deploy applications created using programming languages and tools supported by the provider on cloud infrastructure created or acquired by the consumer. The consumer does not manage or control the underlying cloud infrastructure, including networks, servers, operating systems, or storage, but does have control over the applications deployed and, in some cases, application hosting environment configuration.
[0037] Infrastructure as a Service (IaaS): The ability offered to consumers is to provision processing, storage, network, and other basic computing resources onto which they can deploy and run any software, which may include operating systems and applications. The consumer does not manage or control the underlying cloud infrastructure, but does have control over the operating systems, storage, applications deployed, and in some cases limited control over the selection of network components (e.g., host firewalls). Deployment models are as follows:
[0038] Private Cloud: Cloud infrastructure is operated solely for the organization. It can be managed by the organization or a third party and can exist on-premise or off-premise.
[0039] Community Cloud: Cloud infrastructure is shared by multiple organizations and supports a specific community with shared interests (e.g., roles, security requirements, policies, and compliance considerations). It can be managed by an organization or a third party and can exist on-premises or off-premises.
[0040] Public Cloud: Cloud infrastructure is made available to the general public or large industry groups and is owned by organizations that sell cloud services.
[0041] Hybrid Cloud: A combination of two or more clouds (private, community, or public) that remain distinct entities but are joined together by standardized or proprietary technologies (e.g., cloud bursting for load balancing between clouds) that enable data and application portability.
[0042] A cloud computing environment is a service oriented environment with an emphasis on statelessness, low coupling, modularity, and semantic interoperability. At the core of cloud computing is an infrastructure that includes a network of interconnected nodes.
[0043] Referring now to FIG. 1 , an exemplary cloud computing environment 50 is illustrated. As shown, the cloud computing environment 50 includes one or more cloud computing nodes 10, with which local computing devices used by cloud consumers, such as, for example, a personal digital assistant (PDA) or cellular phone 54A, a desktop computer 54B, a laptop computer 54C, or a vehicle computer system 54N, or combinations thereof, may communicate. The nodes 10 may also communicate with each other. They may be physically or virtually grouped in one or more networks (not shown), such as a private, community, public, or hybrid cloud as described herein above, or a combination thereof. This enables the cloud computing environment 50 to provide an infrastructure, platform, or software-as-a-service, or combinations thereof, without the cloud consumer having to maintain resources on a local computing device. The types of computing devices 54A-N illustrated in FIG. 1 are intended for illustrative purposes only, and it will be understood that the computing nodes 10 and the cloud computing environment 50 may communicate with any type of computerized device via any type of network or network-addressable connection, or combinations thereof (e.g., using a web browser).
[0044] Referring now to Figure 2, a set of functional abstraction layers provided by cloud computing environment 50 (Figure 1) is shown. It should be understood in advance that the components, layers, and functions shown in Figure 2 are intended to be illustrative only, and that embodiments of the invention are not limited thereto. As shown, the following layers and corresponding functions are provided:
[0045] Hardware and software layer 60 includes hardware and software components. Examples of hardware components include mainframe 61, RISC (reduced instruction set computer) architecture-based servers 62, servers 63, blade servers 64, storage devices 65, and networks and network components 66. In some embodiments, software components include network application server software 67 and database software 68.
[0046] The virtualization layer 70 provides an abstraction layer from which the following examples of virtual entities may be provided: virtual servers 71, virtual storage 72, virtual networks including virtual private networks 73, virtual applications and operating systems 74, and virtual clients 75.
[0047] In one example, management layer 80 may provide the functions described below. Resource provisioning 81 provides dynamic procurement of computing resources and other resources utilized to execute tasks within the cloud computing environment. Metering and pricing 82 provides cost tracking as resources are utilized within the cloud computing environment and billing or invoicing for the consumption of those resources. In one example, these resources may include application software licenses. Security provides identity authentication for cloud consumers and tasks, as well as protection for data and other resources. User portal 83 provides consumers and system administrators with access to the cloud computing environment. Service level management 84 provides cloud computing resource allocation and management so that required service levels are met. Service level agreement (SLA) planning and fulfillment 85 provides pre-configuration and procurement for cloud computing resources where future demand is predicted according to SLAs.
[0048] The workload tier 90 provides examples of functions for which a cloud computing environment can be utilized. Examples of workloads and functions that can be provided from this tier include mapping and navigation 91, software development and lifecycle management 92, virtual classroom instruction delivery 93, data analytics processing 94, transaction processing 95, and mobile desktop 96.
[0049] 3 is a block diagram of an exemplary DPS according to one or more embodiments. The DPS may be used as a cloud computing node 10. In this example, the DPS 100 may include a communication bus 102, which may provide communication between a processor unit 104, a memory 106, persistent storage 108, a communication unit 110, an I / O unit 112, and a display 114.
[0050] Processor unit 104 serves to execute instructions for software that may be loaded into memory 106. Processor unit 104 may be a multiple processor, a multi-core processor, or some other type of processor, depending on the particular implementation. As used herein, numbers of items refer to one or more items. Additionally, processor unit 104 may be implemented using a multiple heterogeneous processor system in which a primary processor is shown with secondary processors on a single chip. As another example, processor unit 104 may be a symmetric multiprocessor system including multiple processors of the same type.
[0051] Memory 106 and persistent storage 108 are examples of storage devices 116. A storage device may be any piece of hardware that can store information, such as, but not limited to, data, program code in a functional form, or other suitable information either on a temporary or persistent basis, or a combination thereof. Memory 106, in these examples, may be, for example, random access memory or any other suitable volatile or non-volatile storage device. Persistent storage 108 may take various forms depending on the particular implementation.
[0052] For example, persistent storage 108 may include one or more components or devices. For example, persistent storage 108 may be a hard drive, a flash memory, a rewritable optical disk, a rewritable magnetic tape, or some combination of the above. The media used by persistent storage 108 may also be removable. For example, a removable hard drive may be used for persistent storage 108.
[0053] The communication unit 110 in these examples may provide for communication with other DPSs or devices. In these examples, the communication unit 110 is a network interface. The communication unit 110 may provide for communication using one or both of physical and wireless communication links.
[0054] The input / output unit 112 may allow for the input and output of data with other devices that may be connected to the DPS 100. For example, the input / output unit 112 may provide a connection for user input through a keyboard, a mouse, or some other suitable input device, or a combination thereof. Additionally, the input / output unit 112 may send output to a printer. The display 114 may provide a mechanism for displaying information to a user.
[0055] Instructions for the operating system, applications, and / or programs may be located in storage device 116, which is in communication with processor unit 104 via communication bus 102. In these examples, the instructions are in a 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.
[0056] These instructions are referred to as program code, computer usable program code, or computer readable program code, which may 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.
[0057] Program code 118 may be specified in a functional form on a selectively removable computer-readable medium 120 and may be loaded onto or transferred to DPS 100 for execution by processor unit 104. In these examples, program code 118 and computer-readable medium 120 may form computer program product 122. In one example, computer-readable medium 120 may be computer-readable storage medium 124 or computer-readable signal medium 126. Computer-readable storage medium 124 may include, for example, an optical or magnetic disk inserted into or placed into a drive or other device that is part of persistent storage 108 for transfer to a storage device, such as a hard drive that is part of persistent storage 108. Computer-readable storage medium 124 may also take the form of persistent storage connected to the DPS 100, such as a hard drive, thumb drive, or flash memory. In some examples, computer-readable storage medium 124 may not be removable from the DPS 100.
[0058] Alternatively, program code 118 may be transferred to DPS 100 using computer-readable signal medium 126. Computer-readable signal medium 126 may be, for example, a propagated data signal containing program code 118. For example, computer-readable signal medium 126 may be an electromagnetic signal, an optical signal, or any other suitable type of signal, or a combination thereof. These signals may be transmitted over communications links, such as wireless communications links, fiber optic cable, coaxial cable, a wire, or any other suitable type of communications link, or a combination thereof. In other words, in examples, the communications links, or connections, or both, may be physical or wireless.
[0059] In some exemplary embodiments, program code 118 may be downloaded over a network from another device or DPS to persistent storage 108 via computer-readable signal medium 126 for use within DPS 100. For example, program code stored on a computer-readable storage medium in a server DPS may be downloaded over a network from the server 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.
[0060] The different components illustrated for DPS 100 are not meant to provide architectural limitations to the manner in which different embodiments may be implemented. Different illustrative embodiments may be implemented in a DPS including components in addition to or instead of those illustrated with respect to DPS 100. Intelligent Chat Channel Processor (ICCP) System Overview
[0061] 4 is a block diagram illustrating a group of interacting components 400, including an intelligent chat channel processor (ICCP) 410 that extends an existing chat application 300 with a chatbot 310 for a specific chat channel. The ICCP 410 may be implemented separately from, but in communication with, the chat application 300, or it may be formed as an integral part of the chat application 300. The user 200 and other and / or historical users 205 may interact with the chat application 300 as they would in a conventional system. In some implementations, separate chatbots 310 may form part of the chat application 300 and may address different topics, issues, etc. The ICCP 410 may be implemented, for example, on the DPS 100 and / or designed to operate in a cloud computing environment 50.
[0062] The ICCP 410 may include a data cleaner and vectorizer 412 that takes text inputs from the user 200 and other / historical users 205 and translates them into vectorized messages. A user input classifier 415, which may be in the form of an RNN agent, takes the vectorized messages and classifies them into questions, answers, or descriptions. The descriptions may be in the form of answers, but do not include any related questions to which they apply. A TF-IDF routine 420 may be utilized to search for relevant / related questions and answers in the respective databases. An RL agent 430 may be utilized to determine the best element from a set of elements. A voting and RL update routine 440 may be utilized to receive answers rating the inputs from the user 200 and, if so, update the RL agent 430. The chat application 300 and the ICCP 410 may utilize information associated with a chat database 450, including a user trust rating 455, a recent questions database 460, and an answer database 465, which may itself include a reward value table 467 that contains reward values associated with answers in the answer database 465. All or a portion of chat database 450 may be included within chat application 300, ICCP 410, or both. These components are best described below in terms of the processing functions they perform, as well as their interactions with each other or with entities outside ICCP 410. Data cleaner and vectorizer 412 may be associated with operation 530 (FIG. 5A) and process 600 (FIG. 6). User input classifier (RNN agent) 415 may be associated with operation 535 (FIG. 5A) and process 700 (FIG. 7). TF-IDF routine 420 may be associated with process 800 (FIG. 8) and two operations: 545 (FIG. 5B) when using recent questions database 460, and 570 (FIG. 5B) when using answer database 465. RL agent 430 may be associated with process 900 (FIG. 9), and voting routine and RL update 440 may be associated with process 1000 (FIG. 10). Processing Overview
[0063] 5A and 5B are portions of an overall process 500 that may be used by some embodiments described herein. The operations of the process have been shown as part of a standard flow (which includes operations 510-540, as indicated by cross-hatching), as part of a query branch (which includes operations 505 and 565-585, as indicated by orthogonal shading), or as part of a description branch (which includes operations 545-560, as indicated by horizontal shading).
[0064] In operation 510, the ICCP 410 receives a user 200 message posted to a chat channel, which is received as a chat event 515. Receipt of this message may trigger an application program interface (API) event in operation 520, which sends an event message to any associated chatbots 525 (310) of the chat application 300 currently connected to the API. The API event message may be retrieved by each chatbot 310. In operation 530, the content of the message is cleaned and a vectorized copy of the message is formed for further processing.
[0065] In operation 535, the ICCP 410 may utilize a recurrent neural network (RNN) agent as the user input classifier 415 in some implementations to determine the type of message (question, answer, or statement). An RNN is a type of deep neural network formed by recursively applying a set of weights to a structured input to generate structured predictions for variable-sized input structures, or scalar predictions of them, by traversing a given topological order. RNNs can be used to learn sequence and tree structures in natural language processing, primarily continuous representations of phrases and sentences based on word embeddings. If, in operation 540, the classifier 415 determines that the message is not a question (i.e., a non-question message) (540:N), then in operation 545, the ICCP 410 may perform a term frequency (TF)-inverse document frequency (IDF) (TF-IDF) determination of relevance. TF-IDF processing is described in more detail below with reference to FIG. 8 and process 800. A relevance of the non-question message to the recent questions database 460 is performed to determine the relevance of the non-question message to questions in the recent questions database 460. Even if the ICCP 410 determines that the user input is a non-question, it is still unknown whether the user input constitutes an answer, since the non-question may not be related to any of the questions in the recent questions database 460. Therefore, the recent questions database 460 runs the TF-IDF process 800 on the given string (non-question message) and returns the TF-IDF scores of the set of related questions that meet a predefined threshold (i.e., questions from the recent questions database 460 that are related to the non-question message).
[0066] In operation 550, the RNN agent 415 may determine that the message is not an answer (550:N). This determination is made if the highest TF-IDF score for any of the questions in the recent questions database 460 does not meet a 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 was determined to be an answer because the highest TF-IDF score meets relevance. In this case, in operation 560, the answer may be stored in the answer database 465 for future retrieval when the question is given, and processing continues to operation 570, as described below.
[0067] If the message is a question (540:Y), then in operation 565 the message is stored in the recent questions database 460. In operation 570, a TF-IDF process 800 is performed on the answer database 465, and in operation 575 the top n (e.g., 10) answers that best match the question are returned by the TF-IDF process 800 as a set of related answers by their scores. The best match reflects the degree of relatedness between each related answer in the set of related answers and questions, as determined by a relatedness score (in this embodiment, a TF-IDF score). If the TF-IDF score for an answer in the answer database 465 is one of the n highest scores, it may be considered an answer to the question. Any number of answers may be specified, for example, by program parameters, user specifications, etc. In some embodiments, if the TF-IDF score meets some threshold, it is considered to be an answer to one of the recent questions. In operation 570, the highest TF-IDF score when run against the answers database is considered, and that highest TF-IDF score is deemed the most relevant answer to the question. However, in operation 545, the highest TF-IDF score when run against the recent questions database 460 is not required, since the primary interest is to obtain questions that break a predefined threshold.
[0068] In operation 580, the top n answers are passed to the RL agent 430, which executes process 900, using the question vector as state (i.e., the question to which the subsequent action pertains), and in operation 585 (925), the RL agent 430 may pick the best answer from the top answers returned by score and according to previous user 200 feedback scores for this question. Processing is returned to the operation of the chatbot 525 upon receipt of another event message.
[0069] Questions are determined "in context" because different contexts for the same question can return different answers. For example, the question "What documents do I need?" can have very different answers depending on whether it's asked by a buyer in a real estate transaction or by a real estate agent. Context determination is done through the use of word embeddings, which can provide a vector that gives a particular word its location in a multidimensional space, where words with similar meanings are positioned closer to that word. These word embeddings can be formed, for example, first using one of two methods: Continuous Bag of Words (CBOW) and Skipgram. For example, a CBOW model presents a sentence with a missing word to a neural network, which predicts the missing word based on the sentence's context. This can be used in combination with TF-IDF to identify answers based on their similarity to the "highest value words" in the query. An RL agent that selects answers based on previous user feedback can help determine context. Data Cleaning and Vectorization
[0070] FIG. 6 is a flowchart of a process 600 (530) according to some embodiments, relating to the operation of the data cleaner and vectorizer 412 for cleaning and vectorizing received user messages. In operation 605, a user message may be received as a string of data, e.g., originating from a user 200. In operation 610, the string is tokenized into individual tokens. In some embodiments, each word is taken from the string and placed in an array, although any form of data organization for the tokens may be utilized. For illustrative purposes, the string "who is running for president?" may be converted to an array or vector ["who", "is", "running", "for", "president?"].
[0071] In operation 615, special characters may be removed from the string. In the previous example, the string "president?" may be converted to simply "president". In operation 620, stop words may 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. From the previous example, "is" and "for" may be considered stop words to be removed, leaving the vector ["who", "running", "president"]. Any group of words may be selected as stop words for a given purpose.
[0072] In operation 625, words may be stemmed to reduce the number of unique words to be compared for easier computer processing. A word may have a single stem, i.e., its inflected variants may all have a part of the word in common. Thus, in this usage, all derivational affixes are part of the stem. For example, the stem of friendships is friendship, to which the inflectional suffix -s is attached. Stems may be roots, such as run, which may be morphologically complex, as in compound words (e.g., the compound nouns meatball or bottle opener) or words with derivational morphemes (e.g., the derivational verbs black-en or standard-ize). Thus, the stem of the compound English noun photographer is photo grapher, not photo. For another example, the root of the English verb form destabilized is stabil-, and the form stable does not occur alone. The stem is de-stabil-ize, which includes the derivational affixes de- and -ize, but not the inflectional past tense affix -(e)d. That is, the stem is the part of the word to which the inflectional affix is attached. From the previous example, the word "running" is stemmed to "run," leaving the final cleaned data as the vector ["who", "run", "president"]. The actual data strings in the vector can be tokenized into integers, thereby forming a tokenized message vector representing the user message. The cleaned data is vectorized into a numeric form, and each word is converted to an integer representing the word. These vectors are padded or truncated to a universal length. Integers can be used to form uniformly distributed word embeddings with fixed weights and input to the RNN (e.g., vectors of length 32 with weights between -1 and 1).
[0073] For illustrative purposes, each word may be mapped to a unique integer; for example, the word "run" may be mapped to the integer 42, and whenever the word "run" appears in a sentence, it will be replaced with the number 42. A word embedding matrix may then be used, provided by an integer mapping routine in a library such as Google's Word2Vec or Stanford University's GloVe. The integer 42 may then be used as a mapping to the 42nd index of the word embedding matrix to identify the word embedding for the word "run." The word embedding may be a vector of set length (e.g., 32) provided by the integer mapping routine, providing a vector of weights for use in the RNN 415. This vector is a concise set of values representing the position of a word in a multidimensional space, allowing for a measure of its proximity to other words; distance to another word in this multidimensional space relates to its similarity in meaning to that other word. These weights are processed through the mathematical pipeline of the RNN 415, which outputs a set of probabilities between 0 and 1, etc. In operation 630, the newly formed vector representing the string is returned. User Input Classifier (RNN)
[0074] 7 is a flowchart of process 700 (535) 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 in which words are tokenized into integers and user messages are cleaned and vectorized into integer vectors. However, other embodiments in which different representations of messages are utilized in the classification may be considered as well.
[0075] In operation 705, the classifier 415 receives the integer vector message, and the process iterates through the integers that create the vector message by looping between operations 710 to 720, incrementing the integer index 710, and propagating one integer at a time. When the iteration is not complete (operation 720:N), the process continues looping and takes the next integer in operation 720. In each iteration, in operation 715, an activation is determined for the current word integer. Each vector is propagated forward through the RNN and multiplied against a hidden layer of Long Short Term Memory (LSTM) cells. A "dropout" layer may be used to prevent overfitting of the data.
[0076] For illustrative purposes, a given vector with a length of 32 is input to the input layer of an RNN, which is a fixed length. If we know that all word embeddings are length 32, then the input layer would also be a layer of length 32, or a layer of 32 "nodes." The input layer would then be connected by a set of weights to a hidden layer, which would be, say, a layer of 150 nodes. In this case, there would be 32 x 150 weights, each initialized to a random value and modified through training. The 32 input values are then multiplied by the 32 weights connecting the first node in the hidden layer, then the second node, and so on. The resulting vector sums at each hidden node to form 150 values, each of which is compressed by an activation function, e.g., a sigmoid function, to a value between 0 and 1, representing an activation value or probability. This set of probabilities is then looped back to add the next set of input values from the next input vector, and the hidden node output for the next round.
[0077] Once all vectors have been processed, the last hidden node outputs a connection to the output layer, in this example a layer of two nodes, which are connected via a set of weights resulting in a 150x2 weight, and the same process is repeated as that of the input to the hidden layer, but outputting only two values, a set of probabilities between the values 0 and 1, which when summed together equals 1.
[0078] Overfitting occurs when a model specifically over-adapts to training data, resulting in low accuracy when presented with previously unseen data. Dropout eliminates recurrent connections that do not carry important information. The output from the LSTM cell is fed back to the input of the word embedding for the next word in the sequence, forming a feedback loop. When the iteration is complete (operation 720:Y), i.e., all of the words in the vector message have been processed and no more words remain in the sequence, the results (a vector of sums generated by the product of the weight pairs against the values generated by the RNN's hidden layer) can be fed into a sigmoid activation function, both of which output a vector of two numbers between 0 and 1. Using the example above, 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 against the 150 weights connected to one of the outputs, and the results of the 150 hidden layer nodes are multiplied against the other 150 weights connected to the other output node, which then form a pair of summed vectors to form two values. Once the sigmoid activation function (SAF) is applied to the two values 0 and 1, the values are normalized between 0 and 1 to give a pair of probabilities for each output. Processing proceeds to operation 735.
[0079] In operation 735, a determination is made of the vector index that forms the maximum activation. This refers to the index of the two values that are the maximum value (index(max(output vector))). For example, given a vector index of [0.75, 0.25], this function provides the index of the value 0.75 in said vector. In this example, if, for example, element 0 represents an activation value of Yes and element 1 represents an activation value of No, the index would be 0. Thus, if element 0 is greater than element 1, the classification is Yes. In operation 740, for illustrative purposes, if the maximum index is not at index 0 (740:N), the vector message may be classified as a non-question in operation 745 (the statement or answer is resolved in operations 545, 550). Otherwise (740:Y), the vector message is classified as a question in operation 750, and process 700 proceeds to process 900. Term Frequency-Inverse Document Frequency (TF-IDF) Processing
[0080] 8 is a flowchart of TF-IDF processing 800, according to some embodiments, performed by TF-IDF routines 420. This processing may be used, for example, in operation 545 above for recent questions list 460 and in operation 570 above for answer database 465. The "documents" described with respect to FIG. 8 thus refer to these respective elements (questions in recent questions database 460 with respect to operation 545, and answers in answer database 465 with respect to operation 570) in the following overall aspects.
[0081] TF-IDF is a numerical statistic that reflects how important a word is to documents in a collection or corpus. It is often used as a weighting factor in search for information retrieval, text mining, and user modeling. TF-IDF values increase proportionally to the number of times a word appears in a document, offset by the number of documents in the corpus that contain the word, helping to correct for the fact that some words generally appear more frequently. TF-IDF weighting schemes can be used in scoring and ranking the relevance of documents given a user query. TF-IDF is the product of two statistics: term frequency and inverse literature frequency.
[0082] In the case of TF, the simplest choice is to use a raw count of terms in a document, i.e., the number of times a term occurs in a document, although other known variations can be used. For illustrative purposes, given a set of English text documents and a ranking request for which documents are most relevant to the query "the brown cow," a simple way to start is to eliminate documents that do not contain all three words "the," "brown," and "cow," which still leaves many documents. To further distinguish them, we might count the number of times each term occurs in each document; the number of times a term occurs in a document is called its term frequency. However, adjustments can be made if document lengths vary significantly. One form of term weight can be summarized as follows: the weight of a term occurring in a document is simply proportional to its term frequency.
[0083] IDF is a measure of how informative a word is, i.e., how common or rare it is among all documents. It is a logarithmic scale of the inverse proportion of documents containing a word (obtained by dividing the total number of documents by the number of documents containing that term and taking the logarithm of the quotient). For illustrative purposes, the term "the" is so common that term frequency tends to inaccurately emphasize documents that use the word "the" more frequently without giving sufficient weight to the more meaningful terms "brown" and "cow." Unlike the less common words "brown" and "cow," the term "the" is not a good keyword for distinguishing between relevant and irrelevant documents and terms. Therefore, an inverse literature frequency factor is incorporated, which reduces the weight of terms that occur very frequently in a document set and increases the weight of terms that occur infrequently. A term's specificity can be quantified as an inverse function of the number of documents in which it occurs.
[0084] 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 of that term in the entire document corpus, and therefore the weight tends to filter out common terms. The ratio in the logarithmic function of IDF is always greater than or equal to 1, and the value of IDF (and TF-IDF) is greater than or equal to 0. As a term appears in more documents, the ratio approaches 1 in the logarithm, and IDF and TF-IDF approach 0.
[0085] In operation 805, ICCP 410 may obtain the total number of documents in a database (either recent questions list 460 or answer database 465). In operation 810, for every term / word, ICCP 410 obtains the number of documents in which this term / word appears (e.g., if there are 50 documents and this term appears in 25 documents).
[0086] In operation 815, ICCP 410 generates an IDF value for this term, which may be calculated by taking the total document count, dividing by the number of documents the term appears in, and taking the natural logarithm of the result. To avoid dividing by 0, 1 may be added to both sides.
[0087] 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 this 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", after cleaning in process 600 it becomes "current Queen Queen Elizabeth", there are three unique terms and "Queen" occurs twice, so the TF value for Queen is 2 / 3).
[0088] In operation 825, the TF values from the string are multiplied by the IDF values 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 for this string is multiplied by the IDF value for the document, where the document contains the terms "current" and "Queen" but not "Elizabeth", obtained by multiplying TF(current) = 0.33 by IDF(current), and TF(Queen) = 0.66 by IDF(Queen), and the term Elizabeth is not in this document, obtained by multiplying TF(Elizabeth) = 0.33 by 0). In operation 830, these calculations are summed for the TF-IDF score for this document, and this score is returned in operation 835. Reinforcement Learning (RL) Agent Processing
[0089] FIG. 9 is a flowchart of reinforcement learning (RL) agent processing 900 (540:YES, 750) of the behavior of the RL agent 430 once a message has been classified as a question, according to some embodiments. In operation 905, the RL agent 430 receives a vector of integers representing the question string (message) previously passed to the RNN agent 415 and uses this vector as its current (question) state. A state is a representation of the current question posed. In general, such a state may be a representation of the current state of the world or the agent's surrounding environment, allowing the agent to take action based on the current state. In this example, the vector of integers representing the words in the question may be used as a state presented to the agent to make a decision. The current question vector may be passed to a recent questions database 460, which contains recent questions (e.g., in the form of an integer vector), which may be used to determine whether a previously determined statement in operation 745 is an answer to the current question or another question.
[0090] The TF-IDF process 800 runs on the answer database 465 (operation 570) to find the closest matching answer in operation 910. A set of actions (here, a set of answers) is received from the TF-IDF process 800 from which the RL agent 430 can select.
[0091] In operation 915, using the reward table 467 for this question state, the RL agent 430 may look up previous reward scores (related to user ratings) from the reward table 467 for each available action (available answers returned by the TF-IDF system) and select 920 the action that maximizes its reward. Initially, each newly discovered state (a state is a question / vector of integers representing the words in the question; a newly discovered state is a state / question not yet seen by the RL agent) will start with a reward score of 0 for all available actions. After the user 200 provides positive or negative feedback to the posted answer provided by the ICCP (see process 1000 in Figure 10, below), the RL agent 430 adds a positive or negative value to the reward value of the action related to that state / question.
[0092] In operation 925, the RL agent 430 may return the final list of best answers with their reward scores to the chatbot 310. The chatbot 310 may then utilize a chat API to post this final list of best answers to a chat channel and monitor for positive or negative feedback (e.g., thumbs up or thumbs down, a star rating system, or other form of rating for each posted answer) and reward or penalize accordingly with the reward value 467 for the answer, as described in FIG. 10 , process 1000.
[0093] In some embodiments, to prevent large storage requirements, the number of questions stored and retrieved may be limited in some manner. This limitation may involve, for example, recency, ratings, etc. Updating an RL Agent
[0094] FIG. 10 is a flowchart of a process 1000 for collecting user 200 feedback, which may be used to increase or decrease the weight value of an answer, according to some embodiments. These weight values are presented to the RL agent 430, which uses them to determine the answer's overall score. In operation 1005, the user 200 may rate the answer provided by the chat application 300 to provide feedback. This rating may be done using a scale, such as from 0 to 5, on which the user 200 may input a particular rating. For example, the scale may be presented to the user 200 in the form of stars, and the user 200 may select a rating number by selecting the number of stars that corresponds to the user's 200 rating. Any format for providing a user rating may be used. In operation 1010, the system may determine whether the rating is a positive or negative rating. For example, if the scale is from 0 to 5, a rating of 2 or below may be considered negative, and a rating of 3 or above may be considered positive.
[0095] In some embodiments, if the rating is negative (1010:N), the user's trust rating for the particular answer may be multiplied by minus one in operation 1015. If the rating is positive (1010:P), the user's trust rating is multiplied 1025 by plus one. For example, if a user has a trust rating of 30 and the rating is positive, a value of 30 is added to the reward value of the answer associated with the state / question in the RL agent's reward table, making the RL agent more likely to select that answer the next time this question is asked in the same or a similar context. Conversely, if negative feedback is given, a value of 30 is subtracted from the reward value, making the RL agent less likely to select that answer the next time the same question is asked in the same or a similar context.
[0096] The above embodiment is just one way in which user ratings can be input into the system, and many other ways are contemplated by the invention. In operation 1030, the result can be added to the reward value of this answer, and in operation 1035, the RL agent's reward table can be updated with the new value. Technical Applications
[0097] One or more embodiments disclosed herein therefore provide improvements to computer technology. For example, improvements to chat applications may enable users to communicate more efficiently and effectively with computers. By providing users with relevant information already represented in a chat database, the application may substantially improve the efficiency of the chat application.
[0098] The present invention may be a system, method, or computer program product, or combination thereof, at any possible level of technical detail of integration. The computer program product may include a computer-readable storage medium (or media) having computer-readable program instructions thereon that cause a processor to perform aspects of the present invention.
[0099] A computer-readable storage medium may be a tangible device that can hold and store instructions for use by an instruction execution device. A computer-readable storage medium may be, for example, but not limited to, an electronic storage device, a magnetic storage device, an optical storage device, an electromagnetic storage device, a semiconductor storage device, or any suitable combination of the foregoing. A non-exhaustive list of more specific examples of computer-readable storage media includes portable computer diskettes, hard disks, 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 disks (DVD), memory sticks, floppy disks, mechanically encoded devices such as punch cards or ridge structures in grooves having instructions recorded thereon, and any suitable combination of the foregoing. Computer-readable storage medium, as used herein, should not be construed as being a transitory signal itself, such as a radio wave or other freely propagating electromagnetic wave, an electromagnetic wave propagating through a waveguide or other transmission medium (e.g., light pulses through a fiber optic cable), or an electrical signal transmitted through an electrical wire.
[0100] The computer-readable program instructions described herein may be downloaded from a computer-readable storage medium to each computing / processing device or to an external computer or storage device over a network, such as the Internet, a local area network, a wide area network, or a wireless network, or a combination thereof. The network may comprise copper transmission cables, optical fiber transmissions, wireless transmissions, routers, firewalls, switches, gateway computers, or edge servers, or a combination thereof. A 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 for storage on a computer-readable storage medium within the respective computing / processing device.
[0101] The computer-readable program instructions for carrying out the operations of the present invention may be either source code or object code written in any combination of one or more programming languages, including assembler instructions, instruction set architecture (ISA) instructions, machine instructions, machine-dependent instructions, microcode, firmware instructions, state setting data, configuration data for integrated circuits, or object-oriented programming languages such as Smalltalk®, C++, or the like, procedural programming languages such as the C programming language or similar programming languages. The computer-readable program instructions may be executed entirely on the user's computer, partially on the user's computer as a standalone software package, partially on the user's computer and partially on a remote computer, or entirely on a remote computer or server. In the latter scenario, the remote computer may be connected to the user's computer through any type of network, including a local area network (LAN) or a wide area network (WAN), or the connection may be made to an external computer (e.g., through the Internet using an Internet Service Provider). In some embodiments, electronic circuitry including, for example, a programmable logic circuit, a field programmable gate array (FPGA), or a programmable logic array (PLA) may execute computer readable program instructions by utilizing state information of the computer readable program instructions to personalize the electronic circuitry to perform aspects of the present invention.
[0102] Aspects of the present invention are described herein with reference to flowchart and / or block diagrams of methods, apparatus (systems), and computer program products according to embodiments of the invention. It will be understood that each block of the flowchart and / or block diagrams, and combinations of blocks in the flowchart and / or block diagrams, can be implemented by computer-readable program instructions.
[0103] These computer-readable program instructions may be provided to a processor of a general-purpose computer, special-purpose computer, or other programmable data processing apparatus to produce a machine, whereby the instructions executing via the processor of the computer or other programmable data processing apparatus form means for implementing the function(s) / act(s) specified in the block(s) of the flowcharts and / or block diagrams. These computer-readable program instructions may also be stored on a computer-readable storage medium that can cause a computer, programmable data processing apparatus, or other device, or combination thereof, to function in a particular manner, such that the computer-readable storage medium having stored thereon instructions has an article of manufacture including instructions that implement aspects of the function(s) / act(s) specified in the block(s) of the flowcharts and / or block diagrams.
[0104] The computer-readable program instructions may also be loaded into a computer, other programmable data processing apparatus, or other device and cause a series of operational steps to be executed on the computer, other programmable apparatus, or other device to generate a computer-implemented process, whereby the instructions executing on the computer, other programmable apparatus, or other device implement the functions / acts identified in the flowchart and / or block diagram blocks or within the blocks.
[0105] The flowcharts and block diagrams in the figures illustrate the architecture, functionality, and operation of possible implementations of systems, methods, and computer program products according to various embodiments of the present invention. In this regard, each block in the flowcharts or block diagrams may represent a module, segment, or portion of instructions, including one or more executable instructions for implementing the specified logical function(s). In some alternative implementations, the functions noted in the blocks may occur out of the order noted in the figures. For example, two blocks shown in succession may, in fact, be executed substantially in parallel, or the blocks may sometimes be executed in the reverse order, depending on the functionality involved. It should also be noted that each block of the block diagrams and / or flowchart diagrams, and combinations of blocks in the block diagrams and / or flowchart diagrams, may be implemented by a dedicated hardware-based system that performs the specified functions or acts or executes a combination of dedicated hardware and computer instructions.
[0106] The description of various embodiments of the present invention is presented for illustrative purposes and is not intended to be exhaustive or to be limited to the disclosed embodiments. Many modifications and variations will be apparent to those skilled in the art without departing from the scope and spirit of the described embodiments. The terms used herein have been selected to best explain the principles of the embodiments, practical applications of or technical improvements to the technology found in the market, or to enable others skilled in the art to understand the embodiments disclosed herein. According to this specification, the following items are also disclosed. [Item 1] 1. A method for processing chat channel communications in a chat application, the method comprising: receiving a user message from a user; classifying said user message into a categorized input, said categorized input being one of a question, an answer and a description, using a classification means; In response to the above categorized input, which is a question, determining a set of relevant answers from a database of answers related to the question; determining a relationship score reflecting a degree of relatedness between each related answer in the set of related answers and the question; determining a top answer from the set of related answers based on the relevance score; presenting at least one of the set of top answers and related answers to the user; In response to the classified input, storing the answers in the answer database; In response to the classified input being a description, discarding the classified input; receiving feedback user messages rating the top answers; modifying a reward score for the top answer based on the feedback user message to modify future top answer responses; 20. A method comprising: using a processor to: [Item 2] The step of classifying the user message as a reply may further comprise: determining that the user message is not a question; determining a set of relevant questions from a recent questions database containing previously recently asked questions; performing a Term Frequency-Inverse Document Frequency (TF-IDF) procedure of the user messages against questions in the recent questions database to obtain a relevance score for each of the questions; classifying the user message as an answer in response to at least one of the relevance scores exceeding a predefined question relevance threshold; The method of item 1, comprising: [Item 3] 3. The method of claim 2, wherein both the step of determining the set of related questions and the step of determining the set of related answers utilize a term frequency-inverse document frequency (TF-IDF) procedure. [Item 4] 4. The method of any one of items 1 to 3, wherein the classification means uses a recurrent neural network (RNN) agent. [Item 5] 5. The method of any one of items 1 to 4, wherein determining the top answers utilizes a reinforcement learning (RL) agent. [Item 6] 6. The method of any one of items 1 to 5, wherein the user message is received as a text string, the method further comprising processing the text string to generate a tokenized message vector representing the user message. [Item 7] the tokenized message vector includes word integers, which are integers representing words of the user message; Each word integer has an associated weight, The method according to item 6. [Item 8] The classifier is a recurrent neural network (RNN), and the method further comprises: determining, by the RNN, an activation for each word integer propagated forward through the RNN; applying the result of the activation to a sigmoid activation function to generate a vector index; determining the user message as a question based on a value associated with the vector index; The method according to item 7. [Item 9] 3. The method of claim 2, further comprising storing the question in the recent questions database. [Item 10] 3. The method of claim 2, wherein the answer database and the recent question database are all related to a common chat channel of the chat application. [Item 11] 11. The method of any one of items 1 to 10, wherein determining the top answers uses previously revised relevance scores. [Item 12] 12. The method of any one of items 1 to 11, wherein the reward score is modified by a user credit rating. [Item 13] A chat channel processing system, comprising: receiving a user message from a user; classifying the user message into a classified input, the classified input being one of a question, an answer and a statement, using a classification means; In response to the above categorized input, which is a question, determining a set of relevant answers from a database of answers related to said question; determining a relationship score reflecting a degree of relatedness between each related answer in the set of related answers and the question; determining a top answer from the set of related answers based on the relationship score; presenting at least one of the set of the top answers and the related answers to the user; In response to the classified input, storing said answers in said answer database; In response to the classified input being a description, discarding the classified input; receiving a feedback user message rating the top answer; modifying a reward score for the top answer based on the feedback user message to modify future top answer responses; a processor configured to: system. [Item 14] The step of classifying the user message as a reply further comprises: A procedure for determining that the user message is not a question; determining a set of relevant questions from a recent questions database containing previously recently asked questions; performing a Term Frequency-Inverse Document Frequency (TF-IDF) procedure of the user messages against questions in the recent questions database to obtain a relevance score for each of the questions; classifying the user message as an answer in response to at least one of the relevance scores exceeding a predefined question relevance threshold; Item 14. The system of item 13, which causes a processor to perform the following: [Item 15] Item 15. The system of item 14, wherein both the procedure for determining the set of related questions and the procedure for determining the set of related answers utilize a term frequency-inverse document frequency (TF-IDF) procedure. [Item 16] 16. The system of any one of items 13 to 15, wherein the classification means uses a recursive neural network (RNN) agent. [Item 17] 17. The system of any one of claims 13 to 16, wherein the step of determining the top answers utilizes a reinforcement learning (RL) agent. [Item 18] the user message is received as a text string, the system further causing the processor to process the text string to generate a tokenized message vector representing the user message; the tokenized message vector includes word integers, which are integers representing words of the user message; each word integer has an associated weight; The classifier is a recurrent neural network (RNN), and the system further comprises: determining, by the RNN, an activation for each word integer that is propagated forward through the RNN; applying the result of said activation to a sigmoid activation function to generate a vector index; determining the user message as a question based on a value associated with the vector index; 18. The system of any one of items 13 to 17. [Item 19] A program for a chat channel processing system, the program, when executed on a processor, receiving a user message from a user; classifying the user message into a classified input, the classified input being one of a question, an answer and a statement, using a classification means; In response to the above categorized input, which is a question, determining a set of relevant answers from a database of answers related to said question; determining a relationship score reflecting a degree of relatedness between each related answer in the set of related answers and the question; determining a top answer from the set of related answers based on the relationship score; presenting at least one of the set of the top answers and the related answers to the user; In response to the classified input, storing said answers in said answer database; In response to the classified input being a description, discarding the classified input; receiving a feedback user message rating the top answer; modifying a reward score for the top answer based on the feedback user message to modify future top answer responses; A program having computer readable program code that embodies the above. [Item 20] The computer readable program code further causes the processor to: A procedure for determining that the user message is not a question; determining a set of relevant questions from a recent questions database containing previously recently asked questions; performing a Term Frequency-Inverse Document Frequency (TF-IDF) procedure of the user messages against questions in the recent questions database to obtain a relevance score for each of the questions; classifying the user message as an answer in response to at least one of the relevance scores exceeding a predefined question relevance threshold; Item 19. The program according to Item 19,
Claims
1. 1. A method for processing chat channel communications in a chat application, the method comprising: receiving a user message from a user; classifying the user message into a categorized input, the categorized input being one of a question, an answer, and a description, using a classification means; In response to the classified input being a question, determining a set of answers associated with said question from an answer database; determining a relationship score reflecting a degree of relatedness between each related answer in the set of related answers and the question; determining a top answer from the set of related answers based on the relevance score; determining a best answer from the top answers based on a reward score; presenting at least one of the best answer and the set of related answers to the user; In response to the classified input being an answer, storing the answers in the answer database; in response to the classified input being a description; discarding the classified input; receiving a feedback user message rating the best answer; modifying the reward score for the best answer based on the feedback user message to modify future best answer responses; 20. A method comprising: using a processor to:
2. The step of classifying the user message as a reply further comprises: determining that the user message is not a question; determining a set of related questions from a recent questions database in response to a Term Frequency-Inverse Document Frequency (TF-IDF) score obtained by performing a TF-IDF procedure on questions in a recent questions database containing previously recently asked questions for the user message exceeding a predefined threshold; performing a Term Frequency-Inverse Document Frequency (TF-IDF) procedure of the user messages against questions in the recent questions database to obtain a relevance score for each of the related questions; classifying the user message as an answer in response to at least one of the relevance scores exceeding a predefined question relevance threshold; The method of claim 1 , comprising:
3. The method of claim 1 , wherein the classifier uses a recurrent neural network (RNN) agent.
4. The method of claim 1 , wherein the determining the top answers utilizes a reinforcement learning (RL) agent.
5. 5. The method of claim 1, wherein the user message is received as a text string, the method further comprising processing the text string to generate a tokenized message vector representing the user message, and classifying the user message into categorized inputs.
6. the tokenized message vector includes word integers, which are integers representing words of the user message; Each word integer has an associated weight, The method of claim 5.
7. the classifier is a recurrent neural network (RNN), and the method further comprises: determining, by the RNN, an activation for each word integer propagated forward through the RNN; applying the result of the activation to a sigmoid activation function to generate a vector index; said step of categorizing said user message into a categorized input is based on a value associated with said vector index; The method of claim 6.
8. 3. The method of claim 2, further comprising storing the questions categorized from the user messages in the recent questions database.
9. The method of claim 2 , wherein the answers database and the recent questions database all relate to a common chat channel of the chat application.
10. The method of claim 1 , wherein the step of determining the top answers uses previously revised relevance scores.
11. The method of claim 1 , wherein the reward score is modified by the rating indicating whether the user is positive or negative about the best answer.
12. A chat channel processing system, comprising: receiving a user message from a user; classifying the user message into a categorized input, the categorized input being one of a question, an answer, and a description, using a classification means; In response to the classified input being a question, determining a set of answers associated with said question from an answer database; determining a relationship score reflecting a degree of relatedness between each related answer in the set of related answers and the question; determining a top answer from the set of related answers based on the relevance score; determining a best answer from the top answers based on a reward score; presenting at least one of the best answer and the set of related answers to the user; In response to the classified input being an answer, storing the answers in the answer database; in response to the classified input being a description; discarding the classified input; receiving a feedback user message rating the best answer; modifying the reward score for the best answer based on the feedback user message to modify future best answer responses; a processor configured to: system.
13. The step of classifying the user message as a reply further comprises: determining that the user message is not a question; determining a set of related questions from a recent questions database in response to a Term Frequency-Inverse Document Frequency (TF-IDF) score obtained by performing a TF-IDF procedure on questions in a recent questions database containing previously recently asked questions for the user message exceeding a predefined threshold; performing a Term Frequency-Inverse Document Frequency (TF-IDF) procedure of the user messages against questions in the recent questions database to obtain a relevance score for each of the related questions; classifying the user message as an answer in response to at least one of the relationship scores exceeding a predefined question relevance threshold; The system of claim 12 , further comprising:
14. The system of claim 12 , wherein the classifier uses a recurrent neural network (RNN) agent.
15. 15. The system of claim 12, wherein the procedure for determining the top answers utilizes a reinforcement learning (RL) agent.
16. the user message is received as a text string, the system further causing the processor to process the text string to generate a tokenized message vector representing the user message; the tokenized message vector includes word integers, which are integers representing words of the user message; each word integer has an associated weight; The classifier is a recurrent neural network (RNN), and the system further comprises: determining, by the RNN, an activation for each word integer propagated forward through the RNN; applying the result of said activation to a sigmoid activation function to generate a vector index; the step of classifying the user message into a classified input is based on a value associated with the vector index.
16. A system according to any one of claims 12 to 15.
17. A program for a chat channel processing system, the program, when executed on a processor, receiving a user message from a user; classifying the user message into a categorized input, the categorized input being one of a question, an answer, and a description, using a classification means; In response to the classified input being a question, determining a set of answers associated with said question from an answer database; determining a relationship score reflecting a degree of relatedness between each related answer in the set of related answers and the question; determining a top answer from the set of related answers based on the relevance score; determining a best answer from the top answers based on a reward score; presenting at least one of the best answer and the set of related answers to the user; In response to the classified input being an answer, storing the answers in the answer database; in response to the classified input being a description; discarding the classified input; receiving a feedback user message rating the best answer; modifying the reward score for the best answer based on the feedback user message to modify future best answer responses; A program having computer readable program code that embodies the above.
18. The computer readable program code further causes the processor to: determining that the user message is not a question; determining a set of related questions from a recent questions database in response to a Term Frequency-Inverse Document Frequency (TF-IDF) score obtained by performing a TF-IDF procedure on questions in a recent questions database containing previously recently asked questions for the user message exceeding a predefined threshold; performing a Term Frequency-Inverse Document Frequency (TF-IDF) procedure of the user messages against questions in the recent questions database to obtain a relevance score for each of the related questions; classifying the user message as an answer in response to at least one of the relationship scores exceeding a predefined question relevance threshold; The program according to claim 17,
Citation Information
Patent Citations
Frequently asked question (FAQ) searching system and its method and program
JP2004086549A
Answering support system and apparatus, and answering support program
JP2006092473A
Communication support device
JP2019128625A
Enabling rhetorical analysis through the use of communicative discourse trees
JP2020522044A
System and method for chat community question answering
US20190260694A1