В этой роще березовой,
Вдалеке от страданий и бед,
Где колеблется розовый
Немигающий утренний свет,
Где прозрачной лавиною
Льются листья с высоких ветвей, —
Спой мне, иволга, песню пустынную,
Песню жизни моей.
Стихотворение «В этой роще березовой» было создано Николаем Заболоцким в 1946 году. Широкую известность это произведение получило в 1968-м, когда на экраны вышел фильм Станислава Ростоцкого «Доживем до понедельника». В нем Вячеслав Тихонов проникновенно исполнил одноименную песню на музыку композитора Кирилла Молчанова.
Автор работал над этими строками в Переделкино, в окружении березовых аллей, остро переживая недавние ужасы войны и трагедию атомных бомбардировок, ознаменовавших конец мирового конфликта.
Читая это стихотворение, я почувствовал в его ритмике и интонациях нечто общее с молитвой или литургическим песнопением. Мне стало любопытно провести цифровой анализ текста с помощью Python, чтобы попытаться выявить его глубинный богословский подтекст.
В данном исследовании Python выступает инструментом, позволяющим обнаружить закономерности, которые ускользают от взгляда при обычном чтении. Моя цель — проверить гипотезу о том, что стихотворение выстроено как «литургический текст». Для этого я решил измерить уровень «духовной концентрации», вычислив частоту употребления слов из церковного лексикона, а также проанализировать эмоциональную тональность с помощью RuSentiLex и выделить ключевые образы.
В работе использовалась библиотека re для очистки текста от пунктуации, pymorphy3 для лемматизации и matplotlib для наглядной визуализации результатов.
Для оценки эмоционального окраса был выбран словарь RuSentiLex. Я загрузил его в формате txt, обработав структуру напрямую, чтобы корректно интерпретировать данные без использования pandas.
def load_rusentilex(filepath):
sentiment_dict = {}
with open(filepath, 'r', encoding='utf-8') as f:
for line in f:
line = line.strip()
if not line or line.startswith(('!', '#')):
continue
Такой подход позволил игнорировать служебные строки и комментарии, а интеграция с pymorphy3 обеспечила точное сопоставление лемм входного текста со словарем.
RuSentiLex включает в себя лексемы, имеющие оценочный компонент. Это означает, что слово либо прямо выражает отношение к объекту, либо передает эмоцию, даже если авторская оценка не выражена эксплицитно.
Я сознательно отказался от использования нейросетей, так как они зачастую не способны уловить сакральный контекст. Например, понятие «война» для алгоритма — сугубо негативное, тогда как в поэтике Заболоцкого это может быть жертвенным подвигом на пути к преображению.
Первым этапом анализа стало определение структуры произведения. Это оказалось нетривиальной задачей: в цифровых версиях текста часто отсутствует четкая разбивка на строфы. Чтобы восстановить авторскую композицию, я разработал алгоритм, определяющий границы строф по знакам препинания и логическому завершению предложений.

В результате программного анализа выяснилось, что стихотворение состоит из 48 строк. Оптимальное деление — 6 строф по 8 строк (октав), что полностью соответствует классическим канонам стихосложения.
all_lines = text.split('\n')
print(f"Всего строк в файле: {len(all_lines)}\n")
def get_ending_punctuation(line):
"""Знак препинания в конце строки"""
line = line.rstrip()
if not line:
return None
match = re.search(r'[.?!,:;—–-]$', line)
if match:
return match.group(0)
if line.endswith('...'):
return '...'
return None
lines_data = []
for i, line in enumerate(all_lines):
stripped = line.strip()
if not stripped: # пропускаю пустые строки
continue
punct = get_ending_punctuation(stripped)
lines_data.append({
'index': i + 1, # номер строки в файле
'text': stripped,
'punctuation': punct,
'is_sentence_end': punct in ['.', '!', '?', '...']
})
Примечательно, что структура из шести частей отсылает к Шестопсалмию — важнейшему элементу утреннего богослужения, состоящему из шести псалмов. Таким образом, даже на формальном уровне цифровой анализ подтверждает сходство произведения с церковным текстом.
Далее я сформировал глоссарий богословских терминов и поэтических символов священного. Это позволило рассчитать коэффициент «духовного напряжения» для каждой строфы, проверяя наличие соответствующих лемм.
spiritual_lexicon = {
'божественный', 'заутреня', 'душа', 'молитва', 'храм', 'ангел', 'небо',
'воскресение', 'победа', 'роса', 'свет', 'утро', 'целомудренный', 'пустыня',
'отшельник', 'странник', 'грех', 'благодать', 'жертва', 'смерть', 'вечность',
'лавина', 'лист', 'ветвь', 'цветок', 'капля', 'солнце', 'река', 'камыш',
'обрыв', 'руины', 'сердце', 'голос', 'песня', 'жизнь', 'страдание', 'беда',
'торжественный', 'век', 'бой', 'земля', 'дом', 'крыло', 'атом', 'ум'
}
positive_words = {
'свет', 'победа', 'торжественный', 'свежесть', 'целомудренный', 'неприметный',
'прозрачный', 'розовый', 'лавина', 'песня', 'друг', 'утро', 'солнце', 'жизнь'
}
negative_words = {
'страдание', 'беда', 'смерть', 'война', 'атом', 'мельница', 'взрыв', 'пулемёт',
'ворон', 'убитый', 'опалённый', 'дрожа', 'безумный', 'смертельный', 'руины',
'чернеет', 'облако', 'бой', 'солдат'
}
spiritual_ratios = []
sentiment_scores = []
found_images_per_stanza = []
for stanza in stanzas_texts:
tokens = set(tokenize(stanza))
spiritual_count = len(tokens & spiritual_lexicon)
total = len(tokenize(stanza))
ratio = spiritual_count / total if total > 0 else 0
spiritual_ratios.append(ratio)
found = tokens & key_images
found_images_per_stanza.append(found)
pos = len(tokens & positive_words)
neg = len(tokens & negative_words)
score = (pos - neg) / (pos + neg) if (pos + neg) > 0 else 0.0
sentiment_scores.append(score)
Затем последовала оценка эмоционального настроя по RuSentiLex.
def rusentilex_score(text, lexicon):
lemmas = lemmatize_text(text)
total = 0
score = 0
for lem in lemmas:
if lem in lexicon:
score += lexicon[lem]
total += 1
return score / total if total > 0 else 0.0
И идентификация центральных образов.
key_images = {'иволга', 'роса', 'война', 'атомы', 'победа'}
Выбранные слова — это вехи сюжета: Иволга предстает ангелом-вестником, Атомы символизируют хаос техногенного мира, а Победа становится эсхатологическим финалом.
Результаты программного анализа:
Строфа 1: духовная лексика = 3.23%, тональность = -0.50, образы = [‘иволга’]
Строфа 2: духовная лексика = 3.85%, тональность = +0.00, образы = []
Строфа 3: духовная лексика = 0.00%, тональность = -0.33, образы = [‘атомы’, ‘иволга’]
Строфа 4: духовная лексика = 6.90%, тональность = -1.00, образы = []
Строфа 5: духовная лексика = 9.09%, тональность = -1.00, образы = []
Строфа 6: духовная лексика = 3.45%, тональность = +0.60, образы = []
В первых двух строфах наблюдается низкая, но стабильно растущая доля сакральных смыслов. Отрицательная тональность в начале вызвана словами «беда» и «страдание», однако в контексте стихотворения это лишь обозначение мира, от которого герой устремляется в священное пространство.
В третьей строфе в поэтическую ткань врывается история («Содрогаются атомы…»). Духовная лексика исчезает, мир становится профанным, во власти технократического апокалипсиса. Тональность падает под давлением образов разрушения.
Четвертая и пятая строфы достигают пика духовной насыщенности при минимальной тональности. Это описание руин и смерти («смертельное облако»), олицетворяющих высшую точку испытания.
Шестая строфа — это акт воскресения («Встанет утро победы торжественной…»). Концентрация духовных слов здесь снижается, так как преображенный мир уже не нуждается в сложных определениях. Тональность резко становится положительной благодаря понятиям «победа», «торжественный» и «божественная капля».
Расхождение между тональностью и духовной насыщенностью объясняется ограниченностью RuSentiLex, который не учитывает эсхатологический контекст. Для алгоритма «смерть» и «бой» — это всегда негатив, тогда как для Заболоцкого это этапы на пути к преображению. В этом проявляется парадокс теодицеи: путь к добру лежит через преодоление тьмы.
График «духовного напряжения» стихотворения:

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


