#language #preprocessor #nlp

contractions

Contractions 是一个用于扩展英语缩写的 Rust 库

3 个版本

0.5.4 2021年5月25日
0.5.3 2021年5月25日
0.5.1 2021年5月24日

#1844 in 文本处理


yake-rust 中使用

MIT 许可证

21KB
163

Contractions

注意Contractions 的 API 尚未稳定,仍在开发中

MIT licensed

contractions 是一个用于处理英语缩写的 Rust 库。
目前只实现了扩展缩写的数据集。

将 "I’m" 扩展为 "I am" 等。
默认数据集对所有全小写、全大写和首字母大写的缩写都有替换。

示例

let contractions = contractions::Contractions::default();
assert_eq!("I am sure you would have been fine.", contractions.apply("I’m sure you’d’ve been fine."));
assert_eq!("Are you sure?", contractions.apply("R u sure?"));
let mut contractions = Contractions::new();
contractions.add_from_json(contractions::SINGLE_CONTRACTIONS_JSON);
assert_eq!("I am sad you couldn’t’ve come.", contractions.apply("I’m sad you couldn’t’ve come."));

问题案例(默认数据集)

  • Ain’t "The word ’ain’t’ is a contraction for am not, is not, are not, has not, and have not in the common English language vernacular. In some dialects ain’t is also used as a contraction of do not, does not, and did not." - https://en.wikipedia.org/wiki/Ain’t
    • 默认数据集不替换 "Ain’t"
  • 一些带有 "’s" 的缩写可以是 "is" 或所有格
    • 默认数据集替换 "Everyone’s" => "Everyone is"
    • 默认数据集替换 "Somebody’s" => "Somebody is"
    • 默认数据集替换 "Someone’s" => "Someone is"
    • 默认数据集不替换任何其他带有 "’s" 的缩写,如 "Carl’s"
  • She’s / He’s / It’s
    • "He’s" 可以是 "He is" 或 "He has"。
    • 默认数据集替换 "He’s" => "He is", "She’s" => "She is", "It’s" => "It is"

依赖关系

~2.8–4.5MB
~89K SLoC