Il s'agit de l'implémentation de Keras pour la tâche de classification des phrases à l'aide de CNN.
L'ensemble de données pour la tâche ci-dessus a été obtenu à partir du benchmark du projet Natural Language Understanding.
Le texte utilisé pour la formation relève des six catégories, à savoir AddToPlaylist, BookRestaurant, GetWeather, RateBook, SearchCreativeWork, SearchScreeningEvent, chacune contenant près de 2 000 phrases.
Pour préparer l'ensemble de données, depuis le répertoire principal du projet, ouvrez le terminal et tapez :
$ python prepare_data.py
Vérifiez Intent_Classification_Keras_Glove.ipynb pour la partie création de modèle et formation. Vous trouverez ci-dessous l'aperçu du modèle.
Bien que les RNN comme LSTM et GRU soient largement utilisés pour les tâches de modélisation de langage, les CNN se sont également révélés assez plus rapides à former en raison de la parallélisation des données pendant la formation et donnent de meilleurs résultats que ceux du LSTM. Voici une brève comparaison entre différentes méthodes pour résoudre la classification des phrases, comme on peut le voir, TextCNN donne le meilleur résultat de tous et s'entraîne également plus rapidement. J'ai pu atteindre une précision de 99 % sur l'ensemble de données de formation et de validation en une minute après 3 époques lors d'une formation sur un processeur i7 standard.
La classification des intentions et la reconnaissance des entités nommées sont les deux éléments les plus importants lors de la création d'un chatbot orienté vers les objectifs.
Il existe de nombreux packages Python open source pour créer un chatbot, Rasa en fait partie. Ce qui est intéressant avec Rasa, c'est que chaque partie de la pile est entièrement personnalisable et facilement interchangeable. Bien que Rasa dispose d'un excellent support intégré pour la tâche de classification d'intention, nous pouvons également spécifier notre propre modèle pour la tâche, consultez Processing Pipeline pour plus d'informations à ce sujet.
Utilisation d'intégrations de mots pré-entraînées dans un modèle Keras
Réseaux de neurones convolutifs pour la classification des phrases
Une analyse de sensibilité (et un guide du praticien) des réseaux de neurones convolutifs pour la classification des phrases
Une évaluation empirique des réseaux convolutifs et récurrents génériques pour la modélisation de séquences