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

admin 2024年5月3日00:30:21评论15 views字数 2086阅读6分57秒阅读模式

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

关于DataTrove
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:
https://github.com/huggingface/datatrove

原文始发于微信公众号(FreeBuf):DataTrove:一款针对大规模文本数据的处理、过滤和消除重复数据工具

 

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年5月3日00:30:21
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   DataTrove:一款针对大规模文本数据的处理、过滤和消除重复数据工具http://cn-sec.com/archives/2705658.html

发表评论

匿名网友 填写信息