🚀 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 許可證。