Itinai.com it company office background blured chaos 50 v 41eae118 fe3f 43d0 8564 55d2ed4291fc 3

Как быстро очистить и токенизировать веб‑корпус в FineWeb: пошаговый код для потоковой фильтрации и дедупликации

Itinai.com it company office background blured chaos 50 v 41eae118 fe3f 43d0 8564 55d2ed4291fc 3

Что делает представленный код и зачем он нужен?

Код – это типичный «первый‑выстрел» при исследовании большого корпуса текстов, полученного из веб‑краулов. Он позволяет:

  • извлечь доменное имя из URL;
  • подсчитать частотность доменов;
  • визуализировать токен‑жёсткость, языковую уверенность и сжатие;
  • получить быстрый «сводный» отчёт по документам.

Если вы когда‑нибудь сталкивались с тем, что в датасете миллионы строк URLs, а дальше – только хаос, то такие «чистильщики» становятся спасением.

Подготовка данных: быстрый и надёжный способ

Для начала убедитесь, что у вас установлены нужные библиотеки:

  • pandas – работа с таблицами (docs);
  • urllib.parse – разбор URL (python docs);
  • matplotlib – построение графиков (docs);
  • fasttext (опционально) – оценка языковой чистоты (GitHub);
  • datatrove – готовый пайплайн для FineWeb (GitHub).

Шаг 1: Выделение домена

Код берёт столбец url, проверяет, что значение – строка, и с помощью urlparse получает netloc. Префикс www. отбрасывается, а если в ячейке не строка – ставится “?”.

Это гарантирует, что даже «мусорные» записи не сломают дальнейший анализ.

Шаг 2: Топ‑15 доменов

Метод value_counts() мгновенно подсчитывает, какие хосты наиболее часто встречаются. Вывод в виде горизонтального бар‑чарта (см. ниже) сразу даёт представление о «тяжелых» источниках данных.

Шаг 3: Диагностические гистограммы

Четыре графика позволяют быстро оценить, насколько ваш набор подходит для обучения языковой модели:

  • Token count per document – распределение длины документов (ограничиваем до 4000 токенов, чтобы убрать выбросы);
  • fastText English language score – проверка, что тексты действительно на английском (порог 0.65, как в FineWeb);
  • Characters per token – «компрессия» токенов, полезно при планировании storage;
  • Top domains – уже обсуждалась выше, но на графике легче увидеть «узкие места».

Шаг 4: Сводка статистики

Текстовый блок print("SUMMARY") выводит ключевые цифры:

  • Общее количество документов;
  • Суммарное число токенов (экономия/затраты GPU);
  • Медиана токенов на документ (помощь в выборе max_length);
  • Уникальное число доменов (разнообразие источников);
  • Средний language_score (общая «англоязычность»);
  • Количество почти‑дублирующих пар (можно отфильтровать);
  • Сколько документов отклонено фильтрами.

Эти цифры позволяют принимать решения без «бесконечных» экспериментов.

Шаг 5: Что делать дальше?

В конце кода уже перечислены рекомендации. Кратко:

  • Замените тестовый набор sample-10BT на реальный краул (например, CC-MAIN-2024-10 с Common Crawl);
  • Увеличьте N_DOCS – более крупная выборка даст надёжные оценки;
  • Запустите полный пайплайн datatrove, чтобы воспроизвести процесс FineWeb от начала до конца.

Практические подсказки

  • Не бойтесь отбрасывать «мусор». Даже 5 % «какого‑то» домена могут исказить результаты, если они содержат скрипты, рекламные тексты и т.п.
  • Порог language_score. Если ваша задача допускает более низкое качество, можно снизить порог до 0.5, но помните о росте «шумных» документов.
  • Оптимизация памяти. При работе с >10 млн строк используйте df['token_count'].astype('uint32') и аналогично для остальных числовых колонок.
  • Проверка дубликатов. Функция datatrove.pipeline.deduplicate (см. GitHub) быстрее, чем вручную сравнивать хэши.

Заключение

Представленный набор команд – это «чек‑лист» для быстрой оценки качества веб‑корпуса. Он поможет вам понять, откуда берутся данные, насколько они чисты и какие дальнейшие шаги нужны для построения надёжной языковой модели. Всё, что требуется – несколько минут в Jupyter, пару библиотек и немного здорового скептицизма.

Запустите свой ИИ проект бесплатно

ИИ-агенты искусственный интеллект онлайн для бизнеса

Лучший ИИ онлайн