Eine Sequence2sequence-Chatbot-Implementierung mit TensorFlow.
Sehen Sie sich unten die Anweisungen für den Einstieg an oder sehen Sie sich einige Chatprotokolle an
(Batch-Dateien sind derzeit nur für Windows verfügbar. Für Mac- und Linux-Benutzer finden Sie unten die Anweisungen für die Python-Konsole.)
Für den Konsolen-Chat:
chat_console_best_weights_training.bat
oder chat_console_best_weights_validation.bat
ausFür Webchat:
Führen Sie im Modellverzeichnis chat_web_best_weights_training.bat
oder chat_web_best_weights_validation.bat
aus
Öffnen Sie einen Browser mit der von der Serverkonsole angegebenen URL, gefolgt von /chat_ui.html
. Dies ist normalerweise: http://localhost:8080/chat_ui.html
Legen Sie das Arbeitsverzeichnis der Konsole auf das Verzeichnis seq2seq-chatbot fest. In diesem Verzeichnis sollten die Modell- und Datensatzverzeichnisse direkt enthalten sein.
Führen Sie chat.py mit dem Modellprüfpunktpfad aus:
run chat.py models d ataset_name m odel_name c heckpoint.ckpt
Um beispielsweise mit dem trainierten Cornell-Filmdialogmodell trainiert_model_v2 zu chatten:
Laden Sie „trained_model_v2“ herunter und entpacken Sie es in den Ordner „seq2seq-chatbot/models/cornell_movie_dialog“.
Legen Sie das Arbeitsverzeichnis der Konsole auf das Verzeichnis seq2seq-chatbot fest
Laufen:
run chat.py models c ornell_movie_dialog t rained_model_v2 b est_weights_training.ckpt
Das Ergebnis sollte so aussehen:
So trainieren Sie ein Modell über eine Python-Konsole:
Konfigurieren Sie die Datei hparams.json mit den gewünschten Trainingshyperparametern
Legen Sie das Arbeitsverzeichnis der Konsole auf das Verzeichnis seq2seq-chatbot fest. In diesem Verzeichnis sollten die Modell- und Datensatzverzeichnisse direkt enthalten sein.
Um ein neues Modell zu trainieren, führen Sie train.py mit dem Datensatzpfad aus:
run train.py --datasetdir=datasets d ataset_name
Oder um das Training eines vorhandenen Modells fortzusetzen, führen Sie train.py mit dem Modellprüfpunktpfad aus:
run train.py --checkpointfile=models d ataset_name m odel_name c heckpoint.ckpt
Um beispielsweise ein neues Modell auf dem Cornell-Filmdialog-Datensatz mit Standard-Hyperparametern zu trainieren:
Legen Sie das Arbeitsverzeichnis der Konsole auf das Verzeichnis seq2seq-chatbot fest
Laufen:
run train.py --datasetdir=datasets c ornell_movie_dialog
Das Ergebnis sollte so aussehen:
Dokumente folgen bald...
TensorBoard ist ein großartiges Tool zur Visualisierung dessen, was unter der Haube vor sich geht, wenn ein TensorFlow-Modell trainiert wird.
So starten Sie TensorBoard von einem Terminal aus:
tensorboard --logdir=model_dir
Dabei ist model_dir der Pfad zu dem Verzeichnis, in dem sich die Modellprüfpunktdatei befindet. So zeigen Sie beispielsweise das trainierte Cornell-Filmdialogmodell „trained_model_v2“ an :
tensorboard --logdir=models c ornell_movie_dialog t rained_model_v2
Dokumente folgen bald...
Dokumente folgen bald...
TensorBoard kann die Worteinbettungen in den 3D-Raum projizieren, indem es eine Dimensionsreduktionstechnik wie PCA oder T-SNE durchführt, und ermöglicht es Ihnen, zu untersuchen, wie Ihr Modell die Wörter in Ihrem Vokabular gruppiert hat, indem die nächsten Nachbarn im Einbettungsraum für jedes Wort angezeigt werden . Weitere Informationen zu Worteinbettungen in TensorFlow und dem TensorBoard-Projektor finden Sie hier.
Wenn Sie TensorBoard für ein Modellverzeichnis starten und die Registerkarte „Projektor“ auswählen, sollte es so aussehen:
Anleitung folgt bald...
Die folgenden Python-Pakete werden in seq2seq-chatbot verwendet: (ausgenommen Pakete, die mit Anaconda geliefert werden)
TensorFlow *Hinweis – TF 2.x wird noch nicht unterstützt, verwenden Sie die neueste TF 1.x-Version.
pip install --upgrade tensorflow==1. *
Zur GPU-Unterstützung: (Hier finden Sie die vollständigen Anweisungen zur GPU-Installation, einschließlich CUDA und cuDNN.)
pip install --upgrade tensorflow-gpu==1. *
jsonpickle
pip install --upgrade jsonpickle
click 6.7, flask 0.12.4 und flask-restful (erforderlich zum Ausführen der Weboberfläche)
pip install click==6.7
pip install flask==0.12.4
pip install --upgrade flask-restful
Siehe die Roadmap-Seite
Diese Implementierung wurde inspiriert von:
Sequenz-zu-Sequenz-Lernen mit neuronalen Netzen
Ein neuronales Konversationsmodell
Neuronale maschinelle Übersetzung durch gemeinsames Lernen, sich auszurichten und zu übersetzen (Bahdanau-Aufmerksamkeitsmechanismus)
Effektive Ansätze zur aufmerksamkeitsbasierten neuronalen maschinellen Übersetzung (Luong-Aufmerksamkeitsmechanismus)