1个不稳定版本

0.1.0 2020年2月25日

#5 in #jaro

每月下载 29次

MIT/Apache

76KB
1.5K SLoC

str-distance

Build Status Crates.io Documentation

一个用于评估字符串(和其他)之间距离的crate。

深受julia StringDistances 的启发

距离度量指标

用法

提供便利函数 str_distance::str_distance*

str_distancestr_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 查找

参考

许可证

许可方式如下

无运行时依赖