Все снег да снег, — терпи и точка.
Скорей уж, право б, дождь пошел
И горькой тополевой почкой
Подруги сдобрил скромный стол.
Это стихотворение Бориса Пастернака кажется простым и даже немного примитивным, детским. Хотя написано оно в 1931 году, поэт был уже вполне взрослым человеком. Стихотворение интересно тем, как поэт тонко создает аллюзию на пушкинскую характеристику зимы в стихотворении "Осень": "Но надо знать и честь; полгода снег да снег, Ведь это наконец и жителю берлоги, Медведю, надоест."
Другая интересная особенность этого текста – наличие скрытых паттернов, которые можно выявить с помощью Python.
Я загрузил текст стихотворения, разбил его на строки и удалил лишние пробелы.
В стихотворении заметно частое использование частицы "б" (сокращенной формы "бы"). Я написал код, чтобы количественно оценить этот прием.
lines_with_b = [line for line in lines if 'б' in line or 'бы' in line] count_b_lines = len(lines_with_b) count_by = sum(line.lower().count('бы') for line in lines) count_b = sum( len(re.findall(r'\bб\b', line.lower())) for line in lines )
Здесь генератор списка проверяет каждую строку на наличие буквы "б" или сочетания "бы". Результат это список всех строк, содержащих эти элементы. Далее я перевожу каждую строку в нижний регистр (чтобы не пропустить "Бы") и считаю вхождения подстроки "бы".
Далее я использую регулярное выражение \bб\b, где \b обозначает границу слова. Это позволяет находить только те случаи, когда "б" стоит как отдельное слово (частица), а не как часть других слов (например, "бокал"). Без использования регулярных выражений я бы получил некорректный результат, так как подсчет простым .count('б') учитывал бы все буквы "б" в тексте, включая те, что входят в состав других слов.
Далее я попробовал анализировать рифму. В классической поэзии рифмы обычно строгие и предсказуемые, но вот как раз у Пастернака они часто носят ассонансный характер (то есть совпадают только гласные) или используют неочевидные звуковые соответствия.
def get_rhyme(word): vowels = "аеёиоуыэюя" reversed_word = word[::-1].lower() rhyme_part = '' for char in reversed_word: if char in vowels: rhyme_part += char elif rhyme_part: break return rhyme_part[::-1] rhymes = [] for i in range(0, len(lines), 2): if i + 1 < len(lines): line1 = lines[i].strip().rstrip('.,!?').split()[-1] line2 = lines[i+1].strip().rstrip('.,!?').split()[-1] rhymes.append((get_rhyme(line1), get_rhyme(line2)))
В этом коде я с помощью функции get_rhyme(word) определяю рифменную основу слова. Функция сначала переворачивает слово задом наперед, затем ищет гласные буквы, начиная с конца, собирает последовательность гласных (и следующих за ними согласных, если они есть) и возвращает найденную часть в правильном порядке.
Далее я беру строки парами (0 и 1, 2 и 3 и т.д.), удаляю знаки препинания с конца строк, выделяю последнее слово каждой строки и определяю рифменную основу для каждого слова. Этот алгоритм упрощенный, но достаточно эффективный для базового анализа рифмовки.
Что показывает этот код:
Количество строк с 'б': 12
Количество 'бы': 2
Количество 'б': 8
Рифмы: [('а', 'е'), ('о', 'о'), ('а', 'и'), ('у', 'и'), ('', 'о'), '...']
Стихотворение написано чередующимися четырех- и трехстопными ямбами. Такая структура создает неравномерный ритм. Стихотворение использует перекрёстную рифмовку (ABAB). Пастернак часто использует рифмы с повторением одного слова или части его формы, играя с предлогами, суффиксами и местоимениями.
Из 18 строк стихотворения 12 содержат частицу "б" или "бы". Пастернак сознательно использует разговорную, почти шепотную форму частицы. Даже больше, преобладание разговорного стиля над книжным показывает победу живой жизни над школьной, искусственной. Лексически автор как бы показывает разрушение перегородок и границ. Открывание окна изображено как освежающее действие, что подчеркивается определением закрытого окна как "заплесневелого".
Обращает на себя внимание интересная, скорее всего ключевая рифма "точка-почка", построенная по принципу семантического контраста. Закрытое открывается, мертвое становится живым.
Акцент на букву "б" и образ этого звука открывают еще одну грань ценностно спора в мире этого стихотворения. Бесшумно мертвой снежной зимы и оглушающей "латынью ливня" весны с ее врывающимся в "откупориваемое" окно "гамом".
Этот пример показывает, как цифровой анализ помогает лучше понять художественный текст и увидеть замысел писателя.