Conecta con nosotros

Opinión

Se acabaron los clientes disgustados gracias a la IA

Publicado el

IA Watson. Clientes disgustados

A nadie le gusta que algo deje de funcionar. Se desconecta el Wifi, la plataforma en la que ibas a iniciar sesión se queda colgada, se va la luz, el ordenador no se enciende… y todo lo que la ley de Murphy se guarda justo para cuando se va a hacer algo importante. Y como lo único que el usuario quiere es que el mundo deje de ponerse en su contra, abre el correo para reportar la incidencia, preparad@ para decir cuatro cosas bien dichas, y exigir que lo arreglen de inmediato.

Al otro lado (quizás) del mundo, Isabel acaba de conseguir resolver una incidencia complicada, y respira, satisfecha, un par de segundos, antes de que aparezca en su pantalla un nuevo problema: este que acaba de tener nuestro usuario. Se inicia un proceso, que no vemos, donde ella lee a conciencia el problema, y rellena la información que lo clasifica en el tipo de incidencia que corresponde.

«Creo que está muy cabread@», piensa al leer el email. E inicia el procedimiento para tratar de solucionarlo cuanto antes sin poder dar respuesta inmediata a la pregunta esencial: «¿va a tardar mucho?».

Empiezan a entrar más incidencias, y comienza a ser complicado concentrarse en este problema, porque es difícil priorizar cuál de todos es más importante. Isabel mira la bandeja de entrada de incidencias, sin saber por dónde seguir, porque se acumulan poco a poco en una montaña sin orden. Justo entonces, algo se enciende entre sus recuerdos. Había un equipo, que resolvía casos como el suyo, muy rápido, tanto, que en menos de dos meses tendría una nueva forma de priorizar las incidencias, de tener algo más de luz. ¿Se les ocurriría algo para poder entender mejor la montaña sin orden de incidencias?

Isabel se precipita sobre su móvil. Cómo se llamaban… IBM Door… IBM Garden… ¡Garage! ¡IBM Garage! Dos tonos de espera después, en IBM Garage descuelgan al otro lado, preparados para la acción. Isabel sonríe al oírles. Sabe que pronto, muy pronto, le enviarán la respuesta a su problema.

Así podrá priorizar aquellos usuarios demasiado descontentos, para poder dar un mejor servicio día a día.

Photo por Patrick Fore en Unsplash.

Comencemos por el principio

Cuando surge una necesidad concreta, como es el anticipar cuánto tiempo va a tardar en resolverse una incidencia o cómo se siente alguien al escribir un texto, es cuando empieza la búsqueda de herramientas adecuadas para solucionarla. Así es como la Inteligencia Artificial que nos ofrece IBM Watson se convierte en la respuesta, y no en la pregunta; porque es lo que va a permitir ayudar a que esa incidencia (y miles más) tarde lo menos posible.

Pero dime, ¿cómo te sientes al reportar esta incidencia?

En primer lugar, se pretende analizar el sentimiento del email en el que un usuario reporta una incidencia. ¿Cómo se puede hacer esto? La respuesta no está en leer la mente, ni en preguntar al usuario… la respuesta esta en IBM Watson NLU.

Con este servicio de AI, se procesa el email pasándoselo a la API del servicio, recibiendo como respuesta cuál es el sentimiento general del texto (negativo, neutro o positivo, como se verá más adelante), y alguna información extra que también puede ayudar a entender el texto sin haberlo leído.

IA Watson. Balloons

Foto por Hybrid en Unsplash

Entrando en la parte más técnica…

Como entrada a Watson NLU, es necesario disponer de un texto (string) para que pueda ser analizado. Como salida, se esperan distintos valores, que contendrán la información extraída a través de Watson NLU, y que será muy útil para tomar decisiones.

A través de la API, a la que se llama desde un Jupyter Notebook de Python, identifica el idioma en el que se ha escrito el correo y lo traduce si es necesario (esta vez está en castellano, pero aquí se pueden ver todos los idiomas que acepta).

def translate_watson(text, apikey, url, final_language):

"""
text::::::::::::::::::::::: text to be translated
apikey::::::::::::::::::::: autentication apikey
url:::::::::::::::::::::::: language translator service url
final_language:::::: final language
"""

# dependencies
!pip install ibm_watson
!pip install tqdm
from ibm_watson import LanguageTranslatorV3
from ibm_cloud_sdk_core.authenticators import IAMAuthenticator

# API config
authenticator = IAMAuthenticator(apikey)
language_translator = LanguageTranslatorV3(
version='2018-05-01',
authenticator=authenticator
)
language_translator.set_service_url(url)

# API call (identify language)
language = language_translator.identify(
text).get_result()

lang_detected = language["languages"][0]["language"]
model_id = lang_detected+"-"+final_language

# if language detected is different from the desired language, traslate (API call for translating)
if lang_detected != final_language:
translation = language_translator.translate(
text=text,
model_id=model_id).get_result()

# return translated text and language detected
return translation["translations"][0]["translation"], lang_detected

 

Llamando de nuevo a la API, y enviando como entrada la nueva columna de textos ya traducidos, se obtiene una información que va a ser clave:

Entidades

Son aquellas palabras o conjuntos de palabras que tienen importancia en el texto, y son de un tipo concreto. Por ejemplo, «dos meses» podría ser una una entidad de tipo «Duración», o «Madrid» una entidad de tipo «Localización».

Watson NLU también da la información de qué sentimiento asociado hay a cada entidad. Si en ese email el usuario se queja de que lleva dos meses teniendo cortes en Internet, «dos meses» tiene un sentimiento negativo asociado (¡y cómo no!).

Sentimiento

Es un número entre -1 y 1, que indica el sentimiento que tiene el usuario que escribe el texto. -1 es el sentimiento más negativo, 0 es neutro, y 1 el sentimiento más positivo. Es una forma rápida de saber, sin leer el texto, qué encontrar en el contenido. Todo apunta a que el sentimiento no va a salir muy bueno al leer el email de incidencia, ¿no?

def watson_nlu(text, apikey_nlu, url_nlu):

"""
text::::::::: column name we want to process
apikey_nlu::::::::::::::::::::: autentication apikey
url_nlu:::::::::::::::::::::::: language translator service url
"""

# dependencies
import json
!pip install ibm_watson
!pip install tqdm
from ibm_watson import NaturalLanguageUnderstandingV1
from ibm_cloud_sdk_core.authenticators import IAMAuthenticator
from ibm_watson.natural_language_understanding_v1 import Features, SentimentOptions, Features, EntitiesOptions, RelationsOptions
from tqdm import tqdm
import sys

# API config
authenticator_nlu = IAMAuthenticator(apikey_nlu)

natural_language_understanding = NaturalLanguageUnderstandingV1(
version='2020-08-01',
authenticator=authenticator_nlu
)
natural_language_understanding.set_service_url(url_nlu)

# NLU API call
response = natural_language_understanding.analyze(
text=text,features=Features(sentiment=SentimentOptions(),
entities=EntitiesOptions(sentiment=True,limit=5),
relations=RelationsOptions())).get_result()

# return sentiment score, and json containing all the information extracted, included entities and their relevance
return response["sentiment"]["document"]["score"], json.dumps(response)

watson_nlu(text, apikey_nlu, url_nlu)

Un ejemplo de avería

Buenas tardes, La semana pasada visitó nuestro centro en Madrid un técnico para solucionar la avería del ordenador de dirección. Para solucionar dicha avería, el técnico hizo un cambio de dispositivo. El problema es que el nuevo dispositivo funciona peor que el anterior dando problemas como: problemas para arrancarlo, y apagarlo, y mal funcionamiento en general. Esperamos una solución cuanto antes.

Sentiment: -0.41
Entities: {""type"": ""Location"", ""text"": ""Madrid"", ""sentiment"": {""score"": 0.0, ""label"": ""neutral"}

IA Watson code fragment

Otro ejemplo de avería

Buenos días, el portal web funciona muy mal. No sólo funciona lentamente, constantemente me saca fuera de la sesión. ¿Le puede dar un vistazo cuanto antes? Gracias.

Sentiment: -0.894518
Entities: "entities": []}

IA Watson code fragment

Hay ocasiones donde el modelo de AI de Watson NLU necesita más información sobre el caso de uso para identificar entidades; cuanta más información específica se añada a Watson NLU sobre cada caso, en este caso, tipos de incidencias, localizaciones, etc, mejor procesará el texto. Para enriquecer Watson NLU, se puede utilizar Watson Knowledge Studio (https://www.ibm.com/es-es/cloud/watson-knowledge-studio). Y sí… eso es otra historia, ¡que quizá contemos otro día!

Una vez coordinado el resto del equipo de IBM Garage, se obtiene una solución donde está integrada la llamada a Watson NLU, y donde se muestra visualmente la información para que se pueda consultar en una web, cada vez que entra una incidencia.

Ahora Isabel ya sabe que estás disgustad@, viendo solamente un número, y antes de leer todo lo que ha escrito el usuario. Pero, ¿va a poder resolverla rápidamente? ¿O va a acumularse junto con otros muchos usurios en una montaña que no obtienen resolución rápida porque la incidencia se complica?

Nos mira de reojo, esperando que podamos responder. Si tú también quieres saber la respuesta, la encontrarás cuando se publique la parte II de nuestra historia con Isabel.

 

Irene Cid IBM

 

Irene Cid es ingeniera en electrónica y automática industrial y trabaja como científica de datos en el IBM Garage. Le entusiasman los retos y combinar su lado más tecnológico con una gran pasión: escribir. Ha publicado tres libros narrativos, y si algo tiene claro, es que no quiere dejar nunca de aprender.

 

 

Foto principal por Icons8 Team en Unsplash

Lo más leído