Репозиторий содержит код для создания коротких стихов с помощью генеративных языковых моделей с архитектурой GPT.
Используется трансформенная языковая модель на основе архитектуры GPT. Эта модель учитывает как грамматику русского языка (подобно языковым моделям типа rugpt), так и его фонетику, включая правила рифмования и построения стихотворного метра. Подробности есть в презентации.
Бинарные файлы моделей доступны в докер-образе inkoziev/verslibre:latest.
Скачиваем и запускаем образ:
sudo docker pull inkoziev/verslibre:latest
sudo docker run -it inkoziev/verslibre:latest
После запуска программа запросит ввод токена для телеграм-бота.
После загрузки всех моделей можно запустить бота в его чате командой /start. Бот предложит выбрать одну из трех случайных тем для сочинения либо ввести свою тему. Темой может быть любое словосочетание с существительным в главной роли, например "генератор стихов".
Этот бот доступен в телеграмме как @verslibre_bot
Примеры генерации:
* * *
Любовь - источник вдохновения,
Души непризнанных людей.
И день весеннего цветения,
Омытый зеленью дождей…
* * *
Душа, гонимая страстями,
Тревожит, веет теплотой.
Любовь, хранимая стихами,
И примиренье, и покой.
Кроме самой генеративной модели, большое значение для правильной работы имеет поэтический транскриптор, который размечает исходные стихи для обучения моделей. Подробнее о работе транскриптора можно почитать тут.
Доступен докер-образ inkoziev/haiku:latest для запуска генератора как телеграм-бота.
Загружаем образ и запускаем:
sudo docker pull inkoziev/haiku:latest
sudo docker run -it inkoziev/haiku
Программа попросит ввести токен телеграм-бота. Затем загрузятся модели (примерно минута) и можно общаться с ботом. Вводите затравку - существительное или словосочетание. Генерация нескольких вариантов на CPU идет примерно 30 секунд. Затем бот выведет первый вариант и предложит оценить его, либо вывести следующий вариант.
Этот бот доступен в телеграмме как @haiku_guru_bot.
Так как это рандомизированная генеративная модель, результаты ее работы обычно невозможно повторить простым вводом такой же затравки. Копируйте хорошие результаты, дополняйте их иллюстративной моделью, например ruDALLE, и получайне уникальный контент:
Больше примеров хайку можно увидеть в моем блоге.
В подкаталоге tmp лежат файлы с частью обучающих данных:
poetry_corpus.txt - корпус отфильтрованных четверостиший, символ | в качестве разделителя строк; используется для дотренировки модели ruGPT.
poem_generator_dataset.dat - датасет для тренировки ruGPT, выдающей текст стиха по теме (ключевому словосочетанию).
captions_generator_rugpt.dat - датасет для тренировки ruGPT, генерирующей заголовок стиха по его содержимому.
Описание процесса подготовки обучающего корпуса можно найти здесь.