Что меня носит по свету транзитом?

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

Не могу точно сказать, был ли Андрей Вознесенский в Мексике когда-либо, но допускаю, что он заехал туда в один из своих визитов в США. Во всяком случае, в 1981 году поэт опубликовал в Москве стихотворение "Мехико-Сити", наполненное яркими метафорами и контрастами. От прочтения этого произведения складывается ощущение, что мегаполис поэта действительно поразил и вызвал у него бурю поэтических эмоций.

Любопытно, что Вознесенский в советское время был одним из немногих "выездных" поэтов, много путешествовал и собирал большие залы на своих выступлениях. Его чтения шли на русском языке с переводом. Переводчик, конечно, не мог передать эмоциональный заряд стихов Вознесенского. Но с этой задачей хорошо справлялся сам поэт. Он, хотя и читал по-русски, превращал свои выступления в настоящее шоу – читал с экспрессией, выражением, чеканя ритм, интонируя, размахивал руками и вообще был очень артистичен. Говорят, его чтения в США собирали полные залы.

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

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

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

Для работы буду использовать pymorphy3, морфологический анализатор для русского языка, чтобы снизить слова к начальной форме. Так же использую stanza, мощную NLP-библиотеку от Stanford для анализа части речи и зависимостей между словами. Применю библиотеку textblob для анализа тональности текста, Matplotlib для визуализации данных.

В этом эксперименте интересной задачей оказался анализ рифм. Поэт рифмует здесь строки не столько по ударениям, сколько по окончаниям, применяет аллитерации. Поэтому буду выявлять рифмы по совпадению окончаний слов в парных строках. Применю SequenceMatcher для сравнения обратных строк, потому что рифма определяется по звучанию в конце слова. И оценю рифмы от 0 до 1 по степень схожести (1 = полное совпадение).

ines = poem.strip().split(\n)

num_lines = len(lines)

print(f"Число строк: {num_lines}")

print("Рифмы последних слов:")

from difflib import SequenceMatcher

def get_last_word(line):

    return line.split()[-1].strip(.,!?).lower()

for i in range(0, num_lines - 1, 2):

    if i+1 >= num_lines:

        break

    w1 = get_last_word(lines[i])

    w2 = get_last_word(lines[i+1])

Что получилось:

корыто – покрыто 0.77 сильная рифма

сито – сыто 0.75 почти идеально

алфавиты – сито 0.33 слабая рифма

защита – аппетиты 0.43 средняя схожесть

корыто – покрыто: 0.77

смога – эпоху: 0.20

алфавиты – сито: 0.33

карменсита: – сыто: 0.25

заносимый – апельсинами: 0.40

транзитом – сыто: 0.31

защита – аппетиты: 0.43

сито – сыто: 0.75

сыто – кролем: 0.20

полуночница – дыша: 0.13

позвоночника – душа: 0.12

Посчитаю частотные слова.

morph = pymorphy3.MorphAnalyzer()

words = re.findall(r\b\w+\b, poem.lower())

lemmas = [morph.parse(w)[0].normal_form for w in words]

freq = Counter(lemmas)

top_words = freq.most_common(20)

Что получилось:

(сито, 4), (как, 4), (ты, 4), (не, 4), (сыто, 4),

(сердце, 3), (от, 3), (по, 3)

Выявлю ключевые слова с использованием stanza

stanza.download(ru)

nlp = stanza.Pipeline(ru)

doc = nlp(poem)

keywords = []

for sentence in doc.sentences:

    for word in sentence.words:

        if word.upos in [NOUN, VERB, ADJ]:

            keywords.append(word.lemma)

keyword_freq = Counter(keywords).most_common(20)

Ключевые слова: [(сито, 4), (сытый, 4), (сердце, 3), (сетка, 2), (клубника, 1), (корыто, 1), (мелкий, 1), (муха, 1), (турист, 1), (покрыть, 1), (москитный, 1), (город, 1), (смог, 1), (ей-бога, 1), (грязный, 1), (эпоха, 1), (красивый, 1), (огонь, 1), (алфавит, 1), (просеять, 1)]

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

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

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