Дедупликация корпуса: почти одинаковые тексты
Один текст, учтённый дважды, искажает частоты и объём корпуса. Дубликаты возникают при перепечатке, зеркалировании и копировании пресс-релизов. Ниже — шинглы, порог и фиксация решений.
Почему дубликаты мешают
Один и тот же текст, учтённый дважды, искажает частоты и объём корпуса. Дубликаты возникают при перепечатке, зеркалировании сайтов, копировании пресс-релизов. Без дедупликации статистика описывает не язык, а практику копирования.
Точные дубликаты
Совпадающий текст легко найти по контрольной сумме. Но кодировка и переводы строк могут различаться. Приведите тексты к одному виду и считайте сумму уже после нормализации.
Почти одинаковые тексты
Различия в разметке, рекламных вставках, подписях дают почти совпадающие тексты. Точное сравнение их не найдёт. Нужен метод, устойчивый к небольшим вставкам.
Шинглы
Разбейте текст на последовательности слов фиксированной длины и сравните доли совпадающих последовательностей. Высокая доля означает почти дубликат. Длина последовательности и порог фиксируются.
Порог сходства
Порог выбирается экспериментально: сравните пары, которые считаете дубликатами, и пары, которые не считаете. Один порог на все жанры может не подойти.
Короткие тексты
Для коротких фрагментов шинглы работают плохо: слишком мало данных. Порог для них выше или используется другой метод. Иначе будут ложные срабатывания.
Что делать с найденными парами
Оставить один текст, пометить дубликат или объединить источники. Решение фиксируется в таблице: какая запись основная, какие исключены и почему.
Не удаляйте сразу
Сначала помечайте, потом удаляйте. Исключённый текст может понадобиться при разборе. История решений важна для воспроизводимости.
Перепечатки с изменениями
Один и тот же материал может выйти с другой редактурой. Это не полный дубликат, и удалять его нельзя. Порог сходства стоит подобрать так, чтобы такие пары не считались дубликатами.
Цитаты и повторы внутри текста
Повторяющиеся фрагменты внутри документа — не дубликаты, но они влияют на шинглы. Ограничьте сравнение документами, а не фрагментами.
Влияние на баланс
После дедупликации доли жанров меняются. Баланс пересчитывается заново. Иначе корпус будет считаться сбалансированным по устаревшим числам.
Документирование
В описание корпуса вносятся: метод, длина шингла, порог, число найденных пар, число исключённых документов. Без этого корпус нельзя воспроизвести.
Типичные ошибки
Сравнение без нормализации, один порог для всех жанров, удаление без записи, игнорирование перепечаток с редактурой, пересчёт баланса по старым данным.
Итог
Дедупликация выполнена, когда пары найдены, решения записаны, а баланс пересчитан.
Пошаговый порядок
Сначала нормализуйте тексты: кодировка, пробелы, регистр в зависимости от метода. Затем найдите точные совпадения по контрольной сумме. Затем посчитайте шинглы и сравните пары выше первого порога. Наконец просмотрите пары вручную и зафиксируйте решения. Такой порядок отсекает основную массу дублей дешёвым способом, а ручную проверку оставляет для спорных случаев, которых обычно немного.
Сколько пар проверять
Если пар выше порога сотни, просматривать все вручную нереально. Начните с самых похожих, затем перейдите к пограничным. Запишите, до какого порога просмотрели. Часть пар останется непроверенной, и это ограничение указывается в описании корпуса. Лучше честно указать границу проверки, чем утверждать, что дубликатов нет.
Влияние на частоты
Дедупликация меняет частотные списки. После исключения дублей пересчитайте ключевые показатели и сравните с прежними. Если выводы изменились, это важный результат, а не повод вернуть старые данные. В отчёте укажите, какие числа относятся к версии до дедупликации, а какие после, чтобы читатель не смешивал их.
Когда дубликаты полезны
Иногда повтор важнее сходства: перепечатка показывает распространение текста. Если это предмет исследования, дубликаты не удаляются, а помечаются как связанные. Тогда анализ частот выполняется на подмножестве уникальных текстов, а исследование распространения — на полном наборе. Две задачи требуют двух наборов данных, и это нормально.
Хранение исключённых
Исключённые тексты не удаляются безвозвратно. Они хранятся в отдельной папке с пометкой, с каким документом совпали и на каком основании. Это позволяет вернуться к решению, если метод изменился. Пространство, которое они занимают, невелико по сравнению со стоимостью повторного сбора и разбора.
Порог и жанр
В новостях перепечатки почти дословные, в научных текстах совпадения фрагментарны. Один порог для всех жанров даёт либо пропуски, либо ложные срабатывания. Считайте сходство отдельно по жанрам или подберите порог на размеченной выборке, а затем применяйте к остальным с оговоркой.
Повторная проверка
После исключения дублей прогоните поиск ещё раз. Иногда удаление одного текста делает похожими два других, ранее не попадавших в пары. Повторная проверка занимает минуты, если метод автоматизирован. Это страховка от цепочек копий, которые не видны при первом проходе.
Чек-лист
- Тексты нормализованы до сравнения.
- Точные дубликаты найдены по контрольной сумме.
- Длина шингла и порог зафиксированы.
- Пары просмотрены вручную до указанной границы.
- Решения по каждой паре записаны.
- Исключённые тексты сохранены отдельно.
- Баланс пересчитан после дедупликации.
Частые вопросы
Чем искать точные дубликаты?
Контрольной суммой после нормализации.
Что такое шинглы?
Последовательности слов фиксированной длины для сравнения.
Что делать с найденной парой?
Пометить, выбрать основную запись и записать решение.
Пример
Корпус на треть состоял из перепечаток одного пресс-релиза. После дедупликации объём уменьшился, а частотный список изменился настолько, что прежние выводы пришлось пересмотреть.
Итог
Дедупликация выполнена, когда пары найдены, решения записаны, а баланс пересчитан.