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)

Download history 5493/week @ 2024-04-29 5222/week @ 2024-05-06 4562/week @ 2024-05-13 5442/week @ 2024-05-20 5099/week @ 2024-05-27 5224/week @ 2024-06-03 5159/week @ 2024-06-10 5173/week @ 2024-06-17 6993/week @ 2024-06-24 4030/week @ 2024-07-01 4993/week @ 2024-07-08 4356/week @ 2024-07-15 4610/week @ 2024-07-22 4831/week @ 2024-07-29 3763/week @ 2024-08-05 4010/week @ 2024-08-12

17,606 每月下载量
26 个包(16 个直接) 中使用

MIT 许可证

670KB
18K SLoC

Whatlang - rust library for natural language detection

Whatlang

专注于简洁性和性能的 Rust 自然语言检测库。

尝试在线演示。

Build Status License Documentation

Stand With Ukraine

内容

特性

  • 支持 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 LangScript 实现了来自 enum-mapEnum 特性
arbitrary 支持 Arbitrary
serde LangScript 实现了 SerializeDeserialize
dev 启用 whatlang::dev 模块,该模块提供了一些内部 API。
它仅用于分析目的,普通用户不建议依赖此 API。

它是如何工作的?

语言识别是如何工作的?

该算法基于三元语言模型,它是n-gram的特例。为了理解这个概念,请查看原始白皮书:Cavnar和Trenkle '94: N-Gram-Based Text Categorization'

is_reliable是如何计算的?

它基于以下因素:

  • 给定文本中有多少个独特的三元组
  • 第一个(未返回的)检测到的语言与第二个检测到的语言之间的差异有多大?这个指标在代码库中被称为rate

因此,它可以表示为带有阈值函数的2d空间,将其分为“可靠的”和“不可靠的”区域。这个函数是双曲线,看起来像下面这样:

Language recognition whatlang rust

更多详情请查看博客文章:Rust Whatlang 库和自然语言识别算法介绍

创建任务

  • make bench - 运行性能基准测试
  • make doc - 生成和打开文档
  • make test - 运行测试
  • make watch - 监视更改并运行测试

与其他替代方案的比较

Whatlang CLD2 CLD3
实现语言 Rust C++ C++
语言 68 83 107
算法 三元组 四元组 神经网络
支持的编码 UTF-8 UTF-8 ?
HTML支持 ?

端口和克隆

捐赠

您可以通过捐赠NEAR代币来支持该项目。

我们的NEAR钱包地址是whatlang.near

来源

Whatlang是来自Franc(JavaScript,MIT)的派生作品,由Titus Wormer创建。

许可证

MIT © Sergey Potapov

贡献者

依赖项

~1.4–1.9MB
~26K SLoC