#ngrams #fuzzy-search #fuzzy #shingles

noodler

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

1 个不稳定版本

0.1.0 2023年4月11日

#1335文本处理

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

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 下通过,早期版本可能无法编译。

⚖️ 许可证

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

您可选择。

无运行时依赖