Lingua:能准确检测与辨识自然语言类型的Rust库


它的任务很简单:它会分辨除哪些文本数据是用哪种语言编写的。
这在自然语言处理应用程序(例如文本分类和拼写检查)中作为语言数据的预处理步骤非常有用。例如,其他用例可能包括根据电子邮件的语言将电子邮件路由到地理位置正确的客户服务部门。支持中文。
Lingua能够报告每种支持的语言可用的一些捆绑测试数据的准确性统计信息。每种语言的测试数据分为三部分:

  1. 最小长度为 5 个字符的单个单词列表
  2. 最小长度为 10 个字符的单词对列表
  3. 各种长度的完整语法句子列表

语言检测通常是作为大型机器学习框架或自然语言处理应用程序的一部分进行的。在你不需要这些系统的全部功能或不想学习这些系统的绳索的情况下,一个小的灵活的库就会很方便。

到目前为止,Rust生态系统中唯一能完成这一任务的综合性开源库是CLD2和Whatlang。不幸的是,它们有两个主要的缺点。

  1. 检测只适用于相当长的文本片段。对于非常短的文本片段,如Twitter消息,它不能提供足够的结果。
  2. 参与决策过程的语言越多,检测结果就越不准确。

Lingua旨在消除这些问题。它几乎不需要任何配置,对长短文都能产生相当准确的结果,甚至对单字和短语也是如此。它借鉴了基于规则的方法和统计方法,但不使用任何词汇词典。它也不需要连接到任何外部API或服务。一旦下载了该库,它就可以完全离线使用。

该库现在可以编译为 WebAssembly,允许在任何基于 JavaScript 的项目中使用它,无论是在浏览器中还是在 Node.js 上运行的后端。

最简单的编译方法是使用wasm-pack. 安装后,例如,您可以使用 web 目标构建库,以便可以直接在浏览器中使用:
wasm-pack build --target web

在 HTML 文件中,您可以像下面这样调用Lingua,例如:

<script type="module">
    import init, { LanguageDetectorBuilder } from './pkg/lingua.js';

    init().then(_ => {
        const detector = LanguageDetectorBuilder.fromAllLanguages().build();
        console.log(
            detector.computeLanguageConfidenceValues("languages are awesome")
        ); 
    });
</script>