Repositori ini berisi kode untuk mengembangkan chatbot yang dapat mengambil salah satu dari 16 tipe kepribadian Myers-Briggs .
Chatbot disesuaikan untuk setiap kepribadian menggunakan posting dan komentar milik subreddit yang sesuai (misalnya, R/INFJ untuk jenis INFJ ).
reddit_scraper.py berisi skrip untuk mengikis subreddit yang diberikan. Untuk menjalankannya, pertama -tama Anda memerlukan instance dari database MySQL untuk terhubung. Anda juga memerlukan beberapa parameter yang terkait dengan akun Reddit Anda dan ke database MySQL: semua perlu dimasukkan ke dalam file config.py , mengikuti skema config.example.py .
Script akan terlebih dahulu memuat semua posting dalam tabel yang disebut posts , dan kemudian komentar mereka di tabel yang disebut comments . Meskipun paralelisasi telah diterapkan, bagian kedua ini akan memakan waktu berjam -jam. Itu sebabnya, setelah Anda mengunduh posting yang Anda minati melalui skrip utama (~ 20 menit), Anda dapat menggunakan skrip comments_scraper.py untuk mengunduh komentar yang terkait. Jika Anda mengganggu, lain kali Anda menjalankannya, skrip akan mulai dari tempat Anda pergi.
Untuk melatih model, saya pertama kali melaporkan data ke dalam conversational dataset format , yaitu tabel CSV dengan struktur berikut.
| pengenal | tanggapan | konteks | Konteks/0 | ... | konteks/n |
|---|---|---|---|---|---|
| s892nn | Saya baik-baik saja | Tidak apa-apa. Bagaimana denganmu? | Bagaimana Hidup? | ... | Hai! |
Di sini, Context/N mewakili awal dari percakapan, pergi ke pertukaran terbaru (ditunjukkan dalam konteks/0 , konteks dan respons , yang merupakan kalimat terbaru dalam percakapan). Kemungkinan untuk mengubah kardinalitas konteks dengan menimpa parameter NUMBER_OF_CONTEXTS dalam file config.py .
Script create_conversational_dataset.py menghasilkan CSV mulai dari tabel SQL yang dibuat selama fase pengikis, menyimpannya ke dalam file acar di folder data. Percakapan dibangun baik dari sebuah pos dan salah satu komentar langsungnya atau dari sebuah pos, komentar dan rantai komentarnya.
Eksekusi skrip paralelisasi, sehingga menulis pada N yang berbeda CSV - n tergantung pada parameter NUMBER_OF_PROCESSES - akhirnya digabungkan untuk membuat file acar yang dihasilkan.
Notebook training.py berisi penyesuaian model bahasa DialoGPT-medium pada data percakapan, dan terutama adaptasi dari kode yang dapat Anda temukan di this notebook .
Mengeksekusi demo.py akan memulai percakapan.
Untuk menjalankan semua kode dalam respositori, Anda dapat membuat lingkungan virtual dan menjalankan perintah berikut.
virtualenv venv
source ./venv/bin/activate
pip install -r requirements.txt