#ngrams #fuzzy-search #fuzzy #shingles

noodler

基于 python-ngram 项目的移植,使用 N-gram 提供模糊搜索

1 个不稳定版本

0.1.0 2023年4月11日

#1335文本处理

Download history 29/week @ 2024-03-11 25/week @ 2024-03-18 26/week @ 2024-03-25 47/week @ 2024-04-01 25/week @ 2024-04-08 8/week @ 2024-04-15 13/week @ 2024-04-22 15/week @ 2024-04-29 14/week @ 2024-05-06 14/week @ 2024-05-13 33/week @ 2024-05-20 13/week @ 2024-05-27 24/week @ 2024-06-03 30/week @ 2024-06-10 22/week @ 2024-06-17 13/week @ 2024-06-24

91 每月下载量

MIT/Apache

25KB
596

🍜 诺德勒

在计算机科学中,“诺德勒”用于描述处理文本的程序。由于 n-gram 等算法通常用于从文本中提取信息,类似于从面团中拉出面条,因此“诺德勒”可以与从文本中提取信息的算法相关联,因为它们可以被视为文本的“处理”程序,就像面条制造商从面团中“生产”面条一样。

ChatGPT

基于 python-ngram 项目的移植,提供使用 N-gram 的模糊搜索。

✍️ 示例

use noodler::NGram;

let ngram = NGram::<&str>::builder()
    .arity(2)
    .warp(3.0)
    .threshold(0.75)
    .build()
    // Feed with known words
    .fill(vec!["pie", "animal", "tomato", "seven", "carbon"]);

// Try an unknown/misspelled word, and find a similar match
let word = "tomacco";
let top = ngram.search_sorted(word).next();
if let Some((text, similarity)) = top {
    if similarity > 0.99 {
        println!("{}", text);
    } else {
        println!(
            "{} (did you mean {}? [{:.0}% match])",
            word,
            text,
            similarity * 100.0
        );
    }
} else {
    println!("🗙 {}", word);
}

💭 启发于

请查看这些在 noodler 创建过程中有很大帮助的出色作品

  • python-ngram:支持按 ngram 相似度搜索的集合。
  • ngrammatic:一个提供使用 N-gram 进行模糊搜索/字符串匹配的 Rust crate。

🚩 最小支持的 Rust 版本

所有测试在 rustc v1.41 下通过,早期版本可能无法编译。

⚖️ 许可证

在以下任一许可证下授权:

您可选择。

无运行时依赖