#levenshtein #string-similarity #hamming #similarity #string #jaro

strsim

字符串相似度度量实现。包括Hamming、Levenshtein、OSA、Damerau-Levenshtein、Jaro、Jaro-Winkler和Sørensen-Dice。

24次发布

使用旧的Rust 2015

0.11.1 2024年4月2日
0.11.0 2024年1月7日
0.10.1 2024年1月7日
0.10.0 2020年1月31日
0.2.2 2015年3月29日

#3算法

Download history 2580863/week @ 2024-04-24 2462848/week @ 2024-05-01 2448172/week @ 2024-05-08 2620398/week @ 2024-05-15 2579229/week @ 2024-05-22 2774039/week @ 2024-05-29 2843213/week @ 2024-06-05 2853154/week @ 2024-06-12 2699957/week @ 2024-06-19 2789554/week @ 2024-06-26 2590592/week @ 2024-07-03 2850394/week @ 2024-07-10 2943139/week @ 2024-07-17 3013190/week @ 2024-07-24 3001210/week @ 2024-07-31 3135886/week @ 2024-08-07

12,653,413 每月下载量
1,756 个crate中使用 (502直接使用)

MIT 许可证

43KB
965

strsim-rs

Crates.io Crates.io CI status unsafe forbidden

Rust实现的 字符串相似度度量

标准化版本返回值介于 0.01.0 之间,其中 1.0 表示完全匹配。

还有适用于非字符串输入的函数的泛型版本。

安装

strsimcrates.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

许可证

MIT

无运行时依赖