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

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

Я скачал в интернете полное собрание сочинений Цветаевой (издательство "Эксмо", 2006 год) и превратил тексты из этой книги в один файл .txt объемом 707487 символов. Меня интересовал не просто подсчет слова "любовь" в стихотворениях, а именно выяснение того, какими эпитетами Цветаева описывает любовные чувства. Такое исследование больше расскажет о том, как поэтесса умела выразить словами то, что было доступно ей чувствовать и переживать.

Для начала я применил атрибут token.children из библиотеки SpaCy, чтобы найти эпитеты, которыми Цветаева окружала слово "любовь". Я удалил служебные части речи, поискал разные типы зависимостей, отделив существительные, прилагательные, причастия и краткие формы прилагательных. Контекстное окно я задал в плюс-минус 4 слова, чтобы более или менее точно отфильтровать признаковые слова, близкие к "любви".

def analyze_epithets(text):
    doc = nlp(text)
    results = {'adj_full': [], 'adj_short': [], 'noun': [], 
               'participle': [], 'other': []}
    complexes = []
    
    for token in doc:
        if token.lemma_.lower() == 'любовь':
           children = list(token.children)
           window_start = max(0, token.i - 4)
           window_end = min(len(doc), token.i + 5)
           window_tokens = [doc[i] for i in range(window_start, window_end) 
                           if i != token.i]
           potential_epithets = []

Что у меня получилось:

  • Всего найдено эпитетных комплексов: 281

  • Существительные  179 (63.7%)

  • Полные прилагательные  81 (28.8%)

  • Причастия  10 (3.6%)

  • Краткие формы прилагательных  8 (2.8%)

Всего я нашел этим кодом, что слово "любовь" с разными признаковыми словами, эту любовь характеризующих, встречается в поэзии Цветаевой 281 раз. При этом любопытным открытием стало, что чаще всего поэтесса характеризует  "любовь" каким-либо существительным (63,7%). Это не типично для русской поэзии, где чаще всего для этих целей используют прилагательные. Цветаева предпочитает метафорические определения через существительные. Получается, что у Цветаевой в эпитете любовь чаще описывается как отождествление двух понятий, даже скорее не описывается, а приравнивается к другим сущностям.

Любовь — это плоть и кровь.

Цвет, собственной кровью полит.

Вы думаете, любовь —

Беседовать через столик?

М. Цветаева “Поэма конца” 1924 г.

Далее я посчитал, какие леммы чаще всего используются для описания слова "любовь" у Цветаевой. Здесь тоже меня ждало интересное открытие. Наиболее частотной леммой стало слово "третий". Мотив треугольника появляется 7 раз. Любовь у Цветаевой не бывает парной. Всегда есть какой-то свидетель или препятствие – время, судьба, поэзия.

Узнаю тебя, гад,
Как тебя ни зови:
В море — ткань, в горе — взгляд, —
Вечный третий в любви!

М.Цветаева "Наяда" 1928 г

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

def analyze_position(doc, target_word='любовь'):
    position_data = []
    
    for sent in doc.sents:
        love_tokens = [t for t in sent if t.lemma_.lower() == target_word]
        
        if love_tokens:
            sent_len = len(sent)
            for token in love_tokens:
                token_idx = token.i - sent.start
                rel_pos = token_idx / sent_len if sent_len > 0 else 0
                
                position_data.append({
                    'sentence_len': sent_len,
                    'relative_position': rel_pos
                })
    
    return pd.DataFrame(position_data)

Что у меня получилось:

  • Предложений со словом "любовь": 191

  • Средняя относительная позиция: 0.473 (0.0=начало, 1.0=конец)

  • Распределение позиций:

  • Начало предложения (0.0–0.2): 50 (26.2%)

  • Середина (0.2–0.8):  108 (56.5%)

  • Конец предложения (0.8–1.0):  33 (17.3%)

  • Доля сильных позиций (начало + конец): 43.5%

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

Позиция слова "любовь" в предложении у Цветаевой
Позиция слова "любовь" в предложении у Цветаевой

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

all_sent_lengths = [len(sent) for sent in doc.sents]
avg_len_all = sum(all_sent_lengths) / len(all_sent_lengths)

sentences_with_love = [len(sent) for sent in doc.sents 
                       if any(t.lemma_.lower() == 'любовь' for t in sent)]
avg_len_love = sum(sentences_with_love) / len(sentences_with_love)
Распределение длины предложений со словом "любовь" у Цветаевой
Распределение длины предложений со словом "любовь" у Цветаевой

Получилось, что средняя длина всех предложений в корпусе Цветаевой 15,3 токена. При этом средняя длина предложений со словом "любовь" 21 токен, они длиннее средних. Поэтесса не хочет говорить о любви кратко, любовь у нее не укладывается в афоризмы, требует пояснений и пространства.

Лежат они, написанные наспех,
Тяжёлые от горечи и нег.
Между любовью и любовью распят
Мой миг, мой час, мой день, мой год, мой век.

 М. Цветаева 1915 г.

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