1 个不稳定版本
0.0.1 | 2021 年 9 月 21 日 |
---|
#9 在 #min-hash
23KB
526 行
minhash-lsh
此包重新实现了 Python 包 datasketch 中的 MinHash
和 MinHash LSH
方法。这是一个部分实现,使用时请自行承担风险。
lib.rs
:
minhash-lsh
此包重新实现了 Python 包 datasketch 中的 MinHash
和 MinHash 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