Construye tu primer ChatBot en 30 minutos

Construye tu primer ChatBot en 30 minutos
Sin comentarios Facebook Twitter Flipboard E-mail

La inteligencia artificial está cada día más alejada de HAL 9000, acercándose más al concepto de una innumerable miríada de servicios que componen la temible distopía de Skynet.

En estos momentos, se sucede una incruenta carrera tecnológica entre las “grandes” de la industria para desarrollar los servicios cognitivos más adelantados y con más “inteligencia”. Y en este artículo haré una primera y sencilla aproximación a un futuro tan impredecible como imparable.

Lee, escucha, mira, piensa

Flat 800x800 075 F

En 1950, Alan Turing se hizo una pregunta sencilla, con una extremadamente compleja respuesta, que le convirtió en el padre de la Inteligencia Artificial:

¿Puede pensar una máquina?

A partir de entonces, se inició un lento desarrollo basado en la lógica matemática, la filosofía, la neurociencia y la lingüística, hasta que la computación llegó - sobre los años 80 - a ofrecer suficiente potencia como para soportar los primeros sistemas expertos.

Pasadas más de tres décadas, en la actualidad, la IA se aplica en múltiples campos entre los que destacan el reconocimiento visual (tanto de imágenes estáticas como de vídeos), el uso de lenguaje natural, el reconocimiento de voz, los sistemas de explotación de datos, y la gestión del conocimiento, entre otros.

Uno de los segmentos en donde se está investigando de forma continuada desde aquel lejano ELIZA, son los BotChats. Es decir, software que es capaz de mantener conversaciones en lenguaje natural, de forma similar a las personas, que sea capaz – en algún momento de un futuro cercano – superar el test de Turing.

Abriendo, como en toda nueva aplicación tecnológica revolucionaria, novedosas aplicaciones, y produciendo problemas complejos. Relacionados, por ejemplo, con la sustitución de puestos de trabajo poco especializados, por sistemas informáticos automáticos.

Haciendo un BotChat sin código

Google, Amazon o Microsoft son plataformas sobre las que puedo construir mi ChatBot, además de irlo enlazando con otros servicios de Inteligencia Artificial; ganando en profundidad, complejidad y potencia; y asegurando la escalabilidad, rendimiento y disponibilidad, al estar implantados en Cloud.

En este artículo, voy a construir un ChatBot diseñado para responder las preguntas frecuentes, en lenguaje natural, que hacen los usuarios de un blog; y para lo cual, y buscando la mayor sencillez, voy a utilizar un servicio gratuito de Microsoft que está publicado en la página web de QnAmaker.

Qnamaker01

La verdad es que el sistema difícilmente puede ser más sencillo. Me identifico en la página, escojo un nombre para mi nuevo Bot, y lo creo.

Qnamaker02

Luego introduzco las preguntas que me pueden hacer los usuarios, y cuál es la respuesta adecuada. Siendo esta la parte más complicada de todo el proceso, porque es necesario probarlo una y otra vez, añadiendo, seleccionando y modificando tanto los términos de búsqueda como las respuestas.

Qnamaker03

Para ello, la propia plataforma incluye un sistema de pruebas que hace bastante más sencilla la depuración y optimización de la base de conocimiento.

Qnamaker04

En la realidad, no sería suficiente con esto y, más adelante, debería integrar servicios de búsqueda y aprendizaje autónomo. Pero, por ahora, me quedo satisfecho y pulso el botón de publicar para hacer visible el API Rest de mi ChatBot en Internet. Eso sí, para consumirla, voy a necesitar construir un mensaje http POST, como veremos un poco más adelante, que incluya las credenciales necesarias y un cuerpo del mensaje.

Qnamaker05

Programando un cliente básico

Ahora vuelvo a mi área de confort, y voy a construir un cliente muy básico que funcione sobre una Web App de Azure y con ASP.NET MVC Core 2.0 en C#. Así, desde Visual Studio 2017, creo un nuevo proyecto Web en Core del tipo Web Application MVC.

Visualstudio2017 01

Y lo primero que hago es añadir dos nuevas claves en el appseting.json, en donde almacenaré de forma segura la clave de suscripción y el identificador de la base de conocimiento, que son las credenciales de seguridad para acceder a la API.

Visualstudio2017 02

Como estoy en Core, estás credenciales las doy de alta en el método ConfigureServices de la clase Startup, para poder inyectarlas en toda mi aplicación.

Visualstudio2017 03

Después me creo mi clase de modelo, con la que transportaré la información hasta la vista.

Visualstudio2017 04

En el controlador añado la clase que construye el mensaje http necesario para solicitar la respuesta, enviando la pregunta dentro de una estructura json.

Visualstudio2017 05

Construyo la vista del formulario, en donde podre escribir las preguntas, llegándome la respuesta desde el ChatBot que he dado de alta en QnAMaker.

Visualstudio2017 06

Por último, publico mi código en una WebApp en Azure, por ejemplo, y ya tengo funcionando mi ChatBot, en su primera versión.

Visualstudio2017 07

Ahora toca alimentarlo, darle más contenido y conectarlo con otros servicios cognitivos y de inteligencia artificial.

Visualstudio2017 08

Conclusiones

Aún cuando este es un ejemplo muy sencillo, aquí ya se puede intuir la potencia del motor de lenguaje natural, que soporta las conversaciones. En tres o cuatro rondas de optimización de la base de conocimiento, ya le puedo realizar preguntas de una forma relativamente compleja para la rigidez normal de un sistema. Por ejemplo, me va a entender si le pregunto "¿Tienes alguna noticia nueva?" o si lo escribo como "Dime las novedades en Azure".

Pero es en la integración con sistemas de machine learning, de modelos de aprendizaje, junto con las capacidades de reconocimiento sensorial, y la omnipresencia del IoT, cuando podemos construir aplicaciones que, hace nada, eran terreno de la Ciencia Ficción.

Así, por ejemplo, la Wikipedia no sería ni una parte de lo que es ahora si no fuera por los innumerables bots que realizar diariamente labores de corrección, escritura y actualización de entradas; empresas por todo el mundo están sustituyendo los "centros de soporte" de primer nivel por ChatBots; y, el uso más conocido y extendido, la interacción con personas reales en las redes sociales.

Estamos en un momento histórico, y puede ser que en el futuro se mire hacia atrás y, como nos sucede en la actualidad con la telefonía móvil o los antibióticos, sea difícil imaginarse como pudimos vivir sin ellos (si antes no nos han destruido en un holocausto nuclear).

Más información | Bots en GenbetaDev, Bots en Xataka, Tutorial recomendado,

Comentarios cerrados
Inicio