El reconocimiento de lenguaje natural que utilizan en Hogwarts
Reconocimiento del Lenguaje
El lenguaje es la expresión de las ideas, el medio que utilizamos para comunicarnos con otras personas. La forma en la que expresamos todo tipo de ideas y sentimientos. Es la base de nuestro conocimiento, de entender el mundo a nuestro alrededor y de compartirlo.
El lenguaje es extremadamente impreciso. Está lleno de insinuaciones, modismos, ambigüedades. ¿Cómo puede a alguien cantarle los pies? ¿Busca algo aquél que ha perdido un tornillo?
Pero a la vez es muy preciso. Transmitimos gran cantidad de información e incluso cuando hay vacíos o inconsistencias podemos comprender la mayor parte del mensaje con un alto grado de precisión.
Sin embargo, para poder comprender el contenido de un mensaje no sólo tenemos que entender las diferentes palabras sino ser capaces de identificar el contexto en el que se encuentran. Es por esta razón que, a la hora de clasificar un sistema de reconocimiento, podemos distinguir entre procesado de lenguaje superficial y procesado profundo.
En la primera categoría tendríamos algunos analizadores de sentimiento. Estos se limitan a buscar un conjunto de palabras sin tener en cuenta el contexto. Su valoración de un texto se limita a cuantificar el número de veces que aparecen ciertas palabras.
Los sistemas de reconocimiento profundo, por el contrario, además de las palabras, analizan el contexto. Por ejemplo, la frase “Me lo ha pedido tres veces y esta vez voy a aceptar” puede ser una petición de matrimonio, de aumento de sueldo o de amistad en una red social en función del contexto.
Y siendo el reconocimiento de textos un problema muy complejo, existe un gran interés en ser capaces de resolverlo. Continuamente se producen grandes cantidades de información. El 90% de la información en el mundo se produjo en los últimos dos años y se espera que esa tendencia crezca en un mundo cada vez más interconectado: sensores, imágenes, vídeos… Y de esa información el 80% es no estructurada incluyendo todo tipo de textos desde literatura, artículos o informes hasta mensajes o tweets. (fuente: The Era of Cognitive Systems: An Inside Look at IBM Watson and How it Works)
Todas estas problemáticas hace años no eran fáciles de resolver, pero hoy en día, gracias a la democratización de la tecnología, tenemos los medios para utilizar toda la información disponible y ponerla a nuestro favor.
Desde mi experiencia, Watson Natural Language Classifier (NLC) es la mejor opción: está integrado en la plataforma Bluemix, fácilmente disponible y se puede probar de forma gratuita.
Funcionamiento del servicio Watson Natural Language Classifier
Watson NLC aplica técnicas de computación cognitiva para analizar un texto y proporcionar la clase que mejor encaja entre un conjunto de clases predefinidas a partir de un texto corto.
Para ilustrar la forma en la que se trabaja con Watson NLC, vamos a suponer que quisiéramos utilizarlo para distribuir a los alumnos de Hogwarts, el colegio de magia y hechicería que aparece en las películas de Harry Potter, en cada una de las Casas. En las películas, un sombrero es el responsable de esta tarea. Nosotros utilizaremos a Watson que analizará las cualidades de cada alumno.
A diferencia de otros servicios, pero de la misma forma que ocurre con otros servicios cognitivos, el NLC requiere de un entrenamiento previo. Este entrenamiento previo consta de cuatro fases que se muestran en el diagrama:
Preparación de la información de entrenamiento
Clases
En primer lugar debemos identificar las clases. Las clases son las etiquetas que identifican el texto analizado y que son la salida proporcionada por el clasificador.
En nuestro caso, vamos intentar clasificar personas para poder asignarlas a una de las cuatro Casas de Hogwarts. Así que nuestras clases serán el nombre de esas casas: Gryffindor, Hufflepuff, Ravenclaw y Slytherin.
Textos Representativos
A continuación debemos identificar una colección de textos. Estos textos deben ser similares a los que recibirá el clasificador en ‘producción’. Aquí, no usaremos frases sino palabras aisladas (adjetivos y nombres) y también los nombres de personajes conocidos de cada una de las Casas. Eso será suficiente para que el clasificador las identifique dentro de los textos. Pero podríamos utilizar frases completas para mejorar la clasificación.
Relacionar textos y clases
El siguiente paso es relacionar cada uno de los textos con la clase (o clases) correspondientes en una tabla. En la primera columna colocaremos el texto y en las siguientes columnas cada una de las clases. A continuación se muestra algunas de las entradas en esa tabla.
Una vez completada, esta tabla debe guardarse en un fichero CSV (texto sin formato en el que las columnas están separadas por una coma).
Entrenar el clasificador
A continuación ya podemos pasar esta información a nuestra instancia de servicio Watson NLC que previamente habremos creado en Bluemix. Hay diferentes formas de hacerlo aunque la más sencilla es utilizar la herramienta (beta) disponible en la plataforma.
Deberemos en primer lugar de subir el fichero CSV con los datos que servirán para entrenar a nuestro clasificador.
Y después crear el clasificador. Este proceso llevará unos pocos minutos. Puede ser necesario refrescar la página del navegador para que se actualice su estado.
Una vez el entrenamiento haya finalizado, se nos proporcionará un identificador para nuestro clasificador. Este identificador deberemos utilizarlo junto con los credenciales de nuestro servicio Watson NLC para realizar consultas al clasificador.
La propia herramienta nos permite probar el clasificador que hemos creado. Podemos introducir textos de prueba e indicar aquellos que se han clasificado correctamente o incorrectamente para mejorar los resultados.
En el laboratorio, cuya ubicación se indica al final de este artículo, se describe detalladamente cada uno de los pasos necesarios para crear tu propio clasificador junto con una aplicación de prueba que lo utilice.
¡Echa un vistazo a la web para desarrolladores para ver más casos!
Referencias
- Creando tu propio clasificador Watson NLC (basado en una idea de Ryan Anderson) (https://ibm.box.com/s/t7pod8he1hatnu7j04bxmp6k1ljsxzwz)
- Watson Natural Language Classifier Demo (https://www.ibm.com/watson/developercloud/nl-classifier.html)
- Building Cognitive Applications with IBM Watson Services: Volume 4 Natural Language Classifier (http://www.redbooks.ibm.com/redpieces/pdfs/sg248391.pdf)
- The Era of Cognitive Systems: An Inside Look at IBM Watson and How it Works (http://www.redbooks.ibm.com/abstracts/redp4955.html)