Новости и события » Спорт » Как работает «Яндекс.Автопоэт»

Как работает «Яндекс.Автопоэт»

Как работает «Яндекс.Автопоэт»

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

Несколько лет назад я шутки ради сделал «Автопоэта». Когда я говорю «я сделал "Автопоэта"», надо понимать, что в этом процессе участвовало много разных прекрасных людей. В первую очередь, это Юра Зеленков, наш лингвист, чьи эвристики я использовал для построения фонетической транскрипции. Были и другие соучастники, например, в работе с нейронными сетями мне помогал Илья Едренкин, наш специалист по голосовым технологями. Но дальше я для простоты буду рассказывать от собственного имени.

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

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

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

Смысл

Хорошая для человечества новость - в том, что качественная генерация невырожденных «смыслов» (например, сюжетов, сценариев или нарративов) пока остается уделом человека. Сейчас в мире идет напряженная научно-техническая работа в области задач «понимания» текста машиной. Уже есть весьма значительные успехи - например, машинный перевод, - но пока что понимать текст (или, скажем, отвечать на вопросы по тексту) человеку по-прежнему удается лучше, чем компьютеру (в отличие, скажем, от игры в го или классификации изображений).

Поэтому сегодня я не буду говорить про формирование смысла, но зато покажу несколько приемов - они позволяют автоматически генерировать тексты, которые могут создавать у читателя ложное ощущение осмысленности. С другой стороны, почему ложное? В нашей системе из субъекта-текста и объекта-читателя ощутить смысл может только читатель - поэтому всякий смысл, который он ощущает, одинаково настоящий.

Структура

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

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

Поисковые запросы

В силу специфики своей работы я довольно много изучал поток поисковых запросов к «Яндексу» - естественно, обезличенный, без привязки к конкретным пользователям. В день люди задают «Яндексу» примерно триста миллионов запросов, и около половины из них - уникальные, то есть не повторяющие друг друга.

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

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

  • [что повесить в квартире чтобы выйти замуж],
  • [тададададам хоккей мелодия],
  • [порно для нокии 320х240],
  • [красные трусы на люстре к любви отзывы],
  • [я так и думала что это ЧМ мы не выиграем].

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

[что подарить девочке на восьмое марта недорого я еще в школе учусь], [что делать если тебе 11 а ей 13].

Структурные эксперименты

За неделю поиск обрабатывает пару миллиардов запросов. Среди них можно найти строки в каком угодно размере: хорее, ямбе и так далее. Самые первые «стихи», которые сгенерировал Автопоэт, были белыми - я поставил фильтрацию с учетом стихотворного размера, но не требовал наличия рифмы:

пословицы-камертоны

посмертные медальоны

улыбчивый меланхолик

символика президента.


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

купить в москве ботинки

хочу к тебе картинки

игра плохие свинки

смотреть кино новинки.


На этом этапе я выложил «Автопоэта» во внутреннюю соцсеть «Яндекса». Посыпались идеи: давайте научим его генерировать хокку, порошки, пирожки, депрессяшки. Результаты этих наших экспериментов можно найти на yandex.ru/autopoet.

Эксперименты с материалом

Внезапный интерес к «Автопоэту» со стороны публики побудил нас продолжить эксперименты с разными подходами и массивами текстов. Коллеги из различных сервисов «Яндекса» приносили нам свои текстовые данные, чтобы мы их зарифмовали. Так, например, появилась рифмовка названий остановок из базы приложения «Яндекс.Транспорт»:

молодежный центр россия

комбинат стройиндустрия

академия футбола

старый рынок автошкола.


Мы воспроизвели и классическую шутку с рифмовкой числительных:

905 13 16

850 60

5 700 819

18 650.


В этом году на 1 апреля мы опубликовали стихи из заголовков российских новостей. Были и внутренние эксперименты - например, стихи на базе англоязычных поисковых запросов, а также перерифмовка строк известных поэтов (лимерики из Бродского и прочее). Так или иначе, со структурной составляющей практически все вопросы уже закрыты.

Стиль

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

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

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

Как это работает? Крайне упрощая, можно сказать, что некоторая математическая модель (нейросеть) была обучена воспроизводить стиль некоторого художника. Здесь очень важно, что она не сделана для подражания конкретному художнику, а именно обучена.

Мы берем эту модель и показываем ей много картин Мондриана - и она сама начинает копировать его стиль. Если мы возьмем ту же сеть и будем показывать ей Мунка, то она научится подражать Мунку. Нам не требуется объяснять, в чем состоит специфика стиля того или иного художника, чем Мунк отличается от Мондриана. Мы просто показываем нейросети разные картины, пока она сама не ухватит суть.

Этот же подход можно применить и к текстам. Примерно месяц назад специально под эту задачу мы собрали нейросеть, научили ее строить фонетику и заставили «прочитать» очень много русской поэзии. Это длительный процесс - сеть обучается десятки дней. Затем, когда обучение закончено, можно запрашивать у нее случайные тексты в стилистике заданного автора. Вот несколько примеров:

но уж заря зажглась и вмиг горит

ее заря по прежнему дымится

на плитах в море над ручьем луна

на своде вод но скоро уж никто

в прохладе хладной рощи и ограды

в их зрящих рощах не пленит

все только чуткой радости на лоне * * * на мне

на всех

что так сквозь сон

все ближе и мне

ни разу не скажу

не видно где откуда же тоска

что я умру в ночи

теперь с утра хоть * * * на палубе в полях где ни шиша

на каменном пиру как будто в сене

я ехал по дорожке через гладь

с огромной челюстью из горла споря

вода горит дотла без суеты

зато как ни на миг ни на войну

там для игры и в этом виноваты

в большом отеле у других домов

от вечной женщины навек явился

в пустой залив как будто на крыльцо

и будто все он тронул эту землю

здесь было только две земли во сне


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

Структура и стиль

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

и взор смущенный уж нежданный

ее призывный приговор

все чувства ваши постоянный

мой холоден певец и вор нет ты не знаешь ты не спросишь

но он душою обуян

ты не прочтешь и ты не бросишь

густой порой лежит фонтан с кем мы с тобою потеряли

где нивы липы обвились

и плачем мы о них страдали

на западе огни зажглись стоял великий дерзновенный

как лебедь в поле утомленный


Достаточно ли для произведения искусства соблюдения стиля и структуры? Для музыки - кажется, что достаточно. А для текста?

Бок о бок

Как показывает наш эксперимент, поэтам пока рано всерьез переживать за профессию, а компьютерным специалистам есть над чем работать. Сейчас автоматическим текстам не хватает сквозной структуры, семантики - но их образность уже достаточно высокая для того, чтобы по мере чтения можно было попытаться самостоятельно придумать какой-то смысл, даже если его нет. А теперь представьте, что через год-другой появится «Prisma для текстов», и любой школьник, написав несколько предложений, сможет нажатием на пару кнопок обработать их «под Чехова» или «под Лермонтова».

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

Можно ли будет считать, что человек - автор картины или произведения, если его участие сводится к нажатию на несколько кнопок, а остальное делает алгоритм? В любом случае, мне кажется, эти споры - лишь терминологические. Для меня проекты в духе «Автопоэта» - это не искусство, а возможность исследования того, как люди, то есть читатели, взаимодействуют с текстами, и как тексты при этом воздействуют на людей. Я думаю, в ближайшие годы в этом направлении будет происходить еще много интересного.

Как работает «Яндекс.Автопоэт»

Как работает «Яндекс.Автопоэт»


Мартинш не уйдет в Реал или Барселону зимой

Мартинш не уйдет в Реал или Барселону зимой

Полузащитник Спортинга Желсон Мартинш попал на радары топ-клубам Ла Лиги, но не уйдет в январе. Представитель 21-летнего вингера Улиссес Сантос заявил, что ни один из клубов не делал официального запроса по его клиенту. "В клуб не приходили подробнее ...

загрузка...

 

Вверх