项目介绍:Whatlang
简介
Whatlang 是一个专为 Rust 语言编写的自然语言检测库。该项目的核心目标在于追求简洁易用,同时保证高效的性能表现。通过 Whatlang,开发者可以轻松识别文本的语言并获取相应的信息。
项目特性
- 支持语言:Whatlang 支持对 69 种语言的检测,能够识别不同的语言和使用的文字系统,例如拉丁文、斯拉夫字母等。
- 以 Rust 编写:整个库是用 Rust 语言完成的,这使得它在速度和性能上具有显著优势。
- 简单轻量:该库非常轻量,相较于同类项目安装和使用都更为便捷简单。
- 可靠性信息:提供对语言识别的可靠性评估,帮助用户判断识别结果的准确性。
如何开始
使用 Whatlang 的基本示例:
use whatlang::{detect, Lang, Script};
fn main() {
let text = "Ĉu vi ne volas eklerni Esperanton? Bonvolu! Estas unu de la plej bonaj aferoj!";
let info = detect(text).unwrap();
assert_eq!(info.lang(), Lang::Epo);
assert_eq!(info.script(), Script::Latin);
assert_eq!(info.confidence(), 1.0);
assert!(info.is_reliable());
}
上述代码片段展示了如何使用 Whatlang 检测文本语言以及相关属性。更多细节可以查阅官方文档。
使用者
Whatlang 在多个知名项目中得到了应用:
- Sonic:一个快速、轻量的搜索后端,支持无模式查询。
- Meilisearch:开源的搜索引擎,以易用性和速度著称。
功能切换
Whatlang 提供多种功能开关以支持不同的使用场景,例如:
enum-map
:实现Lang
和Script
枚举的映射。serde
:支持序列化和反序列化功能。
语言识别原理
Whatlang 的语言识别基于 trigram 模型,这是一种 n-gram 的特殊形式。它通过分析文本中的三字符组合来进行语言分类。
可靠性计算
可靠性基于以下因素:
- 文本中唯一三元组的数量。
- 检测到的第一和第二语言之间的差异。
这些元素在算法中通过一个阈值函数来区分“可靠”和“不可靠”的区域。
与其他库比较
Whatlang | CLD2 | CLD3 | |
---|---|---|---|
语言实现 | Rust | C++ | C++ |
支持语言 | 68 | 83 | 107 |
算法 | 三元组 | 四元组 | 神经网络 |
支持编码 | UTF-8 | UTF-8 | ? |
HTML 支持 | 否 | 是 | ? |
克隆与移植
Whatlang 被移植到多种编程语言:
- whatlanggo:适用于 Go 语言的克隆。
- whatlang-py:为 Python 提供的绑定。
- whatlang-rb:为 Ruby 提供的绑定。
许可证和贡献者
Whatlang 是以 MIT 许可证发布的,感谢所有为其做出贡献的开发者们!特别鸣谢项目创始人 Sergey Potapov 和其他贡献者们的辛勤工作和创意支持。
这个项目体现了在 Rust 生态中打造高效和简洁工具的可能性,并且在多种实际应用中展示了其强大性能。无论是大型项目还是个人开发,Whatlang 都是一个值得信赖的语言检测工具。