Синтез сказки по Проппу

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

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

Вот пример работы такого генератора (Proppian Fairy Tale Generator):

I left the house the day when mother the glutton ravished the last bean sprouts and apples left in the garden. With no food left to eat and no responsible adult left to care I sought a cure for either problem, promising mother to return as soon as a remedy was procured.

Under my feet I felt the rhythm of aches and sighs breathe with each step I took. I felt like I was walking on quicksand. And indeed, when I tried to move my feet I could not feel my toes but only the inability to move them on the surface of palpable danger. When I turned to ask for his help he only laughed. Then I began to think it was he who was making my feet turn to stone.

While I stood and shook I prayed for the knowledge to come and fill that part of my head that knew and understood nothing of this world.

The little man handed what looked like a small wooden piccolo. The small, thin object looked old but not dusty like the man’s worn garments. «A single note from this musical stick will bring rain from the heavens to satisfy this thirsty land," the little man said to me. «But heed my words, should you be tempted to produce sweet melodies to entertain yourself and those around you, mother nature will heighten the aching of the earth around you: the sky will heave torrents of rain producing a monsoon that will be echoed by the quaking of the earth as it splits, spewing forth fiery magma that will consume you and your vanity.

With no one to block me from my path I continued to follow my needle to the topmost peak of the mountain. There lay the lady of white hair and dragon scales bleeding with a wolf-girl licking her wounds. I reached inside her cut to take the strength she possessed in her creature form.

When I reached a house I knocked to ask for a cup of water to cool my senses. The lady, upon seeing my shoes, let me in.

«My son!» Mother cried out to me.

A girl with snow white hair came to the house later that day, looking for the man with the leather-bottomed shoes and coat of dragon scales. She told me she was betrothed to that man who had taken her creature form and made her human. She reminded me of the mountain. She was beautiful.

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

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

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

  1. Предложение состоит из одного и более членов предложения.
  2. Член предложения это подлежащее, сказуемое или один из второстепенных членов предложения.
  3. Второстепенный член предложения это определение, обстоятельство или дополнение.
  4. Подлежащее это любое из частей речи.
  5. Часть речи это существительное, местоимение, имя числительное, неразложимое словосочетание и т. д.

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

После публикации книги Хомски в 1957 году порождающие грамматики стали применять в самых различных областях: лингвистике, информатике и многих других. В частности, в 1975 Дэвид Румельхарт предложил грамматику повествования (story grammar), описывающую структуру обобщенного повествования так же, как порождающая грамматика естественных языков описывает структуру предложения.

Грамматика истории в изложении Румельхарта выглядит очень похоже на грамматику предложений естественного языка:

  1. История это введение и эпизод.
  2. Введение это одно и более описание состояния.
  3. Эпизод это событие и реакция.
  4. Событие это эпизод или изменение состояния или действие или одно и более событие.
  5. Реакция это духовное изменение или вещественное изменение.

И так далее, вплоть до отдельных предложений.

Практически одновременно с Румельхартом другой американский исследователь, Георг Лаков (George Lakoff), предолжил грамматику уже прямо основывающуюся на работе Проппа, и описывающую, каким образом можно формировать сюжеты в терминах функций Проппа.

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

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

Вот хороший пример работы генератора сказок Gester, разработанного в середине 80-х Лином Пембертоном (Lyn Pemberton) и использующего грамматику французского средневекового эпоса:

Charles lacked a city.

Charles lacked a wife.

As a result of hearing of Narbonne Charles wanted Narbonne.

Then Aymeri agreed to help Charles.

Then Charles and Aymeri rode to Narbonne.

Then Charles was ready to try to obtain Narbonne.

Thibaut and Clarion threw burning pitch down on Charles and Aymeri.

Charles and Aymeri retreated.

Then, Charles attacked the walls of Narbonne, currently controlled by Baufumez, helped by Aymeri.

Thibaut and Clarion threw stones down on Charles and Aymeri.

Charles and Aymeri retreated.

Then, Charles attacked the walls of Narbonne, currently controlled by Baufumez, helped by Aymeri.

Thibaut and Clarion threw stones down on Charles and Aymeri.

Charles and Aymeri broke into Narbonne.

As a result of seeing Blancheflor Charles wanted Blancheflor.

Charles succeeded in getting Narbonne.

Charles praised God.

Charles forgot to reward Aymeri.

Charles threw Thibaut into prison.

Then as a result of getting Narbonne Charles no longer lacked a city.

Then Charles planned to obtain Blancheflor for Charles.

Then Aymeri refused to help Charles because he was not rewarded.

Then Bertrand agreed to help Charles.

Charles abducted Blancheflor, currently controlled by Thibaut helped by Bertrand.

Because Thibaut was in prison he did not oppose Charles and Bertrand.

Clarion opposed Charles and Bertrand in getting Blancheflor.

Charles succeeded in getting Blancheflor.

Charles praised God.

Charles rewarded Bertrand.

Then as a result of getting Blancheflor Charles no longer lacked a wife.

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

Самым современным подходом можно считать прецедентный вывод (case-based reasoning), в котором сюжет формируется с использованием базы примеров предыдущих сюжетов.

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

Например, современная система jBard испанца Федерико Пейнадо (Federico Peinado) хранит примеры сюжетов в терминах функций Проппа, модифицирует их и потом излагает в простых шаблонах:

The Princess and the Lioness

Once upon a time… there was a princess.

The princess said not to go outside.

The princess went outside.

The princess heard about the lioness.

The lioness scared the princess.

The lioness kidnapped the princess.

The knight departured.

The knight and the lioness fought.

The knight won the fight.

The knight solved the problem of the princess.

The knight returned.

A big treasure to the knight.

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

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

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

Комментарии

Comments powered by Disqus