Patent Publication Number: US-9852239-B2

Title: Method and apparatus for prediction of community reaction to a post

Description:
BACKGROUND OF THE INVENTION 
     Field of the Invention 
     Embodiments of the present invention generally relate to online social communities and, more particularly, to a method and apparatus for predicting community reaction to a post to an online social community. 
     Description of the Related Art 
     With the evolution of social media, enterprise marketers are increasing the reach of social networks to leverage business needs. Products such as ADOBE CQ® Social Communities are used for providing a community forum engaging and interacting with customers. These forums may be used for conveying product understanding to the customer, gathering feedback on products, and understanding the customer needs among others. Other communities may be for larger social interactions, such as FACEBOOK®, or TWITTER®, or other online communities sharing common interests, such as a specific technology, or a political event. 
     The environment of such social communities tends to be volatile. Products such as ADOBE® SocialAnalytics, measure the impact of social media on a business. These products enable marketers to understand how conversations on social networks and online communities influence marketing performance. Generally, positive and negative sentiments expressed by members in such communities tend to have a cascade effect owing to the potential speed of dispersal and wide reach of material published on such online social communities. A post is any message published on an online forum or newsgroup and may include social posts on social platforms such as FACEBOOK®, TWITTER®, and the like, blogs, or marketing materials posted by enterprise marketers. A single post that evokes negative reaction from the community members may lead to significant damage to reputations and brand images within very short periods of time. A marketer can typically do little to curtail the negative publicity. 
     A community&#39;s reaction may be any reaction to an online conversation including responding, pressing a “like” button, sharing the post, emailing a post, quantifying a number of responses, likes, shares, emails or duration of responses, likes, shares, and the like. Preventive measures are generally set up to avoid evoking negative reactions on such social communities. To prevent negative community reaction, understanding the pulse of the community becomes vital. Currently, marketers laboriously scan the posts and reactions of the social community to the posts to understand the pulse of the community. However, the sheer number of posts and reactions make a thorough scan unfeasible, leaving the marketer to resort to guess work while making critical decisions regarding publishing a post. 
     Therefore, there is a need for a method and apparatus for predicting community reaction to a post to an online social community. 
     SUMMARY OF THE INVENTION 
     A method and apparatus for prediction of community reaction to a post for an online social community substantially as shown in and/or described in connection with at least one of the figures, as set forth more completely in the claims. 
     These and other features and advantages of the present disclosure may be appreciated from a review of the following detailed description of the present disclosure, along with the accompanying figures in which like reference numerals refer to like parts throughout. 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         FIG. 1  depicts a block diagram of a system for predicting community reaction to a post, according to one or more embodiments of the invention; 
         FIG. 2  depicts a method for predicting community reaction to a post, as performed by the prediction engine of  FIG. 1 , according to one or more embodiments of the invention; 
         FIG. 3  depicts a method for preparing data that is used to build a prediction model as performed by the text processor of  FIG. 1 , according to one or more embodiments of the invention; 
         FIG. 4  depicts a flow diagram for a method for building the prediction model as performed by the prediction trainer of  FIG. 1 , according to one or more embodiments of the invention; 
         FIG. 5  depicts a flow diagram for a method for predicting a reaction to a post as performed by the reaction predictor of  FIG. 1 , according to one or more embodiments of the invention; 
         FIG. 6  depicts a flow diagram for a method for providing suggestions to make a reaction to a proposed post more positive, as performed by the suggestion module and the term ranking module of  FIG. 1 , according to one or more embodiments of the invention; 
         FIG. 7  depicts a flow diagram for a method for calculating performance indicators as performed by the performance indicator estimator of  FIG. 1 , according to one or more embodiments of the invention; 
         FIG. 8  depicts a visualization of a community reaction prediction, according to one or more embodiments; 
         FIG. 9  depicts a visualization of a sentiment reactions to a plurality of terms in collected posts, according to one or more embodiments; 
         FIG. 10  depicts a visualization of a community reaction prediction to a proposed post, according to one or more embodiments of the invention; 
         FIG. 11  depicts a visualization of a suggestion of replacement terms to improve a community reaction prediction to a proposed post, according to one or more embodiments of the invention; 
         FIG. 12  depicts a visualization of monitoring community reaction, according to one or more embodiments of the invention; and 
         FIG. 13  depicts a computer system that can be utilized in various embodiments of the present invention, according to one or more embodiments of the invention. 
     
    
    
     While the method and apparatus are described herein by way of example for several embodiments and illustrative drawings, those skilled in the art will recognize that the method and apparatus for predicting community reaction to a post to an online social community are not limited to the embodiments or drawings described. It should be understood, that the drawings and detailed description thereto are not intended to limit embodiments to the particular form disclosed. Rather, the intention is to cover all modifications, equivalents and alternatives falling within the spirit and scope of the method and apparatus for prediction of community reaction to a post to an online social community as defined by the appended claims. Any headings used herein are for organizational purposes only and are not meant to limit the scope of the description or the claims. As used herein, the word “may” is used in a permissive sense (i.e., meaning having the potential to), rather than the mandatory sense (i.e., meaning must). Similarly, the words “include”, “including”, and “includes” mean including, but not limited to. The term “online social community” means one or more groups of individuals who share a common interest and are connected by online interactions, such as posts to an Internet-based forum, newsgroup, enterprise marketer, blog, etc. Additionally, in some embodiments, the word “post” may include not only an initial message posted to a social community, but also a response message to an initial message or a response message. 
     DETAILED DESCRIPTION OF EMBODIMENTS 
     Embodiments of the present invention comprise a method and apparatus for predicting community reaction to a post to an online social community. The predictability of reactions on an online social community is quite stable with respect to time. That is, the way a community reacts to a particular way of expressing a particular idea does not change frequently. Thus, reactions to future posts can be predicted with reasonable confidence by learning from previous reactions to posts to an online social community. A prediction model is built for an online Internet community. A separate prediction model is built for each community of interest. For example, a prediction model may be built to predict how FACEBOOK® users may react to a post on FACEBOOK®, while another prediction model is built to predict how TWITTER® users will react to a post on TWITTER®. The posts and responses are gathered from the community site and metrics are calculated for the responses. The calculated metrics may include a number of responses, a number of responses per day, a longevity of a post, a sentiment evoked by the post, and the like. The post and metrics are input into a training module that uses the posts to build the prediction model. Once the model is built, a user may enter a proposed post and receive a prediction of how the proposed post will be received by the community. In some embodiments, suggestions are provided to the user for ways to make the reaction to the proposed post more positive. The model is periodically retrained with new posts and responses retrieved from Internet. 
     Posts and responses are gathered from the Internet. A post is any message published on an online forum or newsgroup and may include social posts on social platforms such as FACEBOOK®, TWITTER®, and the like, blogs, or marketing materials posted by enterprise marketers. Responses may be a text response, a “Like” indication, an email, or any published reply to a post. Gathering the posts and responses may involve sending Hyper-text Transfer Protocol (HTTP) requests to retrieve the posts from the Internet. Other data protocols, formats, and sources may also be used to gather posts from the Internet, an intranet, a wired or wireless LAN, WAN, etc. 
     In some embodiments, the responses to the posts are input to a performance indicator estimator for calculating performance indicator scores as metrics. Performance indicators of a post may be a number of responses to a post, a number of readers who read and responded to the post, a rate of growth or decline of readers determined by a half-life for the post, a longevity of the post, a sentiment evoked by the post and the like. A sentiment indicates subjective information about the response, such as attitude, opinion, emotion, and intent. The calculated performance indicator scores are “de-biased”. De-biasing adapts scores to how negative or positive a community is in general. For example, if a community is generally very negative regardless of the topic of a post, a neutral reaction or even a slightly negative reaction to a post is considered to be positive. 
     In some embodiments, the performance indicator scores are binned. Data binning aggregates the scores into pre-defined intervals. For example, the number of responses may be binned into intervals of 0 to 10, 10 to 100, 100 to 1000, and 1000 and more. In some embodiments, the method extracts bigrams (that is, a sequence of 2 contiguous phonemes, syllables, letters or words) from the post. The bigrams are ranked according to the frequency of the occurrence of the bigram in the entirety of posts retrieved from the community. A predefined number of the top bigrams is stored with the post and the calculated scores. 
     The posts and associated scores are input into a prediction trainer to build a prediction model. Once the prediction model is built, a proposed post from a user is input into the model. A predicted reaction is returned for all performance indicators used to build the model. In some embodiments, the method provides suggestions for improving the overall response to the proposed post. If a suggestion is selected, the method inputs a revised proposed post into the prediction model and returns a predicted reaction to the revised proposed post. 
     In some embodiments, the prediction is displayed showing intervals for performance indicators into which the predicted reactions will fall along with a varying shade indicating the confidence of a corresponding interval. In some embodiments, the text of the post is displayed with a predicted reaction to each term in the text, showing different colors for positive sentiment, negative sentiment, and neutral terms as well as various font sizes indicating the extremity of the predicted reaction. In other embodiments, an interactive word cloud is displayed providing a 3-dimensional image of words in various colors indicating the positive, negative, or neutral sentiment, and font sizes indicating the probability of the correctness of the predicted reaction. In still other embodiments, a list of synonyms for words in the post that have a negative predicted reaction is displayed. A synonym may be selected and substituted for the term having the negative predicted reaction. The method displays the post with the substituted term and a new predicted reaction. 
     In some embodiments, the predication trainer is retrained automatically. In other embodiments, the prediction trainer retrains the system at predefined intervals, for example, every two days. The predefined time is determined by the stability of the community reactions. For example, if a community&#39;s reactions change every two weeks, the prediction trainer may be retrained at a frequency of every fifteen days. In still other embodiments, the prediction trainer gathers published posts from the community continuously. 
     In some embodiments, published posts are monitored and displayed. Older posts are displayed with an actual sentiment determined from the responses and a predicted sentiment is displayed for the reaction to newer posts. The predicted sentiment for the newer posts are updated in real time when the actual sentiment of the responses to the post are published and evaluated. In some embodiments, a user may click on a term or indicator on a display and receive additional information regarding the post(s) associated with the term or indicator. 
     Advantageously, the method may be provided as a service or integrated with marketing software, such as ADOBE® Digital Marketing Suite. Alternatively, the service may be integrated in existing social community sites using application programming interfaces (APIs) so users may see what response their post may receive before the post goes live. 
     Various embodiments of an apparatus and method for prediction of community reaction to a post for a social community are described. In the following detailed description, numerous specific details are set forth to provide a thorough understanding of the claimed subject matter. However, it will be understood by those skilled in the art that claimed subject matter may be practiced without these specific details. In other instances, methods, apparatuses or systems that would be known by one of ordinary skill have not been described in detail so as not to obscure claimed subject matter. 
     Some portions of the detailed description which follow are presented in terms of algorithms or symbolic representations of operations on binary digital signals stored within a memory of a specific apparatus or special purpose computing device or platform. In the context of this particular specification, the term specific apparatus or the like includes a general purpose computer once it is programmed to perform particular functions pursuant to instructions from program software. Algorithmic descriptions or symbolic representations are examples of techniques used by those of ordinary skill in the signal processing or related arts to convey the substance of their work to others skilled in the art. An algorithm is here, and is generally, considered to be a self-consistent sequence of operations or similar signal processing leading to a desired result. In this context, operations or processing involve physical manipulation of physical quantities. Typically, although not necessarily, such quantities may take the form of electrical or magnetic signals capable of being stored, transferred, combined, compared or otherwise manipulated. It has proven convenient at times, principally for reasons of common usage, to refer to such signals as bits, data, values, scores, elements, symbols, characters, terms, numbers, numerals or the like. It should be understood, however, that all of these or similar terms are to be associated with appropriate physical quantities and are merely convenient labels. Unless specifically stated otherwise, as apparent from the following discussion, it is appreciated that throughout this specification discussions utilizing terms such as “processing,” “computing,” “calculating,” “determining” or the like refer to actions or processes of a specific apparatus, such as a special purpose computer or a similar special purpose electronic computing device. In the context of this specification, therefore, a special purpose computer or a similar special purpose electronic computing device is capable of manipulating or transforming signals, typically represented as physical electronic or magnetic quantities within memories, registers, or other information storage devices, transmission devices, or display devices of the special purpose computer or similar special purpose electronic computing device. 
       FIG. 1  depicts a block diagram of a system  100  for predicting community reaction to a post, according to one or more embodiments of the invention. The system  100  comprises a prediction server  102  and one or more social community site servers  106  connected via a network  104 . 
     The social community site server  106  provides an interface (not shown) for multiple users to interact over the network  104 . User interactions are recorded (stored) on the social community site servers  106 . According to an embodiment, the activity on the social community site server  106  comprises posts  148  published on the social community and community responses  150  to such posts  148 . The community responses  150  may be any form of reaction comments, such as email messages, reviews or views published for the benefit of other members of the community or one term/phrase or sentiment indicator, such as like and dislike indicators. 
     The prediction server  102  comprises a CPU  108 , support circuits  110 , a user interface  126 , and a memory  112 . The prediction server  102  is a type of computing device (e.g., a laptop, a desktop, a tablet, a mobile device and/or the like). The CPU  108  may comprise one or more commercially available microprocessors or microcontrollers that facilitate data processing and storage. The various support circuits  110  facilitate the operation of the CPU  108  and include one or more clock circuits, power supplies, cache, input/output circuits, displays, and the like. The memory  112  comprises at least one of Read Only Memory (ROM), Random Access Memory (RAM), disk drive storage, optical storage, removable storage and/or the like. The memory  112  comprises an operating system  114  a web crawler  116 , gathered posts and responses  118 , a prediction engine  119 , a file of stop words  140 , scored post data  142 , a prediction model  144 , and a lexical database  146 . The prediction engine  119  comprises a model generator  120  and a predication processor  132 . The model generator  120  comprises a performance indicator estimator  122 , a sentiment classifier  124 , a response de-biasing module  128 , and a prediction trainer  130 . The prediction processor  132  comprises a reaction predictor  134 , a suggestion module  136 , and a term ranking module  138 . In some embodiments, the sentiment classifier  124  may be included as a portion of the performance indicator estimator  122 . 
     According to some embodiments of the invention, the operating system  114  generally manages various computer resources (e.g., network resources, file processors, and/or the like). The operating system  114  is configured to execute operations on one or more hardware and/or software modules, such as Network Interface Cards (NICs), hard disks, virtualization layers, firewalls and/or the like. Examples of the operating system  114  may include, but are not limited to, Linux, Mac OSX, BSD, Unix, Microsoft Windows, and the like. 
     The web crawler  116  gathers posts and responses from social community site servers  106  using one or more of various methods of data gathering known to those skilled in the art. In some embodiments, the web crawler  116  uses a list of universal resource locators (URLs). Gathering may involve sending Hyper-text Transfer Protocol (HTTP) requests to retrieve the posts and responses from the Internet. Other data protocols, formats, and sources may also be used to gather posts and responses. The gathered posts and responses  118  are stored in the memory  112 . A file of stop words  140  contains words that are filtered out of text before the text is used by the system  100 . Stop words  140  are words that are unlikely to affect the sentiment of a post or reaction. Stop words  140  are language independent. The English language stop words  140  may include words such as a, an, the, is, at, which, on, and the like. 
     The model generator  120  filters the responses to a post by removing words in the responses that are contained in the file of stop words  140 . The model generator  120  also removes any punctuation from the responses. In some embodiments, model generator  120  inputs each response into the performance indicator estimator  122 . The performance indicator estimator  122  calculates scores (metrics) indicative of the total number of responses, the number of responses published each day, the half-life for the responses, the longevity of the post, and the like. The model generator  120  also inputs the comments into the sentiment classifier  124 . The sentiment classifier  124  is any commercially available sentiment classifier known to those of ordinary skill in the art that evaluates the sentiment of a text based on individual terms (or unigrams) in the text and returns a sentiment score within a pre-determined range. For example a range may be from −1 to +1, where −1 is an extremely negative sentiment, +1 is an extremely positive sentiment, and 0 is a neutral sentiment. In some embodiments, sentiment classifier  124  may be included as a portion of performance indicator estimator  122 . 
     A response de-biasing module  128  normalizes the score data calculated by performance indicator  122  and sentiment classifier  124  in order to remove the effects of a general bias of a community towards negativity or positivity. For each calculated performance indicator and sentiment, the response de-biasing module  128  takes the mean and standard deviation of the scores for each response to the post and calculates a new score based on the mean and standard deviation. For example, if a post has twelve responses with sentiment scores estimated within the range of −0.75 to +0.25, the response de-biasing module  128  calculates the mean and standard deviation of the twelve scores, and calculates normalized scores by making the set of twelve scores have a zero mean and a unit variance. The model generator  120  stores the posts and the average normalized score in the scored post data  142 . 
     In some embodiments, the model generator  120  calculates a skewness of a distribution of the normalized scores and determines a number of bins to create for the responses. The model generator  120  then filters the post using the stop words  140  in the same manner in which the responses were filtered previously. The model generator  120  extracts bigrams, or consecutive two-word pairs, from the post. The pairs are ranked according to the probability of the frequency of the pairs in a post. The top N word-pairs are stored with the post in the scored post data  142 . 
     The predication trainer  130  uses the filtered post and the scored post data  142  to build a prediction model  144 . In some embodiments, the prediction model  144  is a maximum entropy (MaxEnt) model. In other embodiments, the prediction model  144  is an enhanced support vector machine, a supervised latent Dirichlet allocation, or other classification engine well known to those of ordinary skill in the art. When the predication model  144  is a MaxEnt model, the prediction model  144  takes each term and bigram in the post and determines a conditional probability for each performance indicator and sentiment for the given term. For example, if the term is “Adobe” and the sentiment is negative, the model determines the probability that the post will be negative given that it contains the term “Adobe”. The conditional probabilities related to those terms that maximize the conditional entropy are added to the model. 
     For example, suppose posts generating a positive reaction contain the terms, A, B, C, D, and E. MaxEnt assigns a probability of each of these terms given a positive response, P(A), P(B), P(C), P(D), and P(E), respectively, given a constraint P(A)+P(B)+P(C)+P(D)+P(E)=1. While each probability may take infinitely many values, in a uniform distribution, P(A)=P(B)=P(C)=P(D)=P(E)=⅕, because a uniform distribution introduces the least bias. Suppose further that half of the posts generating a positive reaction comprise the terms A and B, i.e., P(A)+P(B)=%. Then, a uniform assignment is P(A)=P(B)=¼, P(C)=P(D)=P(E)=⅙. Suppose also, that a quarter of the posts generating a positive reaction comprise the term C, i.e., P(C)=¼. Then, the uniform assignment is P(A)=P(B)=¼, P(C)=¼ P(D)=P(E)=⅛. As the number of terms and constraints increase, the uniform assignment becomes complicated because it is difficult to find such a distribution satisfying the numerous constraints, so conflicts may arise. The MaxEnt model overcomes the conflicts by accommodating as many constraints as necessary, while omitting constraints that cause the uniform assignments to violate the constraints. Hence, the constraints that contribute least to entropy are omitted. Hence, as describe above in the “Adobe” example, the conditional probabilities related to those terms that maximize the conditional entropy are added to the model (and the other terms are omitted). 
     Once the model is built, a user may enter a proposed post via the user interface  126 . The reaction predictor  134  uses the prediction model  144  to predict a reaction to the proposed post. The proposed post is cleaned of all stop words and bigrams are extracted for the post. For each performance indicator or sentiment for which a prediction is being made, a reaction is calculated by calculating the conditional probability for each term and bigram in the cleaned post. The reaction predictor  134  may display via the user interface  126 , the predicted reaction using various methods of visualization of the prediction. In some embodiments, a suggestion module  136  displays a list of suggested terms that may be used to make the reaction to the proposed post more positive. The suggestion module  136  accesses a lexical database  146  to find one or more synonyms for terms that receive negative sentiments. A term ranking module  138  ranks the synonyms found in the lexical database  146  so the suggestion module  136  may display the suggested synonyms in order of sentiment, such as most positive to least positive. 
       FIG. 2  depicts the method  200  for predicting community reaction to a post as performed by the prediction engine  119  of  FIG. 1 , according to one or more embodiments of the invention. The method  200  gathers posts from the social community site and builds a prediction model. When the method  200  receives a proposed post, the method  200  displays a predicted reaction to the proposed post. 
     The method  200  starts at step  202  and proceeds to step  204 . At step  204 , the method  200  gathers the posts needed to build a prediction model as described in further detail with respect to  FIG. 3  below. The method  200  proceeds to step  206 , where the method  200  builds a prediction model as described in further detail with respect to  FIG. 4  below. The method  200  proceeds to step  208 , where the method  200  receives a proposed post. The proposed post may be any text requiring evaluation. The method proceeds to step  210 , where the method  200  predicts a reaction to the proposed post as described in further detail with respect to  FIG. 5  below. 
     The method  200  proceeds to step  212  where the predicted reaction is displayed. The various embodiments in which the predicted reaction is displayed are described in further detail with respect to  FIGS. 8 and 10 , below. The various displays may be used separately or in combination. The method  200  proceeds to step  214  and ends. 
       FIG. 3  depicts the method  300  for preparing posts that are used to build a prediction model as performed by model generator  120  of  FIG. 1 , according to one or more embodiments of the invention. The method  300  gathers posts from one or more sources, such as from online social community sites, calculates scores for various metrics for the responses to the posts, and stores the scores. 
     The method  300  starts at step  302 , and proceeds to step  304 . At step  304 , the method  300  gathers posts from an online social community. The method  300  gathers posts and responses from a community, using various methods of data gathering well known to those skilled in the art. In some embodiments, the method  300  uses a list of universal resource locators (URLs). The method  300  may send Hyper-text Transfer Protocol (HTTP) requests to retrieve the posts. Other data protocols, formats, and sources may also be used to gather posts. 
     The method  300  proceeds to step  306 , where the method  300  filters the text of the gathered responses to the posts. The method  300  filters out words in the response that are contained in a file of stop words. Stop words are words such as a, an, the, is, at, which, on, and the like that do not convey sentiment in the response. The method  300  also removes any punctuation present in the response. 
     In some embodiments, the method  300  optionally proceeds to step  308  where the method  300  calculates performance indicators for the filtered responses as described in further detail with respect to  FIG. 7 , below. 
     The method  300  proceeds to step  310 , where the method  300  determines a sentiment for each response to a post. Each filtered response to a post is input into a sentiment classifier. The sentiment classifier is a third party software that evaluates the positive or negative expression of a response based on each term in the filtered response. The sentiment classifier accepts text as input and returns a score that represents how positive or negative is the expression of sentiment associated with the response. The sentiment classifier then returns a score within a predefined range, for example from −1 to +1, wherein −1 represents extremely negative, +1 represents extremely positive, and 0 represents neutral. In some embodiments, the sentiment classification step  310  is included as a portion of the performance indicator calculation step  308 . 
     The method  300  proceeds to step  312 , where the method  300  de-biases the scores calculated by the performance indicator estimator and the sentiment classifier. De-biasing removes the effect of an extremely positive or extremely negative response on the overall score of a post. In some embodiments the method  300  starts the de-biasing process by finding the mean and standard deviation for the responses to the post. Using the mean and standard deviation, the method  300  recalculates a normalized score for each score calculated by the sentiment classifier using the formula:
 
 r ′=( r−m )/ s  
         where r′ is the normalized score,   r is the score returned by the classifier,   m is the mean of the scores returned by the classifier, and   s is the standard deviation of the scores returned by the classifier.       

     The method  300  averages the normalized scores to create an overall score for the post. 
     For example, if a post has twelve responses and the sentiment classifier returns sentiment scores of −0.75, 0.0, 0.0, 0.1, 0.1, 0.1, 0.2, 0.3, 0.2, −0.1, 0.2, and −0.1 for the twelve responses, respectively, the calculated mean of these twelve scores is 0.02, indicating the overall response to the post was neutral. However, eleven of the twelve responses earned sentiment scores of −0.1 or higher. Thus, if the scores were normalized before calculating the mean score, the mean score would be 0.10, thereby showing a truer indication that the overall response to the post was somewhat positive. 
     The method  300  optionally proceeds to step  314 , where the method  300  determines a number of bins (or intervals) into which the data scores will be binned. The method  300  calculates the skewness of the distribution of the normalized scores using various statistical methods known to those skilled in the art and determines a number of intervals based on the skewness. For example, for sentiment prediction, if the method  300  determines the scores are not skewed, six bins (or intervals) may be evenly distributed, such as: extremely negative for scores of −1.0 to −0.75, moderately negative for scores of −0.75 to −0.50, mildly negative for scores of −0.50 to −0.25, neutral for −0.25 to +0.25, mildly positive for scores of _+0.25 to +0.50, moderately positive for scores of +0.50 to +0.75, and extremely positive for scores of +0.75 to +1.0. However, if the method  300  determines the calculated number of responses distribution is positively skewed, the method  300  may make four bins (or intervals), for example, 0 to 10, 10 to 100, 100 to 1000, and 1000 or more. The method  300  stores the intervals in which the scores fall along with the posts in the file of scored post data. 
     The method  300  proceeds to step  316 , where the method  300  filters the post text in a manner similar to how the method  300  filtered the response text. The method  300  filters words in the post that are contained in a file of stop words. Stop words are words such as a, an, the, is, at, which, on, and the like that do not affect the reaction to the post. The method  300  also removes any punctuation present in the post. 
     The method  300  optionally proceeds to step  318 , where the method  300  extracts bigrams, or consecutive two-word pairs from the post. In some embodiments, the method  300  ranks the pairs according to the frequency of the occurrence of the pair in training data, where the training data comprises all of the posts gathered, from a community. For each pair, the rank is calculated using: 
     
       
         
           
             k 
             = 
             
               
                 ln 
                 ⁢ 
                 
                     
                 
                 ⁢ 
                 
                   ( 
                   
                     p 
                     ⁡ 
                     
                       ( 
                       
                         x 
                         , 
                         y 
                       
                       ) 
                     
                   
                   ) 
                 
               
               
                 ln 
                 ⁢ 
                 
                     
                 
                 ⁢ 
                 
                   ( 
                   
                     p 
                     ⁡ 
                     
                       ( 
                       x 
                       ) 
                     
                   
                   ) 
                 
                 * 
                 ln 
                 ⁢ 
                 
                     
                 
                 ⁢ 
                 
                   ( 
                   
                     p 
                     ⁡ 
                     
                       ( 
                       y 
                       ) 
                     
                   
                   ) 
                 
               
             
           
         
       
         
         
           
             where k is the rank for a particular word pair, 
             p(x,y) is the empirical probability of x and y occurring in sequence in the training data, 
             p(x) is the empirical probability of x occurring in the training data, 
             p(y) is the empirical probability of y occurring in the training data, and 
             ln[·] denotes the natural or Napierian logarithm function (base e). 
           
         
       
    
     The top M word-pairs with the highest scores are joined together and stored with the post in the scored post data. 
     In other embodiments, the method  300  ranks the pairs by determining the frequency of each individual term in the post. The method  300  calculates the empirical probability of the individual term occurring in the training data for each individual term in the post. The method  300  calculates the mean and standard deviation of the empirical probabilities for all individual terms in the post. The method  300  then determines the frequency of occurrences of all bigrams, or consecutive word-pairs, calculates the empirical probability of the bigram occurring in the training data and if the probability of the bigram occurring is greater than the mean plus the standard deviation of the empirical probabilities for all individual terms in the post, the bigram is selected to be stored with the post. 
     The method  300  proceeds to step  320 , where the method  300  stores the filtered post text and the bigrams with the scored post data. The method  300  proceeds to step  322  and ends. 
       FIG. 4  depicts a flow diagram for a method  400  for building the prediction model as performed by the prediction trainer  130  of  FIG. 1  according to one or more embodiments of the invention. The method  400  takes the scored post data and uses the data to build a prediction model. The method  400  starts at step  402  and proceeds to step  404  where the method  400  accesses the scored post data. 
     The scored post data comprises the filtered post, bigrams, normalized scores, and calculated metrics. The method  400  proceeds to step  406 , where the method  400  retrieves all one word terms and stored bigrams for the filtered post. The method  400  proceeds to step  408  where the method  400  calculates the conditional probability for each term and each bigram in the post for one or more of performance indicators and sentiment. Conditional probability is determined by the probability of A given B as: 
     
       
         
           
             
               P 
               ⁢ 
               
                   
               
               ⁢ 
               
                 ( 
                 
                   A 
                   ❘ 
                   B 
                 
                 ) 
               
             
             = 
             
               
                 P 
                 ⁡ 
                 
                   ( 
                   
                     A 
                     ⋂ 
                     B 
                   
                   ) 
                 
               
               
                 P 
                 ⁡ 
                 
                   ( 
                   B 
                   ) 
                 
               
             
           
         
       
         
         
           
             where P(A∩B) is the probability of A and B occurring, and 
             P(B) is the probability of B occurring. 
           
         
       
    
     For example, for a sentiment, if a term in the post is “Adobe” and the method  400  calculates the conditional probability of a post being negative given the post contains the term “Adobe”. The method  400  calculates the conditional probability by determining the number of posts that contain the term “Adobe” that are negative and divides that number by the total number of posts that contain the term “Adobe”. Similarly, for a performance indicator, such as number of responses for a post that fall into the 0-10 interval, the method  400  calculates the conditional probability by determining the number of posts containing the term “Adobe” that have a number of responses between 0-10 and divides that by the total number of posts that contain the term “Adobe”. The method  400  calculates the conditional probability for each interval (or bin) for which total posts are calculated, for example 10-100, 100-1000, and 1000 or more and determines the terms or bigrams for which the conditional entropy is at a maximum. Maximum conditional entropy is determined using any algorithm known in the art that can solve the maximum entropy problem, such as the Improved Iterative Scaling Algorithm for computing maximum-likelihood estimates. 
     The method  400  proceeds to step  410 , where the method  400  adds the terms and bigrams to the model for all terms and bigrams for which the conditional entropy is maximized. The method  400  proceeds to step  412  and ends. 
       FIG. 5  depicts a flow diagram for a method  500  for predicting a reaction to a post as performed by the reaction predictor  134  of  FIG. 1  according to one or more embodiments of the invention. The method  500  receives a proposed post and predicts a community reaction to the post. The method  500  starts at step  502  and proceeds to step  504 . 
     At step  504 , the method  500  receives a proposed post. For example, a proposed post may be, “Woolly mammoth clone! Scientists sign a deal to bring the beast back from extinction.” The method  500  proceeds to step  506  where the method  500  filters the post, similar to how the responses were filtered in step  306  of  FIG. 3  above by removing stop words and punctuation. The filtered proposed post may be, “Woolly Mammoth Clone Scientist Sign Deal Bring Beast Back From Extinction”. 
     The method  500  proceeds to step  508 , where the method  500  extracts the bigrams from the proposed post similar to how bigrams are extracted in step  318  of  FIG. 3 , above. Bigrams may be “Woolly Mammoth” and “Sign Deal”. The method  500  proceeds to step  510  where the method  500  selects a class for predicting a reaction. The class may be a positive or negative score for a sentiment or one or more of the performance indicators. The method  500  proceeds to step  512 , where the method  500  predicts the reaction for the sentiment or performance indicator. For example, based on the prediction model, the method  500  may predict the bigram “Woolly Mammoth” creates a neutral reaction, the term ‘Clone” creates an extremely negative reaction, the term “Scientists” creates a neutral reaction, the bigram “Sign Deal” creates a somewhat positive reaction, the term “Bring” creates a neutral reaction, the term “Beast” creates a strong negative reaction, the term “Back” creates a somewhat positive reaction, the term “From” creates a neutral reaction, and the term “Extinction” creates a very negative reaction. 
     The sentiments for the responses are averaged and the sentiments are binned into the intervals defined in step  314  of  FIG. 3 , above. The method  500  proceeds to step  514 , where the method  500  determines whether there are more sentiments or performance indicators for which a reaction needs to be predicted. For example, a half-life for each term and bigram is predicted, averaged and binned. Predictions are made for each performance indicator used to build the prediction model. If the method  500  determines no more reactions need to be predicted, the method  500  proceeds to step  516  and ends. However, if the method  500  determines there are reactions to be predicted, the method  500  proceeds to step  510  and iterates until all reactions have been predicted. The method  500  proceeds to step  516  and ends. 
       FIG. 6  depicts a flow diagram for a method  600  for providing suggestions to make a reaction to a proposed post more positive as performed by the suggestion module  136  and the term ranking module  138  of  FIG. 1  according to one or more embodiments of the invention. The method  600  determines if there are any terms in the filtered post that are associated with a predicted negative response, in some embodiments, for example a predicted negative sentiment, and provides suggestions of synonyms to the term with the negative sentiment, where the suggested synonyms have a less negative sentiment associated with them. 
     The method  600  starts at step  602  and proceeds to step  604 . At step  604 , the method  600  accesses the post and the predicted reaction. The method  600  proceeds to step  606 , where the method  600  determines whether any terms exist in the post that are associated with a negative sentiment. For example, the term “Extinction” in the current example was predicted to create a very negative reaction. If no terms in the post that has a negative sentiment, the method  600  proceeds to step  618  and ends. However, if the method  600  determines a term in the post is associated with a negative sentiment, the method  600  proceeds to step  608 . 
     At step  608 , the method  600  retrieves synonyms for the negative sentiment term in a lexical database. The lexical database contains synonyms for the negative sentiment term in a variety of contexts. For example, synonyms for the term “Extinction” may be “extermination” in the context of “complete annihilation”, “defunctness” in the context of “no longer in existence”, or “decimation” in the context of “the act of extinguishing”. The method  600  proceeds to step  610 , where the method  600  ranks the synonyms based on calculated conditional probabilities for each term that maximize entropy. The method  600  may rank the synonyms from most positive to most negative as “defunctness”, decimation”, “complete annihilation”. The method  600  proceeds to step  612  where the method  600  displays the suggestions to a user via a user interface. The method  600  proceeds to step  614 , where the method  600  determines whether the user has selected a suggestion to replace a term in the proposed post. The user may select a suggestion by clicking, highlighting or otherwise interacting with a displayed suggested synonym. If the method  600  determines the user has not selected a suggested synonym, the method  600  proceeds to step  618  and ends. However, if the method  600  determines the user has selected a suggested synonym, the method  600  proceeds to step  616 . 
     At step  616 , the method  600  replaces the negative sentiment term in the post with the selected suggested synonym to create a revised proposed post. The method  600  inputs the revised proposed post into the reaction predictor of method  500  and displays the reaction to the revised proposed post. The method  600  then proceeds to step  606 , where the method determines if there are any negative sentiment terms in the revised proposed post. The method  600  iterates until there are no negative sentiment terms in the proposed post or until at step  614  the user chooses to not use any suggestions to make the reaction to the proposed post more positive, at which point the method  600  proceeds to step  618  and ends. 
       FIG. 7  depicts a flow diagram for a method  700  for calculating performance indicators as performed by the performance indicator estimator  122  of  FIG. 1 , according to one or more embodiments of the invention. The method  700  calculates a number of responses to the post, a number of responders each day to the post, a rate of growth or decline of responders to the post, the longevity of a post, meaning how long the post has been active and attracted responders. It is appreciated that although four performance indicators are calculated, other embodiments of the present disclosure envision calculating additional possible performance indicators. The performance indicators that are calculated when the prediction model is built are the performance indicators that will be predicted when a proposed post is input for a predicted reaction. As such, when a proposed post is input into the prediction model, before it is posted on a live community site, the model predicts whether the post will receive a positive or negative response in addition to a number of responses that will be received for the post, the number of responders the post will have, the number of responses that will be received for a given time interval, such as each day, each hour, and the like. 
     The method  700  starts at step  702  and proceeds to step  704 . At step  704 , the method  700  calculates the number of responses for the post. The method  700  proceeds to step  706 , where the method  700  calculates the total number of respondents who provided the responses. The number of respondents may be different from the number of responses in the event that a respondent published multiple responses to a post. Each response contains a screen name of a respondent. The method  700  counts the number of unique screen names that are associated with the responses. The method  700  proceeds to step  708  where the method  700  calculates the number of respondents for each day since the post was published. In addition to a screen name, each post contains a date of when the response was published. The method  700  determines the number of unique screen names that published responses each day since the post was published. 
     The method  700  proceeds to step  710 , where the method  700  determines a half-life, meaning the time in which 50% of the posts were published. For example, a post received, 250 responses, where 25 responses were published on day 1, 25 responses were published on day 2: 20 responses were published on day 3, 30 responses were published on day 4, 100 responses were published on day 5, 50 responses were published on day 6, no responses were published on day 7, and no responses were published on day 8. Of the 250 responses, the half way point, where 125 (or half) of the total responses were published, was on the fifth day. Therefore, the post has a half-life of five days. Often, the half-life may be much shorter, measured in hours or minutes. 
     The method  700  proceeds to step  712 , where the method  700  calculates the longevity of the post, meaning how much time passed between when the post was published and when the last response to the post was published. The method  700  proceeds to step  714  and ends. 
       FIG. 8  depicts a visualization of a community reaction prediction  800 , according to one or more embodiments. The community reaction prediction  800  provides a graphical representation of a community reaction prediction to a proposed post where the prediction model is built to predict a sentiment reaction. The community reaction prediction  800  is divided into two parts, a bell-curve area  802  and a text area  804 . The bell curve area  802  provides an indication of the overall sentiment of a proposed post. In some embodiments, a shaded region  806  begins at 0 on the x-axis. The shaded region  806  begins at 0 on the x-axis and proceeds to the right. A shaded region  806  beginning at 0 and spanning to the right on the x-axis indicates a positive sentiment. Conversely, a shaded region  806  beginning at 0 and spanning to the left on the x-axis indicates a negative sentiment. The width of the shaded region  806  is proportional to the level of confidence of the community reaction prediction. In some embodiments, the color of the shaded region  806  indicates the sentiment. For example, a region shaded in green may indicate a positive sentiment, while a region shaded in red may indicate a negative sentiment. 
     The text area  804  of the community reaction prediction  800  displays the text of the filtered post. In some embodiments, the terms of the filtered post are displayed in different colors to indicate whether a term is predicted to evoke a neutral reaction, a positive reaction, or a negative reaction. For example, terms that are predicted not to contribute to the overall sentiment of the post (i.e., terms that have a neutral sentiment) are displayed in a neutral color, for example, black. Terms that are predicted to evoke a positive sentiment may be displayed in green and terms that are predicted to evoke a negative sentiment may be displayed in red. The color associated with the sentiment is consistent in the bell-curve area  802  and in the text area  804 . The font size of the term indicates the extremity of the reaction. 
     As displayed in the community reaction prediction  800 , the terms “Woolly”, “Mammoth”, “To”, and “From”  808  are predicted to not contribute to the overall sentiment of the post, i.e., the terms  808  are predicted to have a neutral sentiment. These neutral sentiment terms  808  are displayed in a small font in a black color. The term “Clone”  810  is predicted to evoke a very positive sentiment and is therefore displayed in a green color with a larger font. The term “Bring  812  is predicted to evoke an extremely positive sentiment and is therefore displayed in a green color with a larger font than the term “Clone”  810 . Lastly, the term “Extinction”  814  is predicted to evoke a mildly negative sentiment and is therefore displayed in a small font, but in a red color. 
       FIG. 9  depicts a visualization of sentiment reactions  900  to a plurality of terms in collected posts, according to one or more embodiments. The community reaction  900  provides a graphical representation of sentiment reactions by a community to a plurality of collected posts. The terms, bigrams (and in some embodiments n-grams, that is, a sequence of n contiguous phonemes, syllables, letters or words) from collected posts from a community are displayed in a three-dimensional (3D) cloud. The color and font of the term, bigram, or n-gram indicate the sentiment evoked in response to posts containing the term, bigram, or n-gram. As discussed previously, a color, for example, green indicates a positive sentiment and a different color, for example, red indicates a negative sentiment. The font size indicates the probability of the reaction. For example, if the term “Vermont”  902  is displayed in green in a large font, the term “Vermont” has a high probability of evoking a positive reaction. Likewise, if the bigram “Bush.Administration”  904  is displayed in red in a small font, the bigram “Bush.Administration”  904  has a probability of evoking a negative response. In some embodiments, the location of the term in the 3D cloud has no particular significance. 
     A user may interact with a term, bigram, or n-gram in the cloud by clicking, highlighting, or otherwise interacting with the term, bigram, or n-gram. In some embodiments, interacting with the term, bigram, or n-gram displays posts that contributed to the sentiment and hyperlinks to the displayed posts. 
       FIG. 10  depicts a visualization of a community reaction prediction  1000  to a proposed post, according to one or more embodiments of the invention. The community reaction prediction  800  is divided into two parts, a binning area  1002  and a text area  1004 . The binning area  1002  is divided into areas for a plurality of performance indicators. In this example, the binning area  1002  is divided into a sentiment prediction area  1006 , a comment prediction area  1008 , and a half-life prediction area  1010 . Each area  1006 ,  1008 , and  1010  is divided into various bins, where the bins are displayed in varying shades of a color, for example, green, where the shade indicates the confidence the response to the proposed post falls into the particular bin. 
     The text area  1004  of the community reaction prediction  1000  displays the text of the filtered post. In some embodiments, the terms of the filtered post are displayed in different colors to indicate whether a term is predicted to evoke a neutral reaction, a positive reaction, or a negative reaction. For example, terms that are predicted not to contribute to the overall sentiment of the post (i.e., terms that have a neutral sentiment) are displayed in a neutral color, for example, black. Terms that are predicted to evoke a positive sentiment may be displayed in green and terms that are predicted to evoke a negative sentiment may be displayed in red. The color associated with the sentiment is consistent in the binning area  1002  and in the text area  1004 . The font size of the term indicates the extremity of the reaction. 
     As displayed in the community reaction prediction  1000 , because the mildly positive bin  1012  is shaded darker than the other bins in the sentiment prediction area  1006 , it is predicted with great confidence that the proposed post will evoke a mildly positive reaction. Similarly, because the 1000 or more bin  1014  is shaded darker than the other bins in the comment prediction area  1008 , it is predicted with great confidence that the proposed post will receive 1000 or more responses. Finally, because the 100 Mins to 1 Day bin  1016  is shaded darker than the other bins in the Half-Life prediction area  1010 , it is predicted with great confidence that the proposed post will receive half of its comments within the 100 minutes to 1 day interval. 
       FIG. 11  depicts a visualization of a suggestion of replacement terms  1100  to improve a community reaction prediction to a proposed post, according to one or more embodiments of the invention. The community reaction prediction  1100  is divided into two parts, a text area  1102  and a suggestion area  1104 . The text area  1102  of the community reaction prediction  1100  displays the text of the filtered post. In some embodiments, the terms of the filtered post are displayed in different colors to indicate whether a term is predicted to evoke a neutral reaction, a positive reaction, or a negative reaction. For example, terms that are predicted not to contribute to the overall sentiment of the post (i.e., terms that have a neutral sentiment) are displayed in a neutral color, for example, black. Terms that are predicted to evoke a positive sentiment may be displayed in green and terms that are predicted to evoke a negative sentiment may be displayed in red. The font size of the term indicates the extremity of the reaction. 
     The text area  1102  comprises a term “Extinction”  1106 . As described in the previous example, the term “Extinction”  1106  is predicted to evoke a slightly negative reaction and is therefore displayed in a color red in a small font. The suggestion area  1104  comprises a list of synonyms for the term “Extinction”  1106  that may make the predicted reaction to the proposed post more positive. The term “Extinction” is looked up in a lexical dictionary and synonyms in a variety of contexts are displayed in the suggestion area  1104  in order of the calculated prediction to evoke a most positive reaction to least positive reaction. Displayed in the suggestion area  1104  are three synonyms for “Extinction” in three different contexts. For example, the term “defunctness”  1108  has the context “no longer in existence”. The term “extermination”  1110  has the context “complete annihilation”. The term “experimental_extinction”  1112  has the context “a conditioning process in which the reinforcer is removed and a conditioned response becomes independent of the conditioned stimulus”. 
     A user may select a suggested synonym from the suggestion area  1104  by clicking, highlighting, or otherwise interacting with the displayed synonym. When a synonym is selected, the negative sentiment term “Extinction”  1106  is replaced with the selected synonym and a new predicted reaction is displayed in the text area  1102 . If other terms exist in the text area  1102  that are predicted to evoke a negative reaction, synonyms for that term are also displayed in the suggestion area  1104 . 
       FIG. 12  depicts a visualization of monitoring community reaction  1200 , according to one or more embodiments of the invention. The community reaction prediction  1200  provides a graphical representation of community reaction prediction where the prediction model is built to predict a sentiment reaction. The community posts are displayed on a bulls-eye  1202 . Two types of posts are displayed on the bulls-eye  1202 , older posts  1204  and new posts  1206 . Older posts are displayed using an indicator that distinguishes them from newer posts, for example, older posts may be displayed with circles and newer posts may be displayed using squares. Older posts  1204  are posts that are published long enough to get responses and have those responses evaluated. Older posts  1204  are displayed with an indication of the actual sentiment of responses. Newer posts  1206  are posts that are recently published and either have no responses yet or have not had their responses evaluated. 
     The placement of each post on the bulls-eye  1202  indicates the sentiment of the responses (or the predicted sentiment). The sentiments can be positive or negative. For example, in some embodiments a placement above the horizontal axis of the bulls-eye indicates a positive sentiment, and a placement below the horizontal axis indicates a negative sentiment. The angle at which dot is placed relative to the horizontal axis is proportional to the strength of the sentiment. The radius of the bulls-eye  1202  is inversely proportional to the number of comments received for the post. 
     As responses for new posts are gathered and evaluated, their placement on the bulls-eye is updated and the indicator is changed. For example, the square that represents a prediction reaction will be replaced by a circle that represents an actual reaction. A user may select points displayed on the bulls-eye to, for example, navigate to the actual post, view prediction statistics, or to take other actions, such as replying to the post. 
     The embodiments of the present invention may be embodied as methods, apparatus, electronic devices, and/or computer program products. Accordingly, the embodiments of the present invention may be embodied in hardware and/or in software (including firmware, resident software, micro-code, etc.), which may be generally referred to herein as a “circuit” or “module”. Furthermore, the present invention may take the form of a computer program product on a computer-usable or computer-readable storage medium having computer-usable or computer-readable program code embodied in the medium for use by or in connection with an instruction execution system. In the context of this document, a computer-usable or computer-readable medium may be any medium that can contain, store, communicate, propagate, or transport the program for use by or in connection with the instruction execution system, apparatus, or device. These computer program instructions may also be stored in a computer-usable or computer-readable memory that may direct a computer or other programmable data processing apparatus to function in a particular manner, such that the instructions stored in the computer usable or computer-readable memory produce an article of manufacture including instructions that implement the function specified in the flowchart and/or block diagram block or blocks. 
     The computer-usable or computer-readable medium may be, for example but not limited to, an electronic, magnetic, optical, electromagnetic, infrared, or semiconductor system, apparatus, device, or propagation medium. More specific examples (a non exhaustive list) of the computer-readable medium include the following: hard disks, optical storage devices, a transmission media such as those supporting the Internet or an intranet, magnetic storage devices, an electrical connection having one or more wires, a portable computer diskette, a random access memory (RAM), a read-only memory (ROM), an erasable programmable read-only memory (EPROM or Flash memory), an optical fiber, and a compact disc read-only memory (CD-ROM). 
     Computer program code for carrying out operations of the present invention may be written in an object oriented programming language, such as Java®, Smalltalk or C++, and the like. However, the computer program code for carrying out operations of the present invention may also be written in conventional procedural programming languages, such as the “C” programming language and/or any other lower level assembler languages. It will be further appreciated that the functionality of any or all of the program modules may also be implemented using discrete hardware components, one or more Application Specific Integrated Circuits (ASICs), or programmed Digital Signal Processors or microcontrollers. 
     The foregoing description, for purpose of explanation, has been described with reference to specific embodiments. However, the illustrative discussions above are not intended to be exhaustive or to limit the invention to the precise forms disclosed. Many modifications and variations are possible in view of the above teachings. The embodiments were chosen and described in order to best explain the principles of the present disclosure and its practical applications, to thereby enable others skilled in the art to best utilize the invention and various embodiments with various modifications as may be suited to the particular use contemplated. 
     Example Computer System 
       FIG. 13  depicts a computer system that can be used to implement the methods of  FIGS. 2-4  in various embodiments of the present invention, according to one or more embodiments of the invention.  FIG. 13  depicts a computer system that can be utilized in various embodiments of the present invention to implement the prediction server  102 , according to one or more embodiments. 
     Various embodiments of method and apparatus for prediction of community reaction to a post for a social community, as described herein, may be executed on one or more computer systems, which may interact with various other devices. One such computer system is computer system  1300  illustrated by  FIG. 13 , which may in various embodiments implement any of the elements or functionality illustrated in  FIGS. 1-12 . In various embodiments, computer system  1300  may be configured to implement methods described above. The computer system  1300  may be used to implement any other system, device, element, functionality or method of the above-described embodiments. In the illustrated embodiments, computer system  1300  may be configured to implement methods  200 ,  300 ,  400 ,  500 ,  600 , and  700  as processor-executable executable program instructions  1322  (e.g., program instructions executable by processor(s)  1310 ) in various embodiments. 
     In the illustrated embodiment, computer system  1300  includes one or more processors  1310  coupled to a system memory  1320  via an input/output (I/O) interface  1330 . Computer system  1300  further includes a network interface  1340  coupled to I/O interface  1330 , and one or more input/output devices  1350 , such as cursor control device  1360 , keyboard  1370 , and display(s)  1380 . In various embodiments, any of components may be utilized by the system to receive user input described above. In various embodiments, a user interface may be generated and displayed on display  1380 . In some cases, it is contemplated that embodiments may be implemented using a single instance of computer system  1300 , while in other embodiments multiple such systems, or multiple nodes making up computer system  1300 , may be configured to host different portions or instances of various embodiments. For example, in one embodiment some elements may be implemented via one or more nodes of computer system  1300  that are distinct from those nodes implementing other elements. In another example, multiple nodes may implement computer system  1300  in a distributed manner. 
     In different embodiments, computer system  1300  may be any of various types of devices, including, but not limited to, a personal computer system, desktop computer, laptop, notebook, or netbook computer, mainframe computer system, handheld computer, workstation, network computer, a camera, a set top box, a mobile device, a consumer device, video game console, handheld video game device, application server, storage device, a peripheral device such as a switch, modem, router, or in general any type of computing or electronic device. 
     In various embodiments, computer system  1300  may be a uniprocessor system including one processor  1310 , or a multiprocessor system including several processors  1310  (e.g., two, four, eight, or another suitable number). Processors  1310  may be any suitable processor capable of executing instructions. For example, in various embodiments processors  1310  may be general-purpose or embedded processors implementing any of a variety of instruction set architectures (ISAs), such as the x96, PowerPC, SPARC, or MIPS ISAs, or any other suitable ISA. In multiprocessor systems, each of processors  1310  may commonly, but not necessarily, implement the same ISA. 
     System memory  1320  may be configured to store program instructions  1322  and/or data  1332  accessible by processor  1310 . In various embodiments, system memory  1320  may be implemented using any suitable memory technology, such as static random access memory (SRAM), synchronous dynamic RAM (SDRAM), nonvolatile/Flash-type memory, or any other type of memory. In the illustrated embodiment, program instructions and data implementing any of the elements of the embodiments described above may be stored within system memory  1320 . In other embodiments, program instructions and/or data may be received, sent or stored upon different types of computer-accessible media or on similar media separate from system memory  1320  or computer system  1300 . 
     In one embodiment, I/O interface  1330  may be configured to coordinate I/O traffic between processor  1310 , system memory  1320 , and any peripheral devices in the device, including network interface  1340  or other peripheral interfaces, such as input/output devices  1350 . In some embodiments, I/O interface  1330  may perform any necessary protocol, timing or other data transformations to convert data signals from one components (e.g., system memory  1320 ) into a format suitable for use by another component (e.g., processor  1310 ). In some embodiments, I/O interface  1330  may include support for devices attached through various types of peripheral buses, such as a variant of the Peripheral Component Interconnect (PCI) bus standard or the Universal Serial Bus (USB) standard, for example. In some embodiments, the function of I/O interface  1330  may be split into two or more separate components, such as a north bridge and a south bridge, for example. Also, in some embodiments some or all of the functionality of I/O interface  1330 , such as an interface to system memory  1320 , may be incorporated directly into processor  1310 . 
     Network interface  1340  may be configured to allow data to be exchanged between computer system  1300  and other devices attached to a network (e.g., network  1390 ), such as one or more external systems or between nodes of computer system  1300 . In various embodiments, network  1390  may include one or more networks including but not limited to Local Area Networks (LANs) (e.g., an Ethernet or corporate network), Wide Area Networks (WANs) (e.g., the Internet), wireless data networks, some other electronic data network, or some combination thereof. In various embodiments, network interface  1340  may support communication via wired or wireless general data networks, such as any suitable type of Ethernet network, for example; via telecommunications/telephony networks such as analog voice networks or digital fiber communications networks; via storage area networks such as Fibre Channel SANs, or via any other suitable type of network and/or protocol. 
     Input/output devices  1350  may, in some embodiments, include one or more display terminals, keyboards, keypads, touch pads, scanning devices, voice or optical recognition devices, or any other devices suitable for entering or accessing data by one or more computer systems  1300 . Multiple input/output devices  1350  may be present in computer system  1300  or may be distributed on various nodes of computer system  1300 . In some embodiments, similar input/output devices may be separate from computer system  1300  and may interact with one or more nodes of computer system  1300  through a wired or wireless connection, such as over network interface  1340 . 
     In some embodiments, the illustrated computer system may implement any of the methods described above, such as the methods illustrated by the flowchart of  FIGS. 2-7 , as well as to implement the displays shown in  FIGS. 8-12 . In other embodiments, different elements and data may be included. 
     Those skilled in the art will appreciate that computer system  1300  is merely illustrative and is not intended to limit the scope of embodiments. In particular, the computer system and devices may include any combination of hardware or software that can perform the indicated functions of various embodiments, including computers, network devices, Internet appliances, PDAs, wireless phones, pagers, etc. Computer system  1300  may also be connected to other devices that are not illustrated, or instead may operate as a stand-alone system. In addition, the functionality provided by the illustrated components may in some embodiments be combined in fewer components or distributed in additional components. Similarly, in some embodiments, the functionality of some of the illustrated components may not be provided and/or other additional functionality may be available. 
     Those skilled in the art will also appreciate that, while various items are illustrated as being stored in memory or on storage while being used, these items or portions of them may be transferred between memory and other storage devices for purposes of memory management and data integrity. Alternatively, in other embodiments some or all of the software components may execute in memory on another device and communicate with the illustrated computer system via inter-computer communication. Some or all of the system components or data structures may also be stored (e.g., as instructions or structured data) on a computer-accessible medium or a portable article to be read by an appropriate drive, various examples of which are described above. In some embodiments, instructions stored on a computer-accessible medium separate from computer system  600  may be transmitted to computer system  1300  via transmission media or signals such as electrical, electromagnetic, or digital signals, conveyed via a communication medium such as a network and/or a wireless link. Various embodiments may further include receiving, sending or storing instructions and/or data implemented in accordance with the foregoing description upon a computer-accessible medium or via a communication medium. In general, a computer-accessible medium may include a storage medium or memory medium such as magnetic or optical media, e.g., disk or DVD/CD-ROM, volatile or non-volatile media such as RAM (e.g., SDRAM, DDR, RDRAM, SRAM, etc.), ROM, etc. 
     The methods described herein may be implemented in software, hardware, or a combination thereof, in different embodiments. In addition, the order of methods may be changed, and various elements may be added, reordered, combined, omitted, modified, etc. All examples described herein are presented in a non-limiting manner. Various modifications and changes may be made as would be obvious to a person skilled in the art having benefit of this disclosure. Realizations in accordance with embodiments have been described in the context of particular embodiments. These embodiments are meant to be illustrative and not limiting. Many variations, modifications, additions, and improvements are possible. Accordingly, plural instances may be provided for components described herein as a single instance. Boundaries between various components, operations and data stores are somewhat arbitrary, and particular operations are illustrated in the context of specific illustrative configurations. Other allocations of functionality are envisioned and may fall within the scope of claims that follow. Finally, structures and functionality presented as discrete components in the example configurations may be implemented as a combined structure or component. These and other variations, modifications, additions, and improvements may fall within the scope of embodiments as defined in the claims that follow. 
     While the foregoing is directed to embodiments of the present invention, other and further embodiments of the invention may be devised without departing from the basic scope thereof, and the scope thereof is determined by the claims that follow.