Этот репозиторий содержит код для разработки чат-бота, который может взять один из 16 типов личности Майерс-Бриггс .
Чат-бот точно настроен для каждой личности, используя посты и комментарии, принадлежащие соответствующему субреддиту (например, R/Infj для типа INFJ ).
reddit_scraper.py содержит сценарий для сокраски данного субреддита. Чтобы выполнить его, сначала вам нужен экземпляр базы данных MySQL для подключения. Вам также нужны некоторые параметры, связанные с вашей учетной записью Reddit и в базе данных MySQL: все необходимо вставить в файл config.py , следуя схеме config.example.py .
Сценарий сначала загрузит все сообщения в таблице под названием posts , а затем их комментарии в таблице под названием comments . Хотя параллелизация была применена, эта вторая часть займет много часов. Вот почему, как только вы скачали посты, которые вас интересуют через основной сценарий (~ 20 минут), вы можете использовать сценарий comments_scraper.py для загрузки соответствующих комментариев. Если вы прерываете его, в следующий раз, когда вы запустите его, сценарий начнется с того места, где вы ушли.
Чтобы обучить модель, я впервые сообщил данные в conversational dataset format , т.е. таблица CSV со следующей структурой.
| идентификатор | ответ | контекст | контекст/0 | ... | контекст/n |
|---|---|---|---|---|---|
| S892NN | Я в порядке | Ничего страшного. А вы? | Как жизнь? | ... | Привет! |
Здесь, контекст/N представляет собой начало разговора, переходя к самому последнему обмену (показан в контексте/0 , контексте и ответе , который является последним предложением в разговоре). Это возможно изменить кардинальность контекстов, переопределяя параметр NUMBER_OF_CONTEXTS в файле config.py .
Script create_conversational_dataset.py генерирует CSV, начиная с таблиц SQL, созданных на этапе скребки, сохраняя его в файл рассола в папке данных. Разговор построен либо из поста, так и из его прямых комментариев, либо из поста, комментария и его цепочки комментариев.
Выполнение скрипта параллелизируется, поэтому он записывается на n различных CSVS - n в зависимости от параметра NUMBER_OF_PROCESSES - наконец -то объединяется для создания полученного файла рассола.
The Notebook training.py содержит точную настройку модели языка DialoGPT-medium на разговорных данных и в основном является адаптацией кода, который вы можете найти в this notebook .
Выполнение demo.py начнет разговор.
Чтобы запустить весь код в ресторане, вы можете создать виртуальную среду и запустить следующие команды.
virtualenv venv
source ./venv/bin/activate
pip install -r requirements.txt