🚀 XLM-RoBERTa基础语言检测模型
本模型基于XLM-RoBERTa架构,在多语言识别任务上进行了微调,能够精准识别20种不同语言,为多语言处理场景提供了高效的解决方案。
🚀 快速开始
可直接从 https://huggingface.co/papluca/xlm-roberta-base-language-detection 克隆该模型。
✨ 主要特性
- 微调优化:该模型是 xlm-roberta-base 在 语言识别 数据集上的微调版本。
- 多语言支持:支持20种语言的识别,包括阿拉伯语、保加利亚语、德语等。
- 高精度表现:在测试集上平均准确率达到 99.6% ,与平均宏/加权F1分数相匹配。
📚 详细文档
模型描述
此模型是一个XLM - RoBERTa变压器模型,顶部带有一个分类头(即池化输出上的线性层)。如需更多信息,请参考 xlm - roberta - base 模型卡片或Conneau等人的论文 大规模无监督跨语言表征学习。
预期用途与限制
可直接将此模型用作语言检测器,即用于序列分类任务。目前,它支持以下20种语言:
阿拉伯语 (ar)、保加利亚语 (bg)、德语 (de)、现代希腊语 (el)、英语 (en)、西班牙语 (es)、法语 (fr)、印地语 (hi)、意大利语 (it)、日语 (ja)、荷兰语 (nl)、波兰语 (pl)、葡萄牙语 (pt)、俄语 (ru)、斯瓦希里语 (sw)、泰语 (th)、土耳其语 (tr)、乌尔都语 (ur)、越南语 (vi) 和中文 (zh)
训练和评估数据
该模型在 语言识别 数据集上进行了微调,该数据集由20种语言的文本序列组成。训练集包含70k个样本,而验证集和测试集各有10k个样本。测试集上的平均准确率为 99.6% (由于测试集完全平衡,这与平均宏/加权F1分数相匹配)。以下表格提供了更详细的评估。
语言 |
精确率 |
召回率 |
F1分数 |
样本数 |
ar |
0.998 |
0.996 |
0.997 |
500 |
bg |
0.998 |
0.964 |
0.981 |
500 |
de |
0.998 |
0.996 |
0.997 |
500 |
el |
0.996 |
1.000 |
0.998 |
500 |
en |
1.000 |
1.000 |
1.000 |
500 |
es |
0.967 |
1.000 |
0.983 |
500 |
fr |
1.000 |
1.000 |
1.000 |
500 |
hi |
0.994 |
0.992 |
0.993 |
500 |
it |
1.000 |
0.992 |
0.996 |
500 |
ja |
0.996 |
0.996 |
0.996 |
500 |
nl |
1.000 |
1.000 |
1.000 |
500 |
pl |
1.000 |
1.000 |
1.000 |
500 |
pt |
0.988 |
1.000 |
0.994 |
500 |
ru |
1.000 |
0.994 |
0.997 |
500 |
sw |
1.000 |
1.000 |
1.000 |
500 |
th |
1.000 |
0.998 |
0.999 |
500 |
tr |
0.994 |
0.992 |
0.993 |
500 |
ur |
1.000 |
1.000 |
1.000 |
500 |
vi |
0.992 |
1.000 |
0.996 |
500 |
zh |
1.000 |
1.000 |
1.000 |
500 |
基准测试
为了与 xlm - roberta - base - language - detection
进行对比,我们使用了Python langid 库。由于它预先在97种语言上进行了训练,我们使用其 .set_languages()
方法将语言集限制为我们的20种语言。langid在测试集上的平均准确率为 98.5% 。以下表格提供了更多详细信息。
语言 |
精确率 |
召回率 |
F1分数 |
样本数 |
ar |
0.990 |
0.970 |
0.980 |
500 |
bg |
0.998 |
0.964 |
0.981 |
500 |
de |
0.992 |
0.944 |
0.967 |
500 |
el |
1.000 |
0.998 |
0.999 |
500 |
en |
1.000 |
1.000 |
1.000 |
500 |
es |
1.000 |
0.968 |
0.984 |
500 |
fr |
0.996 |
1.000 |
0.998 |
500 |
hi |
0.949 |
0.976 |
0.963 |
500 |
it |
0.990 |
0.980 |
0.985 |
500 |
ja |
0.927 |
0.988 |
0.956 |
500 |
nl |
0.980 |
1.000 |
0.990 |
500 |
pl |
0.986 |
0.996 |
0.991 |
500 |
pt |
0.950 |
0.996 |
0.973 |
500 |
ru |
0.996 |
0.974 |
0.985 |
500 |
sw |
1.000 |
1.000 |
1.000 |
500 |
th |
1.000 |
0.996 |
0.998 |
500 |
tr |
0.990 |
0.968 |
0.979 |
500 |
ur |
0.998 |
0.996 |
0.997 |
500 |
vi |
0.971 |
0.990 |
0.980 |
500 |
zh |
1.000 |
1.000 |
1.000 |
500 |
训练过程
微调是通过 Trainer
API完成的。
训练超参数
训练期间使用了以下超参数:
- 学习率:2e - 05
- 训练批次大小:64
- 评估批次大小:128
- 随机种子:42
- 优化器:Adam,β值为(0.9, 0.999),ε值为1e - 08
- 学习率调度器类型:线性
- 训练轮数:2
- 混合精度训练:原生自动混合精度(Native AMP)
训练结果
以下总结了语言识别数据集 valid
分割上的验证结果。
训练损失 |
轮数 |
步数 |
验证损失 |
准确率 |
F1分数 |
0.2492 |
1.0 |
1094 |
0.0149 |
0.9969 |
0.9969 |
0.0101 |
2.0 |
2188 |
0.0103 |
0.9977 |
0.9977 |
简而言之,它在验证集上取得了以下结果:
- 损失:0.0101
- 准确率:0.9977
- F1分数:0.9977
框架版本
- Transformers 4.12.5
- Pytorch 1.10.0 + cu111
- Datasets 1.15.1
- Tokenizers 0.10.3
📄 许可证
本项目采用MIT许可证。