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 算法
每月下载量 1,275 次
在 7 个 crate 中使用 (直接使用 4 个)
50KB
721 行
Stringmetrics
这是一个 Rust 库,用于近似字符串匹配,实现了简单的算法,如汉明距离、Levenshtein 距离、Jaccard 相似度等。
以下是一些有用的快速链接
- Crate 信息: https://crates.io/crates/stringmetrics
- Crate 文档: https://docs.rs/stringmetrics/
- Python 库页面: https://pypi.ac.cn/project/stringmetrics/
- Crate 源代码: https://github.com/pluots/stringmetrics
算法
此库的主要目的是提供各种字符串度量函数。包括的算法有
- 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));
未来算法 & 方向
最终,此库旨在添加对更多算法的支持。预期工作包括
- 将 Levenshtein 距离更新为具有更高效算法的短(<64 个字符)和长(>100 个字符)字符串
- 添加 Damerau–Levenshtein 距离
- 添加 Jaro–Winkler 距离
- 添加 Tversky 指数
- 添加余弦相似度
- 添加一些有用的分词器及其示例
许可证
请参阅 LICENSE 文件以获取许可证信息。提供的许可证允许专有使用和修改;话虽如此,我真诚地建议,如果您想提出改进,请提交拉取请求并帮助我们所有人 :)