Три степени бесполезности прибора
Мы за неделю прошли все три и записали их отдельными классами.
| Что делает прибор | Наш случай в числах | Почему это плохо |
|---|---|---|
| Кричит почти на всё | подпроверка срабатывала на 2200 страницах из 2205 — 99,8%, дав 59 606 находок | сигнал, который есть везде, не отличает ничего от ничего. Именно она одна давала нулевой зелёный результат по всему сайту |
| Кричит на своём | 97% предупреждений — на наши же публичные реквизиты | шум прячет настоящие находки и провоцирует массовую «зачистку», которая ломает рабочее |
| Молчит по построению | строка-исключение оказалась подстрокой внутри той самой строки, ради которой правило написано | худший случай: правило гасит собственный дефект, отчёт зелёный, проблема на месте |
Третий случай опаснее первых двух. Ложную тревогу видно — она раздражает. Молчание выглядит как «всё чисто». У нас два таких правила чуть не сделали числовой чекер молчаливым: второе глушило живое значение из-за слова «устаревшая» в заголовке рядом.
Как отличить шум от находки — то, что сработало у нас
- Посчитать долю, а не количество. «59 606 находок» звучит как катастрофа; «срабатывает на 99,8% страниц» — как сломанный прибор. Это одно и то же число, но выводы противоположные.
- Разобрать выборку руками. Не всю — двадцати случаев хватает, чтобы увидеть, что 97% однотипны. Именно поимённый разбор показал, что за находками стоят наши же реквизиты, а не чужие данные.
- Проверить, не один ли это шаблон. Наш рекорд: 6489 находок оказались одним шаблоном, размноженным на 358 страниц — восемь карточек и четыре плитки. Одна правка генератора закрывала около 6400 находок разом. Список «6489 дефектов» и список «две правки» описывают одну реальность.
- Отделить дефект продукта от дефекта прибора. В другом нашем разборе из пяти проблем три оказались в стенде, а не в измеряемом.
Обратная ошибка: правило, которое не сработало ни разу
Нулевое срабатывание читается как поломка — и почти всегда правило после этого «чинят». У нас было такое: одно правило дало 0 срабатываний на 2196 страницах.
Проверили прямо: по каждой из девяти искомых формулировок — поиск по всему корпусу. По каждой ноль файлов. Правило исправно, просто такого текста у нас не бывает. Более того, для аудита чужих сайтов оно остаётся полезным, где как раз встречается.
И ещё одна ловушка: детектор, который угадывает
Тот же детектор персональных данных на географическом корпусе дал три находки, из которых две оказались улицами, названными в честь людей. Причина техническая и характерная для казахского языка: он агглютинативный, к названию прирастает суффикс, и граница слова не срабатывает там, где её ждёт правило, написанное по русской логике.
Второй маркер, добавленный тогда же, дал два ложных из двух на переписке — слово оказалось частью названия ходового груза. Его убрали. Контрольный прогон на корпусе заведомо без персональных данных: новых ложных срабатываний ноль.
Вывод, который мы держим: детектор, работающий по словарю, обязан иметь контрольный корпус, где срабатываний быть не должно. Без него любое расширение словаря выглядит улучшением.
Что забрать себе
- Доля срабатываний важнее их числа. Выше 20–30% — прибор почти наверняка шумит.
- Массовую зачистку по отчёту прибора не запускают, пока не разобрана выборка: у нас она стёрла бы юридические реквизиты со всего сайта.
- Ноль срабатываний — проверяется поиском, а не починкой.
- У каждого детектора должен быть корпус, на котором он обязан молчать. Иначе расширение правил невозможно оценить.