33 个版本
0.16.4 | 2024 年 1 月 4 日 |
---|---|
0.16.3 | 2023 年 8 月 16 日 |
0.16.2 | 2022 年 10 月 23 日 |
0.16.0 | 2022 年 5 月 7 日 |
0.1.1 | 2016 年 12 月 15 日 |
#2 in 国际化(i18n)
17,606 每月下载量
在 26 个包(16 个直接) 中使用
670KB
18K SLoC
Whatlang
专注于简洁性和性能的 Rust 自然语言检测库。
内容
特性
- 支持 69 种语言
- 100% 用 Rust 编写
- 轻量级、快速且简单
- 不仅识别语言,还识别脚本(拉丁文、西里尔文等)
- 提供可靠性信息
入门指南
示例
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 被以下大型项目作为直接或间接依赖项用于语言识别。您将与使用 Whatlang 的优秀公司为伍
- Sonic - Rust 中的快速、轻量级且无模式的搜索后端。
- Meilisearch - 一个用 Rust 开发的开源、易于使用、极快且高度相关的搜索引擎。
功能开关
特性 | 描述 |
---|---|
enum-map |
Lang 和 Script 实现了来自 enum-map 的 Enum 特性 |
arbitrary |
支持 Arbitrary |
serde |
为 Lang 和 Script 实现了 Serialize 和 Deserialize |
dev |
启用 whatlang::dev 模块,该模块提供了一些内部 API。它仅用于分析目的,普通用户不建议依赖此 API。 |
它是如何工作的?
语言识别是如何工作的?
该算法基于三元语言模型,它是n-gram的特例。为了理解这个概念,请查看原始白皮书:Cavnar和Trenkle '94: N-Gram-Based Text Categorization'。
is_reliable
是如何计算的?
它基于以下因素:
- 给定文本中有多少个独特的三元组
- 第一个(未返回的)检测到的语言与第二个检测到的语言之间的差异有多大?这个指标在代码库中被称为
rate
。
因此,它可以表示为带有阈值函数的2d空间,将其分为“可靠的”和“不可靠的”区域。这个函数是双曲线,看起来像下面这样:
更多详情请查看博客文章:Rust Whatlang 库和自然语言识别算法介绍。
创建任务
make bench
- 运行性能基准测试make doc
- 生成和打开文档make test
- 运行测试make watch
- 监视更改并运行测试
与其他替代方案的比较
Whatlang | CLD2 | CLD3 | |
---|---|---|---|
实现语言 | Rust | C++ | C++ |
语言 | 68 | 83 | 107 |
算法 | 三元组 | 四元组 | 神经网络 |
支持的编码 | UTF-8 | UTF-8 | ? |
HTML支持 | 否 | 是 | ? |
端口和克隆
- whatlang-ffi - C绑定
- whatlanggo - Go语言的whatlang克隆
- whatlang-py - Python的绑定
- whatlang-rb - Ruby的绑定
- whatlangex - Elixir的绑定
捐赠
您可以通过捐赠NEAR代币来支持该项目。
我们的NEAR钱包地址是whatlang.near
来源
Whatlang是来自Franc(JavaScript,MIT)的派生作品,由Titus Wormer创建。
许可证
贡献者
- greyblake Potapov Sergey - 创建者,维护者。
- Dr-Emann Zachary Dremann - 优化和改进
- BaptisteGelez Baptiste Gelez - 改进
- Vishesh Chopra - 设计了标志
- Joel Natividad - Tagalog的支持
- ManyTheFish - 狂野优化
- Kerollmops Clément Renault - 狂野优化
依赖项
~1.4–1.9MB
~26K SLoC