#levenshtein #distance #generic #string #compute #slice #characters

generic_levenshtein

Levenshtein距离的通用和快速实现

3个不稳定版本

0.2.0 2019年12月24日
0.1.1 2019年12月17日
0.1.0 2019年12月15日

2565 in 算法

MIT许可证

10KB
108

README

Docs

Levenshtein距离的通用和快速实现。

通用

此crate可以处理任何类型的切片。因此,它可以

  • 计算两个字符串之间的字符距离
assert_eq!(distance ("abc", "aaxcc"), 3);
  • 计算两个字符串之间的单词距离
assert_eq!(
   distance (
      "The quick brown fox".split (' ').collect::<Vec<_>>(),
      "The very quick brown cat".split (' ').collect()),
   2);
  • 或者甚至计算任何两个序列之间的距离
assert_eq!(distance (vec![1, 2, 3], vec![0, 1, 3, 3, 4]), 3);

快速

在撰写本文时,此crate是crates.io上处理文本最快的一个(与eddie相当)

相同长度 相同长度 不同长度
generic_levenshtein 3 9_616 11_010
levenshtein v1.0.4 4 11_030 12_777
strsim v0.9.2 9_173 10_100 11_738
distance v0.4.0 23_594 13_800 26_890
eddie v0.3.2 215 7_464 11_968
txtdist v0.2.1 17_732 17_635 20_975

所有时间均为ns,在一个Intel(R) Core(TM) i5-4300M CPU @ 2.60GHz上。

没有运行时依赖