Fasttext 语言识别速度提高 80 倍,准确率提高 95%
项目描述
快速文本语言检测
该库是 Facebook 在 fasttext 上训练的语言检测模型的包装器。欲了解更多信息,请访问:https ://fasttext.cc/docs/en/language-identification.html
支持的语言
af als am an ar arz as ast av az azb ba bar bcl be bg bh bn bo bpy br bs bxr ca cbk ce cebckb co cs cv cy da de diq dsb dty dv el eml en eo es et eu fa fi fr frr fy ga gd gl gn gom gu gv he hi hif hr hsb ht hu hy ia id ie ilo io is it ja jbo jv ka kk km kn ko krc ku kv kw ky la lb lez li lmo lo lrc lt lv mai mg mhr min mk ml mn mr mrj ms mt mwl my myv mzn nah nap nds ne new nl nn no oc or os pa pam pfl pl pms pnb ps pt qu rm ro ru rue sa sah sc scn sco sd sh si sk sl so sq sr su sv sw ta te tg th tk tl tr tt tyv ug uk ur uz vec vep vi vls vo wa war wuu xal xmf yi yo yue zh
安装
pip install fasttext-langdetect
用法
detect
方法需要 UTF-8 数据。low_memory
选项可以通过牺牲一点准确性来使用压缩版本的 fasttext 模型获得预测。
from ftlangdetect import detect
result = detect(text="Bugün hava çok güzel", low_memory=False)
print(result)
> {'lang': 'tr', 'score': 1.00}
result = detect(text="Bugün hava çok güzel", low_memory=True)
print(result)
> {'lang': 'tr', 'score': 0.9982126951217651}
基准
我们在 Wili-2018 数据集上针对cld2、langid和langdetect对fasttext 模型进行了基准测试。
快速文本 | 懒散的 | 语言检测 | cld2 | |
---|---|---|---|---|
平均时间(毫秒) | 0,158273381 | 1,726618705 | 12,44604317 | 0,028776978 |
139 langs - 未加权 | 76,8 | 61,6 | 37,6 | 80,8 |
139 langs - 流行加权 | 95,5 | 93,1 | 86,6 | 92,7 |
44 langs - 未加权 | 93,3 | 89,2 | 81,6 | 91,5 |
44 语言 - 流行加权 | 96,6 | 94,8 | 89,4 | 93,4 |
pop weighted
意味着每种语言的召回率乘以其说话者的数量。- 139 种语言 = 具有 ISO 639-1 2 字母代码的所有语言
- 44 种语言 = 世界上使用最多的 44 种语言
每种语言的召回
郎 | cld2 | 快速文本 | 语言检测 | 懒散的 |
---|---|---|---|---|
南非荷兰语 | 0,94 | 0,918 | 0,992 | 0,966 |
阿尔巴尼亚语 | 0,958 | 0,966 | 0,964 | 0,954 |
阿姆哈拉语 | 0,976 | 0,982 | 0 | 0,982 |
阿拉伯 | 0,994 | 0,998 | 0,998 | 0,996 |
阿拉贡语 | 0 | 0,43 | 0 | 0,788 |
亚美尼亚语 | 0,966 | 0,972 | 0 | 0,968 |
阿萨姆语 | 0,946 | 0,956 | 0 | 0,14 |
阿瓦尔 | 0 | 0,626 | 0 | 0 |
艾马拉 | 0,596 | 0 | 0 | 0 |
阿塞拜疆 | 0,97 | 0,988 | 0 | 0,984 |
巴什基尔 | 0,97 | 0,97 | 0 | 0 |
巴斯克 | 0,978 | 0,99 | 0 | 0,962 |
白俄罗斯语 | 0,94 | 0,97 | 0 | 0,964 |
孟加拉 | 0,898 | 0,922 | 0,904 | 0,942 |
博杰普里 | 0,716 | 0,15 | 0 | 0 |
博克马尔 | 0,852 | 0,966 | 0,976 | 0,95 |
波斯尼亚语 | 0,422 | 0,108 | 0 | 0,054 |
布列塔尼 | 0,946 | 0,974 | 0 | 0,976 |
保加利亚语 | 0,892 | 0,964 | 0,964 | 0,942 |
缅甸语 | 0,998 | 0,998 | 0 | 0 |
加泰罗尼亚语 | 0,882 | 0,95 | 0,93 | 0,928 |
中央高棉 | 0,876 | 0,878 | 0 | 0,876 |
车臣 | 0 | 0,99 | 0 | 0 |
楚瓦什语 | 0 | 0,96 | 0 | 0 |
康沃尔语 | 0 | 0,792 | 0 | 0 |
科西嘉岛 | 0,88 | 0,016 | 0 | 0 |
克罗地亚语 | 0,688 | 0,806 | 0,982 | 0,932 |
捷克语 | 0,978 | 0,986 | 0,984 | 0,982 |
丹麦语 | 0,886 | 0,958 | 0,95 | 0,896 |
迪维希语 | 0,996 | 0,998 | 0 | 0 |
荷兰语 | 0,9 | 0,978 | 0,968 | 0,97 |
英语 | 0,992 | 1 | 0,998 | 0,986 |
世界语 | 0,936 | 0,978 | 0 | 0,948 |
爱沙尼亚语 | 0,918 | 0,952 | 0,948 | 0,932 |
法罗语 | 0,912 | 0 | 0 | 0,618 |
芬兰 | 0,988 | 0,998 | 0,998 | 0,994 |
法语 | 0,946 | 0,996 | 0,99 | 0,992 |
加利西亚语 | 0,89 | 0,912 | 0 | 0,93 |
格鲁吉亚语 | 0,974 | 0,976 | 0 | 0,976 |
德语 | 0,958 | 0,984 | 0,978 | 0,978 |
瓜拉尼 | 0,968 | 0,728 | 0 | 0 |
古吉拉特语 | 0,932 | 0,932 | 0,93 | 0,932 |
海地克里奥尔语 | 0,988 | 0,536 | 0 | 0,99 |
豪萨 | 0,976 | 0 | 0 | 0 |
希伯来语 | 0,994 | 0,996 | 0,998 | 0,998 |
印地语 | 0,982 | 0,984 | 0,982 | 0,972 |
匈牙利 | 0,96 | 0,988 | 0,968 | 0,986 |
冰岛的 | 0,984 | 0,996 | 0 | 0,996 |
我愿意 | 0 | 0,76 | 0 | 0 |
伊博语 | 0,798 | 0 | 0 | 0 |
印度尼西亚 | 0,88 | 0,946 | 0,958 | 0,836 |
国际语 | 0,27 | 0,688 | 0 | 0 |
中间语 | 0,198 | 0,192 | 0 | 0 |
爱尔兰语 | 0,968 | 0,978 | 0 | 0,984 |
意大利语 | 0,866 | 0,948 | 0,932 | 0,936 |
日本人 | 0,97 | 0,986 | 0,98 | 0,986 |
爪哇语 | 0 | 0,864 | 0 | 0,938 |
卡纳达语 | 0,998 | 0,998 | 0,998 | 0,998 |
哈萨克语 | 0,978 | 0,992 | 0 | 0,916 |
基尼亚卢旺达语 | 0,86 | 0 | 0 | 0,44 |
吉尔吉斯斯坦 | 0,974 | 0,99 | 0 | 0,408 |
科米 | 0 | 0,544 | 0 | 0 |
韩国人 | 0,986 | 0,99 | 0,988 | 0,99 |
库尔德 | 0 | 0,972 | 0 | 0,976 |
老挝 | 0,84 | 0,842 | 0 | 0,85 |
拉丁 | 0,778 | 0,864 | 0 | 0,854 |
拉脱维亚语 | 0,98 | 0,992 | 0,992 | 0,99 |
林堡干 | 0 | 0,324 | 0 | 0 |
林加拉语 | 0,85 | 0 | 0 | 0 |
立陶宛语 | 0,96 | 0,976 | 0,974 | 0,97 |
卢干达 | 0,952 | 0 | 0 | 0 |
卢森堡语 | 0,864 | 0,894 | 0 | 0,93 |
马其顿语 | 0,88 | 0,984 | 0,982 | 0,974 |
马尔加什 | 0,99 | 0,99 | 0 | 0,988 |
马来语 | 0,896 | 0,586 | 0 | 0,39 |
马拉雅拉姆语 | 0,988 | 0,988 | 0,988 | 0,988 |
马耳他语 | 0,962 | 0,966 | 0 | 0,964 |
马恩岛 | 0,972 | 0,294 | 0 | 0 |
毛利人 | 0,994 | 0 | 0 | 0 |
马拉地语 | 0,958 | 0,966 | 0,964 | 0,942 |
现代希腊语 | 0,99 | 0,992 | 0,99 | 0,992 |
蒙 | 0,964 | 0,994 | 0 | 0,996 |
纳瓦霍人 | 0 | 0 | 0 | 0 |
尼泊尔语(宏观语言) | 0,96 | 0,98 | 0,978 | 0,922 |
北萨米人 | 0 | 0 | 0 | 0,866 |
挪威尼诺斯克 | 0,94 | 0,79 | 0 | 0,796 |
奥克西坦 | 0,66 | 0,48 | 0 | 0,724 |
奥里亚语 | 0,96 | 0,958 | 0 | 0,96 |
奥罗莫 | 0,956 | 0 | 0 | 0 |
奥塞梯 | 0 | 0,938 | 0 | 0 |
旁遮普语 | 0,994 | 0,994 | 0,994 | 0,994 |
波斯语 | 0,992 | 0,998 | 0,996 | 0,998 |
抛光 | 0,982 | 0,998 | 0,998 | 0,992 |
葡萄牙语 | 0,908 | 0,956 | 0,946 | 0,952 |
普什图 | 0,938 | 0,922 | 0 | 0,754 |
盖丘亚语 | 0,926 | 0,808 | 0 | 0,852 |
罗马尼亚语 | 0,932 | 0,986 | 0,984 | 0,984 |
罗曼什语 | 0,934 | 0,328 | 0 | 0 |
俄语 | 0,728 | 0,986 | 0,984 | 0,988 |
梵文 | 0,964 | 0,976 | 0 | 0 |
撒丁岛 | 0 | 0,01 | 0 | 0 |
苏格兰盖尔语 | 0,964 | 0,942 | 0 | 0 |
塞尔维亚 | 0,942 | 0,946 | 0 | 0,902 |
塞尔维亚-克罗地亚语 | 0 | 0,402 | 0 | 0 |
绍纳 | 0,844 | 0 | 0 | 0 |
信德语 | 0,978 | 0,982 | 0 | 0 |
僧伽罗语 | 0,962 | 0,962 | 0 | 0,962 |
斯洛伐克语 | 0,964 | 0,974 | 0,982 | 0,97 |
斯洛文尼亚 | 0,876 | 0,966 | 0,968 | 0,946 |
索马里 | 0,924 | 0,696 | 0,956 | 0 |
西班牙语 | 0,894 | 0,986 | 0,976 | 0,98 |
标准中文 | 0,946 | 0,984 | 0,746 | 0,978 |
巽他语 | 0,91 | 0,854 | 0 | 0 |
斯瓦希里语(宏语言) | 0,924 | 0,92 | 0,938 | 0,934 |
瑞典 | 0,872 | 0,994 | 0,992 | 0,986 |
他加禄语 | 0,928 | 0,972 | 0,974 | 0,964 |
塔吉克 | 0,82 | 0,85 | 0 | 0 |
泰米尔语 | 0,992 | 0,992 | 0,992 | 0,994 |
鞑靼人 | 0,978 | 0,984 | 0 | 0 |
泰卢固语 | 0,958 | 0,958 | 0,958 | 0,96 |
泰国 | 0,988 | 0,988 | 0,988 | 0,988 |
藏 | 0,986 | 0,992 | 0 | 0 |
同安 | 0,968 | 0 | 0 | 0 |
茨瓦纳 | 0,928 | 0 | 0 | 0 |
土耳其 | 0,968 | 0,986 | 0,982 | 0,976 |
土库曼 | 0,94 | 0,936 | 0 | 0 |
维吾尔 | 0,978 | 0,986 | 0 | 0,964 |
乌克兰 | 0,97 | 0,988 | 0,986 | 0,986 |
乌尔都语 | 0,86 | 0,958 | 0,89 | 0,896 |
乌兹别克语 | 0,984 | 0,99 | 0 | 0 |
越南语 | 0,978 | 0,986 | 0,984 | 0,984 |
沃拉普克 | 0,994 | 0,982 | 0 | 0,986 |
瓦隆 | 0 | 0,664 | 0 | 0,98 |
威尔士语 | 0,98 | 0,992 | 0,992 | 0,984 |
西弗里斯兰语 | 0,888 | 0,956 | 0 | 0 |
沃洛夫 | 0,926 | 0 | 0 | 0 |
科萨语 | 0,928 | 0 | 0 | 0,912 |
意第绪语 | 0,956 | 0,958 | 0 | 0 |
约鲁巴语 | 0,75 | 0,262 | 0 | 0 |
参考
[1] A. Joulin、E. Grave、P. Bojanowski、T. Mikolov,《高效文本分类技巧包》
@article{joulin2016bag,
title={Bag of Tricks for Efficient Text Classification},
author={Joulin, Armand and Grave, Edouard and Bojanowski, Piotr and Mikolov, Tomas},
journal={arXiv preprint arXiv:1607.01759},
year={2016}
}
[2] A. Joulin, E. Grave, P. Bojanowski, M. Douze, H. Jégou, T. Mikolov, FastText.zip:压缩文本分类模型
@article{joulin2016fasttext,
title={FastText.zip: Compressing text classification models},
author={Joulin, Armand and Grave, Edouard and Bojanowski, Piotr and Douze, Matthijs and J{\'e}gou, H{\'e}rve and Mikolov, Tomas},
journal={arXiv preprint arXiv:1612.03651},
year={2016}
}