Metadata-Version: 2.4
Name: text-corrector
Version: 0.1.3
Summary: Простая библиотека на основе расстояния Левенштейна для исправления опечаток
License: MIT
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Requires-Python: >=3.8
Description-Content-Type: text/markdown

# text-corrector

Простая и эффективная Python-библиотека для автоматического поиска и исправления опечаток в тексте, использующая расстояние Левенштейна и частотный анализ слов.

## Особенности

* **Гибкая замена словаря:** Возможность легкого подключения специализированных частотных словарей для адаптации под конкретные предметные области (медицина, юриспруденция, IT, сленг и т.д.).
* **Встроенные базы знаний:** По умолчанию внутри пакета уже зашиты базовые частотные словари для русского и английского языков, которые автоматически объединяются при работе.
* **Ранний выход в алгоритме Левенштейна:** Оптимизированный подсчет расстояния — функция не считает матрицу до конца, если длина слов отличается больше, чем на заданный порог.
* **Частотный анализ:** Если под критерии подходят несколько слов-кандидатов, библиотека выберет наиболее популярное слово на основе переданного или встроенного словаря.
* **Сохранение регистра:** Автоматически сохраняет заглавную букву у исправленного слова, если оригинал начинался с большой буквы.

## Установка

Вы можете установить библиотеку через команду
`pip install text-corrector`

## Быстрый старт

### Вариант 1. Использование встроенных словарей
Вы можете запустить исправление текста сразу — библиотека сама подгрузит встроенные словари русского и английского языков:

```python
from text_corrector import correct_text

bad_text = "Hrllo Wprldd"
# Аргумент dictionary можно не передавать, он подгрузится автоматически
clean_text, _ = correct_text(bad_text, max_dist=2)

print(clean_text)
# Выведет исправленный текст на основе встроенной базы (Hello World)
```

### Вариант 2. Гибкая адаптация под предметную область (Кастомный словарь)
Если вам нужно настроить алгоритм под конкретную тематику, просто передайте свой специализированный словарь в формате `{"слово": частота_встречаемости}` вторым аргументом:

```python
from text_corrector import correct_text

# Подготовим словарь медицинских терминов для конкретной предметной области
medical_dictionary = {
    "аппендицит": 1.0,
    "антибиотик": 0.95,
    "аспирин": 0.8
}

bad_text = "врач диагностировал апендицыт"

# Передаем кастомный словарь — алгоритм мгновенно переключается на вашу терминологию
clean_text, debug_info = correct_text(bad_text, dictionary=medical_dictionary, max_dist=2)

print(clean_text)
# Выведет: "врач диагностировал аппендицит"
```

## Дополнительные функции

Вы также можете использовать отдельные компоненты библиотеки независимо:

```python
from text_corrector import tokenize, get_candidates

# Разбить текст на чистые слова (без знаков препинания)
words = tokenize("Привет, мир! Как дела?")
print(words)  # ['Привет', 'мир', 'Как', 'дела']

# Получить список всех возможных замен из словаря с их весами
candidates = get_candidates("привед", {"привет": 1.0, "привлек": 0.5}, max_dist=2)
print(candidates)  # [('привет', 1, 1.0)] -> (слово, расстояние, частота)
```