Knowledge Base Module
Модуль управления базой знаний медицинских терминов.
Структура
knowledge_base/
├── __init__.py # Экспорты модуля
├── term_manager.py # Менеджер медицинских терминов
├── term_loader.py # Загрузка/сохранение терминов
└── README.md # Документация
MedicalTermManager
Основной класс для управления медицинскими терминами.
Возможности
- ✅ Загрузка терминов из файлов
- ✅ Автоматическая категоризация (анатомия, патология, последовательности МРТ и т.д.)
- ✅ Поиск и валидация терминов
- ✅ Нормализация терминов
- ✅ Статистика использования
Категории терминов
- imaging: Методы визуализации (МРТ, КТ, МСКТ)
- sequences: Последовательности МРТ (Т1-ВИ, Т2-ВИ, FLAIR)
- anatomy: Анатомические термины (позвонки, диски, органы)
- pathology: Патологические находки (грыжа, протрузия, стеноз)
- modifiers: Модификаторы (гиперинтенсивный, дорзальная)
Примеры использования
Основное использование
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}")
Валидация транскрипции
# Проверить, какие медицинские термины присутствуют в тексте
transcription = "Пациенту проведено МРТ шейного отдела позвоночника..."
validation = manager.validate_transcription(transcription)
print(f"Найдено терминов: {validation['count']}")
print(f"Покрытие базы знаний: {validation['coverage']:.1%}")
print(f"Термины: {validation['found_terms']}")
Статистика
# Получить статистику по базе знаний
stats = manager.get_statistics()
print(f"Всего терминов: {stats['total_terms']}")
print(f"По категориям: {stats['categories']}")
Добавление новых терминов
# Добавить новый термин
manager.add_term("коронарная проекция")
# Сохранить обновленную базу
from knowledge_base import save_terms_to_file
save_terms_to_file(manager.get_all_terms(), "medical_terms_updated.txt")
Работа с файлами
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-корректором
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)- Объединить файлы терминов