Esta es la implementación de Keras para la tarea de clasificación de oraciones utilizando CNN.
El conjunto de datos para la tarea anterior se obtuvo del punto de referencia de comprensión del lenguaje natural del proyecto.
El texto utilizado para la capacitación se divide en seis categorías, a saber, AddToPlaylist, BookRestaurant, GetWeather, RateBook, SearchCreativeWork, SearchScreeningEvent, cada una con casi 2000 oraciones.
Para preparar el conjunto de datos, desde el directorio principal del proyecto, abra la terminal y escriba:
$ python prepare_data.py
Consulte Intent_Classification_Keras_Glove.ipynb para ver la parte de capacitación y construcción del modelo. A continuación se muestra la descripción general del modelo.
Aunque los RNN como LSTM y GRU se usan ampliamente para tareas de modelado de lenguaje, los CNN también han demostrado ser bastante más rápidos de entrenar debido a la paralelización de datos durante el entrenamiento y dan mejores resultados que los LSTM. Aquí hay una breve comparación entre diferentes métodos para resolver la clasificación de oraciones, como se puede ver, TextCNN ofrece el mejor resultado de todos y también entrena más rápido. Pude lograr una precisión del 99 % en el conjunto de datos de entrenamiento y validación en un minuto después de 3 épocas cuando entrené en una CPU i7 normal.
La clasificación de intenciones y el reconocimiento de entidades nombradas son las dos partes más importantes al crear un chatbot orientado a objetivos.
Hay muchos paquetes de Python de código abierto para crear un chatbot, Rasa es uno de ellos. Lo bueno de Rasa es que cada parte de la pila es totalmente personalizable y fácilmente intercambiable. Aunque Rasa tiene un excelente soporte integrado para la tarea de clasificación de intenciones, también podemos especificar nuestro propio modelo para la tarea; consulte Processing Pipeline para obtener más información al respecto.
Uso de incrustaciones de palabras previamente entrenadas en un modelo de Keras
Redes neuronales convolucionales para clasificación de oraciones
Un análisis de sensibilidad (y una guía para profesionales) de redes neuronales convolucionales para la clasificación de oraciones
Una evaluación empírica de redes convolucionales y recurrentes genéricas para el modelado de secuencias