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

Пару месяцев назад компания Meanotek попробовала сделать ИИ-помощника для писательства и написать рассказ с ним в соавторстве. Спойлер — успеха он не добился. Создатели проекта рассказали нам, в чем была идея и как она воплощена. А мы попытались разобраться, почему из машин поэты выходят лучше, чем прозаики.

Я понимаю, что ты не понимаешь, что мы ничего не понимаем


Летом этого года фонд «Система» проводил конкурс научно-фантастических рассказов «Будущее время». Участникам задали тему — «бессмертие», а победителю пообещали солидный куш в полмиллиона рублей. Организаторам прислали тысячи рассказов, среди которых один был написан с помощью искусственного интеллекта.


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

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

В системе использовалась библиотека собственной разработки, которая, в свою очередь, использует Pytorch. Диалоги составлял ранее разработанный чат-бот, для заголовков и описаний — очень большая рекуррентная сеть, обученная на текстах, загруженных с lib.ru.

  • Денис Тарасов (Durham), исполнительный директор Meanotek.

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

  • Денис Тарасов (Durham), исполнительный директор Meanotek.

В итоговом тексте трудно определить количество машинного и человеческого текста. Как говорит Денис, есть абзацы, где одно предложение сочинил человек, а второе — алгоритм. «Ряда эпизодов просто не было бы в рассказе без ИИ-заголовков и «затравок». И вообще, стилистика ИИ-фрагментов оказала влияние на стиль, в котором писал человек».

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



Тем не менее, добиться успеха японских коллег не удалось. Рассказ не попал даже в лонг-лист. Член жюри Николай В. Кононов написал о «Лягушке» так:
Слишком заметна рука редактора — и вообще, человеческая рука. Разработчики бота в соавторстве с алгоритмом написали рассказ, вряд ли способный вызвать неприятие у читателей фантастики. В этом смысле эксперимент удался.

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

Но вы не сможете понять, что вы собираетесь выполнить проблему, которая позволит вам придумать что-нибудь


Когда впервые придумали слово «Робот», оно уже использовалось в контексте философского вопроса «справедливо ли не считать искусственных людей за людей». Речь идет о пьесе Карела Чапека R.U.R. Любое слово — это еще и мысль, и смысл, и контекст, стоящий за ним. По-хорошему, писатель находит сначала идеи и смыслы, а потом подбирает под них буквы.

Все-таки слова сами по себе — не больше чем чернильные или пиксельные закорючки на белом фоне.



Большая проблема машинных текстов в том, что процесс идет наоборот. Система подбирает некий маленький набор слов из большего набора, а человек — читая — пытается найти в них смысл, и перебирает эти наборы, пока смысл на его взгляд не найдется.
Пока что компьютеры довольно неплохо научились писать стихи. В этом можно убедиться на сайте botpoet.com, где есть тест, наглядно показывающий, что отличить «человеческого» поэта от компьютера сложно. Но в стихах очень многие логические связи додумывает читатель. В прозе (особенно в сюжетной) обычно больше проговаривается, и компьютер с этим пока справляется плохо. Часто обучают нейронные сети на массиве произведений того или иного автора, но они умеют выдавать только внешне похожий текст, то есть имитируют стиль, но не создают новый сюжет.

  • Александр Пиперски (apiperski), лингвист.


Сотрудники Яндекса создали нейросеть, которую обучили на массиве русской поэзии, а затем скормили тексты «Гражданской обороны» и выдали стихи в стиле Егора Летова. По ним же записали музыкальный альбом «404» и назвали группу «Нейронная оборона»

Как формально устроены сюжеты — давняя тема для исследований. До эпохи расцвета IT исследователи вручную перебирали тысячи текстов в поисках общих паттернов. Один из самых известных примеров, книга Джозефа Кэмпбелла «Герой с тысячей лиц». Это попытка вывести общую структуру, последовательность ситуаций, которая в более-менее похожем виде присутствует в мифах большинства народов. Над похожей задачей работал Владимир Пропп. В книге «Морфология волшебной сказки» он постарался описать общие составные части фольклорных историй.

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

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

  • Александр Пиперски (apiperski), лингвист.

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

В прошлом году вышла книга «Код бестселлера», где сценаристы Джоди Арчер и Метью Джокерс попытались описать общие черты успешных книг. Они скормили тексты книг некой компьютерной системе построенной на машинном обучении (какой именно, тем не менее, не описали), сопоставили их с коммерческим успехом и назвали паттерны, которые могли этому успеху способствовать — темы, сеттинги, характеристики героев и последовательности в изменении их состояния.
Вывести тему несложно: для этого есть алгоритмы выделения ключевых слов, которые строят частотный словарь и смотрят, какие слова встречаются заметно чаще, чем в среднем в языке. Правда, для того, чтобы научиться преобразовывать ключевые слова в темы, надо ещё постараться: например, если мы знаем, что в тексте с необычно высокой частотой встречаются слова «поцеловать», «нежный», «ночь» и «сирень», надо построить алгоритм, который сведет эти слова к теме «любовь». Или можно заранее разбить тексты на классы по темам («любовь», «приключения») и тогда решать задачу классификации нового текста — как это делается, например, в агрегаторах новостей, где надо понять, относится ли текст к экономике, политике и т. п. В общем, эта задача выглядит вполне решаемой.

Характеристики героев тоже анализируются неплохо. Этим много занимаются Digital Humanities, которые часто обращается к цифровым исследованиям литературы. Например, классик этой области Франко Моретти автоматически построил, а затем проанализировал сеть связей между персонажами Гамлета. На русском материале этим занимается, например, группа Франка Фишера в Высшей школе экономики, которая составила корпус русской драмы RusDraCor.

  • Александр Пиперски (apiperski), лингвист.


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

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

  • Денис Тарасов (Durham), исполнительный директор Meanotek.

Нужно ли делать то, что вы собираетесь не знать?


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

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


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

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

Отсюда и наше направление в эксперименте — это попытка совмещения ИИ и человека.

  • Денис Тарасов (Durham), исполнительный директор Meanotek.

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

Комментарии (9)


  1. melchermax
    19.11.2018 18:45

    Нейронная оборона, говорите? Это так же похоже на Летова, как Ласковый Май на Зыкову.


    1. baragol
      19.11.2018 19:13

      Да, аллюзий, которые любил Егор, тут нет и в помине, но ведь забавно. Why so serious?


      1. melchermax
        20.11.2018 00:48

        Ни разу я не serious. Потому как, чтобы разочароваться, нужно сначала очароваться, а у нас для этого предпосылок нет. Там комп собрал какие-то групповые лексические штампы и рифмы по типу ботинки-полуботинки… Скучно. Лучше бы они, в самом деле, на кошках киркоровых всяких потренировались, авось смешнее вышло бы.


        1. baragol
          20.11.2018 12:56

          А что для вас не скучно? Без сарказма. Мне интересно, правда.


  1. Alexey2005
    20.11.2018 14:25
    +1

    Все генераторы текста можно разделить на три большие группы.
    1. Бредогенераторы. Всё то, что основано на цепях Маркова, байесовских генераторах, нейросетях. Такие системы сперва обучают на больших объёмах текста, а потом они генерируют текстоподобный бред.
    Хотя подобные алгоритмы выдают неплохие результаты при генерации изображений, но с текстами работают из рук вон плохо, потому что природная межушная нейросеть для генерации приличных текстов использует мощную библиотеку ассоциаций, сконструированную и натренированную отнюдь не на текстах. Генерировать текст, используя только лишь инфу, «вытащенную» из обучающих текстов, это всё равно что пытаться запустить IL-байткод без .NET-фреймворка и даже без винды. Результат будет заведомым отстоем в стиле «Яндекс-рефератов».
    2. Логогенераторы. Суть в том, что создаётся некая «песочница», куда помещается набор объектов и персонажей. Для всего этого прописаны правила взаимодействия, подключены модули ИИ, сильно напоминающего игровой, который двигает героев к поставленным квестовым целям. По ходу игроподобного процесса, происходящего в песочнице, генерируется лог:

    Герой сделал шаг левой ногой
    Герой сделал шаг правой ногой
    Герой размахнулся
    Меч набрал скорость
    Меч затормозился о череп гоблина
    Меч пересёкся с мозгами гоблина
    Скорость меча уменьшилась на 60%
    Получено достижение: мозги набекрень
    Зафиксирован разлёт фрагментов мозга гоблина
    Гоблин получил 100 единиц урону
    ХП гоблина иссякает
    Учёт инерции меча…
    который уже дальше «раскрашивается» и разворачивается в нечто, напоминающее литературный текст. На выходе могут получаться вполне приличные экшн-сцены.
    Основная проблема в том, что такие генераторы довольно хреново генерируют эмоциональную составляющую текста, а ведь это в литературе как раз самое важное. Вот так читаешь творение такого алгоритма, и прямо видишь, что это причёсанный игровой лог, который сгодится разве только для новомодного жанра литРПГ, и то лишь в качестве одного из компонентов.
    3. Шаблонизаторы. Наиболее старая, но всё ещё самая эффективная система, когда текст собирается из множества заранее заготовленных кусочков-шаблонов. Шаблоны могут быть параметризуемыми, могут в свою очередь состоять из подшаблонов и т.д.
    В принципе, шаблонизатор может выдавать текст, не отличимый от «человеческого», однако затраты на создание такого шаблонизатора гораздо выше, чем на непосредственное написание. Ну и те тексты, что он генерирует, будут содержать достаточно повторов, чтобы это бросалось в глаза уже после 10 текстов.


    1. Durham
      20.11.2018 16:55
      +1

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

      И про нейронные сети вы не совсем правы.

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

      Но очень большие модели порождают предложения в которых есть смысл:
      «With even more new technologies coming onto the market quickly during the past three years, an increasing number of companies now must tackle the ever-changing environmental challenges online»
      «We are aware of written instructions from the copyright holder not to, in any way, mention Rosenberg ’s negative comments if they are relevant as indicated in the documents, ” eBay said in a statement „
      (примеры из Jozefowicz R. et al. Exploring the limits of language modeling //arXiv preprint arXiv:1602.02410. – 2016.)

      Применительно к литературе. Вот такой фрагмент нейросеть средних размеров реально генерирует:

      “ — Простите, он смог бы подождать. Но в этом нет никакого смысла. Вы понимаете?, — спросил он.
      — Да, сэр. Я только не могу понять, что он не может причинить вред человеку.»

      Тут есть осмысленный фрагмент диалога, где понятно, что первый человек спрашивает, а второй отвечает, при этом второй, кто отвечает, отвечает в тему (видна схема: «вы понимаете? Да, но не совсем..»). Если взять только такие фрагменты, то по ним очень трудно сказать, имеем ли мы текст нейросети, либо фрагмент, написанный человеком.

      Далее, существуют генератории историй на базе картинок (например, github.com/ryankiros/neural-storyteller, pdfs.semanticscholar.org/0f46/776b6a75c4088e4d5412b7bfdb29f7f777ef.pdf) которые не ограничены «библиотекой, натренированной на текстах». И качество текста тоже довольно высокое (см. пример по ссылке).


      1. Diordna
        20.11.2018 17:25

        Вот такой фрагмент нейросеть средних размеров реально генерирует:


        Любопытсво одолело, какой объем на винте занимает «средняя НС»?


        1. Durham
          20.11.2018 19:03

          Вовсе не много, примерно 66MB, если не считать векторные представления слов за размер нейросети. Если считать, то где-то гигабайт получится может


  1. Caseor
    20.11.2018 21:24

    Удалены повторы из фраз типа «я понимаю, что ты не понимаешь, что мы ничего не понимаем»
    Мне сначала показалось, что тут есть повтор. Фразу «что ты не понимаешь» можно убрать, т.к. она поглощается следующим утверждением, но потом я понял, что тут нет повтора.
    Назову говорящего Первым, того к кому он обращается — Вторым.
    Второй находится в заблуждении. Первый вкурсе факта нахождения Второго в заблуждении. Заблуждение Второго заключается в том, что он считает, что кто-то из них информирован, например, по поводу какой-то ситуации.
    Если выкинуть первые два утверждения, тогда мы не будем понимать зачем Первый вообще это произносит. Мы не знаем о заблуждении Второго.