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

0   20   0

Информатика
20 июля 14:39


578f62e35f1be72d74513a77

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

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

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

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

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

Смысл

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

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

Структура

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

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

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

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

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

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

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

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

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

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

пословицы-камертоны
посмертные медальоны
улыбчивый меланхолик
символика президента.

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

купить в москве ботинки
хочу к тебе картинки
игра плохие свинки
смотреть кино новинки.

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


Читать далее


Автор: Филипп Концаренко

Источник: VC


0



Для лиц старше 18 лет