В репозитории
https://github.com/Koziev/NLP_Datasets выложены побочные результаты всяких моих экспериментов с чатботами - наскрапленные, очищенные и отформатированные диалоги:
1)
диалоги из анекдотов 8 Мб 2) диалоги с имиджборд 390 Мб
архив_№1 и
архив_№2 (осторожно - зашкаливающий уровень ненависти и 18+)
3) диалоги из худлита (Флибуста) 400 Мб
архив_№1 и
архив_№2 Также выложен код (python, torch, transformers) для тренировки читчата на этих данных и проверки работы получившейся модели:
train_chitchat_rugpt.py - файнтюн модели семейства rugpt (нужно раскомментарить нужную строку в коде) с
hf.Trainer.
run_chitchat_query.py - запуск генерации на модели читчата.
Диалоги
Формат для всех диалоговых датасетов одинаковый, максимально естественный и читабельный. Каждый диалог отделяется от другого минимум одной пустой строкой, каждая реплика в диалоге начинается с новой строки символами "- ". Код файнтюна сделан так, чтобы учитывать этот формат.
Диалоги из анекдотов имеют примерно такой вид:
- Доктор, что бы Вы мне посоветовали?
- Сходите к врачу.
- А кто же Вы?!
- Я, милочка, доктор математики.
Этих диалогов относительно немного, но зато в них бывают достаточно забавные ответы (увы, не всегда).
Диалоги с имиджборд очень специфичны. Много лексики и тем 18+, зачастую отсутствие когерентности реплик, троллинг. Относительно приличный пример:
- Кулстори есть?
- Бездомные собаки в Уфе
- пруф плиз
- Тупая тварь... ЗАГУГЛИ ФОТКУ
- загуглил
- Заяндекси.
В общем, такой срез интернет-субкультуры. Также можно рассматривать эти диалоги как пример токсичной среды, в которой может оказаться диалоговый агент.
Кстати, часть этих данных видимо уникальны - я соскрапил с сайтов, которые в данный момент уже недоступны год или более.
Диалоги из сетевой библиотеки Флибуста ожидаемо литературны (в среднем):
- Ну как?
- Вроде ничего.
- За собой ничего не заметила?
- Нет.
- Затишье перед бурей.
- Чего?
- Говорю, похоже на затишье перед бурей.
- Как ты думаешь, твои друзья нам помогут?
- Должны помочь.
- Я звонила маме, она спрашивает, когда мы приедем к ним.
- Как ты меня ей представила в этот раз?
Количество эпох обучения читчата
Код обучения останавливает обучение по
early stopping. Интересно, для для разных датасетов кривая сильно отличается. Для диалогов с имиджборд к моменту достижения 5 эпох перплексия продолжает немного падать. А для диалогов из анекдотов после 2 эпох перплексия начинает увеличиваться.
Кривая обучения для анекдотов и sberbank-ai/rugpt3small_based_on_gpt2:
Кривая обучения для анекдотов и sberbank-ai/rugpt3medium_based_on_gpt2:
Кривая обучения для анекдотов и sberbank-ai/rugpt3large_based_on_gpt2:
Кривая файнтюна модели sberbank-ai/rugpt3large_based_on_gpt2 на диалогах из Флибусты:
Кривая обучения на датасете диалогов имиджборд на модели sberbank-ai/rugpt3large_based_on_gpt2:
Сгенерированные реплики
Для входной реплики "Дай денег в долг!" модель, обученная на анекдотах, выдает примерно такие варианты ответа:
[1] - Откуда у меня деньги?!
[2] - А ты мне что, должен?
[3] - А зачем?
[4] - Что, опять?
[5] - На себя и детей?
[6] - У меня денег нет.
[7] - Откуда у меня деньги?
[8] - Нет.
[9] - Не дам!
Модель, обученная на Флибусте, дает такие варианты ответов:
[1] - Ты чего?
[2] - За что?
[3] - Что же, бери, только ты мне должен одну копейку!
[4] - За что?
[5] - Да ты же не куришь
[6] - Не дам.
[7] - Ну и что мне с тобой делать?
[8] - Да ты хоть знаешь, что у тебя всего лишь пятьдесят рублей?
[9] - Ну давай, давай, Только не задерживайся.
[10] - Зачем?