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

关于DataTrove

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

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

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

→点击获取网络安全资料·攻略←

200多本网络安全系列电子书
网络安全标准题库资料
项目源码
网络安全基础入门、Linux、web安全、攻防方面的视频
网络安全学习路线图

 

工具安装

由于该工具基于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:存储额外信息的字典;

网络安全学习资源分享:

给大家分享一份全套的网络安全学习资料,给那些想学习 网络安全的小伙伴们一点帮助!

对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。

因篇幅有限,仅展示部分资料,朋友们如果有需要全套《网络安全入门+进阶学习资源包》,需要点击下方链接即可前往获取 

读者福利 | CSDN大礼包:《网络安全入门&进阶学习资源包》免费分享(安全链接,放心点击)

同时每个成长路线对应的板块都有配套的视频提供: 

大厂面试题

 

视频配套资料&国内外网安书籍、文档

当然除了有配套的视频,同时也为大家整理了各种文档和书籍资料

所有资料共282G,朋友们如果有需要全套《网络安全入门+进阶学习资源包》,可以扫描下方二维码或链接免费领取~ 

读者福利 | CSDN大礼包:《网络安全入门&进阶学习资源包》免费分享(安全链接,放心点击) 

特别声明:

此教程为纯技术分享!本教程的目的决不是为那些怀有不良动机的人提供及技术支持!也不承担因为技术被滥用所产生的连带责任!本教程的目的在于最大限度地唤醒大家对网络安全的重视,并采取相应的安全措施,从而减少由网络安全而带来的经济损失。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值