| # 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)` - Объединить файлы терминов | |