Предобработка: что чистить, а что портить нельзя
Обработка естественного языка (NLP) · Урок 2 / 24
Каждое удаление символа — это гипотеза
Типовой скрипт очистки текста выглядит одинаково в сотне репозиториев: нижний регистр, выбросить пунктуацию, выбросить цифры, выбросить стоп-слова, схлопнуть пробелы. Каждая строка этого скрипта — утверждение, что удаляемое не несёт информации для вашей задачи. Половина этих утверждений обычно ложна, и обнаруживается это на продакшене.
Что чистят почти всегда
- Служебная разметка. HTML-теги, остатки markdown, подписи писем, цитируемая история переписки. В обращении в поддержку три четверти символов бывают цитатой предыдущего письма, и модель обучается на ней вместо нового вопроса.
- Невидимые символы. Неразрывный пробел, мягкий перенос, нулевой пробел, разные виды кавычек и тире. Они превращают одно слово в два разных токена и ломают точные совпадения.
- Дубликаты. Один и тот же текст, попавший в выборку сорок раз, перекашивает и обучение, и оценку. Особенно опасен дубликат, разошедшийся между обучением и тестом.
- Кодировочный мусор. Битая кириллица, двойное перекодирование, случайные последовательности вопросительных знаков — признак сломанного источника, а не текста.
Что портить нельзя
Регистр несёт информацию: в письме, набранном капсом, содержится тональность, а «МТС» и «мтс» после нижнего регистра неотличимы от предлога в некоторых контекстах. Пунктуация несёт границы предложений, а восклицательные знаки и многоточия — эмоцию; для тональности их удаление стоит нескольких пунктов качества. Цифры несут суть в финансовых и медицинских текстах: убрав их, вы уравняли счёт на девять тысяч и на девять миллионов. Стоп-слова содержат отрицание: удалив «не» и «без», вы превратили «не работает» в «работает». Эмодзи в отзывах и переписке — сильный сигнал тональности, а не шум.
операция безопасна для опасна для нижний регистр тематика, поиск сущности, аббревиатуры, тональность удаление пунктуации мешок слов разбиение на предложения, эмоция удаление цифр тематика финансы, медицина, логистика удаление стоп-слов поиск по ключевым отрицание, намерение
Правило порядка
Чистка идёт до токенизации и должна быть одинаковой на обучении и на инференсе — расхождение здесь даёт самый неприятный класс багов: метрики на тесте отличные, в проде хуже, а различие невидимо глазом. Способ проверить: возьмите сто случайных документов, прогоните через конвейер и посмотрите на них до и после в двух колонках. За полчаса такого чтения обычно находится три ошибки, которые иначе жили бы месяцами.
Шпаргалка
- Каждая операция очистки — проверяемая гипотеза о том, что удаляемое не информативно.
- Цитаты писем, невидимые символы и дубликаты убирают почти всегда.
- Регистр, отрицания, цифры и эмодзи удаляют только с доказательством, что они не нужны.
- Конвейер очистки идентичен на обучении и в проде, иначе метрики врут.
Прогоните сто случайных документов своего корпуса через текущую очистку и выложите их в две колонки: до и после. Найдите и опишите минимум пять случаев, где чистка удалила значимое, и минимум три случая, где мусор остался. Для каждой операции конвейера напишите одну строку: какая гипотеза за ней стоит и подтверждается ли она на вашем корпусе. Укажите, какие операции вы после этого убрали или добавили.