Козиев Илья (kelijah) wrote,
Козиев Илья
kelijah

Category:

Автоматическая генерация четверостиший с помощью GPT и T5

Далее я постараюсь максимально просто и пошагово описать, как с помощью нейросетевых генеративных моделей GPT и T5 генерировать рифмованные короткие тексты уровня "Я поэт, зовусь я Цветик. От меня вам всем приветик", хотя временами и с претензией на глубину, пафос и душевный надрыв:


--- Весна идёт, весна идёт ---

На ветках малины почки
В бутонах висят.
В них рифмы, слова, слова, строчки
И, конечно, твой взгляд




--- Я не могу сказать люблю ---

И в душе твоей весна,
Прохладный ветерок.
И ты, как будто, была одна
И я не смог


--- Майский дождь ---

В саду прохладный ветерок
Наполняет воздух влагой,
И в ожиданье, как он мог
Порадовать своей отвагой


--- На улице минус двадцать пять ---

На улице минус двадцать пять,
И не видно даже облачка.
И хочется, как-то по-другому стать
И, поморщившись, поёжиться слегка



--- Я не люблю ---

В доме высокая температура,
Не могу я себя побороть.
И на меня смотрит мужчина хмуро
Не в силах согреть свою плоть


Краткое представление о предлагаемом подходе может дать вот такая схема:
Репозиторий с кодом для инференса доступен тут. Собственно код генератора здесь.
Докер-образ с генератором и всеми моделями можно скачать тут.
Далее буду описывать каждый этап отдельно.
Корпус стихов, его очистка

В отличие от других подходов к генерации стихов (см. Нейронная Оборона и т.д.), у меня не было возможности вручную отсмотреть большой объем стихов и отобрать из них достаточно крупный обучающий массив. Поэтому было решено ограничиться только автоматическими приемами очистки от откровенного шлака и смириться с тем, что в корпусе будет некоторое (и значительное) количество стихов уровня "поэта Цветика", с соответствующими последствиями для качества моделей.

Замечу, что использование всевозможных сборников "лучших" или "классических" стихов проблему не решает. Во-первых, их объема недостаточно. Во-вторых, стихи всех поэтов годов, наверное, до 30-х прошлого века содержат некоторое количество архаичной лексики или просто сомнительного качества. Ну в самом деле, можно ли ждать что-то хорошее от стихов, например, Державина или Ломоносова?

У использования актуального творчества есть и важное преимущество перед нестареющей классикой - работа с "текущей повесткой". Генерация текстов на тему всевозможных ковидов и толерантностей идет легче, если обучающий корпус так или иначе упоминает их.

Процедура очистки содержит несколько эвристик, отсеивающих явно плохие тексты:

1) Строки должны быть зарифмованы. Более того, строго проверяется шаблон рифмовки ABAB. Для проверки рифмы используетсямодель акцентуатора. Акцентуатор определяет позицию ударения в слове. Также применяется упрощенный вариант транскриптора для учета различных фонетических явлений - оглушение, смягчение согласных, особый порядок произнесения неударных гласных. Фонетическая транскрипция позволяет сравнивать не символьную запись проверяемых слов, а их произношение.

2) Берем только четверостишья.

3) В тексте не должно быть иностранных слов (некириллицы любого вида) и чисел.

4) В каждой строке должно быть не больше 5-6 слов.

Tags: генеративная модель, генерация текста
Subscribe

  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

  • 0 comments