4个版本

0.1.4 2023年7月17日
0.1.3 2022年3月1日
0.1.2 2022年2月11日
0.1.1 2022年2月11日
0.1.0 2022年2月10日

#1067 in 文本处理

每月 22 次下载

MIT 许可协议

26KB
464 代码行

cutters

一个基于规则的句子分词库。

Release Docs License Downloads

🚧 此库为实验性。 🚧

特性

  • 完全支持UTF-8。
  • 强大的解析。
  • 特定语言的规则(每个规则由其自己的PEG定义)。
  • 通过pest库实现快速且内存高效的解析。
  • 句子可以包含可以包含子句的引号。

绑定

除了原生Rust,还提供了以下编程语言的绑定

支持的语言

  • 克罗地亚语(标准)
  • 英语(标准)

还有一个额外的名为 Baseline 的“语言”,它简单地根据UTF-8定义的句子终止符来分割文本。它的预期用途是用于基准测试。

示例

在将 cutters 依赖项添加到您的 Cargo.toml 文件后,使用很简单。

fn main(){
    let text = r#"Petar Krešimir IV. je vladao od 1058. do 1074. St. Louis 9LX je događaj u svijetu šaha. To je prof.dr.sc. Ivan Horvat. Volim rock, punk, funk, pop itd. Tolstoj je napisao: "Sve sretne obitelji nalik su jedna na drugu. Svaka nesretna obitelj nesretna je na svoj način.""#;

    let sentences = cutters::cut(text, cutters::Language::Croatian);

    println!("{:#?}", sentences);
}

这会产生以下输出(请注意,str 结构字段是 &str)。

[
    Sentence {
        str: "Petar Krešimir IV. je vladao od 1058. do 1074. ",
        quotes: [],
    },
    Sentence {
        str: "St. Louis 9LX je događaj u svijetu šaha.",
        quotes: [],
    },
    Sentence {
        str: "To je prof.dr.sc. Ivan Horvat.",
        quotes: [],
    },
    Sentence {
        str: "Volim rock, punk, funk, pop itd.",
        quotes: [],
    },
    Sentence {
        str: "Tolstoj je napisao: \"Sve sretne obitelji nalik su jedna na drugu. Svaka nesretna obitelj nesretna je na svoj način.\"",
        quotes: [
            Quote {
                str: "Sve sretne obitelji nalik su jedna na drugu. Svaka nesretna obitelj nesretna je na svoj način.",
                sentences: [
                    "Sve sretne obitelji nalik su jedna na drugu.",
                    "Svaka nesretna obitelj nesretna je na svoj način.",
                ],
            },
        ],
    },
]

依赖项

~3MB
~57K SLoC