模型简介
模型特点
模型能力
使用案例
🚀 xlm-roberta-base语言检测模型
本模型是基于Transformer架构的语言检测模型,它在多语言文本分类任务中表现出色,能精准识别20种不同语言,为跨语言文本处理提供了强大支持。
🚀 快速开始
本模型可直接作为语言检测器使用,即用于序列分类任务。以下为你提供了两种使用方式,你可以根据需求选择。
方式一:使用高级 pipeline
API
from transformers import pipeline
text = [
"Brevity is the soul of wit.",
"Amor, ch'a nullo amato amar perdona."
]
model_ckpt = "papluca/xlm-roberta-base-language-detection"
pipe = pipeline("text-classification", model=model_ckpt)
pipe(text, top_k=1, truncation=True)
方式二:分别使用分词器和模型
import torch
from transformers import AutoModelForSequenceClassification, AutoTokenizer
text = [
"Brevity is the soul of wit.",
"Amor, ch'a nullo amato amar perdona."
]
model_ckpt = "papluca/xlm-roberta-base-language-detection"
tokenizer = AutoTokenizer.from_pretrained(model_ckpt)
model = AutoModelForSequenceClassification.from_pretrained(model_ckpt)
inputs = tokenizer(text, padding=True, truncation=True, return_tensors="pt")
with torch.no_grad():
logits = model(**inputs).logits
preds = torch.softmax(logits, dim=-1)
# Map raw predictions to languages
id2lang = model.config.id2label
vals, idxs = torch.max(preds, dim=1)
{id2lang[k.item()]: v.item() for k, v in zip(idxs, vals)}
✨ 主要特性
- 多语言支持:支持20种语言的检测,包括阿拉伯语(ar)、保加利亚语(bg)、德语(de)、现代希腊语(el)、英语(en)、西班牙语(es)、法语(fr)、印地语(hi)、意大利语(it)、日语(ja)、荷兰语(nl)、波兰语(pl)、葡萄牙语(pt)、俄语(ru)、斯瓦希里语(sw)、泰语(th)、土耳其语(tr)、乌尔都语(ur)、越南语(vi)和中文(zh)。
- 高精度:在测试集上的平均准确率达到99.6%,与平均宏/加权F1分数相匹配。
📦 安装指南
文档未提及安装步骤,暂不提供相关内容。
💻 使用示例
基础用法
from transformers import pipeline
text = [
"Brevity is the soul of wit.",
"Amor, ch'a nullo amato amar perdona."
]
model_ckpt = "papluca/xlm-roberta-base-language-detection"
pipe = pipeline("text-classification", model=model_ckpt)
pipe(text, top_k=1, truncation=True)
高级用法
import torch
from transformers import AutoModelForSequenceClassification, AutoTokenizer
text = [
"Brevity is the soul of wit.",
"Amor, ch'a nullo amato amar perdona."
]
model_ckpt = "papluca/xlm-roberta-base-language-detection"
tokenizer = AutoTokenizer.from_pretrained(model_ckpt)
model = AutoModelForSequenceClassification.from_pretrained(model_ckpt)
inputs = tokenizer(text, padding=True, truncation=True, return_tensors="pt")
with torch.no_grad():
logits = model(**inputs).logits
preds = torch.softmax(logits, dim=-1)
# Map raw predictions to languages
id2lang = model.config.id2label
vals, idxs = torch.max(preds, dim=1)
{id2lang[k.item()]: v.item() for k, v in zip(idxs, vals)}
📚 详细文档
模型描述
本模型是 xlm-roberta-base 在 语言识别 数据集上进行微调后的版本。它是一个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语言检测
模型进行比较的基线,我们使用了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完成的。以下是包含训练代码的 Colab笔记本。
训练超参数
训练期间使用了以下超参数:
- 学习率:2e - 05
- 训练批次大小:64
- 评估批次大小:128
- 随机种子:42
- 优化器:Adam,β=(0.9, 0.999),ε=1e - 08
- 学习率调度器类型:线性
- 训练轮数:2
- 混合精度训练:原生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许可证。








