DataTrove — программное обеспечение для крупномасштабной обработки, фильтрации и обработки текста. дублирующиеся данныеинструмент,Инструмент можно обрабатывать, предоставляя набор независимых от платформы настраиваемых блоков обработки конвейера.,Помогите исследователям освободиться от различных сложных сценариев,Это также позволяет нам легко добавлять пользовательские функции.
Конвейер обработки данных, реализованный DataTrove, не зависит от платформы и может работать локально или в кластере Slurm. Низкое использование памяти и многоэтапная конструкция этого инструмента делают его идеальным для больших рабочих нагрузок, таких как обработка данных обучения LLM.
В дополнение к этому инструмент также может поддерживать локальные, удаленные и другие файловые системы через fsspec.
Установка инструмента
Поскольку этот инструмент разработан на основе Python 3, сначала нам необходимо установить и настроить среду Python 3 на локальном устройстве.
pip install datatrove[FLAVOUR]
Доступны следующие [ВКУС] (можно использовать для одновременной установки нескольких, например [обработка, s3]):
1. все: установите все компоненты.
pip install datatrove[all]
2. io: прочитать текст warc/arc/мокрый
pip install datatrove[io]
3. Обработка: извлечение, фильтрация и обработка текстовых данных.
pip install datatrove[processing]
4, s3: поддержка S3
pip install datatrove[s3]
5. cli: инструмент командной строки
pip install datatrove[cli]
Исследователи могут напрямую использовать следующую команду для локального клонирования исходного кода проекта:
git clone https://github.com/huggingface/datatrove.git
Образцы инструментов
process_common_crawl_dump.py: полноценный конвейер, который может читать обычные файлы warc, извлекать содержимое файла, затем фильтровать и сохранять его в S3;
tokenize_c4.py: считывать данные непосредственно в tokenize;
minhash_deduplication.py: полное чтение конвейера и удаление. дублирующиеся данные;
sentence_deduplication.py:точный Устраните дублирующиеся данные;
точный_substrings.py: пример запуска ExactSubstr;
Использование инструмента
Вообще говоря,Конвейер начнется с блока Reader.,Большинству читателей необходимо получить параметр data_folder.,Это включает в себя ожидание Чтения Путь к каталогу данных.
Эти файлы будут распределены внутри каждой задачи. Если задач N, то задача с порядковым номером i (начиная с 0) будет обрабатывать файлы i, i+N, i+2N, i+3N,...
Внутренне каждый Reader Чтение данных преобразует их в словарь перед созданием Объекта документа.
Ниже приведены общие параметры параметров Reader:
text_key: содержит словарный ключ для каждого образца содержимого строки, по умолчанию — текст;
id_key: содержит словарный ключ каждого идентификатора образца, значение по умолчанию — id;
default_metadata: словарь, содержащий значения метаданных по умолчанию;
рекурсивно: следует ли рекурсивно читать файлы в подкаталоге data_folder;
glob_pattern: соответствует указанному файлу, например glob_pattern="*/warc/*.warc.gz", который будет соответствовать всем файлам с суффиксом .warc.gz в каталоге warc;
адаптер: получить исходный каталог, прочитанный Reader, и вернуть словарь;
ограничение: читать только ограниченное количество образцов, в основном используемых для тестирования и отладки;
Вы можете использовать Extractor для извлечения текста из необработанного HTML. текстсодержание,Самый распространенный экстрактор в DateTrove — Trafilatura.,Требуется использование библиотеки trafilatura.
В любом конвейере обработки данных фильтр является наиболее важной частью. Фильтр DataTrove должен получить объект Document и вернуть логическое значение, то есть True для сохранения документа и False для его удаления.
После завершения обработки данных нам еще нужно где-то сохранить результаты, и здесь нам нужно использовать компонент Writer. Writer должен получить выходную_папку и имя выходного_файла:
JsonlWriter(
f"{MAIN_OUTPUT_PATH}/non_english/",
output_filename="${language}/" + DUMP + "/${rank}.jsonl.gz", # folder structure: language/dump/file
)
По поводу использования Устраните дублирующиеся данные вы можете обратиться к скриптам minhash_deduplication.py, предложения_deduplication.py и strict_substrings.py, предоставленным проектом.
Формат данных, обрабатываемых каждым блоком конвейера, — это формат документа DateTrove:
текст: фактическое текстовое содержимое каждого образца;
id: уникальный идентификатор образца (строка);
метаданные: хранилище словаря дополнительной информации;
Лицензионное соглашение
Разработка и выпуск этого проекта соответствуют Лицензионному соглашению с открытым исходным кодом Apache-2.0.
Адрес проекта
DataTrove:
https://github.com/huggingface/datatrove
https://filesystem-spec.readthedocs.io/en/latest/ https://trafilatura.readthedocs.io/en/latest/