В этом руководстве мы научимся создавать интерактивный инструмент мониторинга медицинских данных с использованием трансформерных моделей Hugging Face, Google Colab и ipywidgets. Мы проведем вас через настройку среды Colab, загрузку клинической модели (такой как Bio_ClinicalBERT) и создание удобного интерфейса, который принимает ввод медицинских данных и возвращает интерпретируемые прогнозы заболеваний. Это пошаговое руководство демонстрирует возможности продвинутых моделей NLP в здравоохранении и делает эти мощные инструменты доступными даже для тех, кто только начинает знакомиться с машинным обучением и интерактивным программированием.
!pip install transformers torch ipywidgetsСначала мы устанавливаем три основные библиотеки: transformers для работы с современными моделями NLP, torch для вычислений глубокого обучения и ipywidgets для создания интерактивных виджетов в Colab.
from transformers import AutoTokenizer, AutoModelForSequenceClassification, pipeline
import ipywidgets as widgets
from IPython.display import display, clear_output
Теперь мы импортируем необходимые модули: классы и функции из библиотеки Hugging Face Transformers для обработки моделей и классификации текста. Мы также импортируем ipywidgets и функции отображения IPython для создания и управления интерактивными выводами в Google Colab.
# Using a publicly available clinical model
model_name = "emilyalsentzer/Bio_ClinicalBERT"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForSequenceClassification.from_pretrained(model_name)
health_monitor = pipeline("text-classification", model=model, tokenizer=tokenizer)
Мы загружаем общедоступную клиническую модель «emilyalsentzer/Bio_ClinicalBERT» вместе с ее токенизатором и настраиваем конвейер классификации текста под названием health_monitor для обработки и анализа клинических медицинских данных.
Broad Disease Mapping
broad_disease_mapping = {
"LABEL_0": "No significant condition",
"LABEL_1": "Cardiovascular Diseases (e.g., hypertension, heart disease)",
"LABEL_2": "Metabolic and Endocrine Disorders (e.g., diabetes, thyroid issues)",
"LABEL_3": "Respiratory Diseases (e.g., asthma, COPD)",
"LABEL_4": "Neurological Conditions (e.g., stroke, epilepsy)",
"LABEL_5": "Infectious Diseases (e.g., influenza, COVID-19)",
"LABEL_6": "Oncological Conditions (e.g., cancers)",
"LABEL_7": "Gastrointestinal Disorders (e.g., IBS, Crohn's disease)",
"LABEL_8": "Musculoskeletal Disorders (e.g., arthritis, osteoporosis)",
"LABEL_9": "Immunological/Autoimmune Disorders (e.g., lupus, rheumatoid arthritis)"
}
Мы создаем словарь, который сопоставляет общие выходные метки модели (например, «LABEL_0») с конкретными, широкими категориями заболеваний. Это помогает переводить прогнозы модели в осмысленные клинические интерпретации, охватывая состояния от сердечно-сосудистых заболеваний до аутоиммунных расстройств.
Function to Analyze Health Data
def analyze_health_data(input_text):
prediction = health_monitor(input_text)[0]
disease_prediction = broad_disease_mapping.get(prediction["label"], "Unknown Condition")
output_str = (
f"Raw Model Output: {prediction}n"
f"Interpreted Prediction: {disease_prediction}n"
f"Confidence Score: {prediction['score']*100:.2f}%"
)
return output_str
Вышеприведенная функция analyze_health_data принимает клинический текст в качестве входных данных и обрабатывает его с помощью конвейера health_monitor. Она получает прогноз модели, затем сопоставляет общую метку (например, «LABEL_0») с конкретной категорией заболевания из словаря broad_disease_mapping. Наконец, она форматирует необработанный прогноз, интерпретированную категорию заболевания и оценку уверенности в читаемую строку перед ее возвращением.
Interactive Interface Using ipywidgets
input_text = widgets.Textarea(
value='Enter patient health data here...',
placeholder='Type the clinical notes or patient report',
description='Health Data:',
disabled=False,
layout=widgets.Layout(width='100%', height='100px')
)
Мы создаем интерактивный виджет текстовой области с использованием ipywidgets. Он предоставляет предварительно заполненную подсказку, заполнитель для руководства и указанный макет, позволяя пользователям вводить клинические заметки или отчеты пациентов в удобном интерфейсе.
Button widget to trigger the analysis
analyze_button = widgets.Button(
description='Analyze',
disabled=False,
button_style='', # Options: 'success', 'info', 'warning', 'danger' or ''
tooltip='Click to analyze the health data',
icon='check'
)
Затем мы создаем виджет кнопки с использованием ipywidgets. Кнопка помечена как «Analyze» и включает всплывающую подсказку («Click to analyze the health data») и значок («check») для улучшения пользовательского опыта. Эта кнопка запустит функцию анализа медицинских данных при нажатии, позволяя модели обрабатывать введенный клинический текст.
Output widget to display the results
output_area = widgets.Output()
def on_analyze_button_clicked(b):
with output_area:
clear_output()
input_data = input_text.value
result = analyze_health_data(input_data)
print(result)
analyze_button.on_click(on_analyze_button_clicked)
display(input_text, analyze_button, output_area)
Наконец, мы создаем виджет вывода для отображения результатов анализа и определяем функцию обратного вызова (on_analyze_button_clicked), которая срабатывает при нажатии кнопки «Analyze». Функция очищает любой предыдущий вывод, получает входные данные из текстовой области, обрабатывает их с помощью функции analyze_health_data и выводит результат в области вывода. Наконец, событие нажатия кнопки связывается с этой функцией, и все виджеты (область ввода, кнопка и дисплей вывода) отображаются вместе для интерактивного использования.
Пример ввода и вывода
В заключение, это руководство показало, как легко интегрировать современные инструменты NLP с интерактивным интерфейсом для анализа клинических медицинских данных. Вы можете создать систему, которая интерпретирует и категоризирует медицинскую информацию в полезные выводы, используя предварительно обученные модели Hugging Face и простоту Google Colab и ipywidgets.
Подписывайтесь на наш telegram-канал








