2个版本
使用旧的Rust 2015
0.1.1 | 2016年7月23日 |
---|---|
0.1.0 | 2016年7月23日 |
#15 in #ngrams
1,234 每月下载量
在 3 个crate中使用 (通过 gaoya)
15KB
278 行
shingles.rs
Shingles在rust中的实现
查看文档 (0.1 / master)
概述
Shingles 是一个用于从切片和utf-8字符串构造shingles ("标记化") 的crate。它最初是为了在minhash或类似模糊匹配算法中使用而创建的。
示例
extern crate shingles;
use shingles::AsShingles;
fn main() {
let v = [1, 2, 3, 4];
let mut num_sh = v.as_shingles(3);
let mut str_sh = "привет!".as_shingles_with_step(4, 2);
assert_eq!(Some(&v[0..3]), num_sh.next());
assert_eq!(Some(&v[1..4]), num_sh.next());
assert_eq!(Some("прив"), str_sh.next());
assert_eq!(Some("ивет"), str_sh.next());
for h in "привет!".as_shingles(4).hashes() {
// prints hash for each shingle
println!("{}", h);
}
}
2D shingle示例
extern crate shingles;
use shingles::AsShingles2D;
fn main() {
let v: Vec<_> = "abcd\n\
efgh\n\
ijkl"
.split_terminator("\n")
.collect();
let mut sh_2d = v.as_shingles_2d([3, 3]);
assert_eq!(
Some(vec![&v[0][0..3], &v[1][0..3], &v[2][0..3]]),
sh_2d.next()
);
// You can easily get hashes from 2D-shingles
for h in v.as_shingles_2d([3, 3]).hashes() {
// print u64 hash value for each 2D-shingle
println!("{}", h);
}
}