Quería comenzar a experimentar con la red neuronal y, como problema de juguete, quería entrenar a uno para chatear, es decir, implementar un bot de chat como cleverbot. No es tan inteligente de todos modos.
Busqué documentación y encontré muchos tutoriales sobre tareas generales, pero pocos sobre este tema específico. El que encontré acaba de exponer los resultados sin dar una idea de la implementación. Los que lo hicieron, lo hicieron bastante superficialmente (la página de documentación de tensorflow en seq2seq carece de imho).
Ahora, creo haber entendido el principio más o menos, pero no estoy seguro y ni siquiera estoy seguro de cómo comenzar. Por lo tanto, explicaré cómo abordaría el problema y me gustaría recibir comentarios sobre esta solución, que me diga dónde me equivoco y posiblemente tenga algún vínculo con explicaciones detalladas y conocimientos prácticos sobre el proceso.
El conjunto de datos que usaré para la tarea es el volcado de todo mi historial de chat de Facebook y WhatsApp. No sé qué tan grande será, pero posiblemente aún no lo suficientemente grande. El idioma de destino no es el inglés, por lo tanto, no sé dónde reunir rápidamente muestras de conversación significativas.
Voy a generar un vector de pensamiento de cada oración. Todavía no sé cómo; Encontré un buen ejemplo para word2vec en el sitio web deeplearning4j, pero ninguno para oraciones. Comprendí cómo se construyen los vectores de palabras y por qué, pero no pude encontrar una explicación exhaustiva para los vectores de oraciones.
Usando vectores de pensamiento como entrada y salida, voy a entrenar la red neuronal. No sé cuántas capas debería tener, y cuáles tienen que ser capas lstm.
Entonces debería haber otra red neuronal que sea capaz de transformar un vector de pensamiento en una secuencia de caracteres que componga una oración. Leí que debería usar relleno para compensar diferentes longitudes de oración, pero extraño cómo codificar caracteres (¿son suficientes los puntos de código?).
De acuerdo con el concepto de su proyecto, para empezar, le pediría que aplique algunas técnicas de desarrollo basadas en pruebas. Primero, intente crear una base de datos de menor tamaño que pueda usar para manejar una pequeña cantidad de conjunto de datos, lo que puede proporcionar la mejora deseada.
Dicho esto, use esa base de datos para crear un árbol organizado en línea con sus datos, como nodos. Por lo tanto, si un bot comienza a generar comentarios, desde la base de datos, marcados con puntos de datos de su conjunto de datos especificado. al siguiente nodo en el árbol.
nota : para empezar, no use su gran historial de chat como un todo, porque esta es una tarea simple ... es decir, demasiadas entradas == Sobreajuste.
fuente