acf domain was triggered too early. This is usually an indicator for some code in the plugin or theme running too early. Translations should be loaded at the init action or later. Please see Debugging in WordPress for more information. (This message was added in version 6.7.0.) in /home/planetac/desa.planetachatbot.com/wp-includes/functions.php on line 6131all-in-one-seo-pack domain was triggered too early. This is usually an indicator for some code in the plugin or theme running too early. Translations should be loaded at the init action or later. Please see Debugging in WordPress for more information. (This message was added in version 6.7.0.) in /home/planetac/desa.planetachatbot.com/wp-includes/functions.php on line 6131wp-user-avatar domain was triggered too early. This is usually an indicator for some code in the plugin or theme running too early. Translations should be loaded at the init action or later. Please see Debugging in WordPress for more information. (This message was added in version 6.7.0.) in /home/planetac/desa.planetachatbot.com/wp-includes/functions.php on line 6131The post Construye un chatbot sobre tu serie favorita en 30 minutos first appeared on Planeta Chatbot.
]]>
En este ejemplo, crearemos un chatbot que lo sabe todo sobre Dragon Ball, ¡pero puedes hacer lo que quieras! Puede ser un chatbot que responda a preguntas sobre otra serie, un curso universitario, las leyes de un país, etc. En primer lugar, veamos cómo es posible con BERT.
BERT es una técnica de Machine Learning para NLP creada y publicada por Google en 2018. En la primera fase, el modelo es pre-entrenado en un gran conjunto de datos de lenguaje de forma semi-supervisada.
En esta fase, el modelo aún no puede responder a las preguntas, pero aprendió incrustaciones contextuales para las palabras.

En la segunda fase, BERT se ajusta a una tarea específica. Como estamos tratando de construir un Chatbot, necesitamos un modelo que se ajuste a una tarea de respuesta a preguntas.

Una vez que el modelo está ajustado para responder a las preguntas, tenemos que proporcionar el conjunto de datos de entrada para que el modelo sepa de dónde extraer sus respuestas. Por último, el usuario puede introducir una pregunta. El modelo extraerá la respuesta del conjunto de datos de entrada.

Por lo tanto, en primer lugar, necesitamos obtener un conjunto de datos de entrada de donde el modelo extraerá su respuesta.
En este ejemplo, nuestro chatbot será un maestro de Dragon Ball, por lo que obtendremos los datos de la Wiki de Dragon Ball con BeautifulSoup. El scraping no es el objetivo de este post, así que vamos a forzarlo un poco para obtener todos los datos que necesitamos.

Tomamos los datos de los capítulos y también de las diferentes series (Dragon Ball Z, Dragon Ball GT, etc). La información más importante que tomaremos es la que realmente sucede en cada capítulo y, a través de las páginas de las diferentes series, también tenemos otro tipo de información (creador, productora, fechas de emisión, etc).

Tras obtener todos los resúmenes de cada episodio, Haystack necesita que los datos se formateen como una lista de diccionarios, que tienen dos claves principales. Una de las claves se llama «contenido», donde el modelo extraerá toda la información necesaria para responder a todas las preguntas. La otra clave se llama «meta» y tiene un diccionario anidado con todos los metadatos que necesita. En este ejemplo, he pasado un diccionario con el título y el número del episodio del que se extrajo el resumen.

Ahora que tenemos toda la información sobre lo que ocurre en la serie, ¡tenemos que inicializar nuestro modelo!
Para esta parte, utilizaré Google Collab por dos razones:

Tenemos que elegir un Recuperador y un Lector para utilizarlos. El Recuperador es un filtro ligero que recorre toda nuestra base de datos de documentos y elige un número X de documentos que podrían responder a la pregunta que el usuario está planteando. En este caso, le pediremos al Recuperador que nos devuelva 10 documentos.

El recuperador pasa estos 10 documentos al lector. En este caso, utilizaremos BERT como lector. Más concretamente, utilizaremos un modelo BERT en inglés que ya está ajustado para la respuesta a preguntas extractivas. En esencia, esto significa que el modelo fue pre-entrenado en el idioma inglés y luego fue entrenado para la GC Extractiva en la última capa de entrenamiento. Como los datos de Dragon Ball ya están en inglés, el modelo ya está preparado para responder a nuestras preguntas.
PD: Si tienes datos en otro idioma, puedes buscar un modelo entrenado en ese idioma en HuggingFace.

Le pediremos al modelo que nos devuelva las 5 respuestas correctas más probables de entre los 10 documentos que probablemente tengan la respuesta. Recuerda: el Recuperador encuentra los documentos correctos y el Lector encuentra la respuesta exacta (en este caso, nuestro lector es roberta-base-squad2). Este es el resultado del modelo tras introducir una simple pregunta sobre Dragon Ball:

¡La modelo acertó la respuesta! ¡Los mentores de Goku fueron el Maestro Roshi y el Rey Kai!

Una vez más, esto es algo inmediato, ¡no hemos tenido que entrenar ningún modelo con nuestros datos!
Después de crear una función que permite que nuestra salida sea más bonita, ¡vamos a ver los resultados!
Preguntemos con quién está casado Vegeta:

¡Acertó! Su primera respuesta fue Bulma. Probemos con otras preguntas y veamos los resultados:



El modelo está respondiendo bastante bien a muchas de las preguntas.

Pero si añadimos alguna variación en la forma de hacer algunas preguntas, empieza a no ser del todo correcto…


Estos son sólo algunos ejemplos de que el modelo aún no es perfecto.

No te preocupes, porque podemos entrenarlo más en nuestros datos si queremos. Haystack tiene un sencillo tutorial sobre cómo hacer esto también. Sin embargo, eso podría ser todo un nuevo post. Si lo encuentras útil, puedes enviarme un mensaje o un comentario e intentaré crear un post explicándolo paso a paso.
La librería Haystack tiene una muy buena documentación y este post se ha basado en uno de sus cuadernos tutoriales. Podemos intentar añadir más datos sobre otras series e intentar ver si el modelo conserva su rendimiento. Aquí tenéis el enlace al repositorio Github del proyecto por si queréis acceder a los cuadernos utilizados.
Espero que hayas disfrutado creando tu primer chatbot con BERT 

The post Construye un chatbot sobre tu serie favorita en 30 minutos first appeared on Planeta Chatbot.
]]>