24次发布
使用旧的Rust 2015
0.11.1 | 2024年4月2日 |
---|---|
0.11.0 | 2024年1月7日 |
0.10.1 |
|
0.10.0 | 2020年1月31日 |
0.2.2 | 2015年3月29日 |
#3 在 算法 中
12,653,413 每月下载量
在 1,756 个crate中使用 (502直接使用)
43KB
965 行
strsim-rs
Rust实现的 字符串相似度度量
- Hamming
- Levenshtein - 距离 & 标准化
- 最优字符串对齐
- Damerau-Levenshtein - 距离 & 标准化
- Jaro和Jaro-Winkler
- Sørensen-Dice
标准化版本返回值介于 0.0
和 1.0
之间,其中 1.0
表示完全匹配。
还有适用于非字符串输入的函数的泛型版本。
安装
strsim
在 crates.io 上可用。将其添加到项目中
cargo add strsim
使用
访问 Docs.rs 获取完整文档。您也可以克隆仓库,并运行 $ cargo doc --open
。
示例
extern crate strsim;
use strsim::{hamming, levenshtein, normalized_levenshtein, osa_distance,
damerau_levenshtein, normalized_damerau_levenshtein, jaro,
jaro_winkler, sorensen_dice};
fn main() {
match hamming("hamming", "hammers") {
Ok(distance) => assert_eq!(3, distance),
Err(why) => panic!("{:?}", why)
}
assert_eq!(levenshtein("kitten", "sitting"), 3);
assert!((normalized_levenshtein("kitten", "sitting") - 0.571).abs() < 0.001);
assert_eq!(osa_distance("ac", "cba"), 3);
assert_eq!(damerau_levenshtein("ac", "cba"), 2);
assert!((normalized_damerau_levenshtein("levenshtein", "löwenbräu") - 0.272).abs() <
0.001);
assert!((jaro("Friedrich Nietzsche", "Jean-Paul Sartre") - 0.392).abs() <
0.001);
assert!((jaro_winkler("cheeseburger", "cheese fries") - 0.911).abs() <
0.001);
assert_eq!(sorensen_dice("web applications", "applications of the web"),
0.7878787878787878);
}
使用函数的泛型版本
extern crate strsim;
use strsim::generic_levenshtein;
fn main() {
assert_eq!(2, generic_levenshtein(&[1, 2, 3], &[0, 2, 5]));
}
贡献
如果您不想安装Rust本身,如果您已安装 Docker,可以运行 $ ./dev
以运行开发CLI。
基准测试需要Nightly工具链。运行 $ cargo +nightly bench
。