Датасеты с диалогами (анеки, имиджборды, худлит) и код для обучения читчата в гитхабе

Jul 02, 2022 12:45

В репозитории 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] - Зачем?

chitchat, диалоги, читчат, chatbot, датасеты, чатбот

Previous post Next post
Up