Dieses Repository enthält den Code, um einen Chatbot zu entwickeln, der einen der 16 Myers-Briggs-Persönlichkeitstypen aufnehmen kann.
Der Chatbot ist für jede Persönlichkeit mit Beiträgen und Kommentaren des entsprechenden Subreddit (z. B. R/INFJ für den INFJ-Typ ) gut abgestimmt.
reddit_scraper.py enthält das Skript, um einen bestimmten Subreddit zu kratzen. Um es auszuführen, benötigen Sie zunächst eine Instanz einer MySQL -Datenbank, um eine Verbindung herzustellen. Sie benötigen auch einige Parameter, die Ihrem Reddit -Konto zugeordnet sind, und in die MySQL -Datenbank: Alle müssen in einer config.py nach dem Schema von config.example.py eingefügt werden.
Das Skript wird zuerst alle Beiträge in einer Tabelle mit dem Titel posts und dann in einer Tabelle mit dem Titel comments geladen. Obwohl die Parallelisierung angewendet wurde, dauert dieser zweite Teil viele Stunden. Aus diesem Grund können Sie, sobald Sie die Beiträge, an denen Sie über das Hauptskript interessiert sind (~ 20 Minuten), heruntergeladen haben, mit dem Skript comments_scraper.py verwenden, um die zugehörigen Kommentare herunterzuladen. Wenn Sie es unterbrechen, beginnt das Skript beim nächsten Ausführen von Ihrem Abbruch.
Um das Modell zu trainieren, habe ich zuerst Daten im conversational dataset format gemeldet, dh eine CSV -Tabelle mit der folgenden Struktur.
| Ausweis | Antwort | Kontext | Kontext/0 | ... | Kontext/n |
|---|---|---|---|---|---|
| S892NN | Mir geht es gut | Es ist in Ordnung. Was ist mit dir? | Wie ist das Leben? | ... | Hallo! |
Hier repräsentiert Context/N den Beginn des Gesprächs und geht zum jüngsten Austausch (zeigte sich in Kontext/0 , Kontext und Antwort , was der neueste Satz im Gespräch ist). Es ist möglich, die Kardinalität von Kontexten zu ändern, indem der Parameter NUMBER_OF_CONTEXTS in der config.py -Datei übersteigt.
Das Skript create_conversational_dataset.py die CSV -Tabellen erzeugt die CSV -Tabellen, die während der Scraping -Phase erstellt wurde, und speichert sie in einer Gurkendatei im Datenordner. Ein Gespräch wird entweder aus einem Beitrag und einem seiner direkten Kommentare oder aus einem Beitrag, einem Kommentar und seiner Kommentarkette gebaut.
Die Ausführung des Skripts ist parallelisiert und schreibt also auf n verschiedene CSVs - n abhängig vom Parameter NUMBER_OF_PROCESSES - schließlich verkettet, um die resultierende Gurkendatei zu erstellen.
DialoGPT-medium Notebook- training.py this notebook
Die Ausführung demo.py wird das Gespräch beginnen.
Um den gesamten Code im Respository auszuführen, können Sie eine virtuelle Umgebung erstellen und die folgenden Befehle ausführen.
virtualenv venv
source ./venv/bin/activate
pip install -r requirements.txt