По мотивам поста запилить бота, который шутит шутейки.
Сбор шутейк из vk.com, bash.im, 2ch.hk и других подобных ресурсах
- Обработка полученных данны
- Удаление мусора
Нормализация текста- если кто-то будет делать word based seq2seq, то он сделает нормализацию и токенизацию как он считает нужным
Изучение дополнительного материала
- Статьи (Seq2Seq with Attention and Beam Search)
- Похожие проекты
- Научные работы
Построение простой модели и оценка её качества
Добавление attention-а к модели
Изучение сложных архитектурных моделей, попытки использовать transfer learning в проекте
Создание телеграмм бота для удобства демонстрации проекта
Обучили языковую модель с совмещённым енкодером и декодером на данных, которые удалось найти в vk. В датасете примерно 7к коротких шуток
Использовали двухслойную LSTM со скрытым слоем в 256. Для букв используются эмбединги размерности 128. Предсказания делаются на основе Beam Search с шириной поиска в 5
Обученную модель можно скачать тут
Для запуска достаточно распаковать модель рядом с ноутбуком Runner и выполнить клетки
Примеры работы модели. В данном варианте, для генерации шуток подаём модели рандомную строку
весилый знакомств.
отецмирное владите, где нельзя навтольюмия,что иминуется,
мни будешь заблудчный
сейческин студентов.ребральных футболщины!
препысняли, изолиланы, приобрести противолноршкий балы...
из лондской фоткальными....свелочные музаков
пожалуйте навалилизировать, чтобы японцевые...
кто наливших фильмо" отлиодов...диблядов. похиратильные писсывает:
"черудический пукаживия...
заяц....
второгламный женщины, нертывалку предлагает психболу, нибедет рекламент:
3. бум"греточным, населенное зронят
залагивались...
Спарсили anekdot.ru и наш датасет увеличился до примерно 55к шуток
Использовали textgenrnn, где реализован механизм attention-а
Модель с rnn_layers=4, layer_size=128, dim_embeddings=100
Длительность обучения - 15 эпох, ~ 3 часа в colab’е
Температура 1.0
плюх проезжают?
— Да, блин, не знаю! Белые!"
"Вовочку оставляют студент на вструге, без норковки. Не русский.
Нашлюсь, мне бы долге после смелых джинс
Лиса .
Американец ниобй же поняли, как этого я в обородной мосту?
! Два груд, умоляют на свете.
После звездной жены для десяти управляющее зрение..
на сват.
– А её поправим полоса?
— Сверху гад!
— А после смерток это выбросимых тихонь в Россию.
Итак, был батя руку. Стеколада одевают деньги и начал
Температура 0.6
Федро включается 250 мальизма,
и абрикор:
- Вы выжили!.. Петя любой жил!
Бесзит тоже находится зелёный, и непонятно не налился?
- Ну идет!"
"Больно
т, что ты делаешь к отцу французской стихонный заботный штанг.
- Кракать! Сейчас на автосроде.
- Похож?
- А, клавок.
- А че?
- Да вот, однадцать оста
ассказал, но я хочу писать купить такой смысленный любими, но везем рока
- Нет, тебе «Сосед»? А что с телефонными?
- Всё молотовой
фиговическом деле
Попробовали использовать уже обученную на русских текстах языковую модель и затрансферить её на наш датасет
Использовали библиотеку fastai и обученную AWD-LSTM модель как базовую
Получили word based модель
Длительность обучения - ХХХ эпох, ~ ХХХ часов в colab’е
Температура 1.0
- дочка , я умираю !
- сыночек , что жизнь не беспокоит .
анекдоты про папу
один мужик в первый раз спрашивает показал домашнего соседа :
- дедушка мой , килограммов 100 баксов .
- а где ты мечтаешь
- спросил ответил .
- что такое
- отойдем в спальню .
- пойдем в эту квартиру вызывал отец а была б можешь бумагой , ну
- у нас с тобой тёща не работает .
вовочка кавказец вовочка , за что ты хочешь стать инженером
вовочка почему это потому , что его ни училка , ни урок
дальше не считаю преподавал
Температура 0.6
в связи с массовым строительством в россии платных дорог ,
многие жители москвы решили отказаться от поездки на отдых в отпуск .
- вовочка , а у тебя что , с ума сошел вовочка ,
ты же не знаешь , что такое " девятка " ну , она же у тебя была одна .
в аптеке жена спрашивает у продавщицы скажите ,
пожалуйста , а что у вас есть таблетки от насморка !
как вы догадались , что у вас есть таблетки от насморка .
Команды бота
/joke (/j) - генерация шуток (ULMFiT AWD-LSTM)
/joke_t (/jt) {temperature} - генерация шуток с температурой [0.1, 1.0]
/joke_w (/jw) {words} - генерация шутки по начальным словам
/joke_exp1 (/je1) - генерация шуток моделью из первого эксперимента (LSTM)
/joke_exp2 (/je2) - генерация шуток моделью из второго эксперимента (textgenrnn)
/joke_exp2_t (/je2t) {temperature} - генерация шуток с температурой [0.1, 1.0] (textgenrnn)
/help (/h) - помощь
/about (/a) - об авторах
Примеры:
/joke_t 0.8
/joke_w Решил я сделать бота шутника, а он
/je2t 0.4
Для запуска бота нужно предварительно скачать модели в папку data. Скачать наши модели можно тут
Мы запускаем бота через colab, инструкции есть в colab_runner.ipynb. Можно запустить бота на локальной машине командой:
!python3 shutki_bot.py -t {TOKEN} [-p {path_to_data}]
Где TOKEN - это токен для доступа к HTTP API бота