#dataset #numbers #cli #ngrams #analyzing #data-processing #big-data

bin+lib wimbd

一个用于检查和分析大型文本数据集的 CLI 工具

4 个版本 (2 个重大变更)

0.3.0 2024 年 6 月 10 日
0.2.0 2024 年 3 月 12 日
0.1.1 2024 年 3 月 7 日
0.1.0 2024 年 1 月 22 日

文本处理 中排名 483

Download history 218/week @ 2024-04-25 4/week @ 2024-05-30 154/week @ 2024-06-06 28/week @ 2024-06-13 2/week @ 2024-06-20

每月下载 324

Apache-2.0

1.5MB
5K SLoC

Python 2.5K SLoC // 0.2% comments Rust 2.5K SLoC // 0.0% comments Shell 176 SLoC // 0.3% comments

我的大数据里有什么?

论文 || 演示 || 工件

此仓库包含运行“我的大数据里有什么”(WIMBD)的代码,该代码附带了我们的最近发表的论文(同名)。

WIMBD overview

什么是 WIMBD?

WIMBD 由两个组件组成

  1. 一套用于分析和揭示大规模数据集内容的工具
  2. 我们使用上述工具对这些数据集进行的一系列分析

WIMBD 工具 包括两个部分

  1. 计数
  2. 搜索

计数遵循 map-reduce 功能,将任务分解成更小的块,应用操作(例如,从 URL 中提取域)然后汇总计数。我们为此提供了两种实现。一种是通过 Python 函数(例如,用于 域名计数),它易于扩展和扩展,另一种是通过 Rust CLI 以实现更快的处理。Rust 实现 覆盖 总结统计(如论文中的表 2 所示),例如语料库大小、标记数等。此外,它使用计数 Bloom 过滤器计算最常见和最不常见的 $n$-gram 近似。

在实践中,我们使用 elasticsearch 实现搜索。我们索引了我们考虑的 5 个语料库,并提供了对这些语料库的 UI 和程序性访问。我们围绕 ES API 构建了一些包装器,允许 countextract 功能。我们在此提供了更详细的文档。

入门

此工具箱有两个不同的部分:一个函数 Python 库和一个基于 Rust 的 CLI。

使用 Python 库

创建 Python 环境

conda create -n wimbd python=3.9
conda activate wimbd

pip install -r requirements.txt

export PYTHONPATH="${PYTHONPATH}:/PATH/TO/wimbd/"

例如,运行以下命令以计算域名计数,按标记(论文第 4.2.2 节)

bash wimbd/url_per_tok_counts/run.sh /PATH-TO/c4/en/c4-train.* > data/benchmark/benchmark_url_tok_c4.jsonl

运行方案计数

./wimbd/scheme_counts/run.sh /PATH-TO/laion2B-en/*.gz > data/scheme_laion2B-en.jsonl

这将运行MapReduce脚本,并将结果输出到文件中

使用Rust CLI

由于此仓库的部分是用Rust编写的,因此您首先需要安装Rust工具链。有一个简单的单行命令可以完成这个操作

curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

然后您可以直接从crates.io安装最新版本,或者从源码安装。要从crates.io安装,运行

cargo install wimbd

或者要从源码安装,运行

make release DIR=./bin

(确保将DIR更改为您选择的目录,该目录位于您的PATH上)

现在您应该能够运行wimbd CLI

wimbd --help

例如,使用以下命令在c4文件中查找前20个3-gram

wimbd topk \
    /PATH-TO/c4/en/c4-train.01009-of-01024.json.gz \
    /PATH-TO/c4/en/c4-train.01010-of-01024.json.gz \
    -n 3 \
    -k 20 \
    --size 16GiB

由于ElasticSearch的性质,我们无法在网络上发布API密钥。如果您有兴趣使用我们的ElasticSearch索引,请填写此表单,我们会尽快与您联系。

问题

如果有代码问题或您有疑问,请随时打开一个问题或发送一个PR

依赖

~17–30MB
~437K SLoC