# hunspell

Библиотека для проверки орфографии, морфологического анализа и генерации слов, основанная на словарях с правилами аффиксов. Она предоставляет инструменты для анализа структуры слов, проверки их корректности и предложения исправлений. Изначально созданная для венгерского языка, библиотека теперь поддерживает множество языков и используется в различных приложениях, включая офисные пакеты, браузеры и текстовые редакторы.

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

- поддержка множества языков через загружаемые словари;
- морфологический анализ;
- генерация словоформ на основе заданной основы и аффиксов;
- проверка орфографии и предложение исправлений;
- поддержка пользовательских словарей и исключений.

## Основные компоненты

Hunspell состоит из нескольких ключевых компонентов, которые обеспечивают все функции проверки орфографии и морфологического анализа (подробнее с документацией можно ознакомиться [здесь](http://hunspell.github.io/)).

### Проверка орфографии

Библиотека предоставляет функции для проверки корректности слов на основе загруженного словаря. Проверка включает не только поиск слова в словаре, но и применение правил аффиксов для определения допустимых словоформ.

Основные функции проверки:

- `Hunspell_spell()` — проверка, является ли слово корректным согласно словарю;
- `Hunspell_suggest()` — генерация списка предложений для исправления опечаток;
- `Hunspell_suggest_auto()` — автоматический выбор наилучшего исправления;
- Поддержка составных слов и слов с дефисами для языков, где это допустимо.

### Морфологический анализ

Hunspell выполняет морфологический анализ слов, разбивая их на основу и аффиксы. Это позволяет не только проверять орфографию, но и понимать структуру слова, что полезно для лингвистических приложений.

Функции морфологического анализа:

- `Hunspell_analyze()` — возвращает морфологический разбор слова (список основ и аффиксов);
- `Hunspell_stem()` — извлечение основы (основ) из слова;
- `Hunspell_get_dic_encoding()` — получение кодировки словаря (например, UTF-8);
- Поддержка нескольких вариантов разбора для омонимов.

### Генерация словоформ

На основе заданной основы и правил аффиксов библиотека может генерировать допустимые словоформы. Это полезно для тестирования словарей, создания лингвистических ресурсов или расширения словарного запаса приложений.

Функции генерации:

- `Hunspell_generate()` — генерация словоформ из основы и аффиксов;
- `Hunspell_generate2()` — генерация с учётом заданных флагов аффиксов;
- Поддержка генерации всех возможных форм или только конкретных (например, множественного числа).

### Работа со словарями

Hunspell загружает словари, состоящие из файлов с расширениями .dic (список слов и их флаги) и .aff (правила аффиксов). Библиотека позволяет управлять несколькими словарями одновременно, включая пользовательские словари.

Функции управления словарями:

- `Hunspell_constructor()` / `Hunspell_destructor()` — создание и уничтожение экземпляра Hunspell с загрузкой словаря;
- `Hunspell_add_dic()` — добавление дополнительного словаря;
- `Hunspell_add()` — добавление слова в пользовательский словарь (во время выполнения);
- `Hunspell_remove()` — удаление слова из пользовательского словаря;
- `Hunspell_add_with_affix()` — добавление слова с указанием примера для наследования аффиксов.

### Обработка текста и кодировок

Библиотека корректно работает с различными кодировками текста, включая Unicode (UTF-8), что позволяет поддерживать множество языков. Внутренние преобразования обеспечивают совместимость между разными кодировками словарей и входного текста.

Функции обработки текста:

- Автоматическое определение кодировки словаря;
- Конвертация входного текста во внутреннюю кодировку при необходимости;
- Поддержка работы с UTF-8 как основной кодировкой в современных версиях;
- Функции для нормализации текста (например, приведение к нижнему регистру с учётом языка).
