Patent Publication Number: US-11379654-B2

Title: Indicating sentiment of text within a graphical user interface

Description:
CROSS-REFERENCE TO RELATED APPLICATION(S) 
     This application is a continuation patent application of U.S. patent application Ser. No. 16/792,215, filed Feb. 15, 2020 and titled “Indicating Sentiment of Text Within a Graphical User Interface,” which is a continuation patent application of U.S. patent application Ser. No. 16/129,721, filed Sep. 12, 2018 and titled “Indicating Sentiment of Text Within a Graphical User Interface,” now U.S. Pat. No. 10,565,403, the disclosures of which are hereby incorporated herein by reference in their entireties. 
    
    
     FIELD 
     One technical field of the present disclosure is digital data collaboration and graphical user interfacing. Another technical field is analysis and presentation of sentiments of communications through a graphical user interface in a distributed, collaborative computing environment. 
     BACKGROUND 
     The approaches described in this section are approaches that could be pursued, but not necessarily approaches that have been previously conceived or pursued. Therefore, unless otherwise indicated, it should not be assumed that any of the approaches described in this section qualify as prior art merely by virtue of their inclusion in this section. 
     Today, much of our communication is through digital data of written words in a distributed computing environment. Such written communication is generally expedient, conducive to the fast pace of modern life. However, such written communication may not express the communicator&#39;s intention as precisely or comprehensively as spoken or face-to-face communication. Especially when the written words are as hastily reviewed as they are quickly transmitted, misunderstanding or frustration can often occur. When such written communication is conducted on a collaboration platform, where the written communication is generated and received by a relatively large number of users, the volume of negative sentiments can grow even faster or to a much larger extent. Therefore, in a distributed, collaborative computing environment, it would be helpful to have a mechanism for curbing or preventing the development of negative sentiments. 
     SUMMARY 
     The appended claims may serve as a summary of the invention. 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
       In the drawings: 
         FIG. 1  illustrates an example networked computer system in which various embodiments may be practiced. 
         FIG. 2A  illustrates example computer components of a collaboration server computer. 
         FIG. 2B  illustrates example computer components of a collaboration client computer. 
         FIG. 3A  illustrates an example screen of a graphical user interface in which no comment is displayed and a sentiment indicator is displayed. 
         FIG. 3B  illustrates an example screen of a graphical user interface in which a comment is displayed and a sentiment indicator is displayed. 
         FIG. 3C  illustrates an example screen of a graphical user interface in which a slightly negative comment is displayed, a sentiment indicator is displayed, and a related description or suggestion is displayed. 
         FIG. 3D  illustrates an example screen of a graphical user interface in which a significantly negative comment is displayed, a sentiment indicator is displayed, and a related description or suggestion is displayed. 
         FIG. 3E  illustrates an example screen of a graphical user interface in which a positive comment is displayed, a first sentiment indicator is displayed, and a related description or suggestion with a second sentiment indicator is displayed. 
         FIG. 4  illustrates an example process performed by a client device of presenting a sentiment indicator with entered text. 
         FIG. 5  is a block diagram that illustrates a computer system upon which an embodiment of the invention may be implemented. 
     
    
    
     DETAILED DESCRIPTION 
     In the following description, for the purposes of explanation, numerous specific details are set forth in order to provide a thorough understanding of the present invention. It will be apparent, however, that the present invention may be practiced without these specific details. In other instances, well-known structures and devices are shown in block diagram form in order to avoid unnecessarily obscuring the present invention. 
     General Overview 
     A system for indicating estimated sentiments next to entered text or other expressions and related methods are disclosed. In some embodiments, the system comprises a collaboration server computer (server) and one or more client devices. The server is programmed to manage a database of all digital data being collaborated on in a distributed computing environment. The server is programmed to also prepare a set of instructions for managing a graphical user interface (GUI) for collaborating on digital data and related data processing. The GUI enables input or display of main contents, such as programming code, and other text, such as comments on the main contents. 
     In some embodiments, a client device is programmed to receive the set of instructions from the server. The client device is programmed to execute the set of instructions, thereby presenting an instance of the GUI and performing the related data processing. More specifically, the client device is programmed to receive specific text via the instance of the GUI, estimate a sentiment of the specific text, and cause a display of a sentiment indicator having a specific value corresponding to the estimated sentiment. This process can be repeated every time a triggering condition is satisfied, such as when a certain volume of text has been entered, a certain amount of time has passed, or a user request for estimating the sentiment is received. As a result, an estimated sentiment can be continuously communicated as text is entered via the instance of the GUI. The sentiment indicator can take on a list of values, such as a list of emojis, corresponding to a range of sentiments. The sentiment indicator can also be accompanied by additional information, such as a textual description of the estimated sentiment or a recommendation of how to update the entered text to improve the estimated sentiment. 
     In some embodiments, in response to a subsequent request to submit the entered text to the server, the client device is programmed to further review the estimated sentiment for at least a portion of the entered text and determine whether it is appropriate to publish the entered text in the distributed computing environment. For example, when the estimated sentiment of the entered text is excessively negative, publication of the entered text might be disruptive to the collaboration in the distributed computing environment. In such a case, the client device is programmed to offer another opportunity to improve the entered text or reconsider the submission of the entered text to the server. The client device can be configured to redisplay the sentiment indicator with the appropriate value and any suggestion for updating the entered text. The client device can also be configured to request a confirmation of the request for submission from the user who entered the text or a supervisor device, or a reason for submitting the entered text. After receiving necessary feedback to the request for reconsidering submitting the entered text to the server, the client device can be programmed to finally submit the entered text to the server. 
     The system offers several technical benefits. A sentiment indicator is shown with continuously updated values reflecting the estimated sentiment of the entered text near the area where the text is entered. Therefore, the system enables awareness of estimated sentiments of provided contents in near real time and easily accessible manners. The display of the sentiment indicator alone or in combination with a recommendation of how to improve the estimated sentiment also leads to production of better comments and ultimately better main contents to which the comments pertain. Such improvement of quality further leads to reduced network trips of transmitting additional main contents or comments due to confusion or agitation and reduced resource utilization for processing such additional main contents or comments by the server and the client devices. 
     Example Computing Environments 
       FIG. 1  illustrates an example networked computer system in which various embodiments may be practiced.  FIG. 1  is shown in simplified, schematic format for purposes of illustrating a clear example and other embodiments may include more, fewer, or different elements connected in various manners. 
     In some embodiments, the networked computer system forms a distributed computing environment and comprises a collaboration server computer (server)  102  and two (or more) collaboration client computers  124   a ,  124   b  which are communicatively coupled directly or indirectly via one or more networks  118 . 
     In some embodiments, the server  102  broadly represents one or more computers, virtual computing instances, and/or instances of a server-based application that is programmed or configured to host or execute functions including but not limited to creating and maintaining a set of instructions for managing a graphical user interface (GUI) for collaborating on digital data and related data processing, and managing the digital data being collaborated on. Collaborating on digital data may include providing or interacting with main contents, other text, such as comments on the main contents, or sentiment indicators for the text, by one of the collaboration client computers  124   a ,  124   b  in the distributed computing environment. The update and maintenance of the set of instructions and specifically the functionality of the GUI can be based on user feedback on the GUI. For example, in response to receiving repeated indications from the collaboration client computers  124   a ,  124   b  that the way the sentiment indicator is displayed is distracting or annoying, the functionality of the GUI can be updated to show the sentiment indicator in less intrusive manners. Managing the digital data being collaborated on may include receiving an update to existing contents from one of the collaboration client computers  124   a ,  124   b , reconciling the update with the existing contents as necessary, or transmitting the update or the result of reconciliation to all the collaboration client computers. The server  102  can comprise a server farm, a cloud computing platform, a parallel computer, special-purpose hardware, or any other computing facility with sufficient computing power in data processing, data storage, and network communication for the above-described functions. 
     In some embodiments, each collaboration client computer such as  124   a  is programmed to receive the set of instructions for managing the GUI and related data processing from the server  102 . The collaboration client computer  124   a  is programmed to further execute the set of instructions to present an instance of the GUI and perform the related data processing based on user interactions with the instance of the GUI. In addition, the collaboration client computer  124   a  is programmed to transmit some of the received or processed data, including certain digital data being collaborated on or user feedback on the instance of the GUI, back to the server  102  for publication in the distributed computing environment or for improvement of the GUI. The collaboration client computer  124   a  is also programmed to receive updates to the digital data being collaborated on made by the collaboration client computer  124   b  or other collaboration client computers. The collaboration client computers  124   a ,  124   b  may comprise computing facility with sufficient computing power in data processing, data storage, and network communication for the above-described functions. The collaboration client computers  124   a ,  124   b  can comprise a desktop computer, laptop computer, tablet computer, smartphone, or wearable device. 
     The sentiment analysis computer  128  is programmed to estimate the sentiment of given text and produce a sentiment score value. The sentiment analysis computer  128  may provide an application programming interface (API) or other interfaces for receiving input data to invoke the sentiment estimation service and transmitting output data from executing the sentiment estimation service. The sentiment analysis computer  128  may comprise computing facility with sufficient computing power in data processing, data storage, and network communication for the above-described functions. 
     The networks  118  may be implemented by any medium or mechanism that provides for the exchange of data between the various elements of  FIG. 1 . Examples of network  118  include, without limitation, one or more of a cellular network, communicatively coupled with a data connection to the computing devices over a cellular antenna, a near-field communication (NFC) network, a Local Area Network (LAN), a Wide Area Network (WAN), the Internet, a terrestrial or satellite link, etc. 
     In some embodiments, the server  102  is programmed to prepare the set of instructions for managing the GUI and related data processing. Each of the collaboration client computers  124   a ,  124   b  is programmed to then request and retrieve and execute the set of instructions. As a result, the collaboration client computers  124   a ,  124   b  are programmed to present an instance of the GUI and perform the related data processing. Specifically, in accordance with the set of instructions, the collaboration client computer  124   a  is programmed to receive text, which can be related to certain main contents. The collaboration client computer  124   a  can be programmed to estimate the sentiment of the received text by communicating with the sentiment analysis computer  108  or executing locally stored sentiment determination methods. The collaboration client computer  124   a  is programmed to further cause showing a sentiment indicator for the text with a value corresponding to the estimated sentiment and request a confirmation for submitting the text to the server  102 . In response to receiving the confirmation or other triggering events, the collaboration client computer  124   a  is programmed to then submit the text to the server  102 . The server  102  is programmed to then transmit the text to the collaboration client computer  124   b , either automatically or upon request by the collaboration client computer  124   b . The collaboration client computer  124   b  is then programmed to show the text submitted by the collaboration client computer  124   a  via the associated instance of the GUI. 
     Example Computer Components 
       FIG. 2A  illustrates example computer components of a collaboration server computer.  FIG. 2B  illustrates example computer components of a collaboration client computer.  FIG. 2A  and  FIG. 2B  are each shown in simplified, schematic format for purposes of illustrating a clear example and other embodiments may include more, fewer, or different elements connected in various manners. Each of the functional components can be implemented as software components, general or specific-purpose hardware components, firmware components, or any combination thereof. A storage component can be implemented using any of relational databases, object databases, flat file systems, or JSON stores. A storage component can be connected to the functional components locally or through the networks using programmatic calls, remote procedure call (RPC) facilities or a messaging bus. A component may or may not be self-contained. Depending upon implementation-specific or other considerations, the components may be centralized or distributed functionally or physically. 
     In some embodiments, the server  102  comprises a client activity management component having client activity management instructions  202 , a client communication component having client communication instructions  204 , and a collaboration data management component having collaboration data management instructions  206 . In addition, the server  102  comprises a server database  220 . 
     In some embodiments, the client activity management instructions  202  allow creation and maintenance of a set of instructions to be executed by each of the collaboration client computers  124   a ,  124   b . The set of instructions pertains to the management of a GUI for collaborating on digital data and related data processing, such as the presentation of graphical elements, the input or output of data via the graphical elements, or the processing of the inputted data or the data to be outputted. The update or maintenance of the set of instructions can be performed based on user feedback on the GUI transmitted by the collaboration client computers  124   a ,  124   b.    
     In some embodiments, the client communication instructions  204  enable communication with each of the collaboration client computers  124   a ,  124   b . The communications can include initially delivering the set of instructions and subsequently delivering updates to the set of instructions according to specific schedules or in response to requests from the collaboration client computers  124   a ,  124   b . The communications can further include receiving updates to the digital data being collaborated on or user feedback on the GUI or publishing the updates to the digital data being collaborated on in the distributed computing environment. 
     In some embodiments, the collaboration data management instructions  206  allow management of different types of data being collaborated on. The different types of data may include main contents, such as programming code, other text, such as comments on the main contents, or sentiment indicators for the text. Updates to these data can be reconciled with existing contents stored by the server database  220 . The receipt of each of the updates from one of the collaboration client computers  124   a ,  124   b  can be logged in terms of timing, sender, or other attributes. The distribution of the update to the other collaboration client computers can similarly be logged in terms of timing, recipient, or other attributes. 
     In some embodiments, the server database  220  is programmed or configured to manage relevant data structures and store relevant data for functions performed by the server  102 . The data may be related to the collaboration client computers  124   a ,  124   b  which communicate with the server  102 , the set of instructions for managing a GUI for collaborating on digital data and related data processing, user feedback on the GUI or the data processing, the digital data being collaborated on, or collaboration activities, such as reconciling or publishing pieces of the digital data being collaborated on. Specifically, the set of instructions may include computer code for estimating the sentiment of specific contents, such as certain comments on the main contents. The set of instructions may also include a list of values for a sentiment indicator, such as a list of emojis showing a range of expressions corresponding to a list of sentiments. 
     In some embodiments, each of the collaboration client computers  124   a ,  124   b  comprises a GUI execution component having GUI execution instructions  212 , a server communication component having server communication instructions  214 , and a data processing component having data processing instructions  216 . In addition, the collaboration client computer  124   a ,  124   b  comprises a client database  230 . 
     In some embodiments, the GUI execution instructions  212  enable execution of the set of instructions received from the server  102  for managing the GUI for collaborating on digital data and related data processing. More specifically, the GUI execution instructions  212  enable the presentation of an instance of the GUI to receive and display data and the processing of the inputted data or the data to be outputted. The data to be outputted may have originated from any of the collaboration client computers  124   a ,  124   b.    
     In some embodiments, the server communication instructions  214  enable communication with the server  102 . The communications can include initially receiving the set of instructions and subsequently receiving updates to the set of instructions according to specific schedules or in response to requests from the collaboration client computer  124   a ,  124   b . The communications can further include sending updates to the digital data being collaborated on or user feedback on the GUI or receiving updates to the digital data being collaborated on made by another collaboration client computer in the distribute computing environment. In certain embodiments, the updates to the digital data being collaborated on could be directly sent to or received from other collaboration client computers instead of through the server  102 . 
     In some embodiments, the data processing instructions  216  enable processing of different types of data, such as analyzing certain text, such as comments on the main contents, determining values for sentiment indicators that reflect the sentiments of the text, or evaluating user interactions with the sentiment indicators. The processed data may be displayed via the instance of the GUI presented by the collaboration client computer  124   a ,  124   b  through the GUI execution component or transmitted back to the server  102  for further analysis or publication in the distributed computing environment through the server communication component. In certain embodiments, one or more portions of such data processing can be performed by the server  102 , specifically the collaboration data management component or another component. The server communication instructions  214  then enable sending the data to be processed to the server  102 . The client communication instructions  204  then enable receiving the data to be processed and sending the processed data. The server communication instructions  214  then further enable receiving the processed data. 
     In some embodiments, the client database  230  is programmed or configured to manage relevant data structures and store relevant data for functions performed by the collaboration client computer  124   a ,  124   b . The data may be related to the set of instructions for managing a GUI for collaborating on digital data and related data processing, user feedback on the GUI or the data processing, or the digital data being collaborated on. The data being collaborated on, such as comments on main contents or corresponding sentiment indicator values, may be received via the instance of the GUI presented by the collaboration client computer  124   a ,  124   b  or from the server  102 . 
     Functional Descriptions 
     In some embodiments, the server  102  is programmed or configured with data structures and/or database records that are arranged to create and maintain a set of instructions for managing a GUI for a collaboration platform and related data processing in which, in one embodiment, main contents are entered or displayed, other text is entered or displayed, a sentiment score value for the other text is automatically calculated, and a sentiment indicator and/or additional data corresponding to the sentiment score value are displayed. 
       FIG. 3A  illustrates an example screen of a graphical user interface in which no comment is displayed and a sentiment indicator is displayed. In some embodiments, the screen  300  of the GUI for collaborating on digital data includes a first area  302  for showing main contents, such as programming code. The screen  300  includes a second area  304  for receiving other text, such as comments on the main contents. The second area  304  can include an editor or a recording device to capture comments. The screen  300  also includes a third area  312  for showing a sentiment indicator  306 , which indicates an automatically estimated sentiment of the comments entered into the second area  304 . 
     The sentiment indicator can take on different values through a change in appearance as more comments are entered into the second area  304  and/or as text in the second area is changed via user input. In this example, the example sentiment indicator value  306   a  corresponds to an initial state when no comment has been entered. It can correspond to a relatively positive sentiment to encourage the writing of positive comments. 
     In an embodiment, the screen  300  includes a fourth area  308  for receiving an instruction on whether to send the entered comments to the server for access by other client devices or discard the entered comments. The screen  300  may also include another area for showing comments already sent to the server by the same client device or other client devices. 
     Configuring the Graphical User Interface and Related Data Processing 
     In some embodiments, for various aspects of the GUI and the related data processing, the server  102  can be programmed to implement any of the options discussed below or allow an administrator to choose any of these options by receiving configuration data from a data file or an associated administrator device. 
     Referring back to  FIG. 3A , in some embodiments, the size and position of the third area  312  on the screen may be configurable. The default may be to position the third area  312  next to the second area  304  but significantly limit the size of the third area  312  to achieve easy visibility but reduce distraction from working in the second area  304 . For example, the third area  312  can be positioned near the lower-right corner of the second area  304  towards which the display of the entered text grows. 
     In some embodiments, the appearance of the sentiment indicator  306  may be configurable. The sentiment indicator  306  preferably has a relatively small size and provides a summary of the sentiment of the entered text. The sentiment indicator  306  can be in the form of a graphical icon, a sound snippet, or another compact, user-perceivable representation. For example, an icon can have, as different values, different emojis, shapes, or colors that represent different sentiments. As another example, the emojis can range from an acknowledging or welcoming face to a scared or embarrassed face, the colors can range from green to red, or the shapes can range from a heart to a knife. In an embodiment, the different values of an icon correspond to different sentiment score values that have been calculated for input text. A particular value from among a plurality of different values may be selected, based upon a particular sentiment score value that was calculated for particular text, using hard-coded program instructions, a stored data table that maps sentiment score values or ranges of sentiment score values to different values of different icons, or other mapping and selection techniques. 
     In some embodiments, the contents displayed in the third area  312  and the manners of such display may be configurable. In addition to, or as an alternative to, one sentiment indicator that summarizes the sentiment of the entered text, additional data can be displayed to further describe the sentiment, such as a textual description or message or a second sentiment indicator that has a higher information content or covers a different portion of the entered text. The additional data can be displayed automatically, or in response to a user request, such as an interaction with the third area  312  or a selection from a menu. 
     In some embodiments, additional data can also be displayed to describe a recommended action in response to the estimated sentiment. For example, when the estimated sentiment is overtly negative, the recommended action may be to adjust the tone by rewriting an entire sentence or replacing certain words. For rewriting purposes, a first list of words, phrases, sentences, or sentence structures that are generally associated with negative sentiments can be maintained. A second list of words, phrases, sentences, or sentence structures that are generally associated with positive sentiments can also be maintained. The second list can be subdivided into a first sub-list for purely positive sentiments, such as “Great job!”, and a second-sub-list for transitioning from negative sentiments to positive sentiments, such as “This could use some refinement, How about?”. When a portion of the entered text matches an entry in the first list, that portion can be highlighted and one or more appropriate replacements from the second list can be shown. 
     In any of these embodiments, the different values of the additional data may correspond to different sentiment score values that have been calculated for input text. A particular item of additional data from among a plurality of different items of additional data may be selected, based upon a particular sentiment score value that was calculated for particular text, using hard-coded program instructions, a stored data table that maps sentiment score values or ranges of sentiment score values to different identifiers of different additional data items, or other mapping and selection techniques. 
     In some embodiments, the actions taken before sending the entered text to the server may be configurable. In response to receiving a selection of the option to send the entered text to the server, when the estimated sentiment satisfies a certain criterion, such as a sentiment score less than a threshold indicating excessive negativity, a request can be displayed for confirming delivery of the entered text to the server or providing a reason for publishing the entered text in the distributed computing environment. More restrictive measures can also be taken, such as refraining from sending the entered text to the server immediately and requesting a re-selection the option to send the entered text only after a certain amount of time. 
     In some embodiments, the timing of reviewing the entered text, determining a corresponding sentiment, and updating the sentiment indicator  306  can be configurable. The timing can correspond to a spatial constraint, such as every certain number of characters, words, lines, sentences, or paragraphs of text entered via the GUI. The timing can also be determined in response to other specific events, periodically, in accordance with a specific schedule, or upon user requests. For example, a specific event could be that a certain amount of time has passed since any character was last entered into the second area  304 . In addition, as more text is entered, the sentiment can be estimated for only the text entered since the last sentiment estimation, for all the text in a cumulative manner, or for both. 
     Managing the Graphical User Interface and Related Data Processing 
     In some embodiments, the server  102  is programmed to send the set of instructions for managing the GUI and related data processing to a client device according to a specific schedule or in response to a request by the client device. The client device is programmed to then execute the set of instructions to present an instance of the GUI and perform the related data processing. The following discussion refers to a client device or a processor for the purpose of illustrating a clear example, but other embodiments may use a server or a processor of a server in a functionally equivalent manner. 
     In some embodiments, a client device is programmed to present an instance of the GUI and perform the related data processing based on the configuration data.  FIGS. 3B, 3C, 3D , and  3 E are continuations of  FIG. 3A  and illustrate how the GUI changes in response to user interactions. 
       FIG. 3B  illustrates an example screen of a graphical user interface in which a comment is displayed and a sentiment indicator is displayed. In some embodiments, in response to receiving the entered comments  310   b , the client device is programmed to estimate the sentiment of the entered comments  310   b  and obtain a sentiment score value. The sentiment can be estimated using any technique known to someone skilled in the art, such as the methods available from Google Cloud Natural Language API or Microsoft Azure Text Analysis API. The client device can be programmed to map the list of possible sentiment score values produced by a technique to the list of sentiment indicator values. For example, the sentiment indicator may take on 10 values corresponding to 10 different icons, and a sentiment score value from 0 to 1 produced by a technique can be mapped to the 10 icons in increments of 0.1. Alternatively, the client device can directly receive a sentiment indicator value corresponding to an estimated sentiment. The client device is programmed to then cause a display or redisplay of the sentiment indicator with the appropriate value  306   b . In this example, the sentiment indicator  306  is shown as a small icon in the third area  312  located near the lower-right corner of the second area  304 . As the entered comments  310   b  do not sound positive, the icon  306   b  has a less than enthusiastic expression. 
       FIG. 3C  illustrates an example screen of a graphical user interface in which a slightly negative comment is displayed, a sentiment indicator is displayed, and a related description or suggestion is displayed. In some embodiments, in response to receiving an indication of a user interaction with the third area  312 , such as a mouse over or a mouse click on the icon  306 , which may correspond to a request for more information regarding the estimated sentiment, the client device is programmed to cause a display of additional data, such as a textual description  322   c . In this example, the textual description  322   c  further describes the estimated sentiment and how the estimated sentiment deviates from a desirable sentiment. The display of the textual description  322   c  can stop in response to the mouse leaving the third area  312  or a mouse—click on the icon  306 , the textual description  322   c , or elsewhere in the third area  312 , for example. 
       FIG. 3D  illustrates an example screen of a graphical user interface in which a significantly negative comment is displayed, a sentiment indicator is displayed, and a related description or suggestion is displayed. In some embodiments, in response to receiving the entered comments  310   d , the client device is programmed to estimate the sentiment of the entered comments  310   d , as noted above. The client device is programmed to then cause a display or redisplay of the sentiment indicator with the appropriate value  306   d . In this example, the entered comments sound quite negative, and thus the icon  306   d  has a horrified expression. The client device can be programmed to similarly cause a display of a textual description  322   d  in response to a further user interaction, as noted above. Alternatively, the textual description  322   d  can be displayed at the same time as the sentiment indicator  306   d  is displayed given the degree of negativity of the estimated sentiment. 
     In some embodiments, the client device can be programmed to cause a highlight of the portion of the entered comments that is a main contributor to an estimated negative sentiment or is especially inappropriate in a professional or public communication, based on the first predetermined list of such words, phrases, sentences, or sentence structures, as noted above. In this example, the word “LSD” or the phrase “out of your mind” or “nothing better to do” can be highlighted. In addition, the client device can be programmed to cause a display of a suggestion for rewriting the highlighted portion without necessarily indicating how to rewrite the highlighted portion. Alternatively, the client device can be programmed to cause a display of possible replacements of the highlighted portion, based on the second predetermined list of such words, phrases, sentences, or sentence structures, as also noted above. 
     In some embodiments, the client device is programmed to further counteract entered comments that show undesirable sentiments. The client device is programmed to cause a showing of a warning that the entered comments may be inappropriate and request an acknowledgement of the warning or a reason for publishing inappropriate comments or sharing undesirable sentiments. The warning and request can be presented as soon as the undesirable sentiments are determined or estimated or in response to a user request to submit the entered comments to the server  102 . In response to the user request to submit the entered comments and an acknowledgment, the client device can be programmed to submit the entered comments with information regarding the corresponding estimated sentiment to the server  102 . The client device can also be configured to take more restrictive measures before submitting the entered comments to the server, such as requiring a resubmission of the user request after a certain amount of time, a review of the entered comments by a supervisory account, or a rewrite of the entered comments for improved estimated sentiments. Alternatively, the client device can be configured to reject the user request at some point. 
     In some embodiments, the client device is programmed to enable submission of feedback on the estimated sentiment. The feedback can be in many forms, such as a rating, a vote or an agreement, a dislike or a disagreement, or a comment. The client device can be configured to process such feedback locally or transmit such feedback to the server  102  or another computing device to adjust the estimation of sentiments. For example, when more than a certain number of opinions have been received indicating that a certain phrase is humorous or inspiring rather than indicating any negative sentiment, that phrase may no longer be treated as showing a negative sentiment. 
       FIG. 3E  illustrates an example screen of a graphical user interface in which a positive comment is displayed, a first sentiment indicator is displayed, and a related description or suggestion with a second sentiment indicator is displayed. In some embodiments, in response to receiving the entered comments  310   e , the client device is programmed to estimate the sentiment of the entered comments  310   e . The client device is programmed to then cause a display or redisplay of the sentiment indicator with the appropriate value  306   e . In this example, the different values of the sentiment indicator  306  are expressed as different colors of the same symbol. For example, there can be three colors only, with green indicating a positive sentiment, yellow indicating a neutral sentiment, and red indicating a negative sentiment. In response to receiving an indication of a user interaction, the client device can be programmed to similarly cause a display of additional data, such as a second sentiment indicator  330 , which can be more expressive than the sentiment indicator  306  or accompanied by a textual description. In this example, the entered comments sound quite positive, and thus the second sentiment indicator  330   e  shows a smiling face. 
     In some embodiments, the client device is programmed to estimate a sentiment as soon as the entered text include a certain number of additional characters, words, sentences, lines, or paragraphs, periodically, according to a specific schedule, upon a user request, or in response to any other event. For example, such an event could be that a certain amount of time has passed since any comment was last entered. The client device can be configured to cause a showing of two sentiment indicators simultaneously, one reflecting the sentiment for the text entered since the last sentiment estimation, and the other reflecting the sentiment for all the text entered and not yet submitted to the server. The display of the first sentiment indicator can be updated as the cursor moves to another location in the entered text. 
     Managing Data in the Distributed Computing Environment 
     In some embodiments, the server  102  is programmed to receive data submitted by a client device. The received data may include certain text, such as comments on the main contents and a corresponding sentiment value. The server  102  can be programmed to then store the received data and automatically broadcast the received data to the client devices in the distributed computing environment or make the received data available to a client device upon request. The received data may instead include user feedback on the GUI or the related data processing. The server  102  can be programmed to analyze all the received data to improve the GUI or the related data processing. For example, in response to a large volume of estimated negative sentiments being published in the distributed environment, the server may be configured to enforce more restrictive measures before those text associated with negative text is submitted or reinforce the suggestions for improving such text. For further example, in response to a large volume of user opinions that the sentiment indicator is not expressive enough, the server  102  can be configured to increase the values that can be taken on by the sentiment indicator. The server  102  is programmed to thus update the set of instructions for managing the GUI and the related data processing and make the updated set of instructions available to the client devices in the distributed computing environment. 
     Example Processes 
       FIG. 4  illustrates an example process performed by a client device of presenting a sentiment indicator with entered text. 
     In some embodiments, in step  402 , the client device is programmed or configured to cause a presentation of a graphical user interface comprising a screen. The screen includes a first area for receiving text, such as comments on main contents and a second area next to the first area for showing a sentiment indicator. The screen can also include additional areas for receiving or showing the main contents or comments already made on the main contents. The second area is normally right next to the first area, and the contents in the second area are typically shown in a less conspicuous manner than the contents in the first area. For example, the second area could be located below the first area so that as text is being entered into the first area, the sentiment indicator shown in the second area can be easily visible without being obtrusive. 
     In some embodiments, in step  404 , the client device is programmed or configured to receive text via the first area. For example, a GUI widget such as a text box or other computer data input facility may be programmed to receive typed or pasted text representing comments. In some embodiments, the GUI is programmed using browser-executed code that is programmed to detect selection, at the client device, of the first area and entry of one or more keystrokes in the first area or a paste operation that enters data in the first area. The specific mechanism of receiving text is not critical. The text received via the first area may be at least transiently stored in memory. 
     Before receiving a request for submitting the text to a server for access by other hardware processors in a distributed computing environment, the client device is programmed to perform the following steps. In some embodiments, in step  406 , the client device is programmed or configured to determine whether a triggering condition for estimating a sentiment of at least the text is satisfied. The triggering condition can be that a certain number of characters, words, sentences, lines, or paragraphs have been received via the first area since the GUI was presented or a sentiment estimation was last performed. The triggering condition can also be that a certain amount of time has passed since the GUI was presented, a sentiment estimation was last performed, or a character was last received via the first area, or that a user request for sentiment estimation has been received. Through continuous determination of whether the triggering condition is satisfied, the value of the sentiment indicator can be continuously updated to reflect the estimated sentiment as text is entered via the first area, as further discussed below, and before the text is submitted to the server for access by other hardware processors in a distributed computing environment. 
     In some embodiments, in step  408 , in response to determining that the triggering condition is satisfied, the client device is programmed or configured to estimate a sentiment of at least a portion of the text received via the first area. In an embodiment, a computer program implementing  FIG. 4  includes or calls computer program code that is programmed to calculate a sentiment score value for an arbitrary input string or set of characters. In some embodiments, logic for calculating a sentiment score is directly implemented in a computer program that implements  FIG. 4 , or using a local method call or library function. In some embodiments, obtaining a sentiment score value comprises invoking an external sentiment analysis service using an API call, RPC call, other programmatic call, parameterized URL, or other programmatic method of invoking an external service. An example external service is the Google Cloud Natural Language API. The invocation of the external service includes providing the contents of the first area to the external sentiment analysis service. The external sentiment analysis service returns a sentiment score value for the text that was provided as input. The sentiment score value may be in any of several different ranges of values such as real number values from 0 to 1, integer values of 0 to 99 and so forth. 
     In some embodiments, in step  410 , the client device is programmed to further cause displaying the sentiment indicator in the second area with one of a plurality of values corresponding to the estimated sentiment of the text. More specifically, the client device is programmed to estimate the sentiment of the text determine a value of the sentiment indicator corresponding to the estimated sentiment. For example, the entered text might indicate a relatively positive sentiment, and the sentiment indicator might show a smiley-face emoji accordingly. 
     The sentiment indicator provides a near real-time assessment of the sentiment of the entered text and allows updating of the text before the text is finalized and sent to the server for access by other client devices, as further discussed below. 
     In some embodiments, the client device is programmed or configured to receive an indication of a user interaction with the second area where the sentiment indicator is displayed with a specific value. The user interaction may result from an intent to have more information regarding the estimated sentiment. In response to the indication, the client device is programmed to cause a showing of additional information in the second area, such as a textual description of the estimated sentiment or a textual suggestion of how to update the text to achieve a desirable sentiment. 
     In some embodiments, the client device is programmed or configured to receive a request for submitting the entered text to the server and take specific actions in response that request. When the estimated sentiment for the entered text meets a certain criterion, such as a negativity threshold, the client device can be configured to request assurance for submitting the entered text to the server and sharing the entered text with other computing devices in the distributed computing environment. For example, the assurance can be in the form of a confirmation or a reason for submission despite the excessively negative nature of the entered text. 
     Implementation Example—Hardware Overview 
     According to some embodiments, the techniques described herein are implemented by one or more special-purpose computing devices. The special-purpose computing devices may be hard-wired to perform the techniques, or may include digital electronic devices such as one or more application-specific integrated circuits (ASICs) or field programmable gate arrays (FPGAs) that are persistently programmed to perform the techniques, or may include one or more general purpose hardware processors programmed to perform the techniques pursuant to program instructions in firmware, memory, other storage, or a combination. Such special-purpose computing devices may also combine custom hard-wired logic, ASICs, or FPGAs with custom programming to accomplish the techniques. The special-purpose computing devices may be desktop computer systems, portable computer systems, handheld devices, networking devices or any other device that incorporates hard-wired and/or program logic to implement the techniques. 
     For example,  FIG. 5  is a block diagram that illustrates a computer system  500  upon which an embodiment of the invention may be implemented. Computer system  500  includes a bus  502  or other communication mechanism for communicating information, and a hardware processor  504  coupled with bus  502  for processing information. Hardware processor  504  may be, for example, a general purpose microprocessor. 
     Computer system  500  also includes a main memory  506 , such as a random access memory (RAM) or other dynamic storage device, coupled to bus  502  for storing information and instructions to be executed by processor  504 . Main memory  506  also may be used for storing temporary variables or other intermediate information during execution of instructions to be executed by processor  504 . Such instructions, when stored in non-transitory storage media accessible to processor  504 , render computer system  500  into a special-purpose machine that is customized to perform the operations specified in the instructions. 
     Computer system  500  further includes a read only memory (ROM)  508  or other static storage device coupled to bus  502  for storing static information and instructions for processor  504 . A storage device  510 , such as a magnetic disk, optical disk, or solid-state drive is provided and coupled to bus  502  for storing information and instructions. 
     Computer system  500  may be coupled via bus  502  to a display  512 , such as an OLED, LED or cathode ray tube (CRT), for displaying information to a computer user. An input device  514 , including alphanumeric and other keys, is coupled to bus  502  for communicating information and command selections to processor  504 . Another type of user input device is cursor control  516 , such as a mouse, a trackball, or cursor direction keys for communicating direction information and command selections to processor  504  and for controlling cursor movement on display  512 . This input device typically has two degrees of freedom in two axes, a first axis (e.g., x) and a second axis (e.g., y), that allows the device to specify positions in a plane. The input device  514  may also have multiple input modalities, such as multiple 2-axes controllers, and/or input buttons or keyboard. This allows a user to input along more than two dimensions simultaneously and/or control the input of more than one type of action. 
     Computer system  500  may implement the techniques described herein using customized hard-wired logic, one or more ASICs or FPGAs, firmware and/or program logic which in combination with the computer system causes or programs computer system  500  to be a special-purpose machine. According to some embodiments, the techniques herein are performed by computer system  500  in response to processor  504  executing one or more sequences of one or more instructions contained in main memory  506 . Such instructions may be read into main memory  506  from another storage medium, such as storage device  510 . Execution of the sequences of instructions contained in main memory  506  causes processor  504  to perform the process steps described herein. In alternative embodiments, hard-wired circuitry may be used in place of or in combination with software instructions. 
     The term “storage media” as used herein refers to any non-transitory media that store data and/or instructions that cause a machine to operate in a specific fashion. Such storage media may comprise non-volatile media and/or volatile media. Non-volatile media includes, for example, optical disks, magnetic disks, or solid-state drives, such as storage device  510 . Volatile media includes dynamic memory, such as main memory  506 . Common forms of storage media include, for example, a floppy disk, a flexible disk, hard disk, solid-state drive, magnetic tape, or any other magnetic data storage medium, a CD-ROM, any other optical data storage medium, any physical medium with patterns of holes, a RAM, a PROM, and EPROM, a FLASH-EPROM, NVRAM, any other memory chip or cartridge. 
     Storage media is distinct from but may be used in conjunction with transmission media. Transmission media participates in transferring information between storage media. For example, transmission media includes coaxial cables, copper wire and fiber optics, including the wires that comprise bus  502 . Transmission media can also take the form of acoustic or light waves, such as those generated during radio-wave and infra-red data communications. 
     Various forms of media may be involved in carrying one or more sequences of one or more instructions to processor  504  for execution. For example, the instructions may initially be carried on a magnetic disk or solid-state drive of a remote computer. The remote computer can load the instructions into its dynamic memory and send the instructions over a telephone line using a modem. A modem local to computer system  500  can receive the data on the telephone line and use an infra-red transmitter to convert the data to an infra-red signal. An infra-red detector can receive the data carried in the infra-red signal and appropriate circuitry can place the data on bus  502 . Bus  502  carries the data to main memory  506 , from which processor  504  retrieves and executes the instructions. The instructions received by main memory  506  may optionally be stored on storage device  510  either before or after execution by processor  504 . 
     Computer system  500  also includes a communication interface  518  coupled to bus  502 . Communication interface  518  provides a two-way data communication coupling to a network link  520  that is connected to a local network  522 . For example, communication interface  518  may be an integrated services digital network (ISDN) card, cable modem, satellite modem, or a modem to provide a data communication connection to a corresponding type of telephone line. As another example, communication interface  518  may be a local area network (LAN) card to provide a data communication connection to a compatible LAN. Wireless links may also be implemented. In any such implementation, communication interface  518  sends and receives electrical, electromagnetic or optical signals that carry digital data streams representing various types of information. Such a wireless link could be a Bluetooth, Bluetooth Low Energy (BLE), 802.11 WiFi connection, or the like. 
     Network link  520  typically provides data communication through one or more networks to other data devices. For example, network link  520  may provide a connection through local network  522  to a host computer  524  or to data equipment operated by an Internet Service Provider (ISP)  526 . ISP  526  in turn provides data communication services through the world wide packet data communication network now commonly referred to as the “Internet”  528 . Local network  522  and Internet  528  both use electrical, electromagnetic or optical signals that carry digital data streams. The signals through the various networks and the signals on network link  520  and through communication interface  518 , which carry the digital data to and from computer system  500 , are example forms of transmission media. 
     Computer system  500  can send messages and receive data, including program code, through the network(s), network link  520  and communication interface  518 . In the Internet example, a device  530  might transmit a requested code for an application program through Internet  528 , ISP  526 , local network  522  and communication interface  518 . 
     The received code may be executed by processor  504  as it is received, and/or stored in storage device  510 , or other non-volatile storage for later execution. 
     In the foregoing specification, embodiments of the invention have been described with reference to numerous specific details that may vary from implementation to implementation. The specification and drawings are, accordingly, to be regarded in an illustrative rather than a restrictive sense. The sole and exclusive indicator of the scope of the invention, and what is intended by the applicants to be the scope of the invention, is the literal and equivalent scope of the set of claims that issue from this application, in the specific form in which such claims issue, including any subsequent correction.