Mintik24's picture
🎉 Полный рефакторинг проекта Medical Transcriber
e275025
# 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)` - Объединить файлы терминов