语种识别简介
语种识别(又称为语言识别)是指利用计算机自动判断文本所属语言种类的过程。据统计,全世界已查明的语言数量为7099种,而中国的56个民族就有80多种语言和地区方言。随着全球国际化和互联网化的逐步加深,多语言数据混杂混用的现象愈发严重,这对语种识别技术也提出了更高的要求和挑战。该模型基于注意力机制研发,支持104种语言检测,在单词、短语、句子、篇章级别的识别准确率都达到了领先水平。
温馨提示
使用pipeline推理及在线体验功能的时候,尽量输入单句文本,如果是多句长文本使用换行符号(\n)进行切分。
模型描述
基于注意力机制的语种识别模型【论文链接】由多特征表征模块、多尺度多头注意力和分类器三者构成。其中,多特征表征模块从文本中提取字符、单词、编码、位置多维度信息,更利于模型捕获文本特征;多尺度多头注意力则通过多尺度掩码的方式让不同头的注意力可以专注到局部信息,提升短文本的识别效果;分类器是由线性神经网络和SoftMax组成,能对多标签进行分类。此外,该模型还针对不同语种数据量悬殊导致类别不均衡、高质量数据集缺少的问题,使用了基于翻译的数据增强方法。模型结果如下图所示:
期望模型使用方式以及适用范围
本模型适用于对文本进行语言种类判断的问题。支持的语言和代码,104语种列表:布尔语(南非荷兰语) af, 阿姆哈拉语 am, 阿拉伯语 ar, 阿塞拜疆语 az, 白俄罗斯语 be, 保加利亚语 bg, 孟加拉语 bn, 波斯尼亚语 bs, 加泰罗尼亚语 ca, 宿务语 ce, 科西嘉语 co, 捷克语 cs, 威尔士语 cy, 丹麦语 da, 德语 de, 希腊语 el, 英语 en, 世界语 eo, 西班牙语 es, 爱沙尼亚语 et, 巴斯克语 eu, 波斯语 fa, 芬兰语 fi, 法语 fr, 弗里西语 fy, 爱尔兰语 ga, 苏格兰盖尔语 gd, 加利西亚语 gl, 古吉拉特语 gu, 豪萨语 ha, 夏威夷语 haw, 希伯来语 he, 印地语 hi, 苗语 hmn, 克罗地亚语 hr, 海地克里奥尔语 ht, 匈牙利语 hu, 亚美尼亚语 hy, 印尼语 id, 伊博语 ig, 冰岛语 is, 意大利语 it, 日语 ja, 印尼爪哇语 jv, 格鲁吉亚语 ka, 哈萨克语 kk, 高棉语 km, 卡纳达语 kn, 韩语 ko, 库尔德语 ku, 吉尔吉斯语 ky, 拉丁语 la, 老挝语 lo, 立陶宛语 lt, 拉脱维亚语 lv, 马尔加什语 mg, 毛利语 mi, 马其顿语 mk, 马拉雅拉姆语 ml, 蒙古语 mn, 马拉地语 mr, 马来语 ms, 马耳他语 mt, 缅甸语 my, 尼泊尔语 ne, 荷兰语 nl, 挪威语 no, 齐切瓦语 ny, 旁遮普语 pa, 波兰语 pl, 普什图语 ps, 葡萄牙语 pt, 罗马尼亚语 ro, 俄语 ru, 信德语 sd, 僧伽罗语 si, 斯洛伐克语 sk, 斯洛文尼亚语 sl, 萨摩亚语 sm, 修纳语 sn, 索马里语 so, 阿尔巴尼亚语 sq, 塞尔维亚语 sr, 塞索托语 st, 印尼巽他语 su, 瑞典语 sv, 斯瓦希里语 sw, 泰米尔语 ta, 泰卢固语 te, 塔吉克语 tg, 泰语 th, 菲律宾语 tl, 土耳其语 tr, 维吾尔语 ug, 乌克兰语 uk, 乌尔都语 ur, 乌兹别克语 uz, 越南语 vi, 南非科萨语 xh, 意第绪语 yi, 约鲁巴语 yo, 中文 zh, 繁体中文 zh-tw, 南非祖鲁语 zu。
如何使用
在ModelScope框架上,提供输入源文,即可通过简单的Pipeline调用来使用。
代码范例
from modelscope.pipelines import pipeline
from modelscope.utils.constant import Tasks
input_sequences = 'Elon Musk, co-founder and chief executive officer of Tesla Motors.\n' \
'Gleichzeitig nahm die Legion an der Befriedung Algeriens teil, die von\n' \
'使用pipeline推理及在线体验功能的时候,尽量输入单句文本,如果是多句长文本建议人工分句。'
pipeline_ins = pipeline(task=Tasks.text_classification, model="damo/nlp_language_identification-classification-base")
outputs = pipeline_ins(input=input_sequences)
print(outputs)
# {'labels': ['en', 'de', 'zh'], 'scores': ['en:0.99', 'de:1.00', 'zh:1.00']}
模型局限性以及可能的偏差
- 模型在通用数据集上训练,部分垂直领域有可能产生一些偏差,请用户自行评测后决定如何使用。
- 当前版本在tensorflow 1.12和1.4环境测试通过,其他环境下可用性待测试。
数据评估及结果
从常见19语言的WiKi数据和通用100语言的OPUS两个数据集进行模型评测。其中,langid.py、LanideNN是主流的开源语种识别模型。
WiKi数据
Backbone | Word | Phrase | Sentence | all langs |
---|---|---|---|---|
Ours | 80.85 | 88.42 | 94.09 | 104 |
Langid.py | 61.24 | 78.18 | 92.67 | 97 |
LanideNN | 67.49 | 78.51 | 92.22 | 131 |
说明:
- 19个常见语言包括:英语 en, 中文 zh, 俄语 ru, 葡萄牙语 pt, 西班牙语 es, 法语 fr, 德语 de, 意大利语 it, 荷兰语 nl, 日语 ja, 韩语 ko, 阿拉伯语 ar, 泰语 th, 印地语 hi, 希伯来语 he, 越南语 vi, 土耳其语 tr, 波兰语 pl, 印尼语 id。
- Word 表示 单个单词的识别准确率;
- Phrase 表示 2-5个单词组成词组的识别准确率;
- Sentence 表示 完整一句话的识别准确率。
OPUS数据
Backbone | avg acc | max acc | support acc | support num | all langs |
---|---|---|---|---|---|
Ours | 70.28 | 77.80 | 76.39 | 91 | 104 |
Langid.py | 61.58 | 70.07 | 70.78 | 87 | 97 |
LanideNN | 64.74 | 73.35 | 75.28 | 86 | 131 |
说明:
- 数据源:https://opus.nlpl.eu/opus-100.php
- avg acc 表示 OPUS-100 数据集100个语言的平均准确率;
- max acc 表示 OPUS-100 数据集100个语言在分类为相似语言的条件下,最大准确率;
- support acc 表示 OPUS-100 数据集中 支持语种的准确率;
- support num 表示 OPUS-100 数据集中 支持语种的个数;
- all langs 表示 引擎最多支持的语种数量。
论文引用
如果你觉得这个该模型对有所帮助,请考虑引用下面的相关的论文:
@article{ren2022effective,
title={Effective Approaches to Neural Query Language Identification},
author={Ren, Xingzhang and Yang, Baosong and Liu, Dayiheng and Zhang, Haibo and Lv, Xiaoyu and Yao, Liang and Xie, Jun},
journal={Computational Linguistics},
volume={48},
number={4},
pages={887--906},
year={2022},
publisher={MIT Press One Broadway, 12th Floor, Cambridge, Massachusetts 02142, USA~…}
}
@inproceedings{ren2022unsupervised,
title={Unsupervised preference-aware language identification},
author={Ren, Xingzhang and Yang, Baosong and Liu, Dayiheng and Zhang, Haibo and Lv, Xiaoyu and Yao, Liang and Xie, Jun},
booktitle={Findings of the Association for Computational Linguistics: ACL 2022},
pages={3847--3852},
year={2022}
}
评论