Как доктор Живаго выносит приговор целой эпохе

Прокомментировать Просмотры: 0

Семантическая сеть: пересечение патологий в романе «Доктор Живаго»

Главный герой романа Бориса Пастернака «Доктор Живаго» — врач, и вряд ли это случайность. За таким выбором угадывается сразу несколько сюжетных замыслов. К тому же Юрий Живаго пишет стихи, а значит, его профессия может быть связана с традицией, в которой медицина и русская словесность идут рядом. Самые известные литераторы с медицинским прошлым — Чехов и Булгаков: оба получили профильное образование и какое-то время практиковали. Я решил разобрать текст романа средствами Python и выяснить две вещи: есть ли между Юрием Живаго и Чеховым подлинная связь и как Пастернак использует профессию героя в литературных целях.

«Как хорошо на свете! — подумал он. — Но почему от этого всегда так больно?».

Текст «Доктора Живаго» я скачал в формате .txt с сайта azbyka.ru и первым делом занялся поиском чеховского присутствия. Булгакова я отбросил сразу: события романа по времени не совпадают с литературной карьерой автора «Собачьего сердца». Для поиска связи с Чеховым я выбрал алгоритм Word2Vec. Причина в моём читательском впечатлении: Пастернак, насколько я помню, не называет Чехова прямо, поэтому искать цитаты или имя драматурга, скажем, регулярными выражениями, я не стал. Куда любопытнее было обнаружить скрытые семантические поля и уловить в тексте чеховскую атмосферу, а для этого Word2Vec подходит хорошо. Алгоритм строит векторные представления слов по их контекстам во всём романе и помещает слова в многомерное пространство, где расстояние (косинусная близость) отражает смысловое сходство.

Сначала я попытался найти в романе известные чеховские формулы и определить их семантических соседей.

markers = {
    "чеховск*": r"чеховск\w*",
    "футляр": r"футляр\w*",
    "три сестры": r"три\s+сестр\w*",
    "мороз": r"мороз\w*",
    "диагност": r"диагност\w*",
    "мальчики": r"мальчик\w*",
    "человек в футляре": r"человек\s+в\s+футляр\w*"
}
for marker_name, pattern in markers.items():
    regex = re.compile(rf'.{{0,50}}{pattern}.{{0,50}}', re.IGNORECASE | re.DOTALL)
    matches = regex.findall(text_zhivago)

    print(f"\Маркер: '{marker_name}' | Найдено: {len(matches)}")
    for i, ctx in enumerate(matches[:3]):
        clean_ctx = ctx.replace('\n', ' ').strip()
        print(f"  {i+1}. ...{clean_ctx}...")

Результаты:

Лемма: ‘чехов’ (встречается 2 раз)

неказистый: 0.3775

ракушка: 0.3701

замотанный: 0.3432

преждевременный: 0.3429

вериться: 0.3401

правило: 0.3368

позорный: 0.3367

Лемма: ‘чеховский’ (встречается 1 раз)

витать: 0.3547

забывчивость: 0.3321

разгадка: 0.3318

разведенному: 0.3301

расшатали: 0.3206

соблазнительный: 0.3205

докалывать: 0.3202

Лемма: ‘футляр’ (встречается 2 раз)

выпросить: 0.3622

морщившееся: 0.3519

шарообразный: 0.3470

тварь: 0.3426

обветренных: 0.3418

пола: 0.3386

тифозный: 0.3370

Лемма: ‘диагност’ (встречается 3 раз)

марксизм: 0.4142

унизиться: 0.3843

уметь: 0.3766

свершиться: 0.3670

незадачливый: 0.3574

таинственно: 0.3495

разнимать: 0.3466

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

Не менее выразительно соседство у леммы «диагност»: «марксизм», «таинственно», «свершиться». Сближение «диагноста» с «марксизмом» вряд ли случайно. Оно обнажает скрытую полемику романа: Живаго — врач и диагност — противостоит Стрельникову-Антипову, идеологу, тоже берущемуся ставить диагнозы, но ставящему идею выше живой жизни.

Любопытен и результат для леммы «футляр»: «тварь», «тифозный», «морщившееся». Вместо сухого интеллигентского образа чеховского Беликова алгоритм вытаскивает окружение, пропитанное телесной немощью и болезнью. Выходит, Пастернак заостряет чеховский футляр и превращает его в часть физического и общественного распада эпохи, а не в простой символ косности.

«Всякая стадность — прибежище неодарённости, всё равно, верность ли это Соловьёву, или Канту, или Марксу. Истину ищут только одиночки и порывают со всеми, кто любит её недостаточно».

Затем я углубился в профессию героя и попробовал выяснить, существует ли лексическая связь между его специальностью и социальным фоном сюжета. Ставит ли Юрий Андреевич диагноз самой эпохе?

Чтобы проверить, насколько тесно в романе переплетены медицинский и социальный дискурсы, я построил визуальную семантическую сеть. В неё вошли медицинские и социальные термины.

MEDICAL_LEMMAS = {
    'болезнь', 'смерть', 'диагноз', 'формалин', 'карболка', 'стетоскоп',
    'анатомия', 'тело', 'кровь', 'лихорадка', 'врач', 'лечить', 'боль', 'труп'
}
SOCIAL_LEMMAS = {
    'революция', 'хаос', 'разрушение', 'страх', 'гибель', 'бунт', 'идеология',
    'футляр', 'отчаяние', 'судьба', 'общество', 'смерть', 'боль', 'кризис'
G = nx.Graph()
window_size = 1 
for lemmas in sentence_lemmas:
    relevant_words = [w for w in lemmas if w in MEDICAL_LEMMAS or w in SOCIAL_LEMMAS]
    for i in range(len(relevant_words)):
        for j in range(i + 1, len(relevant_words)):
            w1, w2 = relevant_words[i], relevant_words[j]
            if G.has_edge(w1, w2):
                G[w1][w2]['weight'] += 1
            else:
                G.add_edge(w1, w2, weight=1)
plt.figure(figsize=(12, 10))
pos = nx.spring_layout(G, k=0.5, iterations=50)
edges_to_draw = [(u, v) for (u, v, d) in G.edges(data=True) if d['weight'] > 1]
weights = [G[u][v]['weight'] for u, v in edges_to_draw]

Полученный график подтверждает мысль о том, что у Пастернака духовное и телесное начала бытия равноправны. Связка «врач — общество» проявилась на схеме красно-синим узлом. Это говорит о неразрывной связи фигуры врача с социальным контекстом, а такая связь вполне созвучна чеховской традиции. В опубликованных записных книжках Антон Чехов писал: «желание служить общему благу непременно должно быть потребностью души, условием личного счастья».

Близость медицинского и социального контекстов я проверил и с помощью SBERT. Это нейросетевая модель на архитектуре трансформеров, превращающая в векторы целые предложения. В отличие от TF-IDF, SBERT учитывает контекст, синонимию, метафоры и синтаксические конструкции, поэтому для моей задачи она подходит. Автор может изобразить болезнь тела без медицинской терминологии, например словами «тело стыло», и точно так же без специальной лексики описать крах общества. SBERT способна вычислить косинусное сходство двух предложений, даже когда у них нет ни одного общего слова, но речь в них идёт об одной и той же экзистенциальной или патологической ситуации.

model = SentenceTransformer('cointegrated/rubert-tiny2') 
med_sample_sents = [processed_sentences[i] for i in medical_sentences_indices[:20]]
social_sentences_indices = [i for i, lemmas in enumerate(sentence_lemmas) if lemmas & SOCIAL_LEMMAS]
social_sample_sents = [processed_sentences[i] for i in social_sentences_indices[:20]]
emb_med = model.encode(med_sample_sents)
emb_soc = model.encode(social_sample_sents)
similarity_matrix = cosine_similarity(emb_med, emb_soc)

Результаты:

Среднее косинусное сходство между «медицинскими» и «социальными» предложениями:

Средняя схожесть: 0.5711 (шкала от 0 до 1)

Максимальная схожесть: 1.0000

Семантическая близость контекстов
Семантическая близость контекстов

Среднее косинусное сходство 0.5711 — высокий показатель для семантического анализа художественного текста. Он означает, что предложения о телесной патологии и предложения о патологии социальной в среднем совпадают по смыслу примерно на 57%.

Максимальное значение 1.0000 тоже говорит о многом: в романе встречаются фразы, которые нельзя однозначно отнести ни к медицинским, ни к социальным диагнозам. У Пастернака патологии героев настолько переплетены, что определить, что здесь первично — социальные, психические или физиологические отклонения, практически невозможно.

Надеяться и действовать — наша обязанность в несчастии. Бездеятельное отчаяние — забвение и нарушение долга

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

 

Источник

Похожие статьи

Поиск по играм, новостям и статьям…

Введите не менее двух символов

Введите не менее двух символов