Обучена диалоговая языковая модель и создан телеграм бот для взаимодействия с ней.
В качестве базовой модели была выбрана модель ruDialoGPT-medium. Далее данная модель дообучалась на данных с чата sns-internships.
- Для работы с данными используется библиотека datasets, так как во-вторых все равно уже используем разработки hugging-face, а во-первых pandas не подходит для больших данных.
- Из данных убираются все те диалоги, в которых нет контекста
- Очищается сам текст:
- удаляются лишние пробелы
- переносы строк
- эмодзи
- Данные разбиваются на тренировочную и тестовую выборку
- Текст приводится к подходящему формату для модели (добавляются токены @@ПЕРВЫЙ@@ и @@ВТОРОЙ@@)
Перед подачей данных в модель они сначала токенизируется с помощью AutoTokenizer. Далее обучаемся с помощью Trainer и сохраняем чекпоинт.
Для написания чат-бота была выбрана библиотека aiogram. Сам бот умеет просто отвечать на сообщения. При этом он хранит 3 последних сообщения как контекст. Также есть функция очистки контекста.
Для улучшения релевантности ответа, модель генерирует несколько ответов, а затем с помощью предобученного классификатора релевантных ответов response-quality-classifier-base выбирается лучший ответ.