Cómo analizar el sentimiento de tus clientes con Text Analytics

Hay muchos elementos en el mundo real que son difíciles de analizar en el mundo virtual. Imágenes, expresiones faciales, la intención de una frase o incluso el sentimiento con el que se expresa son aspectos del usuario que deberíamos de ser capaces de captar y analizar para dar una mejor respuesta desde nuestras aplicaciones y servicios. Los servicios cognitivos de Microsoft nos permiten justamente despreocuparnos de estos puntos a través de un conjunto de APIs que puedes revisar aquí.

En este post quiero centrarme en una de la más usadas llamada Text Analytics que te permite, entre otras cosas, conocer el sentimiento de una frase.

Cognitive Services -Analysis text - Sentiment demo
Cognitive Services -Analysis text – Sentiment demo

Como ves en la imagen anterior, la API recibe una frase y la respuesta se basa en una puntuación que, dependiendo de si es más alta o más baja, significa que el sentimiento es más o menos negativo.

Para hacer este ejemplo he utilizado un bot, desarrollado con Microsoft Bot Framework, pero puede utilizarse con cualquier tipo de aplicación:

//modules
var restify = require('restify'),
    builder = require('botbuilder'),
    request = require('request');
//create server
var server = restify.createServer();
server.listen(process.env.port || process.env.PORT || 3978, function () {
    console.log('server up and running');
});
var connector = new builder.ChatConnector({
    appId: 'YOUR_API_ID',
    appPassword: 'YOUR_PASSWORD'
});
var bot = new builder.UniversalBot(connector);
server.post('/api/messages', connector.listen());
//Dialog
bot.dialog('/', function (session, args, next) {
    var msg = session.message.text;
    //analize sentiment
    if (msg) {
        console.log(msg);
        var options = {
            url: 'https://westus.api.cognitive.microsoft.com/text/analytics/v2.0/sentiment',
            headers: {
                'Ocp-Apim-Subscription-Key': 'SUBSCRIPTION_KEY',
                'content-type': 'application/json'
            },
            method: 'POST',
            json: {
                "documents": [{
                    "language": "en",
                    "id": "1",
                    "text": msg
                }]
            }
        };
        var callback = function (error, response, body) {
            if (error) {
                console.log(error);
            } else {
                session.send('score: ' + body.documents[0].score);
                var sentimentScore = body.documents[0].score;
                if (sentimentScore > 0.7) {
                    session.send('Great! What do you want to do?')
                } else {
                    session.send("I'm sorry! How can I help you?");
                }
            }
        };
        request(options, callback);
    }
});

El código es bastante sencillo: una petición de tipo POST a la URL del servicio donde se le pasa un array llamado documents con los textos y el lenguaje en el que están. Para poder realizar dichas llamadas debes tener acceso a la API a través de una clave de suscripción. La plataforma te obsequia con 5000 transacciones al mes para que puedas probar el servicio. Si todavía no tienes dicha clave, dirígete a la página https://www.microsoft.com/cognitive-services/en-us/apis y haz clic en My Account.

Cognitive Services - My Account
Cognitive Services – My Account

Inicia sesión con tu Microsoft Account y selecciona Request new trials.

Cognitive-Services-Request-new-trials
Cognitive-Services-Request-new-trials

Cada API va por separado por lo que debes solicitar acceso a cada una de ellas de manera independiente. En este caso la que necesitas es Text Analytics – Preview. Una vez hecho esto ya podrás obtener la clave, a través del botón Show, para realizar la petición mostrada en el código anterior.

Cognitive Services - Text Analytics Key 1
Cognitive Services – Text Analytics Key 1

¡Saludos!