Chatbot für psychische Gesundheit
Aktualisierungen (2024)
- Fixierte Probleme im Zusammenhang mit Python -Skripten funktionieren aufgrund veralteter Bibliotheksversionen und -methoden, die nicht funktionieren
- Anforderungen hinzugefügt.txt für eine einfache Installation von Abhängigkeiten
Stellen Sie vor dem Ausführen der Skripte sicher, dass Sie die Python -Version <= 3.8 installiert haben (vorzugsweise Python 3.8; erforderlich, um einige Bibliotheken wie TensorFlow zu installieren).
Dieses Projekt wurde für ein Forschungsprojekt unter einem Professor an meiner Universität mit einem selbstgekratzten Datensatz durchgeführt. Der von uns verwendete Datensatz ist vertraulich; Daher habe ich ein Beispielkaggle -Datensatz verwendet. Ich beschloss, die Skripte offen zu machen, um in Python verschiedene Chatbots von Grund auf neu zu erstellen, da ich während meiner Forschung mit solchen Ressourcen zu kämpfen hatte.
Motivation hinter diesem Projekt
Im Jahr 2017 berichtete die Nationale Umfrage zur psychischen Gesundheit, dass einer von sieben Menschen in Indien an psychischen Störungen litt, einschließlich Depressionen und Angstzuständen. Das zunehmende Bewusstsein für psychische Gesundheit hat es zu einem wichtigen Anliegen der Entwicklung gemacht. Fast 150 Millionen Menschen in Indien brauchten Interventionen, bei denen die niedrige und die Mittelklasse mehr Belastung ausgesetzt war als die wohlhabenden Menschen. Dieses Projekt ist ein Versuch, die psychische Gesundheit zugänglicher zu machen. Dieser Konversationsmittel kann durch Kliniker ergänzt werden, um es effektiver und fruchtbarer zu machen.
Klassifizierungen von Chatbots
Chatbots können auf der Grundlage verschiedener Attribute klassifiziert werden -

Meine Forschung bezogen sich auf die Designansätze, nämlich regelbasierte, retrievalbasierte und generativbasierte.
- Regelbasierte Chatbots: Ein regelbasierter Chatbot verwendet eine einfache regelbasierte Zuordnung oder Musterübereinstimmung, um Antworten aus Sätzen vordefinierter Antworten auszuwählen. Diese Systeme erzeugen keinen neuen Text. Stattdessen wählen sie eine Antwort aus einer vorgegebenen Liste.
- Abrufbasierte Chatbots: Ein Abrufbasis Chatbot verwendet maschinelles Lernen Ensembles als Heuristik zur Bewertung. Ähnlich wie bei regelbasierten Chatbots generieren sie keine neuen Texte.
- Generative Chatbots: Generative Modelle beruhen nicht auf vordefinierte Antworten. Sie haben neue Antworten von Grund auf neu. Maschinelle Übersetzungstechniken werden typischerweise in generativen Modellen verwendet, aber anstatt von einer Sprache in eine andere zu übersetzen, "übersetzen" wir von der Eingabe in die Ausgabe (Antwort). Generative Modelle werden für die Erstellung verwendet, weil sie von Grund auf lernen.
Überblick über die trainierten Bots
Der Datensatz wurde von Kaggle - FAQ für psychische Gesundheit abgeholt. Dieser Datensatz besteht aus 98 FAQs über die psychische Gesundheit. Es besteht aus 3 Spalten - Frage, Fragen und Antworten.
Beachten Sie, dass die CSV -Datei, um den Abruf -Chatbot zu trainieren, manuell in eine JSON -Datei konvertiert wurde . Da dies nicht der ursprüngliche Datensatz ist, der für die Forschung verwendet wird (Intro lesen), habe ich nur die ersten 20 Zeilen für das Training des Modells verwendet.
Das Repository besteht aus drei Notizbüchern für die drei Arten von Chatbots.
Für regelbasierte TF-IDF wurde mit dem Tokenizer von NLTK zur Datenerprozessierung verwendet. Die verarbeiteten Daten wurden gegen das erwartete Ergebnis getestet und die Ähnlichkeit der Kosinus zur Bewertung wurde verwendet.
Für den Abruf basiert wurden mehrere Modelle für maschinelles Lernen und Deep Learning ausgebildet,
- Vanille RNN
- Lstm
- BI - LSTM
- Gru
- CNN -Abrufmodelle werden auf JSON -Dateien geschult. Für alle oben genannten Modelle wurde die Regularisierung verwendet, und basierend auf Trainings- und Validierungsgenauigkeiten und Verlust wurde das beste Modell für endgültige Vergleiche aufbewahrt. Es wurde beobachtet, dass die CNN -Architektur die besten Ergebnisse lieferte . Das Modell bestand aus 3 Schichten - Faltungs-
Für generative Chatbots wurde NLP verwendet, da NLP Chatbots ermöglicht, die Muster und Stile menschlicher Konversation zu lernen und nachzuahmen . Es gibt Ihnen das Gefühl, dass Sie mit einem Menschen sprechen, nicht mit einem Roboter. Es ordnet die Benutzereingabe auf eine Absicht zu, mit dem Ziel, die Nachricht für eine geeignete vordefinierte mögliche Antwort zu klassifizieren.
- Ein Encoder-Decoder-Modell wurde in der CSV-Datei geschult. Der Endoder-DeCoder ist ein SEQ2SEQ-Modell, das auch als Encoder-DeCoder-Modell bezeichnet wird, verwendet lange kurzfristige Speicher-LSTM für die Textgenerierung vom Trainingskorpus.
- Was macht das Modell SEQ2SEQ oder Encoder-Decoder in einfachen Worten? Es prognostiziert ein Wort, das im Benutzereingang angegeben ist, und dann wird jedes der nächsten Wörter unter Verwendung der Wahrscheinlichkeit der Wahrscheinlichkeit dieses Wortes vorhergesagt.
JSON gegen CSV
Während dieses Projekts verwendete der Chatbot die größte Verwirrung, warum der Chatbot eine JSON-Datei anstelle von CSV für das retrievalbasierte Modell verwendete. Ich habe einige Punkte aufgeführt, die den Vergleich zwischen den beiden Dateitypen machen -
- JSON speichert Daten in hierarchischer Weise, was für einen Abruf-basierten Chatbot besser ist, da der Chatbot Tags und Kontexte benötigt.
- Ein auf Abruf basierter Chatbot ist geschult, um die beste Antwort auf der Grundlage eines Pools vordefinierter Antworten zu geben. Diese vordefinierten Antworten sind nummerig. Für die Zuordnung von Eingabe-zu-Output-Zuordnungen muss ein Tag bereitgestellt werden. Um einfach auszudrücken, wird die vom Benutzer angegebene Eingabe (der Kontext) durch das bereitgestellte Tag identifiziert. Basierend auf dem vorhergesagten besten Tag wird dem Benutzer eine der vordefinierten Antworten angezeigt . Daher ist das Speichern dieser Art von Daten in einer JSON -Datei aufgrund ihrer Kompaktheit und hierarchischen Struktur einfacher.
- Eine CSV -Datei wurde verwendet, um die Daten des generativen Chatbots zu speichern. Ein generativer Chatbot benötigt keine Tags, um Vorhersagen zu treffen . Diese Daten sind leichter in einer CSV -Datei zu speichern, da wir nur zwei Spalten benötigen - Eingabetxt und Ausgabetext. Das Hinzufügen oder Löschen von Daten wäre in diesem Fall im Vergleich zu einer JSON -Datei einfacher.
Zukünftige Ziele
Ich möchte die Möglichkeiten des generativen Chatbots weiter erforschen. Das aktuelle Encoder-Decoder-Modell kann aufgrund der kompakten Natur von LSTM nicht alle Abhängigkeiten in der Decoderschicht erfassen. Aufmerksamkeitsebenen können nach LSTM -Ebenen hinzugefügt werden, um jeden Ausgang dynamisch zu dekodieren.