Skip to content

Koziev/verslibre

Repository files navigation

Генерация стихов с помощью больших языковых моделей

Репозиторий содержит код для создания коротких стихов с помощью генеративных языковых моделей с архитектурой 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, генерирующей заголовок стиха по его содержимому.

Описание процесса подготовки обучающего корпуса можно найти здесь.

About

Using transformers to generate Russian poetry

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published