Главное Свежее Вакансии   Проекты
Разместить своё объявление
😼
Выбор
редакции
7 272 16 В избр. Сохранено
Авторизуйтесь
Вход с паролем

Как быстро привести текст в божеский вид

Основатель Школы траблшутеров Олег Брагинский о том, как они вместе с учеником за 24 дня разработали инструмент для автоматической коррекции текстов.

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

Декан нашёл виновника «выдающихся» знаний, и меня вызвали «на ковёр». При условии действительности полученных оценок рассказал секрет: на третьем вопросе стал очевиден недочёт компьютерной программы — перед верным ответом стоял лишний пробел. Заметить помогла привычка выравнивать текст ассемблера.

Вторая встреча с непечатаемым знаком настигла через 15 лет корпоративной жизни. Оказалось, лишний пробел в договорах потребительского кредитования приводил к ежегодному расходу дополнительных $80’000. Такова сила масштаба и цена невнимательности к рядовым мелочам. Кто бы знал, что пустота имеет «вес»?

Совершенствуя стилистику нормативной базы, в 2013 году наткнулся на потрясающий документ «РИА Новости»: 20 страниц доходчивой инфографики наглядно и придирчиво демонстрировали неочевидные правила оформления текста. Начались доказательные бои с методическими подразделениями и канцелярией.


Появилась «дурацкая» привычка «доводить» документ до ума, прежде чем дать ответ по существу. Искоренял двойные пробелы, восстанавливал «справедливое» тире, следил за корректностью написания цен. Полюбил неразрывные пробелы у коротких слов, стал козырять верными видами кавычек: «ёлочек и „лапок“».

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

Три недели назад на занятиях Школы траблшутеров по Excel знаниями блеснул новый ученик — студент 3-го курса Факультета вычислительной математики и кибернетики МГУ Максим Мухтаров. Договорились написать группу макросов «Корректор» для исправления очевидных ошибок и выдачи гипотез, о которых молчит Word.

Создавая инструмент «Типограф» начали с простых замен:

1) двойных пробелов на одинарные

2) недопустимых удвоений знаков препинания

3) дефисов и сверхдлинных тире, обрамлённых пробелами, на корректные аналоги

и удалений:

4) непечатаемых знаков перед концом строк

5) пробелов в качестве последних символов в ячейках таблиц

6) мягких переносов слов, произраставших из «древних» источников.

Кнопке «Разместить» (слева внизу формы) придали функциональность, которой Word лишён начисто: аккуратно разместить панель макроса рядом с окном редактирования файла, чтобы не заслонять текст:


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


И сокращениями, в которых она обязательна:


Учли требование неразрывности 1-3 буквенных предлогов с последующим словом:


И аналогичное правило для союзов:


Междометиями решили не заморачиваться — редки в деловых текстах, а вот на вкладку «Формулы» вынесли правила написания арифметических действий, операций сравнения и указания времени:


Особыми посчитали случаи, когда:

1) текст содержит неявные гиперссылки, выглядящие как обычный стиль

2) слова состоят из смешанных букв — латиница и кириллица, нераспознаваемые Word

3) необходимо посчитать количество глав документа или приблизительное время чтения:


Слова смешанных букв массово обнаружились в переменных исследований, наткнулись на неочевидное символоподобие: написание английского слова party через кириллическое «г». Поняли, что Word не позволяет быстро дать «язык» блоку текста и создали выделенные кнопки для английского и русского.

После коррекции очевидных и бесспорных небрежностей увлеклись гипотезами:

1) кавычки, знаки валют, проценты

2) лишние переводы строк, групповые табуляции

3) многоточие как символ, а не цепочка трёх знаков:


Не смогли остановиться и перешли к более сложным случаям. Знаете, как сочетаются восклицательный и вопросительный знаки? Второй всегда идёт первым: «?!», а дружат с многоточием так: «!..» и «?..»:


Гипотезы, работающие с вероятностью ниже 50%, решили не отбрасывать — перенесли на вкладку «Слабые», чтобы продолжить исследование и уточнить правила. Здесь же разместили разделение на триады четырёхзначных чисел, начинающихся единицей и двойкой — чаще оказываются годами:


Пройдясь по старым документам, с удивлением узнали, что многие содержат численные помарки. Количество неточностей доходило до сотни на многостраничный файл. Решили разработать инструмент «Ищейка», чтобы в потоковом режиме собирать ошибки для анализа или массово править автоматически:


Начали со сбора неточностей силами самого Word: спрашивали программу, какие слова неизвестны. После обработки 100 документов «родился» файл на 32’000 сводных ошибок:


Стали править очевидные упущения вроде слова «ее». Программа проверки орфографии Microsoft предлагает варианты: «ею», «ещё», «еде», «еже», «еле», хотя не верен ни один. Так родился «Ёкатор», исправляющий ошибки забывчивости «ё» поштучно или сразу все:


Столкнулись с полезным сопутствующим эффектом: исправленные документы ожили красными и голубыми подчёркиваниями. Выяснили, что Word имеет ограничение на количество отмечаемых спорных фрагментов текста, но так увлеклись добавлением слов, содержащих «ё», что уткнулись в новую границу.

Оказалось, есть предел количеству кнопок на формах макросов. Пришлось написать процедуру «собственных» элементов управления, мимикрируя под стиль Microsoft. Смогли обеспечить коррекцию 73% ошибок на девяти вкладках. Начали переходить от фрагментов текста к словоформам, но об этом напишем в другой раз.

Разобрались, что Word медленно работает с гиперссылками, — поняли, что ошибки следует искать не с начала документа, а после оглавления — на нём программа жутко «тормозит». Очередным шагом стала попытка «Ищейки» массово оценивать количество ошибок в файлах и править в автономном режиме на уровне папок:


Так, мы за 24 дня (работая вдвоём по 4 часа в сутки, включая время исследований) создали пресловутую «кнопку», приводящую в экстаз редакторов СМИ и педантичных читателей. Динамика размера «Корректора» отражает попытки оптимизации кода для ускорения работы макроса:


Не зря говорят: «Желание и труд всё перетрут». Чего и вам искренне желаем!

Читайте также:

Бесплатные курсы программирования от самых лучших ВУЗов мира: подборка

Где открыть бизнес и как сфокусировать мобильную рекламу

Подписчик по 49 копеек: миф или реальность?

Как приманить сильных сотрудников

+3
В избр. Сохранено
Авторизуйтесь
Вход с паролем
Комментарии
Первые Новые Популярные
Михаил Лялин
Доступен для скачивания? Лицензия?
Ответить
Олег Брагинский
Михаил, занимаемся траблшутингом ;) ... программы не продаём. В рамках консультации продемонстрируем, объясним технологию - легко воссоздадите сами.
Ответить
Lyalin Mikhail
спасибо, но уже есть на вооружении аналогичные и более удобные программы для "причёсывания" текстов
Ответить
Олег Брагинский
Михаил, буду искренне рад совету какие программы стоит посмотреть! Ежедневно читаю книги до выхода в печать - последние 5'000 содержат содержат более четверти миллиона ошибок, которые правит наш макрос, но не видят профессиональные программы и надстройки. Возможно ужасает интерфейс нашего макроса, но он таким сделан для исследователей. Любители могут нажать кнопку "Исправить всё" и четверть миллиона ошибок в книгах 7 издательств за 8 лет исчезнут за 160 часов, что в тысячи раз быстрее ручного подхода.
Ответить
Ivan Tarazevich
Спасибо за информацию, закинул в поддержку продуктов Office. Пусть дорабатывают продукты свои. Думаю им будет полезно узнать.
Молодцы что делаете такие доработнки, но лучше еще подником закинуть разрабам, пусть улучшают свой продукт, так будет польза всем.
Ответить
Олег Брагинский
Спасибо, Иван, очень приятно! Microsoft уже дважды покупала наши разработки ;)
Ответить
Сергей Аримов
Намек: сейчас модно выкладывать в опенсорс ))
Ответить
Олег Брагинский
Сергей, спасибо! Уже десятки людей и компаний предложили деньги за макрос ;) Подход предназначен для внутренних задач Школы траблшутеров и продолжит дорабатываться внутри ;) Через неделю напишем о второй фазе.
Ответить
Шаров Александр
Как быстро привести текст в божеский вид?
24 дня, 4 часа в день, 2 человека. 24х4х2=192 человеко-часа. Очень быстро в божеский вид текст вы привели. Можно сказать моментально.
Ответить
Олег Брагинский
Александр, мы создали инструмент, с помощью которого привели в божеский вид 5’000 книг, изданных за последние 8 лет. Исправили четверть миллиона ошибок одной кнопкой, которую действительно создавали 200 человеко-часов. Теперь используем макрос, для приведения «рукописей» в божеский вид одной кнопкой ;)
Ответить
Шаров Александр
Так вы все-таки создали инструмент. И материал как раз про создание инструмента.

Как построить дорогу за 1 день?
Короче, добываете железную руду, отливаете чугун, потом сталь, потом прокат. Это у нас будет рама асфальтоукладчика.
Затем добываете нефть, перегоняете в дизель. Это у нас будет топливо.
Затем строите асфальтовый завод. Это у нас будет материал.
Потом добываете щебень, копаете песок.
....
Прошло 100500 лет.
Ну а теперь начинаем делать дорогу за 1 день.
Вот примерно такой у вас статья вышла.
Ответить
Олег Брагинский
Александр, всё верно! Вы правы ;) Но статья не только об этом. Важно додуматься и сделать. Многие заканчивают на первом этапе и вечно ходят с идеей в поисках заказчика и исполнителя. Мы сами придумали идею, сами реализовали, показав пример, как из топора можно сварить кашу ;)
Ответить
Александр Сысоев
Олег, вдохновившись статьёй, решил подписаться на рассылку на вашем сайте.
Ткнул галку "получать бонусы", а потом передумал и снял её.
Вижу одно поле для ввода email-а, оно заполнено, нажимаю отправить, но сайт требует от меня телефон, причём на английском языке, хотя сайт русскоязычный.
Передайте пожалуйста разработчику, что есть ещё один трабл, который надо зашутить :)
Ответить
Олег Брагинский
Александр, спасибо на добром слове! К сожалению, не смог воспроизвести ошибку на телефоне (Android 10), планшете (iPadOS 13.2.3), ноутбуке (Windows 10). Разработчик - я ;) Буду рад исправить неточность!
Ответить
Svetlana Kryuchkova
Спасибо за интересную статью
Ответить
Олег Брагинский
Светлана, это вам спасибо за поддержку!
Ответить
Выбрать файл
Блог проекта
Расскажите историю о создании или развитии проекта, поиске команды, проблемах и решениях
Написать
Личный блог
Продвигайте свои услуги или личный бренд через интересные кейсы и статьи
Написать

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