Digital Developer Conference: Cloud Security 2021 ¡Regístrate ahora!

Desarrollar un motor de recomendaciones con Watson Natural Language Understanding

IBM® Watson™ Knowledge Studio es un servicio que te permite crear un modelo de análisis de lenguaje personalizado para un dominio específico. Esto es especialmente útil para sectores especializados con lenguajes complejos, como medicina, derecho y finanzas.

En este tutorial, aprende a usar Watson Knowledge Studio para anotar reseñas de instalaciones de reparación de automóviles. Después de anotar las reseñas, es posible entrenar un modelo de machine learning que pueda analizar las reseñas. El modelo puede determinar qué tipo de reparaciones necesitó el vehículo y qué tan satisfecho quedó el cliente con la calidad del trabajo. Al analizar las reseñas asociadas con un taller de reparación de automóviles determinado, es posible generar insights sobre el rendimiento general de ese taller para determinar en qué tipos de reparaciones son más (y menos) hábiles.

Requisitos previos

Para seguir este tutorial, es necesario una cuenta de IBM Cloud. Si no tienes una, puedes crear una.

Proveer una instancia de Watson Natural Language Understanding

Una vez que tengas una cuenta de IBM Cloud, navega la consola de IBM Cloud.

  1. Haz clic en Catálogo.
  2. Busca Natural Language Understanding y haz clic en el ícono cuando aparezca.

    Ícono de catálogo de NLP

  3. Selecciona un plan de precios para el servicio Watson Natural Language Understanding y haz clic en Crear.

    Selección de un plan de precios

Una vez provisto el servicio, guarda la clave API y la URL. Estas credenciales son necesarias más adelante en el tutorial.

Proveer una instancia de Watson Knowledge Studio

Para proveer una instancia de IBM Watson Knowledge Studio:

  1. Haz clic en Catálogo.
  2. Busca Knowledge Studio y haz clic en el ícono cuando aparezca.

    Ícono de Watson Knowledge Studio

  3. Selecciona un plan de precios («Lite» es suficiente aquí) y luego haz clic en Crear.

    Seleccionar plan de precios

  4. Haz clic en Iniciar Watson Knowledge Studio después de que se provea el servicio.

    Lanzamiento de Watson Knowledge Studio

Tiempo estimado

Debe llevarte aproximadamente 60 minutos para completar el tutorial una vez que hayas completado los requisitos previos.

Pasos

  1. Definir tipos y subtipos de entidad
  2. Crear «tipos de relación»
  3. Recopilar documentos que describan el idioma de tu dominio
  4. Anotar documentos
  5. Generar un modelo de Machine Learning
  6. Desplegar el modelo en el servicio de Natural Language Understanding

Definir entidades y subtipos de entidades

Empieza creando tipos de entidad. Una entidad es una representación de un objeto o concepto. En este caso, crearás entidades relacionadas con las reparaciones de automóviles, como Mecánico, Vehículo y Reparación. Primero, crearás una entidad Reparación, que describe el problema por el que se realizó el servicio del vehículo.

  1. Haz clic en Tipos de entidad en el menú de la izquierda.

  2. Haz clic en Agregar tipo de entidad.

    Agregar una entidad

  3. Etiqueta la nueva entidad como Reparación.

  4. Agrega subtipos, que te permiten clasificar aún más una instancia de entidad. Por ejemplo, una referencia a un alternador o bujía se puede etiquetar como un subtipo Eléctrico de la entidad Reparación.

    Agregar subtipos

Ahora que sabes cómo crear entidades, es posible cargar una lista preconfigurada de tipos de entidad. Descarga los tipos JSON, luego haz clic en Subir.

Carga de archivo JSON

Después de cargar y crear los tipos de entidad, haz clic en Guardar.

Crear tipos de relación

Los tipos de relación describen cómo se asocian dos entidades. Por ejemplo, si tienes un Vehículo, Cliente y Mecánico, el vehículo puede tener una relación OwnedBy con el cliente y una relación RepairedBy con el mecánico.

  1. Crea relaciones haciendo clic en Tipos de relación en el menú.

  2. Haz clic en Agregar tipos de relación.

  3. Nombra el tipo de relación y enumera los pares de entidades válidos que puede tener esa relación.

    Debería haber un conjunto de tipos de relación ya cargados desde el paso anterior. Ejemplos en este caso pueden ser:

    • RepairedBy (Vehículo puede ser reparado por un Mecánico)
    • OwnedBy (Vehículo puede ser propiedad de un Conductor)
    • DamagedBy (Vehículo puede ser dañado por un Conductor o Mecánico)

      Agregar tipos de relaciones

Recopilar documentos que describan el idioma de tu dominio

Recopila archivos que contengan ejemplos de texto que describan daños y reparaciones de automóviles. Estos ejemplos permiten que Watson Knowledge Studio aprenda el lenguaje de dominio correspondiente, que consta de términos y frases que los mecánicos de automóviles utilizan habitualmente. En este ejemplo, utilizamos comentarios de clientes que describen experiencias con varios mecánicos.

Hemos incluido un conjunto de reseñas sintéticas previamente anotadas para comenzar, que es posible descargar.

Si quieres entrenar un modelo de datos con algunos datos de encuestas reales, es posible usar el conjunto de datos de Yelp, al que es posible acceder sujeto a las condiciones de uso de Yelp. Este conjunto de datos tiene un archivo JSON que incluye millones de reseñas de talleres de mecánica automotriz en los Estados Unidos. Cada reseña debe colocarse en archivos .txt individuales.

Después de recopilar los documentos, deberán cargarse en Watson Knowledge Studio. Inicia sesión en tu instancia de Watson Knowledge Studio y haz clic en Documentos.

  1. Haz clic en Cargar conjuntos de documentos.

    Carga de conjuntos de datos

  2. Carga tus documentos arrastrándolos a la sección Agregar un conjunto de documentos.

    Agregar un conjunto de documentos

Anota documentos

Después de crear los tipos de entidad y relación, es posible hacer anotaciones, que asigna las palabras y frases de cada documento a sus entidades definidas.

  1. Haz clic en Modelo de Machine Learning y luego en Anotaciones.

    Ventana de anotaciones

  2. Busca el conjunto de documentos que cargaste anteriormente y haz clic en Hacer anotaciones.

    Localización del conjunto de documentos

  3. Comienza a anotar todas las menciones en el documento que hacen referencia a una entidad definida seleccionando cada palabra o frase importante.

  4. Haz clic en el Tipo de entidad correspondiente en el menú de la derecha.

    Colocamos las siguientes anotaciones en la imagen.

    • SUV y Motocicletas se pueden etiquetar como Vehículo y subconjunto Tipo.
    • Reparación de vidrio y Trabajo de carrocería se pueden etiquetar como entidad Reparación y subtipo Vidrio / Carrocería.
    • Taller mecánico de Joe, Joe, Lydia y ellos se refieren a los mecánicos.

      Anotación de texto

  5. Define las relaciones entre entidades haciendo clic en Relación, que se muestra en negro en la siguiente imagen.

    En este ejemplo, Mi es una referencia al cliente o al revisor. Coche es propiedad del cliente, por lo que está etiquetado como una entidad Vehículo y tiene la relación belongsTo con el cliente. La mención suspensión tiene la entidad Reparación y tiene una relación needsRepairType con el coche.

    Definición de relaciones

  6. Agrega correferencias, que ocurren cuando hay varias menciones diferentes que hacen referencia a la misma entidad. En este caso, Joe, su y él se refieren a la misma entidad Mecánico. Para unirlos, selecciona Correferencia y haz clic en cada referencia. Luego, haz doble clic en la última entidad mencionada para aplicar la correferencia.

    Una vez que esto se haya aplicado con éxito, debería aparecer un pequeño número debajo de cada correferencia.

    Agregar correferencias

Generar un modelo de machine learning

Después de anotar algunos documentos, es posible entrenar un modelo de machine learning que anote los documentos restantes sin etiquetar. Este modelo también se puede exponer a través de una API, que mostramos en el siguiente paso.

  1. Crea el modelo seleccionando Rendimiento.

  2. Haz clic en Entrenar y evaluar.

    Panel de instrumentos de rendimiento

  3. Haz clic en Editar configuración si quieres seleccionar conjuntos de documentos específicos para entrenar, o ajustar tus subconjuntos de prueba, entrenamiento y entrenamiento para discapacitados visuales.

    Subconjuntos de entrenamiento

  4. Confirma la configuración de tu entrenamiento y haz clic en Entrenar y evaluar.

    Configuración de entrenamiento

Una vez finalizado el entrenamiento, es posible desplegar tu modelo de machine learning personalizado en el servicio Watson Natural Language Understanding. Este despliegue crea tu modelo de machine learning personalizado a través de una API.

  1. Haz clic en Versiones para ver tus modelos entrenados, luego haz clic en Desplegar.

    Panel de instrumentos de versiones

  2. Selecciona Natural Language Understanding y haz clic en Siguiente.

    Selección de Natural Language Understanding

  3. Selecciona tu región, grupo de recursos y nombre de servicio y haz clic en Desplegar.

Una vez finalizado el despliegue, deberías ver una nueva entrada en la lista Modelos Desplegados. Expande para conseguir tu ID de modelo.

Ventana de modelos desplegados

Desplegar modelo en Watson Natural Language Understanding

Ahora, sería posible probar el modelo enviando datos POSTing a una API. Para hacerlo, son necesarias las siguientes credenciales.

  • La clave de API de Natural Language Understanding
  • La URL de Natural Language Understanding
  • El ID del modelo desplegado de Watson Knowledge Studio (tomado del final de la sección anterior)

La clave de API y la URL de Natural Language Understanding se pueden encontrar navegando a la página de instancia de Watson Natural Language Understanding y buscando en la sección Credenciales.

Credenciales

Crea un archivo .json con el siguiente código. En tu archivo, reemplaza el model_id con el ID de despliegue generado por Watson Knowledge Studio. Además, ingresa el siguiente texto en la sección <input text>: El parabrisas de mi camión estaba roto, así que fui al taller mecánico de Joe y me lo reemplazaron. Hicieron un excelente trabajo. Los recomiendo enormemente.

{
  "text": "<input_text>",
  "features": {
    "entities": {
      "model": "<model_id>"
    },
    "keywords": {
      "emotion": true,
      "sentiment": true
    },
    "emotion": {
        "sentiment": true
    },
    "categories": {
      "sentiment": true
    },
    "relations": {
      "model": "<model_id>"
    },
    "sentiment": {}
  }
}

Ejecuta un comando curl para analizar el texto con el modelo de machine learning generado. Asegúrate de actualizar los campos nluApiKey y nluUrl con tus credenciales de servicio. Además, agrega la ruta a tu archivo .json.

curl -X POST \
  -u "apikey":"<nluApiKey> \  
  -H "Content-Type: application/json" \
  -d @<path to json file> \
  "<nluUrl>/v1/analyze?version=2019-07-12"

En la sección de opiniones, verás que la reseña se marcó como positiva. Y en la sección de entidades, podrás reconocer qué reparaciones se completaron.

"sentiment": {
  "document": {
    "score": 0.952598,
    "label": "positive"
  }
},
"entities": [
  {
    "type": "Repair",
    "text": "windshield",
    "disambiguation": {
      "subtype": [
        "Glass"
      ]
    },
    "count": 1,
    "confidence": 0.994622
  },

Conclusión

En este tutorial, aprendiste cómo anotar un conjunto de documentos para clasificar las reseñas con precisión. En el patrón de acompañamiento, verás cómo agregar los resultados de natural language understanding para cada mecánico y determinar el mejor mecánico para un tipo de reparación dado. Este tutorial forma parte de Desarrollar una solución de atención al cliente para ayudar a tus clientes a gestionar sus reclamos de seguros y obtener información sobre el servicio de automóviles.