#automata #levenshtein #fuzzy

veloci_levenshtein_automata

高效创建 Levenshtein 自动机

1 个不稳定版本

0.1.0 2023 年 3 月 17 日

#1369 in 文本处理

每月 21 次下载

MIT 许可证

50KB
1K SLoC

Levenshtein-automaton

这可能是你想要的 crate,请使用这个: https://crates.io/crates/levenshtein_automata

主要区别是,这个 crate 有忽略大小写的选项。


lib.rs:

此 crate 使构建一个计算给定字符串的 Levenshtein 距离的确定有限自动机(DFA)变得既快又简单。

示例

use veloci_levenshtein_automata::{LevenshteinAutomatonBuilder, Distance};

// Building this factory is not free.
let lev_automaton_builder = LevenshteinAutomatonBuilder::new(2, true);

// We can now build an entire dfa.
let dfa = lev_automaton_builder.build_dfa("Levenshtein", false);

let mut state = dfa.initial_state();
for &b in "Levenshtain".as_bytes() {
state = dfa.transition(state, b);
}

assert_eq!(dfa.distance(state), Distance::Exact(1));

实现基于以下论文:2002 年 Klaus Schulz 和 Stoyan Mihov 的快速字符串校正与 Levenshtein 自动机。我还在以下 博客文章 中尝试解释它。

!

依赖项

~0–395KB