Recursive Data Cleaner: когда LLM делают грязную работу за вас
Очистка данных - это тот этап, на котором застревают 80% проектов по машинному обучению. Вы часами пишете одноразовые скрипты, которые превращают "John Doe (john@mail.com)" в два поля, выковыривают цены из текста и приводят даты к единому формату. А потом приходит новый датасет, и все начинается сначала.
Recursive Data Cleaner предлагает радикально простую идею: пусть LLM сама разберется, как почистить ваши данные. Вы показываете ей несколько примеров "до" и "после", а она генерирует Python-функцию, которая делает это для всего датасета. Рекурсивно, колонка за колонкой, файл за файлом.
Что умеет этот скребок
Библиотека берет на себя три главные боли:
- Анализирует структуру - самостоятельно определяет типы данных, находит вложенные объекты в JSON, разбирается со списками.
- Генерирует код - создает готовые Python-функции для каждой колонки или сложного поля. Не промпты, а настоящий код, который можно потом доработать.
- Работает рекурсивно - если в поле лежит еще один JSON или массив объектов, инструмент ныряет внутрь и чистит уже там.
Звучит как магия? Отчасти так и есть. Но под капотом - довольно прямолинейная цепочка вызовов к OpenAI API (или совместимым эндпоинтам). Вы платите за токены, но экономите часы разработки.
Как это работает технически
Алгоритм напоминает работу опытного дата-инженера, только в 100 раз быстрее:
- Берет образец данных (первые N строк из CSV или JSONL).
- Для каждого поля строит промпт с примером "грязных" и "чистых" значений (вы их задаете).
- Отправляет в LLM с просьбой написать функцию преобразования.
- Тестирует сгенерированную функцию на других примерах, при необходимости уточняет.
- Применяет ко всему датасету, включая вложенные структуры.
Весь процесс занимает минуты вместо дней. Особенно выручает при работе с неструктурированными логами или результатами парсинга - например, после извлечения данных из PDF с помощью LLM, как в нашем гайде по парсингу PDF.
Быстрый старт: от хаоса к порядку за 5 минут
Установка стандартная:
pip install recursive-cleaner
Базовый сценарий для CSV:
from recursive_cleaner import DataCleaner
cleaner = DataCleaner(openai_api_key="ваш_ключ")
# Показываем, что хотим получить
mapping = {
"date": "Привести все даты к формату YYYY-MM-DD",
"price": "Извлечь число, удалить символ валюты и пробелы",
"full_name": "Разделить на first_name и last_name"
}
# Запускаем очистку
cleaner.clean_csv(
input_file="грязные_данные.csv",
output_file="чистые_данные.csv",
column_mapping=mapping
)
Для JSONL с вложенными объектами библиотека автоматически спускается на нужную глубину. Это особенно полезно при построении семантических пайплайнов для LLM, где данные часто имеют сложную иерархию.
С чем конкурирует (и почему выигрывает)
| Инструмент | Подход | Когда выбирать |
|---|---|---|
| Pandas + ручные функции | Пишете каждое преобразование вручную | Когда структура данных никогда не меняется (читай: никогда) |
| OpenRefine | Интерактивная очистка через GUI | Для разовых задач, где не нужна автоматизация |
| Recursive Data Cleaner | LLM генерирует код по примерам | Когда нужно быстро обработать новые типы данных или масштабировать на множество файлов |
Главное преимущество - адаптивность. Сегодня чистите даты, завтра - адреса, послезавтра - медицинские термины (кстати, для медицинских записей есть отдельный метод работы с LLM). Не нужно каждый раз изучать новую библиотеку.
Кому стоит попробовать прямо сейчас
Инструмент создан для конкретных сценариев:
- Дата-инженеры, которые устали от однотипных задач ETL. Особенно если вы строите пайплайны для LLM и данные приходят из разных источников.
- Аналитики, работающие с сырыми экспортами из CRM, логами веб-серверов, результатами опросов.
- Разработчики MVP, которым нужно быстро подготовить данные для обучения модели, а времени на идеальную очистку нет.
Не ждите чудес со сложно структурированными текстами. Если ваши данные - это сплошной нарратив (как в юридических документах), лучше сначала применить специализированные инструменты извлечения, а потом уже чистку.
Что будет дальше с автоматизацией очистки
Recursive Data Cleaner - симптом более крупного тренда: LLM становятся не просто генераторами текста, а полноценными программистскими ассистентами. Скоро появятся аналогичные инструменты для автоматического код-ревью или даже для детекции аномалий в данных (логический детектор, как в этой статье).
Мой прогноз: через год мы будем считать ручную очистку данных таким же анахронизмом, как ручное рецензирование каждой строки кода. Инструменты вроде Recursive Data Cleaner - первый шаг к тому, чтобы данные готовились к анализу быстрее, чем вы успеваете сформулировать задачу.
Попробуйте на своем самом грязном датасете. Худшее, что может случиться - вы сэкономите три часа жизни.