Как Живаго ставит диагноз всей эпохе

В романе Бориса Пастернака «Доктор Живаго» главный герой выведен врачом. Очевидно, что писатель выбрал такую профессию своему персонажу не просто так. В этом прослеживается несколько сюжетных задумок, и, поскольку Юрий Живаго пишет стихи, в этом должны быть и какая-то связь с медицинским следом в русской словесности. Самые известные писатели в русской литературе, связанные с медициной это Чехов и Булгаков. Оба они получили нужное образование и некоторое время врачевали. Я решил исследовать текст романа с помощью доступных инструментов Python и установить, действительно ли есть связь Юрия Живаго с Чеховым и как в романе Пастернак использует профессию своего героя с литературной точки зрения.
«Как хорошо на свете! — подумал он. — Но почему от этого всегда так больно?».
Я скачал в интернете текст романа «Доктор Живаго» в виде фала .txt с сайта azbyka.ru и начал с того, что стал искать в романе какое-то чеховское присутствие. От мысли искать подобное, связанное с Булгаковым я сразу отказался – по эпохе события в романе не совпадают с литературной карьерой автора «Собачьего сердца». Для поиска связи с Чеховым я решил применить алгоритм Word2Veс. Это объяснятся моим личным впечатлением от чтения романа - я не помню, чтобы Пастернак впрямую упоминал Чехова и не стал искать явные цитаты или упоминания имени драматурга с помощью, например, регулярных выражений. Мне показалось интереснее выявить именно скрытые семантические поля и найти в тексте романа чеховскую атмосферу. Word2Veс подходит для такого поиска. Алгоритм строит векторные представления слов на основе их контекста во всем романе. Word2Veс помещает слова в многомерное пространство, где расстояние, то есть косинусная близость отражает семантическую схожесть.
Я начал с того, что попытался найти известные чеховские формулы в романе и установить их семантических соседей.
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 это очень много. Такая величина показывает, что в романе есть предложения, которые невозможно однозначно классифицировать как медицинские или социальные диагнозы. У Пастернака патология героев так взаимосвязана, что установить первичность социальных, психических или физиологических отклонений почти невозможно.
Надеяться и действовать — наша обязанность в несчастии. Бездеятельное отчаяние — забвение и нарушение долга
У версии о том, что Пастернак получил премию за роман не заслуженно, много сторонников. Но и без размышлений о печальной судьбе награды можно сказать, что роман у писателя получился выдающийся.
KioskNews shows a cleaned-up reading view extracted from the publisher’s page — the original always lives on their site, not ours.