模型:
papluca/xlm-roberta-base-language-detection
这个模型是在 Language Identification 数据集上对 xlm-roberta-base 进行微调的版本。
这个模型是基于XLM-RoBERTa变换器模型的,在其顶部添加了一个分类头(即在合并后的输出之上的线性层)。有关更多信息,请参考 xlm-roberta-base 模型卡片或Conneau等人的 Unsupervised Cross-lingual Representation Learning at Scale 论文。
您可以直接将此模型用作语言检测器,即用于序列分类任务。目前,它支持以下20种语言:
阿拉伯语(ar),保加利亚语(bg),德语(de),现代希腊语(el),英语(en),西班牙语(es),法语(fr),印地语(hi),意大利语(it),日语(ja),荷兰语(nl),波兰语(pl),葡萄牙语(pt),俄语(ru),斯瓦希里语(sw),泰语(th),土耳其语(tr),乌尔都语(ur),越南语(vi)和中文(zh)
该模型是在 Language Identification 数据集上进行微调的,该数据集包含20种语言的文本序列。训练集包含70k个样本,验证集和测试集各有10k个样本。测试集的平均准确率为99.6%(这与平均宏F1-score和加权F1-score在测试集上完全平衡的情况相匹配)。以下是更详细的评估结果表格。
Language | Precision | Recall | F1-score | support |
---|---|---|---|---|
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 库进行比较的基线,我们使用了Python langid 库。由于它预先训练了97种语言,我们使用其.set_languages()方法将语言集限制为我们的20种语言。langid在测试集上的平均准确率为98.5%。下表提供了更多详细信息。
Language | Precision | Recall | F1-score | support |
---|---|---|---|---|
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完成的。以下是训练代码的概述。
训练过程中使用了以下超参数:
表格
Training Loss | Epoch | Step | Validation Loss | Accuracy | F1 |
---|---|---|---|---|---|
0.2492 | 1.0 | 1094 | 0.0149 | 0.9969 | 0.9969 |
0.0101 | 2.0 | 2188 | 0.0103 | 0.9977 | 0.9977 |
Training Loss | Epoch | Step | Validation Loss | Accuracy | F1 |
---|---|---|---|---|---|
0.2492 | 1.0 | 1094 | 0.0149 | 0.9969 | 0.9969 |
0.0101 | 2.0 | 2188 | 0.0103 | 0.9977 | 0.9977 |
简而言之,它在验证集上实现了以下结果: