Когда я выпускал Russian Spelling Dictionary 1.0.1, задача была довольно узкой: собрать пригодный для повседневной работы русский орфографический словарь и доставить его пользователю. В предыдущей статье я рассказывал, как появился первый выпуск. Повторять тот рассказ не буду.

Сейчас интереснее посмотреть на весь путь от 1.0.1 до 1.0.5. За четыре выпуска словарь вырос с 179 956 до 550 291 записи. Для CSpell теперь подготовлено 2 342 788 словоформ. Появились отдельные пакеты для Mozilla, LibreOffice и других программ с поддержкой Hunspell. Наконец, в 1.0.5 удалось заметно улучшить подсказки, не изменив распознавание слов.

Поэтому «экспансия» в заголовке — не только про размер. Словарь расширился сразу в трёх направлениях: по составу, по качеству проверки и по числу программ, в которых его можно использовать.

Путь от 1.0.1 до 1.0.5

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

Версия

Записей в .dic

Изменение

Главный результат

1.0.1

179 956

Исходная точка проекта

1.0.2

186 064

+6 108

Осторожное восстановление слов и уточнение морфологии

1.0.3

301 924

+115 860

Первое крупное расширение по корпусным данным

1.0.4

550 291

+248 367

Завершён разбор всего зафиксированного набора кандидатов

1.0.5

550 291

0

Улучшены подсказки и подготовлены четыре готовых пакета

За время от 1.0.1 до 1.0.5 число прямых записей выросло на 370 335 — немного больше чем втрое. Однако между этими двумя цифрами было несколько разных по смыслу этапов.

1.0.2: сначала научиться расширять

В версии 1.0.2 я намеренно не пытался взять всё сразу. В словарь вошли 6 108 новых записей, ещё для 328 записей были уточнены флаги словоизменения. Общий размер вырос до 186 064 записей, а список CSpell — до 1 851 989 словоформ.

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

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

1.0.3: первое большое расширение

Версия 1.0.3 увеличила словарь до 301 924 записей. В выпуск вошли 11 373 записи с полной морфологией и 104 507 точных форм без продуктивного словоизменения.

Результат проверялся на зафиксированном наборе из 582 513 ранее нераспознанных форм. Версия 1.0.3 распознала в нём 177 238 форм. Прирост составил 158 547 форм, за которыми стояло 10 106 776 употреблений в исходных текстах. При этом ни одна форма, которую уже принимал предыдущий выпуск, не была потеряна.

Список для CSpell вырос до 2 064 553 словоформ. Проект уже перестал быть дополнением, которое развивается только вокруг браузера: одна и та же словарная база начала обслуживать сразу несколько способов проверки текста.

1.0.4: закрыть весь набор кандидатов

Самое крупное расширение произошло в версии 1.0.4. Словарь вырос ещё на 248 367 записей и достиг нынешнего размера — 550 291.

К этому выпуску окончательное решение получили все 412 006 кандидатов, оставшихся после предыдущего этапа:

  • 6 874 формы были приняты через полные морфологические семьи;

  • 246 231 форма была добавлена как точная запись;

  • 158 901 кандидат был отклонён.

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

На объединённом корпусе версия 1.0.4 распознала 960 914 из 1 124 212 уникальных форм. По сравнению с 1.0.3 покрытие увеличилось на 255 515 форм без потери уже распознававшихся слов. На отдельном наборе из 39 переводов улучшился каждый документ.

Итоговый список CSpell достиг 2 342 788 словоформ. В версии 1.0.5 он остался таким же.

1.0.5: заняться не размером, а подсказками

После 1.0.4 можно было продолжить наращивание словаря, но у проверки орфографии есть ещё одна заметная пользователю сторона. Мало подчеркнуть ошибку — желательно предложить правильное исправление в первых строках списка.

Для версии 1.0.5 я изменил только директивы подсказок в .aff. Все 550 291 словарная запись и их морфологические флаги остались побайтно такими же, как в 1.0.4. Проверка проводилась на отдельном наборе ошибок, который не использовался при настройке.

Результат

1.0.4

1.0.5

Изменение

Правильный вариант на первом месте

109

146

+33,9 %

Правильный вариант среди первых пяти

165

192

+16,4 %

Правильный вариант найден в списке

169

197

+16,6 %

Правильное исправление оказалось на первом месте ещё в 37 проверочных случаях. В том числе ошибка сабака теперь получает собака первой подсказкой в Hunspell 1.7.2, Firefox 154 и LibreOffice 26.2.4.2.

Одновременно я повторил проверку на всех 550 291 прямых записях и на 59 996 специально подобранных нежелательных формах. Результат по сравнению с 1.0.4 не изменился. Улучшение подсказок не привело к тому, что словарь начал разрешать новые ошибочные формы.

Чего удалось достичь

Если отойти от отдельных версий, путь от 1.0.1 до 1.0.5 дал несколько результатов.

  • Число прямых словарных записей выросло с 179 956 до 550 291.

  • Для CSpell подготовлено 2 342 788 уникальных словоформ.

  • Весь зафиксированный набор из 412 006 кандидатов получил окончательное решение.

  • Покрытие объединённого корпуса выросло без потери уже распознававшихся форм.

  • Правильная подсказка стала попадать на первое место на 33,9 % чаще в контрольной выборке.

  • Один и тот же словарь теперь поставляется в четырёх готовых форматах.

Последний пункт для меня не менее важен, чем рост словаря. Результат работы должен быть не только проверен, но и доступен пользователю без ручной сборки.

Четыре готовых пакета

Все файлы опубликованы в выпуске 1.0.5 на GitHub.

Пакет

Для чего нужен

Размер

XPI

Firefox и Thunderbird

1 954 421 байт

OXT

LibreOffice

1 955 352 байта

ru_RU.txt.gz

CSpell, 2 342 788 словоформ

9 400 568 байт

ZIP с Hunspell

Любая программа, принимающая .aff и .dic

1 953 719 байт

Все пакеты собираются из одной словарной пары и при повторной сборке совпадают побайтно. Внутри нет исполняемых сценариев, сетевых запросов, телеметрии и аналитики: только словарные данные и необходимые описания.

XPI предназначен для программ Mozilla. OXT устанавливается в LibreOffice через обычное управление расширениями. Самостоятельный ZIP позволяет подключить .aff и .dic в любое приложение с поддержкой Hunspell. Для CSpell уже подготовлен сжатый список словоформ.

Сравнение с другими русскими словарями

У русского Hunspell нет одного-единственного словаря. В дистрибутивах Linux, LibreOffice и дополнениях Mozilla много лет используются несколько семейств. Для прямого сравнения я беру число записей в .dic, не смешивая его с количеством словоформ после применения правил.

Словарь

Прямых записей .dic

Особенности

Стандартное семейство LibreOffice/Linux

146 269

Распространённая и консервативная исходная база, от которой начинался проект

AOT из дополнения Mozilla

393 279

Морфология AOT, числовые флаги, строгая работа с ё

AOT из ALT Linux

380 215

Отдельная ветвь AOT с той же системой морфологических флагов

Russian Spelling Dictionary 1.0.5

550 291

Современные корпусные проверки, практичная работа с е и ё, MPL 2.0, четыре способа поставки

Стандартный словарь LibreOffice и Linux часто описывают как словарь примерно на 160 тысяч записей. В зафиксированной исходной версии их 146 269. Именно от этого семейства начинался Russian Spelling Dictionary. Оно хорошо поддерживается приложениями, но его консервативный состав оставляет за пределами проверки заметную часть современной лексики.

AOT значительно крупнее стандартного словаря и остаётся ценным морфологическим источником. На той же выборке, которая использовалась при работе над 1.0.3, он распознал 97 118 форм против 177 238 у Russian Spelling Dictionary 1.0.3.

При этом взять AOT как есть и просто объединить два файла не получится. В нём используется другая система морфологических флагов и строгий вариант словаря «только с ё». Последнее удобно для морфологического анализа, но обычный русский текст часто пишется без точек над е. Практический орфографический словарь должен поддерживать оба варианта и одновременно не разрешать лишние слова.

Доступные ветви AOT основаны на данных, преобразованных в формат Hunspell до 2015 года. Russian Spelling Dictionary проверяется на современных корпусах, сохраняет историю решений и отдельно контролирует распознавание, чрезмерное образование словоформ и качество подсказок.

Таким образом, преимущество версии 1.0.5 не сводится к числу 550 291. Для повседневной проверки важны актуальный состав, практичная работа с е и ё, контролируемая морфология, качество подсказок, воспроизводимая сборка и готовые пакеты для разных программ.

Hunspell используется повсюду

Hunspell давно вышел за пределы отдельного браузера. Его словари используются в Firefox и Thunderbird, LibreOffice, дистрибутивах Linux, редакторах, почтовых программах и средствах разработки.

Этот механизм встречается и в коммерческих российских продуктах. МойОфис поставляет библиотеку libhunspell, а Р7 использует словари русского языка в каталоге dictionaries/ru_RU. Поэтому речь идёт не о дополнении для одного приложения, а о переносимом словарном наборе, который может пригодиться в самых разных продуктах.

Russian Spelling Dictionary распространяется под свободной лицензией MPL 2.0. Разработчик может взять словарную пару из репозитория проекта, подключить её к своему приложению или перейти на неё вместо устаревшего набора. Репозиторий, контрольные суммы и точные версии исходных файлов открыты.

Что я предлагаю проверить

Лабораторные проверки не заменяют живой текст. Поэтому мне особенно интересны результаты в нескольких программах.

Firefox. В каталоге AMO сейчас опубликована версия 1.0.1. Версию 1.0.5 можно взять в виде XPI со страницы выпуска и проверить в отдельном испытательном профиле, допускающем установку такого пакета.

Thunderbird. Для него предназначен тот же XPI. Здесь особенно интересна работа словаря на письмах: коротких фразах, именах, адресах, цитатах и смешанном русском и английском тексте.

LibreOffice. Установите OXT через управление расширениями, перезапустите программу и откройте несколько своих обычных документов. Полезны не только пропущенные правильные слова, но и странные формы, которые словарь внезапно начинает считать допустимыми.

Другие программы с Hunspell. Распакуйте самостоятельный ZIP и подключите ru_RU.aff и ru_RU.dic штатным способом. Для разработчиков это самый простой вариант проверки совместимости без привязки к конкретному магазину дополнений.

Хороший отчёт об ошибке состоит из пяти вещей: название и версия программы, исходное слово, короткий контекст, фактический результат и ожидаемый результат. Для подсказки желательно указать ещё и её место в списке. Такие примеры можно оставить в задачах проекта.

Что дальше

Версия 1.0.5 завершает этап, начатый сразу после первого выпуска. За это время словарь вырос втрое, весь собранный набор кандидатов был разобран до конца, покрытие современных текстов заметно увеличилось, а подсказки стали точнее.

Главное изменение всё же не в размере. Russian Spelling Dictionary превратился из дополнения для браузера в самостоятельный свободный словарный набор с четырьмя способами поставки.

Теперь важнее не ещё одна круглая цифра, а обратная связь из реальных программ и реальных текстов. Если словарь не знает нормального современного слова, принимает явную ошибку или предлагает нелепое исправление — именно такой пример поможет следующему выпуску больше, чем очередная сотня тысяч необъяснённых строк.

Комментарии (1)


  1. qrdl
    04.08.2026 09:46

    Огромное спасибо! Стандартный словарь LibreOffice уже задрал со своей "ё" везде.