DataTrove:一款针对大规模文本数据的处理、过滤和消除重复数据工具

news2024/12/23 13:42:09

关于DataTrove

DataTrove是一款针对大规模文本数据的处理、过滤和消除重复数据工具,该工具可以通过提供一组平台无关的可定制管道处理块,帮助广大研究人员从各种复杂脚本中解放出来,同时还允许我们轻松添加自定义功能。

DataTrove所实现的数据处理管道与平台无关,可以在本地或slurm集群上运行。该工具因其较低的内存使用率和多步骤设计使其非常适合于大型工作负载,例如处理LLM的训练数据等场景。

除此之外,该工具还可以通过fsspec支持本地、远程和其他文件系统。

工具安装

由于该工具基于Python 3开发,因此我们首先需要在本地设备上安装并配置好Python 3环境。

pip安装

pip install datatrove[FLAVOUR]

可用的[FLAVOUR]如下(可以使用,同时安装多个,例如[processing,s3]):

1、all:安装所有组件

pip install datatrove[all]

2、io:读取warc/arc/wet文本

pip install datatrove[io]

3、processing:文本数据提取、过滤和处理

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:精确消除重复数据;

exact_substrings.py:ExactSubstr的运行样例;

工具使用

读取数据

一般来说,管道会以一个Reader块作为开始,大多数Reader需要接收一个data_folder参数,即包含了待读取数据的目录路径。

这些文件将分布在每个任务中。如果有N个任务,序号为i的任务(从0开始)将处理文件i、i+N、i+2N、i+3N,...

在内部,每个Reader在创建Document对象之前会读取数据并将其转换为字典。

下面给出的是常见的Reader参数选项:

text_key:包含了每个样本字符串内容的字典键,默认为text;

id_key:包含了每个样本id的字典键,默认为id;

default_metadata:包含默认元数据值的字典;

recursive:是否递归读取data_folder子目录中的文件;

glob_pattern:匹配指定的文件,例如glob_pattern="*/warc/*.warc.gz",将匹配warc目录中所有.warc.gz后缀的文件;

adapter:获取Reader读取的原始目录,并返回一个字典;

limit:仅读取有限数量的样本,主要用于测试和调试;

提取文本

你可以使用Extractor从原始HTML中提取文本内容,DateTrove中最常见的Extractor就是Trafilatura,它需要使用到trafilatura库。

过滤数据

在任何数据处理管道中,过滤器Filter都是最重要的部分,DataTrove的Filter需要获取一个Document对象,并返回一个布尔值,即True就保留文档,False就移除它。

存储数据

数据处理完成之后,我们还需要将结果存储到某个地方,这里就需要使用到Writer组件了。Writer需要接收一个output_folder和output_filename:

JsonlWriter(

    f"{MAIN_OUTPUT_PATH}/non_english/",

    output_filename="${language}/" + DUMP + "/${rank}.jsonl.gz",  # folder structure: language/dump/file

)

消除重复数据

关于消除重复数据的使用,可以参考项目提供的minhash_deduplication.py、sentence_deduplication.py和exact_substrings.py脚本。

DateTrove Document对象

每一个管道块处理数据的格式为DateTrove文档格式:

text:每一个样本的实际文本内容;

id:样本的唯一ID(字符串);

metadata:存储额外信息的字典;

许可证协议

本项目的开发与发布遵循Apache-2.0开源许可证协议。

项目地址

DataTrove:【GitHub传送门】

参考资料

fsspec: Filesystem interfaces for Python — fsspec 2024.2.0+1.g510ca5d.dirty documentation

A Python package & command-line tool to gather text on the Web — trafilatura 1.8.1 documentation

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1639179.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

再生龙clonezilla使用方法

目录 本文相关内容的介绍服务器窗口重定向引导进入再生龙系统检查本机操作系统的引导模式 再生龙基础功能选择选择 device-image选择ssh_server 网络配置ssh_server 配置ssh_server 镜像存储路径 再生龙抓取操作系统抓取镜像的命名 再生龙恢复操作系统拉取镜像的选择 本文相关内…

OpenCV4.9的点多边形测试(65)

返回:OpenCV系列文章目录(持续更新中......) 上一篇:OpenCV的图像矩(64) 下一篇:OpenCV4.9的基于距离变换和分水岭算法的图像分割(66) Point Polygon Test(点多边形测试)是 OpenCV 库中的一个功能,用于判…

Windows安装mysql8.0.20

目录 1.下载安装包mysql8.0.20 2.配置MySQL环境变量 3.开始安装 ​编辑4.打开cmd命令行 5.Navicat测试连接 1.下载安装包mysql8.0.20 MySQL :: Download MySQL Community Server (Archived Versions) 2.配置MySQL环境变量 3.开始安装 将压缩包安装到指定路径 编辑my.ini文件…

一起Talk Android吧(第五百五十八回:lombok用法)

文章目录 1. 概述2. 使用方法3. 内容总结 各位看官们大家好,上一回中介绍了如何获取文件读写权限的知识,本章回中将介绍lombok相关的知识。闲话休提,言归正转,让我们一起Talk Android吧! 1. 概述 这是一个java库,用来…

[系统安全] 六十.威胁狩猎 (1)APT攻击检测及防御与常见APT组织的攻击案例分析

您可能之前看到过我写的类似文章,为什么还要重复撰写呢?只是想更好地帮助初学者了解病毒逆向分析和系统安全,更加成体系且不破坏之前的系列。因此,我重新开设了这个专栏,准备系统整理和深入学习系统安全、逆向分析和恶意代码检测,“系统安全”系列文章会更加聚焦,更加系…

踏上R语言之旅:解锁数据世界的神秘密码(五)

线性与非线性模型及R使用 文章目录 线性与非线性模型及R使用一、数据的分类与模型选择1.变量的取值类型 二、广义线性模型广义线性模型概述Logistic模型 总结 一、数据的分类与模型选择 1.变量的取值类型 因变量记为y,解释变量记为x1,x2,… 因变量y一般…

Coursera: An Introduction to American Law 学习笔记 Week 05: Criminal Law

An Introduction to American Law 本文是 https://www.coursera.org/programs/career-training-for-nevadans-k7yhc/learn/american-law 这门课的学习笔记。 文章目录 An Introduction to American LawInstructors Week 05: Criminal LawKey Criminal Law TermsSupplemental Re…

边沿JK触发器

边沿JK触发器 电路组成 & 逻辑符号 工作原理 Q n 1 D Q^{n1}D Qn1D J Q n ‾ K Q n ‾ \overline{\overline{JQ^n}KQ^n} JQn​KQn​ ( J Q n ) ( K ‾ Q n ‾ ) (JQ^n)(\overline{K}\overline{Q^n}) (JQn)(KQn​) J K ‾ J Q n ‾ K ‾ Q n Q n ‾ Q n J\over…

解救应用启动危机:Spring Boot的FailureAnalyzer机制

目录 一、走进FailureAnalyzer 二、在Spring Boot中如何生效 三、为什么可能需要自定义FailureAnalyzer 四、实现自定义基本步骤 (一)完整步骤要求 (二)注册方式说明 通过Spring Boot的spring.factories文件(建…

Java中的字符流

字符流字节流编码表 Java为什么可以区分字母和汉字 package day3; ​ import java.io.UnsupportedEncodingException; import java.lang.reflect.Array; import java.util.Arrays; ​ public class Test {public static void main(String[] args) throws UnsupportedEncoding…

文件批量高效管理,批量将PDF类型文件移动到指定文件夹里,实现文件高效管理

文件的管理与整理成为了我们生活中不可或缺的一部分。面对堆积如山的PDF文件,你是否也曾感到手足无措、焦头烂额?现在,有了我们的批量文件管理工具,PDF文件的管理将变得前所未有的高效与简单! 首先,我们要…

用龙梦迷你电脑福珑2.0做web服务器

用龙梦迷你电脑福珑2.0上做web服务器是可行的。已将一个网站源码放到该电脑,在局域网里可以访问网站网页。另外通过在同一局域网内的一台windows10电脑上安装花生壳软件,也可以在外网访问该内网服务器网站网页。该电脑的操作系统属于LAMP。在该电脑上安装…

Android 开发部分基础工具使用

c调试 在NDK调试的时候,如果找不到 符号的话,我们可以在调试配置中添加符号地址的全路径一直到根目录:,xxx/armeabi-v7a: You must point the symbol search paths at the obj/local/ directory. This is also not a …

C++奇迹之旅:C++内存管理的机制初篇

文章目录 📝C/C内存分布🌠 C语言中动态内存管理方式🌉C内存管理方式 🌠new/delete操作内置类型🌉C与C链表构建对比 🚩总结 📝C/C内存分布 这是C/C中程序内存区域划分图: 数据段&am…

基于springboot+vue+Mysql的网上商城购物系统

开发语言:Java框架:springbootJDK版本:JDK1.8服务器:tomcat7数据库:mysql 5.7(一定要5.7版本)数据库工具:Navicat11开发软件:eclipse/myeclipse/ideaMaven包:…

蓝桥杯练习系统(算法训练)ALGO-951 预备爷的悲剧

资源限制 内存限制:512.0MB C/C时间限制:1.0s Java时间限制:3.0s Python时间限制:5.0s 问题描述 英语预备爷gzp是个逗(tu)比(hao),为了在即将到来的英语的quiz中不挂科,gzp废寝忘食复习英语附录单词…

V23 中的新增功能:LEADTOOLS React Medical Web 查看器

LEADTOOLS (Lead Technology)由Moe Daher and Rich Little创建于1990年,其总部设在北卡罗来纳州夏洛特。LEAD的建立是为了使Daher先生在数码图象与压缩技术领域的发明面向市场。在过去超过30年的发展历程中,LEAD以其在全世界主要国家中占有的市场领导地位…

JUC常见类

背景 JUC是java.util.concurrent的简称,这个包里面存放的都是和多线程相关的类,在面试中非常的重要 目录 1.Callable接口 2.ReentrantLock 3.信号量Semaphore 4.CountDownLatch 5.集合的线程安全问题 1.Callable接口 1.1.认识Callable接口 &#x…

phpstudy 搭建 upload-labs 文件上传靶场

phpstudy 搭建靶场:下载安装好phpstudy后,下载靶场源码: upload-labs下载地址: https://github.com/c0ny1/upload-labs 下载完压缩文件,解压文件,解压后的文件夹命名为upload--labs 将解压后到文件夹放…

爱普生晶振在物联网LoRa通讯中的应用

LoRa 是LPWAN通信技术中的一种,是美国Semtech公司采用和推广的一种基于扩频技术的超远距离无线传输方案。这一方案改变了以往关于传输距离与功耗的折衷考虑方式,为用户提供一种简单的能实现远距离、长电池寿命、大容量的系统,进而扩展传感网络…