模型:
sagorsarker/bangla-bert-base
一段艰难的旅程。这里是我们的Bangla-Bert!它现在可以在Huggingface模型库中使用。
Bangla-Bert-Base 是使用掩码语言建模描述的孟加拉语预训练语言模型,其GitHub地址为 repository 。
语料库来源于两个主要的来源:
在下载这些语料库后,我们将其预处理为Bert格式,即每行一句话,并为新文档添加额外的换行符。
sentence 1 sentence 2 sentence 1 sentence 2
我们使用 BNLP 包来训练孟加拉语的句子分词模型,词汇大小为102025。我们将输出的词汇文件预处理为Bert格式。我们最终的词汇文件可在 https://github.com/sagorbrur/bangla-bert 和 huggingface 模型库中获得。
在训练100万步后,以下是评估结果。
global_step = 1000000 loss = 2.2406516 masked_lm_accuracy = 0.60641736 masked_lm_loss = 2.201459 next_sentence_accuracy = 0.98625 next_sentence_loss = 0.040997364 perplexity = numpy.exp(2.2406516) = 9.393331287442784 Loss for final step: 2.426227
非常感谢 Nick Doiron 提供分类任务的评估结果。他在分类任务中使用了 Bengali Classification Benchmark 数据集。与Nick的 Bengali electra 和多语言BERT相比,Bangla BERT基础版取得了最先进的结果。这里是 evaluation script 。
| Model | Sentiment Analysis | Hate Speech Task | News Topic Task | Average |
|---|---|---|---|---|
| mBERT | 68.15 | 52.32 | 72.27 | 64.25 |
| Bengali Electra | 69.19 | 44.84 | 82.33 | 65.45 |
| Bangla BERT Base | 70.37 | 71.83 | 89.19 | 77.13 |
我们使用 Wikiann 孟加拉NER数据集以及另外三个基准模型(mBERT,XLM-R,Indic-BERT)对Bangla BERT基础版进行了评估。在训练这些模型5个时期后,Bangla BERT基础版获得了第三名的成绩,mBERT获得第一名,XLM-R获得第二名。
| Base Pre-trained Model | F1 Score | Accuracy |
|---|---|---|
| 12320321 | 97.11 | 97.68 |
| 12321321 | 96.22 | 97.03 |
| 12322321 | 92.66 | 94.74 |
| Bangla-BERT-Base | 95.57 | 97.49 |
所有四个模型都是使用 transformers-token-classification 笔记本进行训练。您可以在 here 上找到所有模型的评估结果。
此外,您还可以查看下面的论文列表。他们在自己的数据集上使用了这个模型。
注:如果您将此模型用于任何自然语言处理任务,请与我们分享评估结果。我们将在此处添加。
孟加拉BERT分词器
from transformers import AutoTokenizer, AutoModel
bnbert_tokenizer = AutoTokenizer.from_pretrained("sagorsarker/bangla-bert-base")
text = "আমি বাংলায় গান গাই।"
bnbert_tokenizer.tokenize(text)
# ['আমি', 'বাংলা', '##য', 'গান', 'গাই', '।']
掩码生成
您可以直接使用此模型进行掩码语言建模的管道。
from transformers import BertForMaskedLM, BertTokenizer, pipeline
model = BertForMaskedLM.from_pretrained("sagorsarker/bangla-bert-base")
tokenizer = BertTokenizer.from_pretrained("sagorsarker/bangla-bert-base")
nlp = pipeline('fill-mask', model=model, tokenizer=tokenizer)
for pred in nlp(f"আমি বাংলায় {nlp.tokenizer.mask_token} গাই।"):
print(pred)
# {'sequence': '[CLS] আমি বাংলায গান গাই । [SEP]', 'score': 0.13404667377471924, 'token': 2552, 'token_str': 'গান'}
如果您发现此模型有用,请引用。
@misc{Sagor_2020,
title = {BanglaBERT: Bengali Mask Language Model for Bengali Language Understading},
author = {Sagor Sarker},
year = {2020},
url = {https://github.com/sagorbrur/bangla-bert}
}