Компьютерная программа для написания стихов

Обновлено: 05.07.2024

Рифмование - это процесс довольно творческий и заменить человека сервис не может. Помимо рифмы поэт учитывает множество других гораздо более тонких моментов, которые компьютер уловить не в состоянии. Тем не менее комьютер, может сослужить отличную службу и выполнить роль трудодлюбивого слуги, как калькулятор для математика, наш сервис по поиску рифм поможет отсеять некоторое ядро, с которым уже будет легче работать человеку.

Сервис будет полезен людям занимающихся написанием стихов, песен, поздравлений и других текстов, где нужна рифма. Помощников отличается от других тем, что в нем используется авторская методика поиска рифмы и он может использоваться как дополнение к уже используемым помощникам, так и в качестве основного инструмента. Мы будем рады услышать конструктивную критику и предложения по улучшению сервиса. Некоторые особенности сервиса:

  • Учитываются ударения слов
  • Учитывается мелодика звуков
  • Интеллектуальный анализ слова на звуки
  • Большая база слов
  • Запоминает последние запросы

Как пользоваться

Наш онлайн помощник в подборе рифм мы постарались сделать очень простым и интуитивно понятным, в большинстве случаев требуется только ввести слово для которого необходимо найти рифму и нажать кнопку найти, в случае если слова нет в нашей базе, требуется проставить ударение. Ударение можно ставить и в том случае если вы не согласны с выбранным ударением по умолчанию. Т.к. некоторые слова имеют одинаковое написание, но разное ударение, например: дУши и душИ. Чтобы указать требуемое ударение, поставьте знак * (звездочка) после ударной гласной. Как правило помощник находит множество рифм к слову упорядочивая их таким образом, чтобы лучшие (более сильные) рифмы располагались ближе к началу. Но тем не менее бывает, что неплохие рифмы "сносит" вниз (к концу).

Другие сервисы поиска рифм

К счастью мы в интернете не одиноки и есть другие сервисы в подборе рифм, на наш взгляд наиболее качественные:

Вы можете использовать их и нас, чтобы находить больше. Но честно говоря рифм предложенных нашим помощником наверняка окажется достаточно (словарь содержит более миллиона слов).

Как же иногда хочется, чтобы у тебя был талант к написанию стихотворений… Чтобы все свои мысли и чувства можно было с легкостью записать в четверостишие, зарифмовать и послать любимой… Или удивить коллегу по работе, поздравив его (или ее) открыткой со своим стихотворением, написанным на обратной стороне. Но, увы, не каждому дано красиво рифмовать то, о чем хочется написать. Сегодня времена изменились, и вам уже не нужно ломать голову над написанием стихотворения, за вас все сделает ваш iPhone!

Приложение «Рифматор – стихотворений генератор» предлагает простое решение для тех, кто хочет выразить свои мысли в стихах, но не может. Принцип его работы очень прост: вы задаете параметры, которые подходят под вашу ситуацию, выбираете повод из предложенных вариантов и нажимаете на кнопку «Получить стихотворение». Спустя некоторое время приложение предложит вам три готовых варианта, написанных за вас. Вам останется только лишь прочитать и выбрать самое подходящее.

При первом запуске приложение предложит вам войти через свой аккаунт в «ВКонтакте», Facebook или «Одноклассниках». Это нужно для того, чтобы у вас под рукой всегда был список людей, у которых в ближайшее время будет день рождения. Интерфейс «Рифматора» состоит из четырех вкладок, в первой из которых нужно выбрать тему, на которую вы бы хотели создать стихотворение. Это могут быть «Стихи с днем рождения», «Поздравления с юбилеем», «Комплимент», «25 июня – Выпускной – школа», «30 июня – Сессия, экзамены», «1 июля -Выпускной – ВУЗ», «Свадьба», «Благодарность», «Признание в любви», «Годовщина знакомства» и одна из самых главных тем, на мой взгляд, – «Предложение руки и сердца». Во второй будут находиться все именинники, добавленные туда из социальной сети, через которую вы вошли в приложение. В третьей – ваши готовые стихи, сохраненные на память. Ну а в четвертой – настройки и информация о вашем аккаунте в приложении.

Итак, попробуем что-либо создать, а заодно и испытать приложение. Заходим в него и выбираем, к примеру, тему “Признание в любви”. Далее вам нужно заполнить необходимые параметры: в графе “кого поздравляем?” выбираем “девушка”, стиль поздравления “а-ля Маяковский”. Ну и самое главное – заполняем характеристику адресата: характер, хобби, внешность, работа и другие. Можно выбрать только три параметра и возраст адресата. Если нужно, то в приложении есть возможность выбрать дополнительные параметры, например, чтобы стихотворение писалось от нескольких людей или с обращением на “вы”. Последнее предполагает то, что вы будете поздравлять коллегу, знакомого или знакомую, с которыми вы обращаетесь в официальном ключе.

К сожалению, бесплатно доступно только первое стихотворение, составленное приложением. Для того, чтобы создать еще несколько, придется заплатить. Но с другой стороны, «Рифматор – стихотворений генератор» предоставляет в пользование действительно гениальный источник поздравительных стихотворений и ради него стоит раскошелиться. Ведь, когда еще вам представится возможность выразить свои мысли в стихах, просто заполнив параметры, по которым они будут написаны? Поэтому попробовать приложение определенно стоит, тем более, что загрузить его в App Store и сгенерировать свое первое творение можно совершенно бесплатно.

Можно ли устроить борьбу ботов по написанию стихотворений? Можно ли сделать из этого понятную и воспроизводимую соревновательную историю? Теперь можно точно сказать, что это возможно. А о том, как написать свой первый алгоритм по генерации стихотворений, читайте дальше.

1. КлассикAI

Задача участников

По условиям конкурса, участникам необходимо построить модель, генерирующую стихи на заданную тему в стиле одного из русских классиков. Тема и автор подаются модели на вход, а на выходе ожидается стихотворение. Полное описание есть в репозитории конкурса.

С темой условия мягкие: это может быть короткое предложение, фраза или несколько слов. Единственное ограничение — на размер: не более 1000 знаков. Темы, на которых будут тестироваться алгоритмы, будут составлены экспертами. Часть тем будет открыта и общедоступна, но для определения лучшего алгоритма будет использован скрытый набор тем.

Глобальная идея соревнования такая: к любому стихотворению можно составить краткую аннотацию из нескольких слов. Давайте покажем на примере.

«…В тот год осенняя погода
Стояла долго на дворе,
Зимы ждала, ждала природа.
Снег выпал только в январе
На третье в ночь. Проснувшись рано,
В окно увидела Татьяна
Поутру побелевший двор,
Куртины, кровли и забор,
На стеклах легкие узоры,
Деревья в зимнем серебре,
Сорок веселых на дворе
И мягко устланные горы
Зимы блистательным ковром.
Все ярко, все бело кругом. » 1823—1830

То кратко содержание его можно уместить в «Татьяна видит в окно первый снег». И тогда идеальная стихотворная модель по этому входу выдаст что-то очень близкое к оригиналу.

Для обучения в этом соревновании предлагается датасет из более чем 3000 произведений пяти известных русских поэтов:

1. Пушкин
2. Есенин
3. Маяковский
4. Блок
5. Тютчев

Алгоритм нужно написать так, чтобы он производил генерацию достаточно быстро и имел необходимый интерфейс. По скорости можно равняться на мощности средних современных ПК. Интерфейс и ограничения подробно описаны в разделе «Формат решений».

Чтобы иметь возможность отслеживать прогресс своих решений, а также сравнивать их с другими решениями участников, на протяжении соревнования будет проходить разметка решений через чат-бот. Результаты работы алгоритмов будут оцениваться по двум критериям:

  • Качество стихосложения и соответствие стилю заданного классического поэта
  • Полнота раскрытия заданной темы в стихотворении

Полученное в результате работы алгоритма стихотворение может быть отклонено по следующим причинам:

  • сгенерированный текст не является стихотворением на русском языке
  • сгенерированный текст содержит нецензурную лексику
  • сгенерированный текст содержит умышленно включенные оскорбительные фразы или подтекст

Программа соревнования

В отличие от многих, в этом соревновании только один онлайн этап: с 30.07 по 26.08.

На протяжении этого периода можно ежедневно отправлять решения со следующими ограничениями:

  • не более 200 решений за время соревнование
  • не более 2х успешных решений в день
  • не учитываются в дневном лимите решения, проверка которых завершилась с ошибкой

2. Подходы к созданию генераторов стихов

Как уже стало понятно, задача нетривиальная, но и не новая. Попробуем разобраться, как же исследователи подходили к решению это задачи раньше? Давайте посмотрим на наиболее интересные подходы к созданию генераторов стихов последних 30 лет.

В журнале Scientific American N08, 1989 выходит статья А.К. Дьюдни “Компьютер пробует свои силы в прозе и поэзии”. Не будем пересказывать статью, здесь есть ссылка на полный текст, хотим лишь обратить ваше внимание на описание POETRY GENERATOR от Розмари Уэст.

Этот генератор был полностью автоматизированным. В основе этого подхода большой словарь, фразы из которого выбираются случайным образом, и из них формируются словосочетания по набору грамматических правил. Каждая строка делится на части предложения, а далее случайно заменяется другими словами.

Более 20 лет назад выпускник известного московского вуза защитил диплом на тему «Лингвистическое моделирование и искусственный интеллект»: автор — Леонид Каганов. Вот ссылка на полный текст.
«Лингвистическое моделирование и искусственный интеллект» — так звучит
название моей темы. «Программа, которая сочиняет стихи» — так отвечаю я на
вопросы друзей. «Но ведь подобные программы уже есть?» — говорят мне. «Да — отвечаю я, — но моя отличается тем, что не использует изначальных шаблонов.»
(с) Каганов Л.А.

К 1996 году уже были написаны такие генераторы как:

«Например, в POET.EXE имеется словарь слов с проставленными ударениями и некоторой другой информацией о них, а также задается ритм и указывается какие строки рифмовать (например, 1 и 4). А все эти программы обладают одним общим свойством — они используют шаблоны и заранее подготовленные словари.»

В качестве основных преимуществ можно выделить то, что программа:

  • использует ассоциативный опыт
  • производит рифмовку самостоятельно
  • имеет возможность тематического сочинения
  • позволяет задавать любой ритм стиха

«Chinese Poetry Generation with Planning based Neural Network»

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

Если очень коротко, то это работает так (ссылка на источник картинки):

image

Generating Topical Poetry

Также в 2016 еще одна группа представила свою разработку Hafez (репозиторий тут).

Этот генератор “сочиняет” стихи на заданную тему, используя:

  • Словарь с учетом ударений
  • Слова по теме
  • Рифмующиеся слова из набора слов по теме
  • Finite-state acceptor (FSA)
  • Выбор лучшего пути через FSA, используя RNN

image


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

Напоследок хочется упомянуть об очень подробной статье на Хабре «Как научить свою нейросеть генерировать стихи». Если вы никогда не занимались подобными моделями, то вам сюда. Там про генератор стихов на нейроночках: про языковые модели, N-граммные языковые модели, про оценку языковых моделей, про то как запилить архитектуру и доработать входной и выходной слой.

Например, вот так слову добавляется морфологическая разметка (ссылка на источник картинки):

image

3. Программирование искусственного поэта

Пример простого поэтического генератора

Соревнование с одной стороны может показаться достаточно сложным, однако для него вполне можно сделать простой, но рабочий бейзлайн.

По условию, на вход этой программы поступает идентификатор автора (author_id) и текст темы (seed), в ответ на это модель должна вернуть стихотворение.

Давайте попробуем формализовать тему так, чтобы с ней можно было спокойно оперировать в рамках некоторого векторного семантического пространства. Самый простой выход из этого — получить семантический вектор каждого слова (например, Word2Vec) после чего усреднить их.
Таким образом, мы получаем своеобразный “seed2vec”, который позволяет нам переводить тему в вектор.

На самом деле здесь открывается широкая тема для исследований, т.к. задача выделения темы стоит перед учеными достаточно давно, вот только несколько примеров:

Теперь, нужно понять, как использовать author_id для генерации стихотворения именно в стилистике этого автора.

Здесь идея не менее простая: давайте возьмем случайное стихотворение автора из корпуса стихов, после чего будем заменять каждое слово на другое, которое максимально созвучно с оригиналом (имеет одинаковое количество слогов, одинаковое ударение и последние три буквы максимально схожи с оригиналом по расстоянию Левенштейна) и при этом имеет максимально схожий вектор с вектором темы. Например, для темы «Футбол» и строки «И светился как янтарь», выходной строкой может быть «А игрался как вратарь». Таким образом, мы получаем своеобразную стилизацию текста.

В качестве базы слов для замены был использован датасет, который содержит небольшие параграфы текстов из Википедии (описание его использования можно найти в коде бейзлайна на GitHub).

После такой обработки получатся тексты, которые внешне будут напоминать стихи автора, но при этом содержать некоторую тему, которую автор не закладывал.

Результат работы бейзлайна:

приведут и висмут единицы
буйвол древних нелинейных сред
я в доске кельвину на частице
свой явлений свой научный вслед
фарадей севилье тараканья
свой тверской теперь изобретшим
среда фонон грань тяготения
позитронный призрак школьный дым

как кружке лейбницу среди идей
кривым и школьным обучаться
но стадо стадо в творчество учиться
кривая для примеры мозг детей
кривые взят пловец знает из гоба
и в планк пройдет и в суд пройдет в сенат
чем дочь колее тем древнее гоба
и сурья исчезающе терпят
пловец весь тень учится над евклидом
заглавие издается и квот
осваивает он скрепляя трудом
профессору учебный анекдот

Очевидно, что бейзлайн не идеален, на то он и бейзлайн.

Можно легко добавить несколько фичей, которые помогут неплохо улучшить генерацию и поднять вас в топе:

  • Нужно убрать повторяющиеся слова, ведь рифмовать слово на само себя не здорово для хорошего поэта
  • Сейчас слова никак не согласованы друг с другом, т.к. мы никак не используем информацию о частях речи и падежей слов
  • Можно использовать более богатый корпус слов, например, дамп википедии
  • Использование других эмбенднгов может так же улучшить, например, FastText работает не на уровне слов, а на уровне n-грамм, что позволяет ему делать эмбендинги для неизвестных слов
  • Использовать IDF в качестве веса при взвешивании слов для расчета вектора темы

Подготовка решения к отправке

Решения запускаются в изолированном окружении при помощи Docker, время и ресурсы для тестирования ограничены. Решение должно отвечать следующим техническим требованиям:


На запрос необходимо ответить кодом 200 OK в случае, если решение готово к работе. Любой другой код означает, что решение еще не готово. У алгоритма есть ограниченное время на подготовку к работе, за которое можно прочитать данные с диска, создать в оперативной памяти необходимые структуры данных.


Запрос на генерацию стихотворения. Идентификатор поэта, в стиле которого необходимо сочинить, указан в URL. Содержимое запроса — JSON с единственным полем seed, содержащим тему сочинения:


В качестве ответа необходимо в отведенное время дать JSON со сгенерированным сочинением в поле poem:


Запрос и ответ должны иметь Content-Type: application/json. Рекомендуется использовать кодировку UTF-8.

Контейнер с решением запускается в следующих условиях:

Сгенерированное стихотворение (poem) должно удовлетворять формату:

— размер стиха — от 3 до 8 строк
— каждая строка содержит не более 120 символов
— строки разделяются символом \n
— пустые строки игнорируются

Тема сочинения (seed) по длине не превышает 1000 символов.

При тестировании используются стили только 5 перечисленных выше избранных поэтов.

Подробная информация по отправке решения в систему с разбором наиболее частых ошибок доступна здесь.

Писателем ты можешь и не быть, а вот поэтом быть обязан!

В наши дни существует огромное количество программ для выполнения различных задач. Среди них имеются и те, что не решают задачу полностью, но значительно облегчают процесс. Это относится прежде всего к тем областям, где нет чётких критериев формулирования задачи. Написание стихотворений - яркий пример такой задачи.

А программа Стихотворец - скорее помощник для создания стихотворений, а не автомат, в котором достаточно нажать кнопку и сразу получить результат.


О программе

Целевая аудитория

Основные возможности

  • Чтение текстовых файлов.
  • Копирование строк и текста.
  • Построение схемы стихотворения.
  • Использование схемы стихотворения для формирования поисковых запросов в базе данных.
  • Уточнение поисковых запросов путём указания начальных и конечных слов в искомой строке.
  • Ранжирование найденных строк путём использования ключевых слов.
  • Перенос удачных найденных строк в итоговое стихотворение.
  • Нахождение синонимов для выделенного слова.
  • Нахождение антонимов для выделенного слова.
  • Нахождение паронимов для выделенного слова.
  • Нахождение похожих по звучанию слов для выделенного слова.

Отличия от других продуктов

  • Для создания нового стихотворения нужен некий прообраз, звучание и ритм которого будут использованы.
  • Программа строит список фраз, а пользователь сам выбирает понравившиеся.


Возможные проблемы

  • Возможна медленное выполнение запросов если в компьютере установлено мало оперативной памяти.


Установка


Удаление

  • Для удаления программы достаточно просто удалить папку с её файлами.
  • Программа ничего не пишет в реестр Windows, поэтому деинсталяция и очистка реестра не нужны.
  • Перед удалением не забудьте сохранить нужные Вам файлы!
ПараметрМинимумРекомендуется

Операционная система
Windows 7/8/8.1/10 64-разряднаяWindows 10 64-разрядная

Разрешение монитора
1366x768 или выше1920x1080

ОЗУ
4 ГБ8 ГБ

Процессор
Двухядерный с тактовой частотой от 2 ГГцЧетырёхядерный с тактовой частотой от 3 ГГц

HDD
15 МБ свободно пространства для программы, 3 ГБ свободно пространства для базы данных Words201915 МБ свободно пространства для программы, 3 ГБ свободно пространства для базы данных Words2019

Мышь
Любая трёхкнопочнаяЛюбая трёхкнопочная

Версия 1.1

Добавлена возможность поиска по таблице стихотворений. Поиск в этом получается очень быстрым, но количество совпадений невелико.

Читайте также: