项目简介: lingua-go
介绍
lingua-go 是一个用于语言检测的开源 Go 语言库。这个库的功能简单,但非常实用,它可以识别一段文本所属的语言。语言检测在自然语言处理领域中是一个重要的预处理步骤,广泛应用于文本分类、拼写检查等场景。另外,语言检测也可以用于将邮件自动路由到正确的客户服务部门。
项目背景
语言检测通常作为大型机器学习框架或自然语言处理应用的一部分来完成。但是,对于一些不需要全套系统功能或者对新系统不熟悉的用户而言,一个小型灵活的库会更为有用。在 Go 语言生态系统中,另一个开源的全面语言检测库是 Whatlanggo,但它存在以下两个主要问题:
- 检测仅适用于相对较长的文本片段,短文本(如推特消息)无法达到满意的检测结果。
- 参与检测决策的语言越多,检测结果就越不准确。
Lingua 利用规则和统计方法,可以准确检测长短文本,甚至单个词和短语,而不需要任何单词词典或外部服务联网支持。一旦下载,便可完全离线使用。
支持的语言
与其他语言检测库相比,Lingua 更注重检测质量而非数量。它优先确保有限语言集合的高准确性,然后再逐步增加新语言。目前,Lingua 支持 75 种语言,包括但不限于:
- 南非荷兰语、阿尔巴尼亚语、阿拉伯语、亚美尼亚语、阿塞拜疆语
- 巴斯克语、白俄罗斯语、孟加拉语、波克马尔语、波斯尼亚语
- 保加利亚语、加泰罗尼亚语、中文、克罗地亚语、捷克语
- 丹麦语、荷兰语、英语、世界语、爱沙尼亚语
- 芬兰语、法语、冈达语、格鲁吉亚语、德语、希腊语
- 古吉拉特语、希伯来语、印地语、匈牙利语、冰岛语
- 印度尼西亚语、爱尔兰语、意大利语、日语、哈萨克语
- 韩语、拉丁语、拉脱维亚语、立陶宛语、马其顿语
- 马来语、毛利语、马拉地语、蒙古语、挪威尼诺斯克语
- 波斯语、波兰语、葡萄牙语、旁遮普语、罗马尼亚语
- 俄语、塞尔维亚语、绍纳语、斯洛伐克语、斯洛维尼亚语
- 索马里语、索托语、西班牙语、斯瓦希里语、瑞典语
- 他加禄语、泰米尔语、泰卢固语、泰语、特松加语
- 茨瓦纳语、土耳其语、乌克兰语、乌尔都语、越南语
- 威尔士语、科萨语、约鲁巴语、祖鲁语
精度与性能
Lingua 提供了针对不同语言的预置测试数据,以报告检测的准确性。测试数据分为三部分:包含至少五个字符的单词、至少十个字符的词组以及不同长度的完整语法句子。通过与其他语言检测器(如 Whatlanggo 和 Google 的 CLD3)的比较,展示了 lingua 在处理 75 种支持语言数据时的性能优劣。
每种语言的测试数据均从 Leipzig 大学的 Wortschatz 语料库中获取,该语料库利用各种新闻网站数据汇集。Lingua 的测试数据集包括 1000 个单词、词组和句子,分别从每个语料库中随机选取。
各种测试数据显示,Lingua 在单词、词组和句子检测的中高精度模式下表现良好,提供了详尽的准确度统计分析,表明它能够在不借助外部服务的情况下,提供可靠的语言检测能力。