🚀 IndoBERT SQuAD 模型
IndoBERT SQuAD 是基于预训练的 IndoBERT 模型在特定数据集上微调得到的模型,用于处理问答任务。它结合了大量的训练数据和优化的训练过程,在问答任务上有较好的表现。
🚀 快速开始
本模型是 indolem/indobert-base-uncased 在特定数据集上的微调版本。在评估集上取得了如下结果:
✨ 主要特性
IndoBERT 模型介绍
IndoBERT 是 BERT 模型的印尼语版本。该模型使用超过 2.2 亿个单词进行训练,这些单词主要来自三个来源:
- 印尼语维基百科(7400 万个单词)
- 来自 Kompas、Tempo(Tala 等人,2003 年)和 Liputan6 的新闻文章(总共 5500 万个单词)
- 印尼网络语料库(Medved 和 Suchomel,2017 年)(9000 万个单词)。
模型经过 240 万步(180 个 epoch)的训练,在开发集上的最终困惑度为 3.97(与英语 BERT-base 相似)。
这个 IndoBERT 模型被用于评估 IndoLEM - 一个印尼语基准测试,涵盖了印尼语的七个任务,包括形态句法、语义和语篇。
训练和评估数据
SQuAD2.0 将 SQuAD1.1 中的 10 万个问题与超过 5 万个由众包工人对抗性编写的无法回答的问题相结合,这些无法回答的问题在形式上与可回答的问题相似。为了在 SQuAD2.0 上取得好成绩,系统不仅要在可能的情况下回答问题,还要判断段落中是否没有支持答案的信息,并避免回答。
数据集 |
划分 |
样本数量 |
SQuAD2.0 |
训练集 |
13 万 |
SQuAD2.0 |
评估集 |
1.23 万 |
训练过程
模型在 Tesla T4 GPU 和 12GB 内存上进行训练。
训练超参数
训练过程中使用了以下超参数:
- 学习率:2e - 05
- 训练批次大小:16
- 评估批次大小:16
- 随机种子:42
- 优化器:Adam,β=(0.9, 0.999),ε=1e - 08
- 学习率调度器类型:线性
- 训练轮数:3
训练结果
训练损失 |
轮数 |
步数 |
验证损失 |
1.4098 |
1.0 |
8202 |
1.3860 |
1.1716 |
2.0 |
16404 |
1.8555 |
1.2909 |
3.0 |
24606 |
1.8025 |
指标 |
值 |
精确匹配率(EM) |
52.17 |
F1 分数 |
69.22 |
💻 使用示例
基础用法
from transformers import pipeline
qa_pipeline = pipeline(
"question-answering",
model="esakrissa/IndoBERT-SQuAD",
tokenizer="esakrissa/IndoBERT-SQuAD"
)
qa_pipeline({
'context': """Sudah sejak tahun 1920-an, Ubud terkenal di antara wisatawan barat. Kala itu pelukis Jerman; Walter Spies dan pelukis Belanda; Rudolf Bonnet menetap di sana. Mereka dibantu oleh Tjokorda Gde Agung Sukawati, dari Puri Agung Ubud. Sekarang karya mereka bisa dilihat di Museum Puri Lukisan, Ubud.""",
'question': "Sejak kapan Ubud terkenal di antara wisatawan barat?"
})
输出:
{
'answer': '1920-an',
'start': 18,
'end': 25,
'score': 0.8675463795661926
}
📚 详细文档
代码仓库
Github
演示
IndoBERT SQuAD 演示
参考文献
[1] Fajri Koto 和 Afshin Rahimi 和 Jey Han Lau 和 Timothy Baldwin. 2020. IndoLEM 和 IndoBERT: 印尼语自然语言处理的基准数据集和预训练语言模型. 第 28 届国际计算语言学会议论文集.
[2] rifkybujana/IndoBERT - QA
框架版本
- Transformers 4.25.1
- Pytorch 1.13.0 + cu116
- Datasets 2.7.1
- Tokenizers 0.13.2
📄 许可证
本项目采用 MIT 许可证。