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

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