# Knowledge Base Module Модуль управления базой знаний медицинских терминов. ## Структура ``` knowledge_base/ ├── __init__.py # Экспорты модуля ├── term_manager.py # Менеджер медицинских терминов ├── term_loader.py # Загрузка/сохранение терминов └── README.md # Документация ``` ## MedicalTermManager Основной класс для управления медицинскими терминами. ### Возможности - ✅ Загрузка терминов из файлов - ✅ Автоматическая категоризация (анатомия, патология, последовательности МРТ и т.д.) - ✅ Поиск и валидация терминов - ✅ Нормализация терминов - ✅ Статистика использования ### Категории терминов - **imaging**: Методы визуализации (МРТ, КТ, МСКТ) - **sequences**: Последовательности МРТ (Т1-ВИ, Т2-ВИ, FLAIR) - **anatomy**: Анатомические термины (позвонки, диски, органы) - **pathology**: Патологические находки (грыжа, протрузия, стеноз) - **modifiers**: Модификаторы (гиперинтенсивный, дорзальная) ## Примеры использования ### Основное использование ```python from knowledge_base import MedicalTermManager # Инициализация с загрузкой терминов manager = MedicalTermManager(terms_file="medical_terms.txt") # Получить все термины all_terms = manager.get_all_terms() print(f"Всего терминов: {len(all_terms)}") # Получить термины в виде текста для промпта terms_text = manager.get_terms_as_text() # Поиск термина results = manager.search_term("МРТ") print(f"Найдено: {results}") # Получить термины по категории anatomy_terms = manager.get_category_terms("anatomy") print(f"Анатомические термины: {anatomy_terms}") ``` ### Валидация транскрипции ```python # Проверить, какие медицинские термины присутствуют в тексте transcription = "Пациенту проведено МРТ шейного отдела позвоночника..." validation = manager.validate_transcription(transcription) print(f"Найдено терминов: {validation['count']}") print(f"Покрытие базы знаний: {validation['coverage']:.1%}") print(f"Термины: {validation['found_terms']}") ``` ### Статистика ```python # Получить статистику по базе знаний stats = manager.get_statistics() print(f"Всего терминов: {stats['total_terms']}") print(f"По категориям: {stats['categories']}") ``` ### Добавление новых терминов ```python # Добавить новый термин manager.add_term("коронарная проекция") # Сохранить обновленную базу from knowledge_base import save_terms_to_file save_terms_to_file(manager.get_all_terms(), "medical_terms_updated.txt") ``` ### Работа с файлами ```python from knowledge_base import load_terms_from_file, save_terms_to_file, merge_term_files # Загрузка terms = load_terms_from_file("medical_terms.txt") # Сохранение save_terms_to_file(list(terms), "output.txt") # Объединение двух файлов merge_term_files("terms1.txt", "terms2.txt", "merged_terms.txt") ``` ## Интеграция с LLM-корректором ```python from knowledge_base import MedicalTermManager from corrector import MedicalLLMCorrector # Создаем менеджер терминов term_manager = MedicalTermManager("medical_terms.txt") # Получаем термины для промпта medical_terms_text = term_manager.get_terms_as_text() # Передаем в корректор corrector = MedicalLLMCorrector() corrector.medical_terms = medical_terms_text # Обновляем термины # Коррекция corrected, corrections = corrector.correct_transcription(original_text) ``` ## Формат файла с терминами Файл должен содержать термины, разделенные запятыми: ``` МРТ, КТ, МСКТ, Т1-ВИ, Т2-ВИ, режим FLAIR, дорзальная грыжа, протрузия, L1-L5 ``` ## API Reference ### MedicalTermManager - `__init__(terms_file)` - Инициализация с загрузкой из файла - `load_from_file(filepath)` - Загрузить термины из файла - `add_term(term)` - Добавить термин - `search_term(query)` - Поиск термина - `get_category_terms(category)` - Получить термины категории - `get_all_terms()` - Получить все термины (список) - `get_terms_as_text(separator)` - Получить термины как текст - `validate_transcription(text)` - Валидировать транскрипцию - `get_statistics()` - Получить статистику ### Вспомогательные функции - `load_terms_from_file(filepath)` - Загрузить термины - `save_terms_to_file(terms, filepath)` - Сохранить термины - `merge_term_files(file1, file2, output)` - Объединить файлы терминов