Введение
Минеральные воды Кавказских Минеральных Вод издавна считаются одним из важных компонентов санаторно-курортного лечения и медицинской реабилитации. Терапевтический эффект минеральной воды обусловлен ее уникальным природным составом, а также такими физическими параметрами, как уровень минерализации (общая концентрация солей), ионный состав (гидрокарбонатный, хлоридный, сульфатный, кальциевый, магниевый и др.), кислотно-щелочное равновесие (pH) и температура [1–3].
Однако подбор подходящей минеральной воды для конкретного пациента остается сложной задачей, требующей учета множества сопутствующих факторов. Современная медицина сталкивается с проблемой обработки большого объема информации о минеральных водах и их терапевтических свойствах. Существующие справочники представлены в текстовом, слабо структурированном виде, затрудняя быстрый анализ и сопоставление терапевтических характеристик и показаний разных типов минеральных вод с индивидуальным диагнозом и анамнезом пациента [4]. В связи с чем использование ручного подбора является трудоемким процессом, подверженным человеческим ошибкам.
Цель исследования – создание интеллектуальной модели, которая на основе анамнеза помогает подобрать подходящий вид минеральной воды, а также альтернативные варианты с аналогичными терапевтическими свойствами, с учетом всех заболеваний, в том числе и сочетанных.
Материал и методы исследования
Технической основой разработки системы является язык программирования Python, выбранный из-за обширного количества библиотек для анализа данных [5, 6]. При создании активно использовались такие библиотеки, как Pandas и NumPy для работы со структурированной информацией, Matplotlib и Seaborn для визуализации результатов, а также Ipywidgets для создания интерактивных элементов управления непосредственно в среде JupyterNotebook, что позволило быстро создать функциональный прототип интерфейса. Для предварительной обработки текстовых данных, таких как показания и противопоказания, применялись методы работы с регулярными выражениями [7, 8].
В рамках исследования использовались два специализированных датасетах в формате CSV. Первый датасет, фрагмент которого представлен в табличной форме на рис. 1, содержит информацию, сформированную на основе бальнеологических справочников об источниках минеральной воды Кавказских Минеральных Вод. Таблица минеральных вод (mineral_waters.csv) содержит 9 основных записей с 10 полями, включающими в себя название и месторождение, химический состав и минерализацию, температуру и рН, показания и противопоказания, а также форматы лечения. Классификация минеральных вод основана на таких ключевых признаках, как химический состав, минерализация и способ применения и назначения минеральной воды (для питьевого лечения, для наружного применения, для ингаляций или комбинированного применения) [9].
Второй датасет (diseases.csv), фрагмент которого представлен на рис. 2, содержит 15 записей с названиями заболеваний, их кратким клиническим описанием и уникальным числовым идентификатором.
Классификация заболеваний основана на основных нозологических группах, традиционно использовавшихся в бальнеологии.
Основной алгоритм реализует логику прямого сопоставления через функцию recommended_waters = find_waters_for_disease(selected_disease) следующим образом:
1. Вначале алгоритм получает на вход выбранное пользователем заболевание.

Рис. 1. Данные из mineral_waters.csv Примечание: составлен авторами по результатам данного исследования

Рис. 2. Данные из diseases.csv Примечание: составлен авторами по результатам данного исследования
2. Затем программа последовательно перебирает все записи в предоставленной базе минеральных вод.
3. Используя строковый поиск, для каждой из минеральных вод производит проверку по содержимому диагнозу в предварительно обработанном списке показаний.
4. В результате все воды, которые прошли проверку, форматируются программой в удобный для пользователя формат и становятся основным результатом.
Для расширения рекомендаций производился поиск аналогов на основе методов обработки естественного языка и метрик сходства данных [10–12]. На вход принимается полный список всех вод и выбранная минеральная вода (main_water). Затем, из списка для каждой воды формируются множества (set) заболеваний, на основе поля «Показания». Для каждой пары множеств используется функция find_similar_waters(), которая реализована через коэффициент сходства Жаккара. Данное сходство между двумя текстовыми документами измерялось по формуле
Kj = с / (a + b – c),
где Kj – коэффициент Жаккара,
a – заболевание, находящееся в списке в датасете mineral_waters.csv,
b – заболевание, находящееся в списке в датасете diseases.csv,
c – совпадение заболеваний, найденных в обоих датасетах mineral_waters.csv и diseases.csv.
В результате, если коэффициент одной из вод превышает установленный порог сходства с выбранной минеральной водой, такая вода получает статус аналога [13–15]. Найденные аналоги сортируются по убыванию коэффициента сходства, а пользователю для удобства предоставляются три наиболее похожих варианта с процентным соотношением совпадения.
Результаты исследования и их обсуждение
Демонстрация и донесение полученных результатов до конечного пользователя является достаточно важным этапом визуализации [16, 17].
Изначально пользователь получает краткую инструкцию по использованию интерфейса разработки, включающую предупреждение. На рис. 3 представлено приветственное окно с инструкцией для пользователя.
В строке выбора заболевания используется выпадающий список, состоящий из данных, импортированных из diseases.csv (рис. 4). После выбора конкретной болезни система автоматически генерирует структурированные рекомендации для пользователя, используя прямые и косвенные рекомендации, а также сопроводительную аналитику.
В прямых рекомендациях используется список минеральных вод, которые значатся в точных показаниях к выбранному пользователем заболеванию. На рис. 5 изображена основная рекомендация, включающая развернутую информацию об источнике, формате использования, показания и противопоказания к применению. Для удобства восприятия пользователем, информация разделена на выделенные цветом отдельные элементы и блоки. Такой подход позволяет ускорять принятие решений, так как цвет выступает в форме «сигнальной системы» [18].

Рис. 3. Приветственное окно Примечание: составлен авторами по результатам данного исследования

Рис. 4. Список заболеваний Примечание: составлен авторами по результатам данного исследования
В косвенных рекомендациях приводится список минеральных вод, не имеющих прямого указания к лечению данного заболевания. Такие воды, как правило, обладают высоким сходством бальнеологического профиля с одной из прямо рекомендованных минеральных вод и являются аналогами. Данный метод позволяет найти замену основной минеральной воде в случае, если она по каким-либо причинам недоступна [19, 20].
Чтобы пользователю было удобно подобрать аналог основной воде, программа выводит в виде цветовых маркеров с процентами сходства похожие минеральные воды, пример которых показан на рис. 6. Он сразу может обратить внимание на нужный ему цвет, ознакомиться с краткими характеристиками воды и форматом лечения.
В сопроводительной аналитике, отображенной на рис. 7, приводится статистика и визуализация данных в виде диаграммы. По каждой основной рекомендованной воде выводится краткая информация о количестве схожих минеральных вод, наиболее подходящих аналогах и показаниях терапевтических профилей. Диаграмма и график отображают распределение вод по источникам и их «универсальность», то есть количество заболеваний, которые они лечат.
Также пользователю предлагается альтернатива в виде поисковой строки, изображенной на рис. 8, где он может ввести название интересующей его минеральной воды и получить информацию о ней.
Данная разработанная система была протестирована на примере заболевания «гастрит с нормальной кислотностью», где система успешно отработала входной запрос. Результатом на выходе были получены списки прямых рекомендаций с высокой точностью. Итоги тестирования программы изображены на рис. 4–7.


Рис. 5. Основная рекомендация Примечание: составлен авторами по результатам данного исследования

Рис. 6. Пример подбора аналогичных минеральных вод Примечание: составлен авторами по результатам данного исследования
Отсутствие ложных срабатываний системы показало, что даже при неполном совпадении текстовых описаний алгоритм поиска аналогов способен выявить схожие по терапевтическому профилю минеральные воды. Например, для заболевания «гастрит с нормальной кислотностью» программа выдала основным результатом «Ессентуки 4», а в качестве аналогов предложила воды «Нарзан», «Лермонтовская 1» и «Славяновская». Выведенные проценты сходства позволяют пользователю ранжировать альтернативы по степени близости.
Данный прототип интеллектуальной системы ограничен из-за относительно небольшого объема данных (9 вод и 15 заболеваний). Однако архитектура программы позволяет добавить новые записи в CSV-файлы, при этом не изменяя программный код, что тем самым усовершенствует данную систему, и в дальнейшем может быть интегрирована в формате интеллектуального агента-советчика.

Рис. 7. Сопроводительная аналитика Примечание: составлен авторами по результатам данного исследования

Рис. 8. Поисковая строка Примечание: составлен авторами по результатам данного исследования
Заключение
В данной работе представлен функциональный прототип интеллектуальной системы рекомендаций минеральных вод, который демонстрирует высокую эффективность в обработке медицинских данных и предоставлении персонализированных рекомендаций. Использование алгоритмов решает задачи прямого поиска и поиска аналогов, позволяет не только находить подходящие минеральные воды, но и предлагать альтернативные варианты с аналогичными терапевтическими свойствами. В рамках разработки сформирована структурированная база данных по минеральным источникам и заболеваниям, применимая в машинной обработке, использован гибридный подход, сочетающий в себе сопоставление по показаниям и алгоритмический анализ (Жаккара для поиска аналогов), создан интерактивный интерфейс, обеспечивающий наглядность и простоту взаимодействия с системой.