TechTip: Watson APIs - Tone Analyzer

Analytics & Cognitive
  • Smaller Small Medium Big Bigger
  • Default Helvetica Segoe Georgia Times

Last month, we looked at Watson's Personality Insights API. This month, we take on the second API in what IBM calls the "Empathy" group, the Tone Analyzer.

By name only, you might think that Tone Analyzer is voice-oriented, but that's not true. It's actually text-oriented and is designed to give you hints as to the tone or overall feel of a piece of text. Granted, sometimes this isn't needed; the tone comes through loud and clear. But there are other times when it's hard to read between the lines and decide exactly what the text is trying to convey.

Analyzing company memos and such is probably not what you will use this for. In fact, the biggest usage would be where you interact with your customers. You could feed in social media information or even the text (using Speech to Text first) of phone calls to your service line to gauge how your customers are feeling when they call in: angry, confused, happy, delusional, whatever.  

Granted, your phone representatives should be able to determine how the customer feels in each individual call, but when you ask for an overall assessment or a rating of angry versus happy, that might be a little more difficult.

If you have used the Watson Virtual Agent package to handle your calls, you could use the output from the Tone Analyzer to help your bots adjust their responses to better match the customer's mood. And, of course, sometimes even human operators could use a little prompting as the customer goes from annoyed to angry.

Getting There Is Half the Fun

Actually, it's not, but for the purposes of this article, let's suspend reality and pretend it is.

Start at the Watson home page. Then click on the Products and Services near the top of the page. From there, select Tone Analyzer in the window that opens.


The demo associated with this product is very interesting, and it provides a lot of insight into how this thing works.

First, you are able to select the type of input that you want to analyze: a series of tweets, an online review, an email, or even a piece of text that you write. Select the one you want to use and click on Analyze.

For the demo, I took the liberty of drafting a short note that's similar to something a company might receive from a customer:

Thank you very much for receiving my call. I just wanted to tell you how very happy I am with the product I received. The suit fit my husband perfectly, and he looked very elegant as he lay in his coffin. His death was an awful shock to all of us, especially the children. He was beloved by everyone in our community and will be missed by the many people who visited the funeral home and who cried unabashedly at his grave. Again, thank you for helping to make him look wonderful.

The result was interesting.

Watson starts at the document level by providing information on the "Emotion" of the piece.

Four purely emotional categories (down from five last summer; they took out Disgust) are measured; Anger, Fear, Joy, and Sadness. The sample text is reviewed, and each category is assigned a numeric value between 0 and 1 to represent its importance in the sample. Not every category will necessarily be represented for a given sample. For example, I scored for both Joy and Sadness, but I did not have a high enough score for Anger or Fear to trigger those buttons. If you hover over the circles associated with the emotions that show up, you can see the exact score. For me, that was Joy at .63 and Sadness at .58.

In addition to emotions, Watson also tries to get a feel for the style of the piece, and it assigns similar scores to Analytical, Confident, and Tentative. I scored here with Confident, getting a .92, which I am pretty proud of.

But Watson also looks at the detail within the overall sample and actually dissects it sentence by sentence to see what makes up the whole.

This is done for each of the categories in which there is a sentence that contributed to the final rating. Interestingly enough, I did have one sentence that qualified as Analytical, but that was not enough to earn it a rating. But it's nice to know.

Technical Details

Like the other APIs in this series, IBM provides sample code on Github to get you started with integrating the Tone Analyzer into your system. There are four specific Github repos associated with this product: Python, Java, Node.js, and Curl.

Currently, you are limited to entering your data in JSON, HTML, or plain-text format with a limit of 128 KB or 1000 individual sentences. The entire 1000 sentences are analyzed for emotional tone, but only the first 100 are included in the sentence-level analysis.

An Interesting Option

Obviously, if you deal with customers and are struggling with the question of how well you're doing in terms of satisfying their needs, this tool could be a valuable asset in evaluating the situation and determining what changes, if any, you need to make in your customer service encounters.