1个不稳定版本
0.1.0 | 2020年2月25日 |
---|
#5 in #jaro
每月下载 29次
76KB
1.5K SLoC
str-distance
一个用于评估字符串(和其他)之间距离的crate。
深受julia StringDistances 的启发
距离度量指标
-
Q-gram距离比较每个字符串中长度为
q
的所有切片,其中q > 0
- QGram距离
Qgram::new(usize)
- 余弦距离
Cosine::new(usize)
- Jaccard距离
Jaccard::new(usize)
- Sorensen-Dice距离
SorensenDice::new(usize)
- 重叠距离
Overlap::new(usize)
- QGram距离
-
该crate包括可以应用于任何距离的"修饰符"。
用法
提供便利函数 str_distance::str_distance*
。
str_distance
和 str_distance_normalized
接受两个字符串输入,使用传递的 'DistanceMetric' 计算这两个字符串的距离。'str_distance_normalized' 评估两个字符串之间的归一化距离。'0.0' 对应于“零距离”,即两个字符串在度量标准中被视为相等,而 '1.0' 对应于两个字符串之间可能存在的最大距离。
调用 str_distance::str_distance*
只是为了方便 DistanceMetric.str_distance*("", "")
示例
Levenshtein 度量标准允许定义一个最大距离,在达到该距离后提前终止精确距离的计算。
距离
use str_distance::*;
// calculate the exact distance
assert_eq!(str_distance("kitten", "sitting", Levenshtein::default()), DistanceValue::Exact(3));
// short circuit if distance exceeds 10
let s1 = "Wisdom is easily acquired when hiding under the bed with a saucepan on your head.";
let s2 = "The quick brown fox jumped over the angry dog.";
assert_eq!(str_distance(s1, s2, Levenshtein::with_max_distance(10)), DistanceValue::Exceeded(10));
归一化距离
use str_distance::*;
assert_eq!(str_distance_normalized("" , "", Levenshtein::default()), 0.0);
assert_eq!(str_distance_normalized("nacht", "nacht", Levenshtein::default()), 0.0);
assert_eq!(str_distance_normalized("abc", "def", Levenshtein::default()), 1.0);
DistanceMetric
特性
use str_distance::{DistanceMetric, SorensenDice};
// QGram metrics require the length of the underlying fragment length to use for comparison.
// For `SorensenDice` default is 2.
assert_eq!(SorensenDice::new(2).str_distance("nacht", "night"), 0.75);
DistanceMetric
是为 str
类型设计的,但并不仅限于。对于所有可比较并且作为 'IntoIterator' 传递的数据类型都可以计算距离,例如 Vec
use str_distance::{DistanceMetric, Levenshtein, DistanceValue};
assert_eq!(*Levenshtein::default().distance(&[1,2,3], &[1,2,3,4,5,6]),3);
文档
完整文档可在 docs.rs 查找
参考
- StringDistances
- 用于近似字符串匹配的 stringdist 软件包 Mark P.J. van der Loo
- fuzzywuzzy
许可证
许可方式如下
- Apache License, Version 2.0, (LICENSE-APACHE 或 https://www.apache.org/licenses/LICENSE-2.0)
- MIT 许可证 (LICENSE-MIT 或 https://opensource.org/licenses/MIT)