{"id":20019,"date":"2016-08-18T19:40:45","date_gmt":"2016-08-18T16:40:45","guid":{"rendered":"https:\/\/www.altoros.com\/blog\/?p=20019"},"modified":"2018-08-01T17:12:05","modified_gmt":"2018-08-01T14:12:05","slug":"analyzing-customer-feedback-emotions-with-ibm-watson-and-bluemix-openwhisk","status":"publish","type":"post","link":"https:\/\/www.altoros.com\/blog\/analyzing-customer-feedback-emotions-with-ibm-watson-and-bluemix-openwhisk\/","title":{"rendered":"Analyzing Customer Feedback Emotions with IBM Watson and Bluemix OpenWhisk"},"content":{"rendered":"<p>Natural language processing and machine learning enable <a href=\"https:\/\/www.ibm.com\/watson\" target=\"_blank\">IBM Watson<\/a> to derive insights from various types of digital communication. For example, its text analysis services can help users to <a href=\"https:\/\/www.altoros.com\/blog\/analyzing-text-with-the-alchemylanguage-service-in-ibm-watson\/\">understand the sentiment<\/a> and concepts of content, <a href=\"https:\/\/www.altoros.com\/blog\/using-the-personality-insights-service-in-ibm-watson\/\">get personality characteristics<\/a> of individuals based on textual information, or <a href=\"https:\/\/www.altoros.com\/blog\/using-the-dialog-service-in-ibm-watson-the-fox-goose-and-bag-of-beans-chatbot\/\">develop human-like conversations<\/a> with virtual agents.<\/p>\n<p>For a hands-on session on a <a href=\"https:\/\/www.linkedin.com\/pulse\/kutsu-ideasta-toteutukseen-bluemix-p%C3%A4iv%C3%A4-3152016-tommi-ristola\" target=\"_blank\">Bluemix day<\/a> at the IBM Finland office, we prepared a microservice-based app that analyzes text and provides emotion scores for customer feedback. This post shares the details on how the app was implemented using several Bluemix services and reveals some lessons learned.<\/p>\n<p>&nbsp;<\/p>\n<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_79_2 counter-hierarchy ez-toc-counter ez-toc-transparent ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">Table of Contents<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"Toggle Table of Content\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/www.altoros.com\/blog\/analyzing-customer-feedback-emotions-with-ibm-watson-and-bluemix-openwhisk\/#Description_of_the_application\" >Description of the application<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/www.altoros.com\/blog\/analyzing-customer-feedback-emotions-with-ibm-watson-and-bluemix-openwhisk\/#The_application_architecture\" >The application architecture<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/www.altoros.com\/blog\/analyzing-customer-feedback-emotions-with-ibm-watson-and-bluemix-openwhisk\/#How_the_microservices_work\" >How the microservices work<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/www.altoros.com\/blog\/analyzing-customer-feedback-emotions-with-ibm-watson-and-bluemix-openwhisk\/#Lessons_learned\" >Lessons learned<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/www.altoros.com\/blog\/analyzing-customer-feedback-emotions-with-ibm-watson-and-bluemix-openwhisk\/#Related_reading\" >Related reading<\/a><\/li><\/ul><\/nav><\/div>\n<h3><span class=\"ez-toc-section\" id=\"Description_of_the_application\"><\/span>Description of the application<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>The demo application provides functionality for importing customer feedback messages and audio recordings; for audio files, speech is then also converted into text. Its internal services analyze the text and calculate emotion scores. In case of negative feedback, a customer relations manager receives an SMS notification.<\/p>\n<p>To implement such a solution, we used Node.js and the following IBM Bluemix services:<\/p>\n<ul>\n<li><a href=\"https:\/\/console.bluemix.net\/docs\/services\/Cloudant\/index.html#Cloudant\" target=\"_blank\">Cloudant<\/a><\/li>\n<li><a href=\"https:\/\/cloud.ibm.com\/docs\/services\/ObjectStorage\/index.html\" target=\"_blank\">Object Storage<\/a><\/li>\n<li><a href=\"https:\/\/cloud.ibm.com\/docs\/openwhisk\/index.html\" target=\"_blank\">OpenWhisk<\/a><\/li>\n<li><a href=\"https:\/\/www.ibm.com\/watson\" target=\"_blank\">Watson Speech to Text<\/a><\/li>\n<li><a href=\"https:\/\/www.ibm.com\/watson\/developercloud\/tone-analyzer.html?cm_mc_uid=17489915775914709460868&#038;cm_mc_sid_50200000=1470973343\" target=\"_blank\">Watson Tone Analyzer<\/a><\/li>\n<\/ul>\n<p><a href=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2017\/01\/ibm-bluemix-watson-openwhisk.png\"><img decoding=\"async\" src=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2017\/01\/ibm-bluemix-watson-openwhisk.png\" alt=\"ibm-bluemix-watson-openwhisk\" width=\"640\" class=\"aligncenter size-full wp-image-20068\" \/><\/a><\/p>\n<p>&nbsp;<\/p>\n<h3><span class=\"ez-toc-section\" id=\"The_application_architecture\"><\/span>The application architecture<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>When designing the application architecture, we decided to split it into microservices, which can be developed, deployed, and scaled independently:<\/p>\n<ul>\n<li style=\"margin-bottom: 10px;\">The <em>dashboard<\/em> service visualizes the current state of feedback records. It is also possible to add new feedback records using a form.<\/li>\n<li style=\"margin-bottom: 10px;\">The <em>change-listener<\/em> service provides a change feed for the database. Other services should subscribe to the feed to react to changes.<\/li>\n<li style=\"margin-bottom: 10px;\">The <em>analyzer<\/em> service analyzes feedback content and calculates emotional scores.<\/li>\n<li style=\"margin-bottom: 10px;\">The <em>sms-notifier<\/em> service notifies the customer relations manager if a feedback record is negative.<\/li>\n<li style=\"margin-bottom: 10px;\">The <em>text-extractor<\/em> service extracts text from audio samples. It allows other parts of the system to process the resulting text and to provide an emotional score.<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<h3><span class=\"ez-toc-section\" id=\"How_the_microservices_work\"><\/span>How the microservices work<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>For executing the application logic, we chose OpenWhisk since its scalable nature makes it suitable for microservice-based architectures. This event-driven compute platform runs code in response to events provided from Bluemix services and from external sources or to direct invocations. In our case, initial events are added to the Cloudant database when users give their feedback.<\/p>\n<p>Once a user submits a feedback form, <em>dashboard<\/em> inserts a document into Cloudant. The document looks similar to the following:<\/p>\n<pre class=\"brush: plain; title: ; notranslate\" title=\"\">{\n  type: 'event',\n  name: 'TextAdded',\n  aggregate_type: 'feedback',\n  aggregate_id: '14141-12312312-412412414-123123',\n  timestamp: 1463629152101,\n  attributes: {\n    text: 'Sample Text'\n  }\n}<\/pre>\n<p><\/p>\n<p>The <em>change-listener<\/em> service sets up an <a href=\"https:\/\/cloud.ibm.com\/docs\/openwhisk\/openwhisk_triggers_rules.html\" target=\"_blank\">OpenWhisk trigger and feed<\/a>. Basically, it calls all attached OpenWhisk actions when the Cloudant database is updated; in our case\u2014when we insert an event into the database.<\/p>\n<p>The <em>analyzer<\/em> service is an OpenWhisk action that is subscribed to the <em>change-listener<\/em> feed. Each time we insert an event, <em>analyzer<\/em> is executed. The action generates another event\u2014<code style=\"color: #222222; background-color: #e6e6e6; padding: 1px 2px;\">EmotionsAnalyzed<\/code>.<\/p>\n<p>The <em>sms-notifier<\/em> and <em>text-extractor<\/em> services are also implemented as OpenWhisk actions.<\/p>\n<p>The <em>sms-notifier<\/em> service:<\/p>\n<ul>\n<li>Waits for the <code style=\"color: #222222; background-color: #e6e6e6; padding: 1px 2px;\">EmotionsAnalyzed<\/code> event<\/li>\n<li>Checks the level of negative emotions (for example, anger)<\/li>\n<li>Sends an SMS message to the customer relations manager phone<\/li>\n<li>Emits the <code style=\"color: #222222; background-color: #e6e6e6; padding: 1px 2px;\">SmsNotificationSent<\/code> event<\/li>\n<\/ul>\n<p>You will see the <strong>Manager Has Been Notified<\/strong> status if the anger score is above 50% as in the image below.<\/p>\n<p><a href=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2017\/01\/ibm-watson-tone-analyzer.png\"><img decoding=\"async\" src=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2017\/01\/ibm-watson-tone-analyzer.png\" alt=\"ibm-watson-tone-analyzer\" width=\"640\" class=\"aligncenter size-full wp-image-20073\" \/><\/a><\/p>\n<p>The <em>text-extractor<\/em> service:<\/p>\n<ul>\n<li>Waits for the <code style=\"color: #222222; background-color: #e6e6e6; padding: 1px 2px;\">AudioUploaded<\/code> event<\/li>\n<li>Downloads associated files<\/li>\n<li>Converts speech to text employing Watson APIs<\/li>\n<li>Emits the <code style=\"color: #222222; background-color: #e6e6e6; padding: 1px 2px;\">TextAdded<\/code> event so that the system can perform emotion analysis using the existing code<\/li>\n<\/ul>\n<p>After extracting text from an audio file, you should see something similar to this:<\/p>\n<p><a href=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2017\/01\/ibm-watson-speech-to-text.png\"><img decoding=\"async\" src=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2017\/01\/ibm-watson-speech-to-text.png\" alt=\"ibm-watson-speech-to-text\" width=\"640\" class=\"aligncenter size-full wp-image-20071\" \/><\/a><\/p>\n<p>BTW, in Bluemix, it is really convenient to view the audio files uploaded to Object Storage:<\/p>\n<p><a href=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2017\/01\/ibm-bluemix-object-storage.png\"><img decoding=\"async\" src=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2017\/01\/ibm-bluemix-object-storage.png\" alt=\"ibm-bluemix-object-storage\" width=\"640\" class=\"aligncenter size-full wp-image-20066\" \/><\/a><br \/>\n&nbsp;<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Lessons_learned\"><\/span>Lessons learned<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>While working on the application, we made several observations:<\/p>\n<ul>\n<li style=\"margin-bottom: 10px;\">The most common errors are typos in the <code style=\"color: #222222; background-color: #e6e6e6; padding: 1px 2px;\">.env<\/code> and <code style=\"color: #222222; background-color: #e6e6e6; padding: 1px 2px;\">config.env<\/code> files. Make sure you have specified your credentials correctly.<\/li>\n<li style=\"margin-bottom: 10px;\">If your text does not seem to be analyzed, you can check the logs using either the OpenWhisk dashboard or the OpenWhisk CLI with this command: <code style=\"color: #222222; background-color: #e6e6e6; padding: 1px 2px;\">wsk activation poll<\/code>.<\/li>\n<li style=\"margin-bottom: 10px;\">One of the <a href=\"https:\/\/github.com\/apache\/openwhisk\/issues\/272\" target=\"_blank\">current limitations<\/a> of the OpenWhisk and Cloudant integration is that you cannot specify a filter for a trigger.<\/li>\n<li style=\"margin-bottom: 10px;\">It is easy to mix up Twilio developer credentials with the ones that actually send an SMS. Make sure you can send messages from the Twilio dashboard.<\/li>\n<li style=\"margin-bottom: 10px;\">Bluemix provides a management panel for many services. For example, you can inspect the uploaded audio files by opening the corresponding service on the dashboard.<\/li>\n<li style=\"margin-bottom: 10px;\">Do not expect lossless, one-to-one conversion of speech to text. Even for Watson, this is a hard thing to achieve.<\/li>\n<li style=\"margin-bottom: 10px;\">Not all WAV files can be processed. Pay attention to the error logs on the OpenWhisk dashboard.<\/li>\n<\/ul>\n<p>The detailed explanation of the application architecture, source code, and troubleshooting recommendations are available in our <a href=\"https:\/\/github.com\/Altoros\/let-us-hear-you\" target=\"_blank\">GitHub repository<\/a>. You can follow the steps of the hands-on training described there to create your own microservice-enabled application using IBM Bluemix services, such as IBM Watson and OpenWhisk.<\/p>\n<p><em>This application was presented on May 31, 2016 during the <a href=\"https:\/\/www.linkedin.com\/pulse\/kutsu-ideasta-toteutukseen-bluemix-p%C3%A4iv%C3%A4-3152016-tommi-ristola\" target=\"_blank\">IBM Bluemix day<\/a> at the IBM Finland office, which had Cloud Foundry, microservices, and the Internet of Things as main topics on the agenda. In addition to the hands-on demo, the meeting featured a session by <a href=\"https:\/\/www.linkedin.com\/in\/kimmokaskikallio\" target=\"_blank\">Kimmo Kaskikallio<\/a> (Senior Architect and Cloud Advisor at IBM Finland) about the IoT capabilities of Bluemix. <a href=\"https:\/\/www.linkedin.com\/in\/ari-mutanen-7396227\" target=\"_blank\">Ari Mutanen<\/a>, CEO at Altoros Finland, shared his vision of Bluemix and Cloud Foundry as development platforms, presenting a couple of use cases.<\/em><\/p>\n<p>&nbsp;<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Related_reading\"><\/span>Related reading<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<ul>\n<li><a href=\"https:\/\/www.altoros.com\/blog\/introduction-to-ibm-bluemix-openwhisk\/\">Introduction to IBM Bluemix OpenWhisk<\/a><\/li>\n<li><a href=\"https:\/\/www.altoros.com\/blog\/ibm-bluemix-openwhisk-101-developing-a-microservice\/\">IBM Bluemix OpenWhisk 101: Developing a Microservice<\/a><\/li>\n<li><a href=\"https:\/\/www.altoros.com\/blog\/using-the-dialog-service-in-ibm-watson-the-fox-goose-and-bag-of-beans-chatbot\/\">Using the Dialog Service in IBM Watson\u2014the Fox, Goose, and Bag of Beans Chatbot<\/a><\/li>\n<li><a href=\"https:\/\/www.altoros.com\/blog\/analyzing-text-with-the-alchemylanguage-service-in-ibm-watson\/\">Analyzing Text with the AlchemyLanguage Service in IBM Watson<\/a><\/li>\n<li><a href=\"https:\/\/www.altoros.com\/blog\/using-the-personality-insights-service-in-ibm-watson\/\">Using the Personality Insights Service in IBM Watson<\/a><\/li>\n<\/ul>\n<hr\/>\n<p><center><small>This post was written by <a href=\"https:\/\/www.altoros.com\/blog\/author\/viktoryia-fedzkovich\/\" target=\"_blank\">Victoria Fedzkovich<\/a> and <a href=\"https:\/\/www.altoros.com\/blog\/author\/alex\/\" target=\"_blank\">Alex Khizhniak<\/a> with assistance from <a href=\"https:\/\/www.altoros.com\/blog\/author\/alexander-sologub\/\" target=\"_blank\">Alexander Sologub<\/a>.<\/small><\/center><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Natural language processing and machine learning enable IBM Watson to derive insights from various types of digital communication. For example, its text analysis services can help users to understand the sentiment and concepts of content, get personality characteristics of individuals based on textual information, or develop human-like conversations with virtual [&#8230;]<\/p>\n","protected":false},"author":24,"featured_media":29547,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"content-type":"","footnotes":"","_links_to":"","_links_to_target":""},"categories":[214],"tags":[873,187,810,117,750],"class_list":["post-20019","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-tutorials","tag-cloud-native","tag-ibm-bluemix","tag-ibm-watson","tag-iot","tag-openwhisk"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.6 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Analyzing Customer Feedback Emotions with IBM Watson and Bluemix OpenWhisk | Altoros<\/title>\n<meta name=\"description\" content=\"Detecting the tone of customer messages\u2014whether they are text or audio\u2014is also among the many possible scenarios of employing Watson.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.altoros.com\/blog\/analyzing-customer-feedback-emotions-with-ibm-watson-and-bluemix-openwhisk\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Analyzing Customer Feedback Emotions with IBM Watson and Bluemix OpenWhisk | Altoros\" \/>\n<meta property=\"og:description\" content=\"Natural language processing and machine learning enable IBM Watson to derive insights from various types of digital communication. For example, its text analysis services can help users to understand the sentiment and concepts of content, get personality characteristics of individuals based on textual information, or develop human-like conversations with virtual [...]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.altoros.com\/blog\/analyzing-customer-feedback-emotions-with-ibm-watson-and-bluemix-openwhisk\/\" \/>\n<meta property=\"og:site_name\" content=\"Altoros\" \/>\n<meta property=\"article:published_time\" content=\"2016-08-18T16:40:45+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2018-08-01T14:12:05+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2016\/08\/ibm-bluemix-watson-openwhisk-feedback-analysis_v2.gif\" \/>\n\t<meta property=\"og:image:width\" content=\"640\" \/>\n\t<meta property=\"og:image:height\" content=\"339\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/gif\" \/>\n<meta name=\"author\" content=\"Victoria Fedzkovich\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Victoria Fedzkovich\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.altoros.com\/blog\/analyzing-customer-feedback-emotions-with-ibm-watson-and-bluemix-openwhisk\/\",\"url\":\"https:\/\/www.altoros.com\/blog\/analyzing-customer-feedback-emotions-with-ibm-watson-and-bluemix-openwhisk\/\",\"name\":\"Analyzing Customer Feedback Emotions with IBM Watson and Bluemix OpenWhisk | Altoros\",\"isPartOf\":{\"@id\":\"https:\/\/www.altoros.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.altoros.com\/blog\/analyzing-customer-feedback-emotions-with-ibm-watson-and-bluemix-openwhisk\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.altoros.com\/blog\/analyzing-customer-feedback-emotions-with-ibm-watson-and-bluemix-openwhisk\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2016\/08\/ibm-bluemix-watson-openwhisk-feedback-analysis_v2.gif\",\"datePublished\":\"2016-08-18T16:40:45+00:00\",\"dateModified\":\"2018-08-01T14:12:05+00:00\",\"author\":{\"@id\":\"https:\/\/www.altoros.com\/blog\/#\/schema\/person\/c7b416b09612e334a4e0184568906c36\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.altoros.com\/blog\/analyzing-customer-feedback-emotions-with-ibm-watson-and-bluemix-openwhisk\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.altoros.com\/blog\/analyzing-customer-feedback-emotions-with-ibm-watson-and-bluemix-openwhisk\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.altoros.com\/blog\/analyzing-customer-feedback-emotions-with-ibm-watson-and-bluemix-openwhisk\/#primaryimage\",\"url\":\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2016\/08\/ibm-bluemix-watson-openwhisk-feedback-analysis_v2.gif\",\"contentUrl\":\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2016\/08\/ibm-bluemix-watson-openwhisk-feedback-analysis_v2.gif\",\"width\":640,\"height\":339},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.altoros.com\/blog\/analyzing-customer-feedback-emotions-with-ibm-watson-and-bluemix-openwhisk\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.altoros.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Analyzing Customer Feedback Emotions with IBM Watson and Bluemix OpenWhisk\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.altoros.com\/blog\/#website\",\"url\":\"https:\/\/www.altoros.com\/blog\/\",\"name\":\"Altoros\",\"description\":\"Insight\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.altoros.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.altoros.com\/blog\/#\/schema\/person\/c7b416b09612e334a4e0184568906c36\",\"name\":\"Victoria Fedzkovich\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.altoros.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2016\/03\/author-v-f-150x150.jpg\",\"contentUrl\":\"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2016\/03\/author-v-f-150x150.jpg\",\"caption\":\"Victoria Fedzkovich\"},\"description\":\"Victoria Fedzkovich strives for effective technical communication at Altoros. As a professional with 7+ years of experience in technical and scientific writing, she creates content for user guides, manuals, white papers, and technical overviews. Victoria is currently focused on the Cloud Foundry ecosystem and IoT solutions.\",\"url\":\"https:\/\/www.altoros.com\/blog\/author\/viktoryia-fedzkovich\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Analyzing Customer Feedback Emotions with IBM Watson and Bluemix OpenWhisk | Altoros","description":"Detecting the tone of customer messages\u2014whether they are text or audio\u2014is also among the many possible scenarios of employing Watson.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.altoros.com\/blog\/analyzing-customer-feedback-emotions-with-ibm-watson-and-bluemix-openwhisk\/","og_locale":"en_US","og_type":"article","og_title":"Analyzing Customer Feedback Emotions with IBM Watson and Bluemix OpenWhisk | Altoros","og_description":"Natural language processing and machine learning enable IBM Watson to derive insights from various types of digital communication. For example, its text analysis services can help users to understand the sentiment and concepts of content, get personality characteristics of individuals based on textual information, or develop human-like conversations with virtual [...]","og_url":"https:\/\/www.altoros.com\/blog\/analyzing-customer-feedback-emotions-with-ibm-watson-and-bluemix-openwhisk\/","og_site_name":"Altoros","article_published_time":"2016-08-18T16:40:45+00:00","article_modified_time":"2018-08-01T14:12:05+00:00","og_image":[{"width":640,"height":339,"url":"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2016\/08\/ibm-bluemix-watson-openwhisk-feedback-analysis_v2.gif","type":"image\/gif"}],"author":"Victoria Fedzkovich","twitter_misc":{"Written by":"Victoria Fedzkovich","Est. reading time":"5 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.altoros.com\/blog\/analyzing-customer-feedback-emotions-with-ibm-watson-and-bluemix-openwhisk\/","url":"https:\/\/www.altoros.com\/blog\/analyzing-customer-feedback-emotions-with-ibm-watson-and-bluemix-openwhisk\/","name":"Analyzing Customer Feedback Emotions with IBM Watson and Bluemix OpenWhisk | Altoros","isPartOf":{"@id":"https:\/\/www.altoros.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.altoros.com\/blog\/analyzing-customer-feedback-emotions-with-ibm-watson-and-bluemix-openwhisk\/#primaryimage"},"image":{"@id":"https:\/\/www.altoros.com\/blog\/analyzing-customer-feedback-emotions-with-ibm-watson-and-bluemix-openwhisk\/#primaryimage"},"thumbnailUrl":"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2016\/08\/ibm-bluemix-watson-openwhisk-feedback-analysis_v2.gif","datePublished":"2016-08-18T16:40:45+00:00","dateModified":"2018-08-01T14:12:05+00:00","author":{"@id":"https:\/\/www.altoros.com\/blog\/#\/schema\/person\/c7b416b09612e334a4e0184568906c36"},"breadcrumb":{"@id":"https:\/\/www.altoros.com\/blog\/analyzing-customer-feedback-emotions-with-ibm-watson-and-bluemix-openwhisk\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.altoros.com\/blog\/analyzing-customer-feedback-emotions-with-ibm-watson-and-bluemix-openwhisk\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.altoros.com\/blog\/analyzing-customer-feedback-emotions-with-ibm-watson-and-bluemix-openwhisk\/#primaryimage","url":"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2016\/08\/ibm-bluemix-watson-openwhisk-feedback-analysis_v2.gif","contentUrl":"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2016\/08\/ibm-bluemix-watson-openwhisk-feedback-analysis_v2.gif","width":640,"height":339},{"@type":"BreadcrumbList","@id":"https:\/\/www.altoros.com\/blog\/analyzing-customer-feedback-emotions-with-ibm-watson-and-bluemix-openwhisk\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.altoros.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Analyzing Customer Feedback Emotions with IBM Watson and Bluemix OpenWhisk"}]},{"@type":"WebSite","@id":"https:\/\/www.altoros.com\/blog\/#website","url":"https:\/\/www.altoros.com\/blog\/","name":"Altoros","description":"Insight","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.altoros.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/www.altoros.com\/blog\/#\/schema\/person\/c7b416b09612e334a4e0184568906c36","name":"Victoria Fedzkovich","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.altoros.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2016\/03\/author-v-f-150x150.jpg","contentUrl":"https:\/\/www.altoros.com\/blog\/wp-content\/uploads\/2016\/03\/author-v-f-150x150.jpg","caption":"Victoria Fedzkovich"},"description":"Victoria Fedzkovich strives for effective technical communication at Altoros. As a professional with 7+ years of experience in technical and scientific writing, she creates content for user guides, manuals, white papers, and technical overviews. Victoria is currently focused on the Cloud Foundry ecosystem and IoT solutions.","url":"https:\/\/www.altoros.com\/blog\/author\/viktoryia-fedzkovich\/"}]}},"_links":{"self":[{"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/posts\/20019","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/users\/24"}],"replies":[{"embeddable":true,"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/comments?post=20019"}],"version-history":[{"count":10,"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/posts\/20019\/revisions"}],"predecessor-version":[{"id":29549,"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/posts\/20019\/revisions\/29549"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/media\/29547"}],"wp:attachment":[{"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/media?parent=20019"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/categories?post=20019"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.altoros.com\/blog\/wp-json\/wp\/v2\/tags?post=20019"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}