项目介绍:langdetect 语言检测模型
langdetect 是一个基于 XLM-RoBERTa 训练完成的语言检测模型,旨在识别多种现代及中古语言,其背景是出自欧洲研究理事会(European Research Council)资助的“从数字到遥远外交(DiDip)”项目。下面是对此项目的详细介绍。
模型描述
langdetect 模型基于 XLM-RoBERTa(base 版本)进行微调,该模型在 Transformers 框架下使用,专用于文本分类任务。XLM-RoBERTa 是一个强大的多语言模型,在跨语言表示学习方面表现突出。更多关于 XLM-RoBERTa 的信息可以参考 Hugging Face 的模型卡 或 Conneau 等人的论文《大规模无监督跨语言表示学习》。
适用范围与限制
该模型主要用于语言检测任务,即文本序列分类。目前,其支持 41 种语言,这些语言分为现代和中古两类:
- 现代语言包括:保加利亚语、克罗地亚语、捷克语、丹麦语、荷兰语、英语、爱沙尼亚语、芬兰语、法语、德语、希腊语、匈牙利语、爱尔兰语、意大利语、拉脱维亚语、立陶宛语、马耳他语、波兰语、葡萄牙语、罗马尼亚语、斯洛伐克语、斯洛文尼亚语、西班牙语、瑞典语、俄语、土耳其语、巴斯克语、加泰罗尼亚语、阿尔巴尼亚语、塞尔维亚语、乌克兰语、挪威语、阿拉伯语、中文、希伯来语。
- 中古语言包括:中古高地德语、拉丁语、中古低地德语、古法语、古教会斯拉夫语、早期现代高地德语、古希腊和中古希腊。
训练与评估
langdetect 模型使用 Monasterium 和 Wikipedia 数据集进行微调,这些数据包括 41 种语言的文本序列。训练集包含 80,000 个样本,验证集和测试集则各包含 16,000 个样本。测试集的平均准确率为 99.59%,这与平均宏观/加权 F1 分数一致,表明测试集实现了完美的平衡。
训练过程
在训练过程中,该模型使用了 Trainer API 和 WeightedLossTrainer 进行微调。以下是训练时使用的超参数:
- 学习率:2e-05
- 训练批量大小:20
- 验证批量大小:20
- 随机种子:42
- 优化器:Adam,参数 betas=(0.9,0.999) 和 epsilon=1e-08
- 学习率调度器类型:线性
- 训练代数:3
- 混合精度训练:Native AMP
训练结果
训练结果表现优异,以下为三个训练阶段的损失和 F1 分数摘要:
训练损失 | 验证损失 | F1 分数 |
---|---|---|
0.000300 | 0.048985 | 0.991585 |
0.000100 | 0.033340 | 0.994663 |
0.000000 | 0.032938 | 0.995979 |
使用示例
为了在项目中集成此模型,以下是一个简单的 Python 代码使用示例:
# 安装必要包
!pip install transformers --quiet
# 导入库
import torch
from transformers import pipeline
# 定义分类管道
classificator = pipeline("text-classification", model="ERCDiDip/langdetect")
# 使用分类管道
result = classificator("示例文本")
print(result)
更新信息
模型最近的一次更新是在 2022 年 11 月 25 日,增加了对古希腊和中古希腊(grc)的支持。
框架版本
- Transformers 版本:4.24.0
- Pytorch 版本:1.13.0
- 数据集版本:2.6.1
- 分词器版本:0.13.3
在使用该模型时,请引用以下文献以表示对原作者的尊重和致谢。模型的详细信息和下载地址可在 Hugging Face 的 langdetect 页面 找到。