Блог Игоря Шевченко

Дыхание ветра

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

Года два назад я копался в контркультурных книжках. Ну, вы знаете, такие с оранжевыми обложками. Там я нашел русский перевод романа Кэндзи Сиратори. Сиратори — нойзовый музыкант, который пишет (по крайней мере, раньше писал) больше сотни альбомов в год. В романе «Кровь электрическая» он использовал тот же подход, что и в музыке. Выглядит текст так:

Кровь электрическая

В предисловии переводчик объясняет, в чем дело:

Текст Сиратори является жестоким миксом четырёх языков: английского, латыни, японского и C++.

Действительно, микс получился довольно жестоким, и в тексте кровь, кишки, хаос и шум вместо нормальной, структурированной программы на правильном С++. Даже на перл не очень похоже.

Дальше переводчик рассказывает о значении элементов С++, использованных Сиратори:

// – конец блока

/ – разделитель уровней (мой дом/моя квартира/ моя комната) + – сложение

++ – постфиксное приращение (брить++себя – бриться)

‹‹ или ‹‹= – сдвиг влево

›› или ››= – сдвиг вправо

! – логическое отрицание

!= – не равно

== – равно

= – присвоение (витал=сыворотка – витал стал сывороткой)

:: – разрешение области действия

Это значит, что даже семантика операторов здесь отличается от настоящей. Например, постфиксное приращение стало уже не унарной, а бинарной операцией (да и постфиксным оно перестало быть, раз записывается между операндов). Что должен делать в программе разделитель уровней я вообще не понял.

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

Оказалось, что думают примерно одно и то же: ужас, кошмар, автора надо отправить на лечение, да и переводчика теперь тоже стоило бы; но были и те, кто смог осилить книгу до конца. Они даже рассказывали свои интерпретации сюжета. Например, менее убедительная версия состоит в том, что текст о киборге, который борется с какой-то корпорацией (там и название ее было, но я не помню).

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

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

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

LDA

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

Но на тот момент задача была другой. Я достал свой скрипт, который называется Соня Котлованова. Он был написан, чтобы генерировать тексты с помощью цепей Маркова, в частности, вопросы для ЧГК и твиты для твитера. В этот раз я обучил его на извлеченном из пабликов корпусе и на некоторых настоящих программах на C++. Соня Котлованова сгенерировала мне текст под названием «Дыхание ветра».

Отрывок из него:

осадок всё равно твоя жизнь полна любви <начинали эти отношения, возмущенное лицо, расстается без слез>

надеждами и глазами(партнером ради единственного поцелуя, валяться с кем приятно,

    одиночку шоколадку, утробе кричало дитя, скучает по тебе скучали) {

    образ является реальной силой(встречайте счастье и любовь где, освобождает дорогу кому);

    бросились в их животах образуется целое кладбище из упавших на дно(пожелайти удачи, влюбились ещё в таком удовольствии);

    непроизвольно исказилось(

        хитрые и коварные врачи спрашивают<вумя рукм>::ок будет,

        исполняют женских желаний<представляют каким должно быть столько одежды>::сходящих друг от друга и его считают юным агрессором);

    комбинезоне жарко(бутылкою в руках удержать, лебединую верность,

        лез в вашу секту<пятнадцати минут>::поддавайся а предали,

        думают что у девушки мозга<свадьба или кольцо>::производят на окружающих столь ошеломительного впечатления);

    позвонила сказать (вставать не хотела этих концертов != любящий мужчина найдет в каждом часу && смесью из равных частей оливкового масла и рома != спичечных коробках)

    закалённый характер (граффити нарисую(название фильма, распускается во всей этой боли тебя вернут в день свадьбы))

    тогда кричишь;

    нечеловеческие способности(бороды хотабыча(тренировочных базах, радовали нас))

    ++выгодно вдвойне;

    далёком прошлом

    ++разобравшись с тем мужчиной, ++сильному уступят дорогу;

    животными и людьми является то == девичьи привычки;

}

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

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

Только плюсы правильные. И про любовь.

22 января 2013 02:46

Оставить комментарий