license: apache-2.0
tags:
- generated_from_trainer
datasets: Sakonii/nepalitext-language-model-dataset
mask_token:
widget:
- text: "मानविय गतिविधिले प्रातृतिक पर्यावरन प्रनालीलाई अपरिमेय क्षति पु्र्याएको छ। परिवर्तनशिल जलवायुले खाध, सुरक्षा, , जमिन, मौसमलगायतलाई असंख्य तरिकाले प्रभावित छ。"
example_title: "示例1"
- text: "अचेल विद्यालय र कलेजहरूले स्मारिका कत्तिको प्रकाशन गर्छन्, यकिन छैन । केही वर्षपहिलेसम्म गाउँसहरका सानाठूला संस्थाहरूमा पुग्दा शिक्षक वा कर्मचारीले संस्थाबाट प्रकाशित पत्रिका, स्मारिका र पुस्तक कोसेलीका रूपमा थमाउँथे 。"
example_title: "示例2"
- text: "जलविद्युत् विकासको ११० वर्षको इतिहास बनाएको नेपालमा हाल सरकारी र निजी क्षेत्रबाट गरी करिब २ हजार मेगावाट उत्पादन भइरहेको छ 。"
example_title: "示例3"
model-index:
- name: distilbert-base-nepali
results: []
distilbert-base-nepali
该模型基于包含超过1300万尼泊尔语文本序列的nepalitext数据集,采用掩码语言建模(MLM)目标进行预训练。我们的方法训练了一个类似于XLM-ROBERTa的句子片段模型(SPM)进行文本分词,并训练了distilbert模型进行语言建模。更多细节请参阅此论文。
在评估集上取得以下结果:
MLM概率 |
评估损失 |
评估困惑度 |
15% |
2.349 |
10.479 |
20% |
2.605 |
13.351 |
模型描述
参考原始模型distilbert-base-uncased
预期用途与限制
该主干模型旨在针对尼泊尔语的下游任务(如序列分类、标记分类或问答)进行微调。
由于语言模型是在文本分组为512个标记块的数据上训练的,它可以处理最多512个标记的文本序列,但在较短序列上可能表现不佳。
使用方法
该模型可直接用于掩码语言建模的流水线:
>>> from transformers import pipeline
>>> unmasker = pipeline('fill-mask', model='Sakonii/distilbert-base-nepali')
>>> unmasker("मानविय गतिविधिले प्रातृतिक पर्यावरन प्रनालीलाई अपरिमेय क्षति पु्र्याएको छ। परिवर्तनशिल जलवायुले खाध, सुरक्षा, <mask>, जमिन, मौसमलगायतलाई असंख्य तरिकाले प्रभावित छ।")
[{'score': 0.04128897562623024,
'sequence': 'मानविय गतिविधिले प्रातृतिक पर्यावरन प्रनालीलाई अपरिमेय क्षति पु्र्याएको छ। परिवर्तनशिल जलवायुले खाध, सुरक्षा, मौसम, जमिन, मौसमलगायतलाई असंख्य तरिकाले प्रभावित छ।',
'token': 2605,
'token_str': 'मौसम'},
{'score': 0.04100276157259941,
'sequence': 'मानविय गतिविधिले प्रातृतिक पर्यावरन प्रनालीलाई अपरिमेय क्षति पु्र्याएको छ। परिवर्तनशिल जलवायुले खाध, सुरक्षा, प्रकृति, जमिन, मौसमलगायतलाई असंख्य तरिकाले प्रभावित छ।',
'token': 2792,
'token_str': 'प्रकृति'},
{'score': 0.026525357738137245,
'sequence': 'मानविय गतिविधिले प्रातृतिक पर्यावरन प्रनालीलाई अपरिमेय क्षति पु्र्याएको छ। परिवर्तनशिल जलवायुले खाध, सुरक्षा, पानी, जमिन, मौसमलगायतलाई असंख्य तरिकाले प्रभावित छ।',
'token': 387,
'token_str': 'पानी'},
{'score': 0.02340106852352619,
'sequence': 'मानविय गतिविधिले प्रातृतिक पर्यावरन प्रनालीलाई अपरिमेय क्षति पु्र्याएको छ। परिवर्तनशिल जलवायुले खाध, सुरक्षा, जल, जमिन, मौसमलगायतलाई असंख्य तरिकाले प्रभावित छ।',
'token': 1313,
'token_str': 'जल'},
{'score': 0.02055591531097889,
'sequence': 'मानविय गतिविधिले प्रातृतिक पर्यावरन प्रनालीलाई अपरिमेय क्षति पु्र्याएको छ। परिवर्तनशिल जलवायुले खाध, सुरक्षा, वातावरण, जमिन, मौसमलगायतलाई असंख्य तरिकाले प्रभावित छ।',
'token': 790,
'token_str': 'वातावरण'}]
以下是如何在PyTorch中使用该模型获取给定文本的特征:
from transformers import AutoTokenizer, AutoModelForMaskedLM
tokenizer = AutoTokenizer.from_pretrained('Sakonii/distilbert-base-nepali')
model = AutoModelForMaskedLM.from_pretrained('Sakonii/distilbert-base-nepali')
text = "चाहिएको text यता राख्नु होला。"
encoded_input = tokenizer(text, return_tensors='pt')
output = model(**encoded_input)
训练数据
该模型基于nepalitext语言建模数据集训练,该数据集结合了OSCAR、cc100和一组从维基百科抓取的尼泊尔语文章。
对于语言模型的训练,训练集中的文本被分组为512个标记的块。
分词
基于nepalitext数据集的子集训练了一个句子片段模型(SPM)进行文本分词。分词器的训练参数为:词汇量=24576,最小频率=4,字母表限制=1000,模型最大长度=512。
训练过程
该模型的训练配置与原始distilbert-base-uncased相同;每个实例512个标记,每批次28个实例,约35.7K训练步数。
训练超参数
最终epoch使用的超参数如下:[不同epoch的超参数变化请参阅下面的训练结果表]
- 学习率:5e-05
- 训练批次大小:28
- 评估批次大小:8
- 随机种子:42
- 优化器:Adam,参数betas=(0.9,0.999),epsilon=1e-08
- 学习率调度器类型:线性
- epoch数:1
- 混合精度训练:原生AMP
训练结果
模型训练了4个epoch,超参数变化如下:
训练损失 |
Epoch |
MLM概率 |
训练批次大小 |
步数 |
验证损失 |
困惑度 |
3.4477 |
1.0 |
15 |
26 |
38864 |
3.3067 |
27.2949 |
2.9451 |
2.0 |
15 |
28 |
35715 |
2.8238 |
16.8407 |
2.866 |
3.0 |
20 |
28 |
35715 |
2.7431 |
15.5351 |
2.7287 |
4.0 |
20 |
28 |
35715 |
2.6053 |
13.5353 |
2.6412 |
5.0 |
20 |
28 |
35715 |
2.5161 |
12.3802 |
最终模型在MLM概率为15%时的评估结果:
训练损失 |
Epoch |
MLM概率 |
训练批次大小 |
步数 |
验证损失 |
困惑度 |
- |
- |
15 |
- |
- |
2.3494 |
10.4791 |
框架版本
- Transformers 4.16.2
- PyTorch 1.9.1
- Datasets 1.18.3
- Tokenizers 0.10.3