29 个版本 (稳定版)

2.2.2 2022 年 12 月 28 日
2.2.0 2022 年 12 月 15 日
2.1.3 2022 年 8 月 26 日
2.1.2 2022 年 7 月 24 日
0.1.15 2022 年 5 月 20 日

#287 in 算法

Download history 286/week @ 2024-04-23 198/week @ 2024-04-30 189/week @ 2024-05-07 385/week @ 2024-05-14 311/week @ 2024-05-21 330/week @ 2024-05-28 247/week @ 2024-06-04 360/week @ 2024-06-11 412/week @ 2024-06-18 382/week @ 2024-06-25 298/week @ 2024-07-02 339/week @ 2024-07-09 369/week @ 2024-07-16 345/week @ 2024-07-23 310/week @ 2024-07-30 202/week @ 2024-08-06

每月下载量 1,275 次
7 个 crate 中使用 (直接使用 4 个)

自定义许可证

50KB
721

Stringmetrics

这是一个 Rust 库,用于近似字符串匹配,实现了简单的算法,如汉明距离、Levenshtein 距离、Jaccard 相似度等。

以下是一些有用的快速链接

算法

此库的主要目的是提供各种字符串度量函数。包括的算法有

  • Levenshtein 距离
  • 有限 & 加权 Levenshtein 距离
  • Jaccard 相似度
  • 汉明距离

有关完整信息,请参阅 文档。以下是一些示例

// Basic levenshtein distance
use stringmetrics::levenshtein;

assert_eq!(levenshtein("kitten", "sitting"), 3);
// Levenshtein distance with a limit to save computation time
use stringmetrics::levenshtein_limit;

assert_eq!(levenshtein_limit("a very long string", "short!", 4), 4);
// Set custom weights
use stringmetrics::{levenshtein_weight, LevWeights};

// This struct holds insertion, deletion, and substitution costs
let weights = LevWeights::new(4, 3, 2);
assert_eq!(levenshtein_weight("kitten", "sitting", 100, &weights), 8);
// Basic hamming distance
use stringmetrics::hamming;

let a = "abcdefg";
let b = "aaadefa";
assert_eq!(hamming(a, b), Ok(3));

未来算法 & 方向

最终,此库旨在添加对更多算法的支持。预期工作包括

  1. 将 Levenshtein 距离更新为具有更高效算法的短(<64 个字符)和长(>100 个字符)字符串
  2. 添加 Damerau–Levenshtein 距离
  3. 添加 Jaro–Winkler 距离
  4. 添加 Tversky 指数
  5. 添加余弦相似度
  6. 添加一些有用的分词器及其示例

许可证

请参阅 LICENSE 文件以获取许可证信息。提供的许可证允许专有使用和修改;话虽如此,我真诚地建议,如果您想提出改进,请提交拉取请求并帮助我们所有人 :)

无运行时依赖项