Главное Свежее Вакансии Образование
Выбор редакции:
😼
Выбор
редакции
26 139 2 В избр. Сохранено
Авторизуйтесь
Вход с паролем

Отчего же ё-моё мы обижаем букву «ё»

Основатель «Школы траблшутеров» Олег Брагинский и ученик Максим Мухтаров описывают разработку инструмента идеализации эпатажной буквы русского алфавита.

Разница между «Королевой» и «Королёвой» очевидна на слух, но не смущает издателей, экономящих краску при печати больших тиражей. Некоторые интернет-сайты сознательно избегают горизонтального двоеточия, наивно утверждая, что их страницы быстрее индексируются.

Мы решили разработать макрос для MS Word, позволяющий взаимодействовать со спорным символом в трёх режимах:

1. Когда нужно: избирательное соблюдение к радости педантов.

2. Никогда: истребление из текста на радость скупердяям.

3. Всегда: тотальное задействование без исключений.

Начали с модуля «Ищейка», с помощью которого сканированием (1) отобрали 2’000 русских книг (2), пренебрегавших буквой, на которую объявили охоту. Желая поторопить неспешный Word, ограничили количество ошибок на документ в 250 штук (3), что позволило собрать базу слов, потерявших «ё» (4):


Выяснили, что 28 строк дают 25% (5) из полумилионна ошибок, сгруппированных в 110’000 строк:


Уходя от синтетической частотности слов сборной библиотеки, продолжили разработку макросов (6) на самой крупной книге Олега Брагинского «Библия траблшутера», насчитывающей 4 млн символов в 547 главах на 3’200 страницах (7) с расчётным временем чтения в 74 часа (8):


Сформировали перечень многозначных слов корректных с и без буквы «ё» и запрограммировали замены, предусматривающие исправление одной буквы на вторую (9) и наоборот (10). Учли заглавные и строчные буквы в начале слов (11), предусмотрели разнообразие окончаний (12):


В модуле «чЕкЁр» расположили 152 правила (13), которые проверяем за 5 минут (14) по убыванию встречаемости, чтобы сначала корректировать наиболее вероятные огрехи (15). Править ошибки среди частотных строк (16), выбирая кнопки «е» или «Ё», (17) слишком хлопотно и долго:


Спроектировали режимы «Корректора» (18), как описали в третьем абзаце статьи. Вручную заменили все буквы «ё» на «е» (19), создав 10’490 ошибок (20) для последующих экспериментов:


Описали способы бесспорных правок слов (21) по 28’796 маскам (22) с выводом мнемоники для пользователя (23), позволяющей понять, какая из строк инициирует модификацию текста:


Запустили модуль «Ёкатор» и поняли, что не дождёмся завершения работы. Вспомнили ABC-XYZ-анализ и расслоили таблицу коррекций. Разделы ABC сосредоточили 6’400 масок (24), найденных в «Библии траблшутера», XYZ — 22’400 строк (25) библиотеки из четвёртого абзаца:


«Ёкатор А» оперирует с 1’000 строк (26) за 5 минут (27) находит 2’730 ошибок (28) и правит их за 12 минут (29). Здесь и далее не забываем, что работаем с книгой, содержащей 4 млн знаков, что на 48% больше, чем содержит четырёхтомник «Война и мир», насчитывающий 2,7 млн символов:


«Ёкатор B» охватывает 2’100 строк (30), за 11 минут (31) находит 4’900 ошибок (32), исправляет их за 53 минуты (33). Если режим «А» корректирует 90% слов Библии, то «В» при удвоенной доле правил отвечает за следующие 8%. Как видим, правило Парето лучше звучит в формулировке 90/10.


«Ёкатор С» берёт на себя 3’300 строк (34), за 15 минут (35) находит 6’000 ошибок (36) и правит за 44 минуты (37). Режим «С» старательнее «А» в 3,3 раза, но оперирует лишь 2% неточностей, поэтому требуется лишь изощрённым перфекционистам, не жалеющим своего времени.


«Ёкатор Х» сражается с 3’500 строк (38), за 20 минут (39) обнаруживает 14’800 ошибок (40) и возится с ними 107 минут (41). Этот и последующие режимы занимаются ошибками, наличие которых мы предположили теоретически, но не смогли обнаружить среди экспериментальных текстов.


«Ёкатор Y» тоже перебирает 3’500 строк (42), за 19 минут (43) обнаруживает 7’700 ошибок (44) и дотошно правит их 287 минут (45). Отличается от предыдущего режима, который в среднем корректирует 8,4 словоформы по правилу, более скромными показателями: 4,4 правки на строку.


«Ёкатор Z» отвечает за 15’400 строк (46) отрабатывает поиск огрех за 70 минут (47), правит 15’300 ошибок (48) за три часа (49). Объединяет слабейшие правила, исправляя по два слова на строку таблицы коррекций, поэтому справляется быстрее более трудолюбивого режима «X»:


Озадачились производительностью: «Нужно ли упаковывать 107’021 словоформу в перечень из 28’796 правил? Возможно одиночные коррекции окажутся быстрее?» Эксперимент показал, что время правки слова по букве из маски (51) всегда оказывается ниже, чем у операции прямой замены (50):


Опробовали безинтерфейсный режим, усмирив прожорливость Word’a минимизацией операций вывода на экран. Загрузка полного набора правил уложилась в 40 секунд (52), поиск ошибок завершился за 19 минут (53), чистый текст получили ещё через 21 минуту (54):


Так и будем использовать «Ёкатор» для файлов, открытых в редакторе, а «Ищейку» научили работать с директориями, что позволяет исправить ошибки (55) в 2’700 файлах за восьмичасовой рабочий день:


Оптимизируя код «чЕкЁра» и «Ёкатора», создали алгоритм запуска различных процедур коррекции для разных диапазонов таблицы правил (56). Код инструментов, отображаемых на ленте Word, изолировали в модулях для повторного использования (57).

Классами кнопок (58) реализовали обработку событий на динамической форме, а массивами преодолели ограничение VisualBasicв 200 статических элементов. Объекты классов ошибок оформили в глобальный словарь, повысивший удобство программирования поиска и коррекции слов.


За пять месяцев кропотливых исследований создали 30 версий набора макросов коррекции буквы «ё» (59) и 56 раз дополняли таблицу масок (60), исследовали 23’000 книг, найдя в них 504’000 ошибок. Не смогли остановиться и спроектировали «Ударник» — макрос, помогающий расставлять ударения.


Финализируем пользу:

I. Создали инструмент «чЕкЁр», помогающий проставлять «ё» в многозначных словах, не настораживающих Word:

1. Проживая в съёмном жилье, я мечтал иметь собственное жильё.

2. Пока программист наполнял стек, его пуховик оттаял и стёк.

3. Стал настолько матёр, что преподавал в альма-матер.

4. Пчелы не оказалось там, где её ждали пчёлы.

5. Давайте-ка запоём, о том как я читал запоем.

6. Он становится весел, добираясь до вёсел.

7. Не нашёл сверла, там где лежали свёрла.

8. Есть счета? Переведу с валютного счёта!

9. Мои намеренья тверды и мысли твёрды.

10. Тут был сплетён узор ужасных сплетен.

11. Хочется мёду, чтоб плавать в меду.

12. Вы полете грядку словно в полёте.

13. По большому счёту на моём счету.

14. Там, где я мёл, мел не хранили.

15. Смотри: шелка нежнее шёлка.

16. В тёплом месте пахло теплом.

17. В чём виноват, с чем пришёл?

18. В суете он мне суёт баранку.

19. С собою Маша берёт берет.

20. Выпили все, но не всё.

II. Сформировали пакет программ «Ёкатор» для массового обнаружения и автономной коррекции слов с однозначно упущенной буквой «ё» в открытом файле Word.

III. Разработали макрос «Ищейка», способный сканировать папку документов и:

· собирать коллекцию ошибочных слов и формировать сводную частотную таблицу для последующего анализа и дополнения правил коррекции или

· безостановочно исправлять неограниченное количество файлов в безинтерфейсном режиме без вмешательства пользователя.

IV. Обнаружили слова и фразы, которые Word корректирует:

· безапелляционно: пройдённых дорог, утро вечера мудрёнее и

· ошибочно: несовершёнен, паролём, осётры.

V. Спроектировали «Запоминатор» и «Пропускатор», чтобы обрабатывать тексты узких тем по специализированным тематикам, но об этом расскажем после освещения «Ударника».

P.S. Наблюдая, как мучаемся с двухточечным символом, друзья прислали картинку в тему


P.P.S. А за название статьи благодарим партнёра «Школы траблшутеров» Даниила Шмита!

+2
В избр. Сохранено
Авторизуйтесь
Вход с паролем
Комментарии
Олег Брагинский
Юлия, спасибо за поддержку!
Мы старались ;)
Ответить
Выбрать файл
Блог проекта
Расскажите историю о создании или развитии проекта, поиске команды, проблемах и решениях
Написать
Личный блог
Продвигайте свои услуги или личный бренд через интересные кейсы и статьи
Написать

Spark использует cookie-файлы. С их помощью мы улучшаем работу нашего сайта и ваше взаимодействие с ним.