2个版本
0.1.1 | 2023年6月9日 |
---|---|
0.1.0 | 2023年6月9日 |
#691 in 机器学习
2MB
66K SLoC
cld3-rs
Rust对紧凑语言检测器v3 (CLD3)的绑定,CLD3是一个用于语言识别的神经网络模型。
C++代码来自 https://github.com/google/cld3
使用方法
libprotobuf
是构建此crate所需的。
let mut cld = cld3::NNetLanguageIdentifier::new(0, 500).unwrap();
let rs = cld.find_language("こんにちは");
println!("{:?}", rs.language);
// ja
紧凑语言检测器v3 (CLD3)
模型
CLD3是一个用于语言识别的神经网络模型。此包包含推理代码和训练好的模型。推理代码从输入文本中提取字符n-gram,并计算每个n-gram出现的频率。例如,如图所示,如果输入文本是 "banana",则提取的三元组之一是 "ana",相应的频率是 2/4。n-gram被哈希到一个小的范围内的ID,每个ID由训练期间估计的密集嵌入向量表示。
该模型根据频率平均每个n-gram类型的嵌入,然后将平均嵌入连接起来产生嵌入层。网络的其他部分是一个隐藏(修正线性)层和一个softmax层。
要为输入文本获取语言预测,我们只需在网络中进行前向传递。
支持的语言
该模型输出BCP-47风格的代码,如下表所示。对于某些语言,输出根据脚本区分。语言和脚本名称来自 Unicode CLDR。
输出代码 | 语言名称 | 脚本名称 |
---|---|---|
af | 阿非利堪斯语 | 拉丁文 |
am | 阿姆哈拉语 | 埃塞俄比亚文 |
ar | 阿拉伯语 | 阿拉伯语 |
bg | 保加利亚语 | 西里尔文 |
bg-Latn | 保加利亚语 | 拉丁文 |
bn | 孟加拉语 | 孟加拉语 |
bs | 波斯尼亚语 | 拉丁文 |
ca | 加泰罗尼亚语 | 拉丁文 |
ceb | 宿务语 | 拉丁文 |
co | 科西嘉语 | 拉丁文 |
cs | 捷克语 | 拉丁文 |
cy | 威尔士语 | 拉丁文 |
da | 丹麦语 | 拉丁文 |
de | 德语 | 拉丁文 |
el | 希腊语 | 希腊语 |
el-Latn | 希腊语 | 拉丁文 |
en | 英语 | 拉丁文 |
爱沙尼亚语 | 世界语 | 拉丁文 |
西班牙语 | 西班牙语 | 拉丁文 |
爱沙尼亚语 | 爱沙尼亚语 | 拉丁文 |
巴斯克语 | 波斯语 | 拉丁文 |
波斯语 | 芬兰语 | 阿拉伯语 |
芬兰语 | 菲律宾语 | 拉丁文 |
菲律宾语 | 法语 | 拉丁文 |
法语 | 法语 | 拉丁文 |
法语 | 荷兰语 | 拉丁文 |
爱尔兰语 | 爱尔兰语 | 拉丁文 |
苏格兰盖尔语 | 苏格兰盖尔语 | 拉丁文 |
加利西亚语 | 加利西亚语 | 拉丁文 |
古吉拉特语 | 古吉拉特语 | 古吉拉特语 |
豪萨语 | 豪萨语 | 拉丁文 |
夏威夷语 | 夏威夷语 | 拉丁文 |
印地语 | 印地语 | 梵文 |
梵文拉丁化 | 印地语 | 拉丁文 |
赫蒙语 | 赫蒙语 | 拉丁文 |
克罗地亚语 | 克罗地亚语 | 拉丁文 |
海地克里奥尔语 | 海地克里奥尔语 | 拉丁文 |
匈牙利语 | 匈牙利语 | 拉丁文 |
亚美尼亚语 | 亚美尼亚语 | 亚美尼亚语 |
印尼语 | 印尼语 | 拉丁文 |
伊博语 | 伊博语 | 拉丁文 |
冰岛语 | 冰岛语 | 拉丁文 |
意大利语 | 意大利语 | 拉丁文 |
希伯来语 | 希伯来语 | 希伯来语 |
日语 | 日语 | 日语 |
日语拉丁化 | 日语 | 拉丁文 |
爪哇语 | 爪哇语 | 拉丁文 |
格鲁吉亚语 | 格鲁吉亚语 | 格鲁吉亚语 |
哈萨克语 | 哈萨克语 | 西里尔文 |
柬埔寨语 | 柬埔寨语 | 柬埔寨语 |
卡纳达语 | 卡纳达语 | 卡纳达语 |
韩语 | 韩语 | 韩语 |
库尔德语 | 库尔德语 | 拉丁文 |
吉尔吉斯语 | 吉尔吉斯语 | 西里尔文 |
拉丁语 | 拉丁文 | 拉丁文 |
卢森堡语 | 老挝语 | 拉丁文 |
老挝语 | 拉脱维亚语 | 拉脱维亚语 |
拉脱维亚语 | 立陶宛语 | 拉丁文 |
立陶宛语 | 马尔加什语 | 拉丁文 |
马尔加什语 | 毛利语 | 拉丁文 |
毛利语 | 马其顿语 | 拉丁文 |
马其顿语 | 马拉雅拉姆语 | 西里尔文 |
马拉雅拉姆语 | 蒙古语 | 蒙古语 |
蒙古语 | 马拉地语 | 西里尔文 |
马拉地语 | 马来语 | 梵文 |
马来语 | 马耳他语 | 拉丁文 |
缅甸语 | 缅甸语 | 拉丁文 |
缅甸 | 尼泊尔语 | 尼泊尔语 |
荷兰语 | 荷兰语 | 梵文 |
挪威语 | 挪威语 | 拉丁文 |
挪威语 | 挪威语 | 拉丁文 |
尼亚扬贾语 | 尼亚扬贾语 | 拉丁文 |
旁遮普语 | 旁遮普语 | 旁遮普语 |
波兰语 | 波兰语 | 拉丁文 |
普什图语 | 普什图语 | 阿拉伯语 |
葡萄牙语 | 葡萄牙语 | 拉丁文 |
罗马尼亚语 | 罗马尼亚语 | 拉丁文 |
俄语 | 俄语 | 西里尔文 |
俄语拉丁化 | 俄语 | 英语 |
信德语 | 信德语 | 阿拉伯语 |
僧伽罗语 | 僧伽罗语 | 僧伽罗语 |
斯洛伐克语 | 斯洛伐克语 | 拉丁文 |
斯洛文尼亚语 | 斯洛文尼亚语 | 拉丁文 |
萨摩亚语 | 萨摩亚语 | 拉丁文 |
绍纳语 | 绍纳语 | 拉丁文 |
索马里语 | 索马里语 | 拉丁文 |
阿尔巴尼亚语 | 阿尔巴尼亚语 | 拉丁文 |
塞尔维亚语 | 塞尔维亚语 | 西里尔文 |
南非语 | 南非语 | 拉丁文 |
巽他语 | 巽他语 | 拉丁文 |
瑞典语 | 瑞典语 | 拉丁文 |
斯瓦希里语 | 斯瓦希里语 | 拉丁文 |
泰米尔语 | 泰米尔语 | 泰米尔语 |
泰卢固语 | 泰卢固语 | 泰卢固语 |
塔吉克语 | 塔吉克语 | 西里尔文 |
泰语 | 泰语 | 泰语 |
土耳其语 | 土耳其语 | 拉丁文 |
乌克兰语 | 乌克兰语 | 西里尔文 |
乌尔都语 | 乌尔都语 | 阿拉伯语 |
乌兹别克语 | 乌兹别克语 | 拉丁文 |
越南语 | 越南语 | 拉丁文 |
祖鲁语 | 祖鲁语 | 拉丁文 |
意第绪语 | 意第绪语 | 希伯来语 |
约鲁巴语 | 约鲁巴语 | 拉丁文 |
汉语 | 汉语 | 汉字(包括简体和繁体) |
汉语拉丁化 | 汉语 | 拉丁文 |
祖鲁语 | 祖鲁语 | 拉丁文 |
类似的工作
Rust的自然语言检测库。 https://github.com/greyblake/whatlang-rs
将谷歌的cld3语言检测器翻译成Rust。仅为了乐趣。 https://github.com/edvakf/langdetect
依赖关系
~0.6–2MB
~31K SLoC