Dies ist Keras-Implementierung für die Aufgabe der Satzklassifizierung mithilfe von CNNs.
Der Datensatz für die obige Aufgabe wurde aus dem Projekt Natural Language Understanding Benchmark erhalten
Der für das Training verwendete Text fällt in die sechs Kategorien AddToPlaylist, BookRestaurant, GetWeather, RateBook, SearchCreativeWork und SearchScreeningEvent mit jeweils fast 2000 Sätzen.
Um den Datensatz vorzubereiten, öffnen Sie im Hauptprojektverzeichnis das Terminal und geben Sie Folgendes ein:
$ python prepare_data.py
Überprüfen Sie Intent_Classification_Keras_Glove.ipynb auf den Modellbau- und Trainingsteil. Unten finden Sie die Modellübersicht.
Obwohl RNNs wie LSTM und GRU häufig für Sprachmodellierungsaufgaben verwendet werden, haben sich CNNs aufgrund der Datenparallelisierung während des Trainings auch als deutlich schneller zu trainieren erwiesen und liefern bessere Ergebnisse als die LSTM-Modelle. Hier ist ein kurzer Vergleich zwischen verschiedenen Methoden zur Lösung der Satzklassifizierung. Wie man sieht, liefert TextCNN das beste Ergebnis von allen und trainiert auch schneller. Beim Training auf einer normalen i7-CPU konnte ich innerhalb einer Minute nach drei Epochen eine Genauigkeit von 99 % beim Trainings- und Validierungsdatensatz erreichen.
Die Absichtsklassifizierung und die Erkennung benannter Entitäten sind die beiden wichtigsten Teile bei der Erstellung eines zielorientierten Chatbots.
Es gibt viele Open-Source-Python-Pakete zum Erstellen eines Chatbots, Rasa ist eines davon. Das Coole an Rasa ist, dass jeder Teil des Stapels vollständig anpassbar und leicht austauschbar ist. Obwohl Rasa über eine hervorragende integrierte Unterstützung für Absichtsklassifizierungsaufgaben verfügt, können wir auch unser eigenes Modell für die Aufgabe angeben. Weitere Informationen hierzu finden Sie in der Verarbeitungspipeline.
Verwendung vorab trainierter Worteinbettungen in einem Keras-Modell
Faltungs-Neuronale Netze zur Satzklassifizierung
Eine Sensitivitätsanalyse (und ein Leitfaden für Praktiker) von Faltungs-Neuronalen Netzen zur Satzklassifizierung
Eine empirische Bewertung generischer Faltungs- und wiederkehrender Netzwerke für die Sequenzmodellierung