#min-hash #lsh #python #part #version #datasketch

datasketch-minhash-lsh

A Python datasketch 库中 min-hash LSH 部分的 Rust 版本

1 个不稳定版本

0.0.1 2021 年 9 月 21 日

#9#min-hash

MIT 许可证

23KB
526

minhash-lsh

Build Status

此包重新实现了 Python 包 datasketch 中的 MinHashMinHash LSH 方法。这是一个部分实现,使用时请自行承担风险。


lib.rs:

minhash-lsh

Build Status

此包重新实现了 Python 包 datasketch 中的 MinHashMinHash LSH 方法。这是一个部分实现,使用时请自行承担风险。

MinHash 示例

 use datasketch_minhash_lsh::MinHash;

 let mut m1 = <MinHash>::new(4, Some(1));
 let mut m2 = <MinHash>::new(4, Some(1));
 assert_eq!(m1.jaccard(&m2).unwrap(), 1.0);

 m2.update(&12);
 assert_eq!(m1.jaccard(&m2).unwrap(), 0.0);

 m1.update(&13);
 assert!(m1.jaccard(&m2).unwrap() < 1.0);

 m1.update(&12);
 let distance = m1.jaccard(&m2).unwrap();
 assert!(distance < 1.0 && distance > 0.0);

MinHashLsh 示例

 use datasketch_minhash_lsh::{MinHashLsh, MinHash};

 let mut lsh = <MinHashLsh<&str>>::new(16, None, Some(0.5)).unwrap();
 let mut m1 = <MinHash>::new(16, Some(0));
 m1.update(&"a");

 let mut m2 = <MinHash>::new(16, Some(0));
 m2.update(&"b");

 lsh.insert("a", &m1).unwrap();
 lsh.insert("b", &m2).unwrap();

 let result = lsh.query(&m1).unwrap();
 assert!(result.contains(&"a"));

 let result = lsh.query(&m2).unwrap();
 assert!(result.contains(&"b"));
 assert!(result.len() <= 2);

依赖项

~1MB
~20K SLoC