Дедупликация не даёт модели заучить один пример дважды и потом выглядеть умной на проверке, куда этот пример утеёк. Сравниваю записи по устойчивым идентификаторам, нормализованному тексту и хешам почти-дублей, а не только по именам файлов. Дедупликация стоит после очистки и до разбиения train / validation / test.
Не удаляю единственную копию редкого класса только потому, что у двух строк общий префикс. Политику пишу явно: точное совпадение, совпадение после нормализации или порог похожести, который можно объяснить. Для изображений хеш ловит уменьшенную копию. Для текста нормализованный хеш ловит повтор шапки. Мусор — другой проход: мусор не то же самое, что дубль хорошей строки. См. удаление мусора.
Приёмка — счётчик «до и после», выборка снятых пар и проверка, что у примера из validation нет близнеца в train. Снятые ключи остаются в файле рядом. Один источник часто занимает 1–2 недели, когда схема уже есть.
