#binary-data #distance #length #classification #text #pdf

bin+lib gzip-cmp

这是一个基于压缩数据长度差异进行二进制数据距离度量的库。

1 个不稳定版本

0.1.0 2023年9月8日

1267文本处理

MIT 许可协议

9KB
154

Zip-Dist

Zip-Dist 是一个库和程序,它使用压缩长度作为距离度量来比较二进制数据。基本思路是将 C(ab)C(ac) 的长度进行比较,以确定 a 是否比 b 更接近 c。

// - taken from: '“Low-Resource” Text Classification: A Parameter-Free Classification Method with Compressors
// - source: https://aclanthology.org/2023.findings-acl.426.pdf
fn distance(a: &[u8], b: &[u8]) -> f64 {
    let mut ab = Vec::new();
    ab.extend_from_slice(a);
    ab.extend_from_slice(b);

    let la = compressed_bytes(a);
    let lb = compressed_bytes(b);
    let lab = compressed_bytes(&ab);

    ((lab - la.min(lb)) as f64) / ((la.max(lb)) as f64)
}

目前的主要应用是读取目录中的所有文件(文本或二进制),并通过构建 MST 并访问该 MST 来尝试将这些文件聚集成簇,同时断开权重高于阈值的边。

这只是我找到的一种有效的方法,但还有很多其他的方法可以做到这一点。在我用作参考和灵感的论文中,使用了 k-means 对数据进行分类。同时,值得注意的是,这种方法非常简单,对输入数据的类型没有依赖。

依赖项

~3.5MB
~69K SLoC