Collaborative real-time solution efficacy

In an approach to determining the effectiveness of a proposed solution, one or more computer processors monitor real-time communications. The one or more computer processors identify or more topics associated with the monitored real-time communications. The one or more computer processors feed the identified one or more topics and associated real-time communications into a solution efficacy model. The one or more computer processors generate based on one or more calculations by the solution efficacy model, an efficacy rating for the identified real-time communications. The one or more computer processors generate a prioritization of the identified real-time communications based on the generated efficacy rating.

BACKGROUND

The present invention relates generally to the field of communication, and more particularly to real-time communication applications.

Collaborative software or groupware is application software designed to help a plurality of individuals involved in a common task to achieve one or more common goals. In terms of the level of interaction, collaborative software may be divided into: real-time collaborative editing (RTCE) platforms that allow multiple users to engage in live, simultaneous, and reversible editing of a single file, and version control (e.g., revision control and source control) platforms, which allow separate users to make parallel edits to a file, while preserving every saved edit as multiple files. Collaborative software is a broad concept that overlaps considerably with computer-supported cooperative work (CSCW). Collaborative work systems become a useful analytical tool to understand the behavioral and organizational variables that are associated to the broader concept of CSCW.

A recurrent neural network (RNN) is a class of artificial neural network where connections between nodes form a directed graph along a sequence allowing the network to exhibit temporal dynamic behavior for a time sequence. Unlike feedforward neural networks, RNNs can use internal states (memory) to process sequences of inputs allowing the RNN to be applicable to tasks such as unsegmented connected handwriting recognition or speech recognition. Long short-term memory (LSTM) units are alternative layer units of a recurrent neural network (RNN). An RNN composed of LSTM units is referred as a LSTM network. A common LSTM unit is composed of a cell, input gate, output gate, and forget gate. The cell remembers values over arbitrary time intervals and the gates regulate the flow of information into and out of the cell. Gated recurrent units (GRUs) are a gating mechanism in recurrent neural networks. GRU performance on polyphonic music modeling and speech signal modeling was found to be similar to LSTM. However, GRUs exhibit better performance on smaller datasets.

SUMMARY

Embodiments of the present invention disclose a computer-implemented method, a computer program product, and a system for determining the effectiveness of a proposed solution. The computer-implemented method includes one or more computer processors monitoring real-time communications. The one or more computer processors identify or more topics associated with the monitored real-time communications. The one or more computer processors feed the identified one or more topics and associated real-time communications into a solution efficacy model. The one or more computer processors generate based on one or more calculations by the solution efficacy model, an efficacy rating for the identified real-time communications. The one or more computer processors generate a prioritization of the identified real-time communications based on the generated efficacy rating.

DETAILED DESCRIPTION

Collaborative services are ubiquitous in modern organizations, allowing a plurality of individuals and groups the ability to have multiple discussions in a real-time. With respect to collaborative services and applications, real-time chat is the predominant method of communication for most organizations. Collaborative chat applications are used by members of a team, organization, and/or company to identify, diagnose, and remediate problems and issues. For example, software development teams utilize collaboration chat applications to identify sections of faulty code and discuss potential solutions (e.g., alternative code structures etc.). Despite all the aforementioned advantages, real-time collaboration applications allow for low efficacy, short-term, ineffective, solutions distracting or preventing others from communicating and discussing more pertinent and effective solutions.

Embodiments of the present invention recognize that collaborative communication is improved by training a solution efficacy model based on prior solved problems and associated communications, monitoring new communications, identifying new problems, and determining the effectiveness of a proposed solution based on the trained solution efficacy model, in a real-time, collaborative chat application. Embodiments of the present invention allow for solution efficacy to be determined utilizing continuous integration, feature testing, and code coverage testing. Implementation of embodiments of the invention may take a variety of forms, and exemplary implementation details are discussed subsequently with reference to the Figures.

FIG.1is a functional block diagram illustrating a computational environment, generally designated100, in accordance with one embodiment of the present invention. The term “computational” as used in this specification describes a computer system that includes multiple, physically, distinct devices that operate together as a single computer system.FIG.1provides only an illustration of one implementation and does not imply any limitations with regard to the environments in which different embodiments may be implemented. Many modifications to the depicted environment may be made by those skilled in the art without departing from the scope of the invention as recited by the claims.

Computational environment100includes client computing device110and server computer120, interconnected over network102. Network102can be, for example, a telecommunications network, a local area network (LAN), a wide area network (WAN), such as the Internet, or a combination of the three, and can include wired, wireless, or fiber optic connections. Network102can include one or more wired and/or wireless networks that are capable of receiving and transmitting data, voice, and/or video signals, including multimedia signals that include voice, data, and video information. In general, network102can be any combination of connections and protocols that will support communications between client computing device110, server computer120, and other computing devices (not shown) within computational environment100. In various embodiments, network102operates locally via wired, wireless, or optical connections and can be any combination of connections and protocols (e.g., personal area network (PAN), near field communication (NFC), laser, infrared, ultrasonic, etc.).

Client computing device110may be any electronic device or computing system capable of processing program instructions and receiving and sending data. In some embodiments, client computing device110may be a laptop computer, a tablet computer, a netbook computer, a personal computer (PC), a desktop computer, a personal digital assistant (PDA), a smart phone, or any programmable electronic device capable of communicating with network102. In other embodiments, client computing device110may represent a server computing system utilizing multiple computers as a server system, such as in a cloud computing environment. In general, client computing device110is representative of any electronic device or combination of electronic devices capable of executing machine readable program instructions as described in greater detail with regard toFIG.4, in accordance with embodiments of the present invention. Client computing device110contains user interface112and application114.

User interface112is a program that provides an interface between a user of client computing device110and a plurality of applications that reside on client computing device110(e.g., application114) and/or may be accessed over network102. A user interface, such as user interface112, refers to the information (e.g., graphic, text, sound) that a program presents to a user and the control sequences the user employs to control the program. A variety of types of user interfaces exist. In one embodiment, user interface112is a graphical user interface. A graphical user interface (GUI) is a type of interface that allows users to interact with peripheral devices (i.e., external computer hardware that provides input and output for a computing device, such as a keyboard and mouse) through graphical icons and visual indicators as opposed to text-based interfaces, typed command labels, or text navigation. The actions in GUIs are often performed through direct manipulation of the graphical elements. In an embodiment, user interface112sends and receives information through application114to user program150.

Application114is a set of one of more programs designed to carry out the operations for a specific application to assist a user to perform an activity (e.g., word processing programs, spread sheet programs, media players, web browsers). In the depicted embodiment, application114is a set of one or more programs designed to facilitate in group communications, collaborative problem solving, and coordination activities. In the depicted embodiment, application114may reside on client computing device110. In another embodiment, application114may reside on server computer120or on another device (not shown) connected over network102.

Server computer120can be a standalone computing device, a management server, a web server, a mobile computing device, or any other electronic device or computing system capable of receiving, sending, and processing data. In other embodiments, server computer120can represent a server computing system utilizing multiple computers as a server system, such as in a cloud computing environment. In another embodiment, server computer120can be a laptop computer, a tablet computer, a netbook computer, a personal computer (PC), a desktop computer, a personal digital assistant (PDA), a smart phone, or any programmable electronic device capable of communicating with client computing device110and other computing devices (not shown) within computational environment100via network102. In another embodiment, server computer120represents a computing system utilizing clustered computers and components (e.g., database server computers, application server computers, etc.) that act as a single pool of seamless resources when accessed within computational environment100. In the depicted embodiment, server computer120includes database122and program150. In other embodiments, server computer120may contain other applications, databases, programs, etc. which have not been depicted in computational environment100. Server computer120may include internal and external hardware components, as depicted and described in further detail with respect toFIG.4.

Database122is a repository for data used by program150. In the depicted embodiment, database122resides on server computer120. In another embodiment, database122may reside on client computing device110or elsewhere within computational environment100provided program150has access to database122. A database is an organized collection of data. Database122can be implemented with any type of storage device capable of storing data and configuration files that can be accessed and utilized by program150, such as a database server, a hard disk drive, or a flash memory. In an embodiment, database122stores data used by program150, such as historical communications, historical problems, associated solution sets, and historical author-topic-solution mappings. In the depicted embodiment, database122contains linguistic corpus124and solution efficacy model126.

Linguistic corpus124is a repository for a plurality of text-based corpora (i.e., natural language representation of auditory speech, text sequences, computer encoded sequences, etc.). In an embodiment, linguistic corpus124contains one or more historical communications, statements, discussions, comments, utterances with one or more authors, individuals, and/or groups. In an embodiment, said historical communications are categorized, organized, and/or structured in relation to the specific author, individual or group. In another embodiment, said historical communications are structured in relation to an identified topic, problem set (e.g., may contain links or references to other related or relevant problems), and/or solution set (e.g., may contain links or references to other related or relevant solutions). In various embodiment, the information contained in linguistic corpus124is temporally structured. For example, said information may be constrained or limited with regards to a time period (e.g., discussion in the last month).

In an embodiment, linguistic corpus124contains raw, unprocessed communications. In another embodiment, linguistic corpus124may include a series of vectors corresponding to a plurality of determined features including, but not limited to, author, group, topic, identified problem, associated solution, related problem/solution sets, technological field (e.g., computer science, mechanical, biology, chemistry, etc.), programmatic conventions (e.g., programming language, programming language category (e.g., strong type, object oriented, procedural, etc.), and temporal events (e.g., subsets constrained by pre-determined intervals (e.g., all communications related to a specific problem/solution made in the last year), software lifecycles (e.g., sunsetting of software, new development, etc.), etc.). In various embodiments, linguistic corpus124includes collections of problem/solution pairs. Each pair includes a problem sequence and a corresponding solution sequence. A problem/solution sequence each may be a textual sequence, in a natural language or a computer-generated representation. In various embodiments, a problem/solution set contains or references associated problem/solution communications, discussions, comments, and/or statements either in a structured or unstructured form. In another embodiment, solution information may include the time needed to incorporate and implement a solution. This embodiment may be utilized to determine whether a user, group, or project has sufficient time and resources to implement the solution. In another embodiment, a solution is converted into a label and attached to one or more associated problems. In yet another embodiment, a pre-determined, historical, and/or generated solution efficacy rating is attached as a feature, label, or as an expected output to one or more problem sets. In an embodiment, linguistic corpus124may be represented as a graph database, where communications, discourse, and/or discussions are stored in relation to the authors or topics forming sequences of similar topic/communication/author combinations.

Solution efficacy model126, hereinafter SEM126, contains one or more models, containers, documents, sub-documents, matrices, vectors, and associated data, modeling one or more feature sets such as results from linguistic analysis, topic characterization/representations, and intra-arrival time of post frequency. In an embodiment, SEM126contains one or more generative (e.g., latent Dirichlet allocation (LDA), etc.) or discriminative (e.g., support vector machine (SVM), etc.) statistical models utilized to categorize one or more communications. For example, SEM126may train and utilize one or more generative statistical models to calculate the conditional probability of an observable X, given a target y, symbolically, P(X|Y=y) and SEM126may train and utilize one or more discriminative models to calculate the conditional probability of the target Y, given an observation x, symbolically, P(Y|X=x).

Program150utilizes one or more models contained in SEM126to identify and/or match one or more topics (e.g., categories, targeted solutions, etc.) of a problem set (e.g., messages or discussions contained in an application (e.g., chat, specialized channel, etc.)) with a proposed solution based on historical solutions and associated discussions and data. In another embodiment, SEM126generates one or more probabilities (e.g., probability distribution) signifying the likelihood that a given solution contains the same or substantially similar topic or field as a problem set. In an additional embodiment, SEM126utilizes the analysis described above, in conjunction with user feedback, continuous integration, unit testing, and/or probabilistic modeling to generate the level of effectiveness (e.g., efficacy rating) of proposed solution.

SEM126assesses a proposed solution by considering different features, available as structured or unstructured data, and applying relative numerical weights. Program150feeds a vectorized, encoded, or computer represented training set of feature data to SEM126. In various embodiments, the data (problem) is labeled with an associated solution enabling SEM126to “learn” what features are correlated to a specific solution, topic, author, prior to use. In various embodiments, the labelled data includes metadata (e.g., targeted programming languages, similar programming languages, environment (e.g., platform, version, device specific variables, etc.), hardware/system specifications (e.g., memory amount/type, central processing unit (CPU) specifications, etc.), etc.) in addition to the problem and an associated solution. The training set includes examples of a plurality of features, such as tokenized problem/solution segments, associated conservations, comments, statements, discussions, variables, objects, data structures, etc. SEM126“learns” from the training set of data to distinguish between probable and improbable (e.g., applied against a predetermined efficacy threshold) solutions when applied to one or more specific problems. Once trained, SEM126can generate one or more probabilities and/or solution efficacy ratings based on the data aggregated and fed by program150.

In an embodiment, SEM126utilizes deep learning techniques to pair problems to relevant solutions. In various embodiments, SEM126utilizes transferrable neural network algorithms and models (e.g., long short-term memory (LSTM), deep stacking network (DSN), deep belief network (DBN), convolutional neural networks (CNN), compound hierarchical deep models, etc.) that can be trained with supervised and/or unsupervised methods. In various embodiments, SEM126is a simple neural network. In a further embodiment, SEM126is a single layer feed neural network containing an affine transformation followed by element-wise nonlinearity, y=f(Wx+b), where f is an element-wise non-linearity, such as sigmoid or hyperbolic tangent, and b is a bias vector. Said simple neural network can be extended with multiple hidden layers, where each layer transforms the output of the previous hidden layer to generate output for the next layer, a multi-layered perceptron (MLP). In the depicted embodiment, SEM126utilizes a recurrent neural network (RNN). In this embodiment, RNN processes sequential data (x1, x2. . . , xt) to calculate subsequent hidden states while the parameters of the model remain the same. The RNN can be “unfolded”, taking the previous hidden state and input at that time step to generate the input for the next series of time steps, allowing information to flow through the network, so that the last cell includes information derived from all the previous cells. In an embodiment, SEM126utilizes gated recurrent units (GRU). GRUB simplify the training process while reducing the amount of necessary computational resources. In another embodiment, SEM126utilizes LSTM. LSTM entails a more robust process, requiring more computational resources but LSTM is more effective when training from large datasets. In various embodiments, the hidden layers of SEM126may be unidirectional or bidirectional. The training and utilization of SEM126is depicted and described in further detail with respect toFIG.2.

Program150is a program for determining the effectiveness of a proposed solution. In the depicted embodiment, program150is a standalone software program. In another embodiment, the functionality of program150, or any combination programs thereof, may be integrated into a single software program. In some embodiments, program150may be located on separate computing devices (not depicted) but can still communicate over network102. In various embodiments, client versions of program150resides on client computing device110and/or any other computing device (not depicted) within computational environment100. Program150is depicted and described in further detail with respect toFIG.2.

The present invention may contain various accessible data sources, such as database122, that may include personal storage devices and content the user wishes not to be used, program150allows the user to opt in or opt out of exposing personal information. Program150enables the authorized and secure handling of user information, such as tracking information, as well as personal information that may have been obtained, is maintained, and/or is accessible. The user can be provided with notice of the collection of portions of the personal information and the opportunity to opt-in or opt-out of the collection process. Consent can take several forms. Opt-in consent can impose on the user to take an affirmative action before the data is collected. Alternatively, opt-out consent can impose on the user to take an affirmative action to prevent the collection of data before that data is collected.

FIG.2is a flowchart depicting operational steps of program150for determining the effectiveness of a proposed solution, in accordance with an embodiment of the present invention.

Program150retrieves historical communications (step202). In an embodiment, program150retrieves all historical messages, conversations, discussions, utterances, and/or statements associated with a specified application (e.g., application114), author (e.g., user), sets of authors, and/or topics. In another embodiment, program150can process the retrieved historical messages into multiple sets. In yet another embodiment, program150partitions historical conversations into discrete sets containing differently processed versions of the same discussion. In various embodiments, program150defines the bounds of a by utilizing predetermined response intervals. For example, if the user does not respond to a message, topic, or contribute to a discussion for more than a week, then program150determines that any communications sent after the time threshold is a new, distinct conversation, implying that the topic of the discussion may have shifted. In this embodiment, program150partitions the historical conservations into one or more sets defined by temporal constraints as described above. In various embodiments, program150follows hyperlinks contained in a discussion, and processes solution related text contained therein. For example, a user suggests that an appropriate solution to a specific issue is within a forum post. If said user links or transmits said link, program150scrapes the link and extracts the information contained within.

Program150utilizes natural language processing (NLP) techniques such as corpus linguistic analysis techniques (e.g., syntactic analysis, etc.) to identify parts of speech and syntactic relations between various portions of a discussion (e.g., partitioned sets, vectorized sets, etc.). Program utilizes corpus linguistic analysis techniques, such as part-of-speech tagging, statistical evaluations, optimization of rule-bases, and knowledge discovery methods, to parse, identify, and evaluate portions of a document. In an embodiment, program150utilizes part-of-speech tagging to identify the particular part of speech of one or more words in a discussion based on its relationship with adjacent and related words. For example, program150utilizes the aforementioned techniques to identity the nouns, adjectives, adverbs, and verbs in the example sentence: “Henry, I believe this link will solve your issue”. In this example, program150identifies “Henry”, “link”, and “issue” as nouns, “solve” and “believe” as verbs. In another embodiment, program150utilizes term frequency-inverse document frequency (tf-idf) techniques to calculate how important a term is to the sentence, conversation, document, or historical chat corpus. In another embodiment, program150utilizes tf-idf to calculate a series of numerical weights for the words extracted from historical conversations. In a further embodiment, program150utilizes said calculations to identify and weigh frequently used terms. For example, program150increases the weight of a word proportionally to the frequency the word appears in the conversation offset by the frequency of documents (e.g., discussions), in linguistic corpus124, that contain the word. In an embodiment, program150utilizes the weights calculated from tf-idf to initialize one or more neural networks.

Program150may utilize one or more models, such as biterm topic modeling and LDA, to identify topics, themes, and problem sets within conversations, messages, discussions, etc. In an embodiment, program150utilizes biterm topic modeling to model the generation of co-occurrence patterns (e.g., biterms) in a document. Program150utilizes biterm topic modeling to model the word co-occurrence patterns thus enhancing the identification of topics. In various embodiments, program150utilizes aggregated patterns in a corpus to identify topics based on co-occurrence patterns at the document-level. In another embodiment, program150utilizes biterm topic modeling to calculate the probability that a series of words are representative of a specified topic. In another embodiment, program150may utilize latent semantic analysis to decompose a matrix of documents and terms (e.g., multiple comments, conservations, etc.) into multiple sub-matrices, such as document-topic matrices or topic-term matrices. In an embodiment, program150utilizes probabilistic latent semantic analysis to calculate a probabilistic model that may be utilized to generate a probabilistic document-term matrix. In various embodiment, program150utilizes latent Dirichlet allocation (LDA) to identify one or more topics that may be contained within a discussion. LDA allows sets of observations to be explained by unobserved groups that explain why some parts of the data are similar. For example, if observations are words collected into documents, LDA posits that each document is a mixture of a small number of topics and that each word's presence is attributable to one of the document's topics. Program150utilizes LDA to decompose a document (e.g., discussions, collection of comments, etc.) as a mixture of various topics. For example, an LDA model might have topics that can be classified as CAT related and DOG related. A topic has probabilities of generating various words, such as milk, meow, and kitten, which can be classified and interpreted by the viewer as “CAT related”. The DOG related topic likewise has probabilities of generating each word: puppy, bark, and bone might have high probability. Words without special relevance, such as “the”, will have an even probability between classes or, dependent on a similarity threshold, be considered a novel topic. In an embodiment, topics are identified on the basis of automatic detection of the likelihood of term co-occurrence. A lexical term may occur in several topics with a different probability, however, with a different typical set of neighboring words in each topic.

Program150can process each discussion set based on one or more feature sets. For example, if the feature set is based on system environmental parameters (e.g., platform, versions, device specific variables, etc.), then program150transforms each word into a corresponding stem/root equivalent, eliminating redundant punctuation, participles, grammatical tenses, etc. In yet another embodiment, program150non-deterministically divides the processed sets into training sets and into test sets. In a further embodiment, program150attaches the corresponding intended recipient to each message/conversation as a label

Program150vectorizes the partitioned problem/solution sets, along with associated message/conversation information. In an embodiment, program150utilizes one-hot encoding techniques to vectorize categorical or string-based feature sets. For example, when vectorizing feature sets of individual words, program150creates a one-hot vector comprising a 1×N matrix, where N symbolizes the number of distinguishable words. In another embodiment, program150utilizes one-of-c coding to recode categorical data into a vectorized form. For example, when vectorizing an example categorical (e.g., problems, topics, etc.) feature set consisting of [memory, optimization, debugging], program150encodes the corresponding feature set into [[1,0,0], [0,1,0], [0,0,1]]. In another embodiment, program150utilizes featuring scaling techniques (e.g., rescaling, mean normalization, etc.) to vectorize and normalize numerical feature sets. In various, program150utilizes 1da2vec (e.g., word embedding) to convert the aforementioned LDA and biterm topic results, documents, and matrices into vectorized representations.

Program150trains a solution efficacy model (step204). Program150can train the one or more models contained in SEM126by feeding the processed vectors into SEM126. In an embodiment, program150initializes SEM126with randomly generated weights. In an alternative embodiment, program150initializes SEM126with weights calculated from the analysis described above (e.g., tf-idf, etc.). In yet another embodiment, program150performs supervised training with the labeled vectorized data, as described in step204. For example, program150feeds problem/solution pairs into SEM126, allowing program150to make inferences between the problem data and the solution data (i.e., label). In this embodiment, program150utilizes processed training sets to perform supervised training of SEM126. In an embodiment, program150trains SEM126with a plurality of feature vectors originating from message information extracted from related topic conservations or author specific discussion located in linguistic corpus124. In an embodiment, program150retrieves all historical messages/conversations/discussions related to a specific topic, environment, application, recipient, group, author, and/or user. In another embodiment, program150retrieves a subset of all historical messages, conversations, and discussions between a members of a channel, group, and/or chat application.

In various embodiments, supervised training determines the difference between a prediction and a target (i.e., the error), and back-propagates the difference through the layers such that SEM126“learns.” In an embodiment, program150utilizes stochastic gradient algorithms to implement backpropagation. Said algorithm may utilize the following function as the loss function, −log pθ(x*t+1|x1, x2, . . . , xt), where x*t+1the true symbol observed in the training data at the corresponding time step and where θ denotes the parameters of the model. Program150may adjust the learning rate in order to adjust cross-entropy cost, allowing program150to increase or decrease the adaptability of related cells and layers. In an embodiment, program150determines whether a sufficient precision is obtained by utilizing test sets. By determining the precision, program150minimizes the likelihood of false positives. If the calculated precision is insufficient, then program150continues with supervised training of SEM126. If the calculated precision is sufficient, then program150ends the training process.

Program150monitors real-time communications (step206). In an embodiment, program150prevents transmission of messages until an efficacy rating is generated. In various embodiments, program150replaces and/or substitutes a graphical transmission icon within a user interface (e.g., user interface112). For example, chat applications (e.g., application114) have graphical icons that when activated transmit a typed message. In this example, program150replaces one or more icons, with the respective triggers, to intercept and retain the message before transmission. In yet another embodiment, program150may analyze outbound traffic of client computing device110to detect the transmission of a message. In this embodiment, program150may retain the message until the message (e.g., solution) is analyzed and approved by the user. In yet another embodiment, program150detects a message by detecting the user entering words in an application (e.g., application114). In a further embodiment, program150may trigger analysis in response to every word or sentence the user inputs. In an alternative embodiment, program150may trigger message analysis after the user stops or ceases inputting or typing text/characters or manipulating user interface112for a specified duration. For example, the user begins to input a message and after 5 seconds of non-input, program150determines the message is ready to be transmitted and thus analyzes the message.

Program150generates an efficacy rating (step208). Responsive to program150monitoring and processing communications (e.g., proposed solutions) within one or more chat applications, program150extracts, analyzes, and decomposes the information contained in said communications, as discussed in step202. In an embodiment, program150utilizes any combination of biterm topic modeling, LDA, and trained cognitive models (e.g., RNN) to identify topics, themes, and relevant problem/solution sets within conversations, messages, discussions, as detailed in step202, in one or more chat applications or environments. In an embodiment, program150processes, vectorizes, and feeds the monitored communications into the aforementioned models within SEM126. In this embodiment, SEM126outputs one or more sets of probabilities denoting the likelihood that the topic of the monitored communication is contained within one or more historical topics. In another embodiment, program150utilizes the output generated from SEM126to generate a topic similarity score representing the degree of similarity between the topic of the monitored communications with historical topics identified from historical discussions contained with linguistic corpus124. In this embodiment, program150utilizes one or more probabilities generated from one or more models, such as the results of the biterm modeling, and the LDA results. In a further embodiment, program150weights each of the aforementioned results in proportion to the degree of topic confidence associated with each model.

In various embodiments, program150utilizes a predefined topic threshold. In this embodiment, if program150determines that an output (e.g., probability, etc.) is less than the topic threshold, then program150associates the monitored discussion or message as a new topic (e.g., topic not defined or encountered in linguistic corpus124). In yet another embodiment, the efficacy rating is an aggregation of the described scores and ratings with distinct weights for any combination of variables, features, components, etc. In an embodiment, utilizing the output of SEM126, program150determines whether the probability associated with the proposed solution is sufficient for an identified problem set. Program150processes the weights and probabilities which SEM126calculates and assigns to the various components of the discussion (e.g., message, comment, etc.) to determine the likelihood of an effective solution. The likelihood or probability is represented as a numerical percentage.

Program150may utilize continuous integration to build, test, and incorporate one or more proposed solutions into a specified problem set. In an embodiment, program150utilizes continuous integration and associated source-code repositories to alter existing code bases utilizing one or more proposed solutions. Responsive to program150implementing one or more proposed solutions, program150runs one or more associated unit tests in order to test the effectiveness of a proposed solution on an existing code base and/or problem set. Dependent on the results of the unit tests, program150may adjust one or more solution efficacy ratings associated with the proposed solutions. For example, if the unit testing demonstrates that a proposed solution passes 45% of the available tests, then program150may decrease the solution efficacy rating associated with said solution. In another embodiment, program150tests every proposed solution regardless of efficacy rating. In an alternative embodiment, program150only utilizes continuous integration if the generated solution efficacy rating is above a predefined threshold. In an example scenario, a group of developers are troubleshooting a buffer overflow bug and discussing potential solutions in a real-time chat application while program150monitors and analyzes the discussion, generating solution efficacy ratings for each proposed solution. In this scenario, program150incorporates proposed fixes into a code base by removing faulty code, introducing the proposed code fix, compiling the code, and running tests on said complied code base. If the proposed fix is effective (e.g., passing all or the majority of tests), then program150pushes the changes to the repository and adjusts the solution efficacy score of the fix (e.g., solution).

Program150adjusts the prioritization of the solution based on efficacy rating (step210). Based on a generated efficacy rating, as described in step208, program150may generate, adjust, and present the prioritization of a solution and one or more associated discussions, comments, and suggestions dependent on the capabilities of the associated application. Responsive to the generated efficacy rating, program150generates, displays, modifies, or presents one or more identified comments distinguishably (e.g., distinctively, etc.) from previous, prior, or historical comments. In various embodiments, program150may generate, adjust, modify, transform, and/or present the appearance of a plurality of stylistic elements of messages, comments, and/or discussions. In an embodiment, said plurality may include; adjustments to font, font size, character style (e.g., bold, italics, font color, background color, superscript, subscript, capitalization, etc.), general transparency, relative transparency, etc. For example, program150applies a “bold” adjustment to a determined high efficacy comment. In another embodiment, program150applies an adjustment to all comments within the view of the user that do not meet or exceed a predefined efficacy threshold. For example, if program150determines that all but one comment meets or exceeds the efficacy threshold, then program150increases the transparency of the low efficacy comments, placing the high efficacy comment in a position of prominence compared to the low efficacy comments (e.g., solutions). In various embodiments, program150may display the generated efficacy rating, as a numerical score, rating, or probability, of a comment. In this embodiment, program150displays the rating in proximity to the corresponding comment. In another embodiment, program150replaces the comment with the associated efficacy rating. In a further embodiment, program150replaces the comment with the rating as a link (e.g., hyperlink, etc.) to the original, replaced comment. In an embodiment, program150retrieves, queries, prompts, or determines user preferences or settings detailing user preferred prioritization adjustments such as level of transparency, text color preferences, comment replacement procedures, and including additional information such as associated efficacy ratings and related comments.

In various embodiments, program150lowlights low efficacy communications. In this embodiment, lowlighting includes a plurality of methods and adjustments designed to decrease the level of focus and attentiveness of a user to a specific discussion, message, and/or solution. In an example situation where program150assigns a solution a low efficacy score to a solution, determining that the given solution would not adequately remediate a given problem, program150decreases the font size of the message in proportion with the associated efficacy score. In an embodiment, if the efficacy rating does not meet or exceed a predetermined efficacy rating, e.g., detailing a lower boundary, then program150may delete, remove, hide, or otherwise obscure said solution and/or the messages discussing said solution. In an embodiment, where program150has multiple probable solutions (e.g., solutions that have efficacy scores that meet or exceed a threshold), program150ranks the solutions based on associated generated efficacy ratings. For example, as program150displays the ranked list of probable solutions, program150may decrease the font size of displayed solutions as the efficacy rating of said solutions decreases. In this embodiment, program150may display all probable solutions, allowing the user to select a solution, rank one or more solutions, and/or provide feedback to the solutions. In various embodiments, if program150determines that a solution is wholly effective for a problem set, then program150may accept the solution, integrate the solution into one or more existing code-bases, notify one or more users regarding the accepted solution, and deprioritize any historical or subsequent solution related to the specified problem.

Program150logs relevant communications and remodels the solution efficacy model (step212). In one embodiment, program150logs relevant conservations, comments, discussions, and associated data into linguistic corpus124. In another embodiment, program150may receive user feedback through a graphical user interface (e.g., user interface112) on client computing device110. For example, after program150analyzes a discussion and an associated solution, the user can provide feedback for the discussion and the rated solution on the graphical user interface (e.g., user interface112) of client computing device110. In an embodiment, feedback may include a simple positive or negative response. In another embodiment, feedback may include a user confirmation of the prioritized or deprioritized solution. For example, if program150incorrectly deprioritized a valid solution, the user can provide negative feedback and correctly prioritize the solution and related communications. In an embodiment, program150feeds the user feedback and the corrected solution into SEM126, allowing program150to adjust the model accordingly. In another embodiment, program150may use one or more techniques of NLP to log whether the response of the user is positive or negative. Program150logs relevant conservations, comments, discussions, and associated data into linguistic corpus124and retrains SEM126utilizing the adjusted corpus and associated training and testing sets.

FIG.3depicts example300, which is an example discussion of a problem-solving session between a plurality of users. Example300includes chat application302, a real-time communication application, problem comment304, a comment introducing a problem or issue for discussion, relevant comment306, a comment containing a proposed solution determined to be slightly relevant, lowlight comment308, a comment containing a proposed solution determined to be potentially irrelevant, removed comment310, a comment containing a proposed solution determined to be irrelevant, and chatbot status comment312, a comment detailing the actions the chatbot took in relation to generated efficacy ratings.

In a detailed example of flowchart200, user1, user2, and user3are software developers and frequently utilize a real-time communication application (e.g., chat application302) to discuss issues and problems associated with software releases. Program150utilizes historical communications contained within the real-time communication application to construct a solution efficacy model specific to the topics and discussions contained with the real-time communication application or within a specific channel or sub-group. Program150continuously monitors the real-time communication application for new communications regarding issues or problems. User1transmits a comment (e.g., problem comment304) regarding a new stack overflow problem in a submodule. Program150detects the new comment and determines the comment as a novel issue, identifying related topics and associated solutions. User2and user3, each reply with suggested solutions to the transmitted problem. Program150detects each reply, extracts information, and feeds said information into the solution efficacy model. Program150utilizes the solution efficacy model to generate efficacy ratings (e.g., scores, gradients, etc.) to adjust the prioritization of one or more aspects of the comment in the chat application. Program150determines that the reply (e.g., relevant comment306) from user2is relevant and does not adjust the appearance of said comment. Program150determines that the reply (e.g., lowlighted comment308) from user3is slightly irrelevant, thus lowlighting the comment. User2posts another solution (e.g., removed comment310), in which program150determines to be greatly off topic and program150removes the post from the chat application. Responsive to adjusting one or more comments, program150transmits a comment or notification (e.g., chatbot status comment312) regarding lowlighting a comment (e.g., lowlighted comment308) and removing a comment (e.g., removed comment310) while inserting a hyper-link to the original “pre-removed” comment.

FIG.4depicts a block diagram of components of client computing device110and server computer120in accordance with an illustrative embodiment of the present invention. It should be appreciated thatFIG.4provides only an illustration of one implementation and does not imply any limitations with regard to the environments in which different embodiments may be implemented. Many modifications to the depicted environment may be made.

Server computer120includes communications fabric404, which provides communications between cache403, memory402, persistent storage405, communications unit407, and input/output (I/O) interface(s)406. Communications fabric404can be implemented with any architecture designed for passing data and/or control information between processors (such as microprocessors, communications, and network processors, etc.), system memory, peripheral devices, and any other hardware components within a system. For example, communications fabric404can be implemented with one or more buses or a crossbar switch.

Memory402and persistent storage405are computer readable storage media. In this embodiment, memory402includes random access memory (RAM). In general, memory402can include any suitable volatile or non-volatile computer readable storage media. Cache403is a fast memory that enhances the performance of computer processor(s)401by holding recently accessed data, and data near accessed data, from memory402.

Program150may be stored in persistent storage405and in memory402for execution by one or more of the respective computer processor(s)401via cache403. In an embodiment, persistent storage405includes a magnetic hard disk drive. Alternatively, or in addition to a magnetic hard disk drive, persistent storage405can include a solid-state hard drive, a semiconductor storage device, a read-only memory (ROM), an erasable programmable read-only memory (EPROM), a flash memory, or any other computer readable storage media that is capable of storing program instructions or digital information.

The media used by persistent storage405may also be removable. For example, a removable hard drive may be used for persistent storage405. Other examples include optical and magnetic disks, thumb drives, and smart cards that are inserted into a drive for transfer onto another computer readable storage medium that is also part of persistent storage405. Software and data412can be stored in persistent storage405for access and/or execution by one or more of the respective processors401via cache403.

Communications unit407, in these examples, provides for communications with other data processing systems or devices. In these examples, communications unit407includes one or more network interface cards. Communications unit407may provide communications through the use of either or both physical and wireless communications links. Program150may be downloaded to persistent storage405through communications unit407.

I/O interface(s)406allows for input and output of data with other devices that may be connected to client computing device110. For example, I/O interface(s)406may provide a connection to external device(s)408, such as a keyboard, a keypad, a touch screen, and/or some other suitable input device. External devices408can also include portable computer readable storage media such as, for example, thumb drives, portable optical or magnetic disks, and memory cards. Software and data used to practice embodiments of the present invention, e.g., program150, can be stored on such portable computer readable storage media and can be loaded onto persistent storage405via I/O interface(s)406. I/O interface(s)406also connect to a display409.