| | --- |
| | license: mit |
| | language: |
| | - id |
| | library_name: transformers |
| | tags: |
| | - text-classification |
| | - natural-language-inference |
| | - indonesian |
| | - perturbation-robustness |
| | - bert |
| | datasets: |
| | - fabhiansan/XSUM-Indonesia-AMR-NLI |
| | pipeline_tag: text-classification |
| | widget: |
| | - text: 'Premis: [TEKS PREMIS DI SINI]. Hipotesis: [TEKS HIPOTESIS DI SINI]' |
| | base_model: |
| | - indobenchmark/indobert-large-p2 |
| | --- |
| | |
| | # Indonesian BERT Large for Natural Language Inference (Perturbation Weighted) |
| |
|
| | ## Deskripsi Model |
| |
|
| | Model ini adalah versi *fine-tuned* dari `indobenchmark/indobert-large-p2` yang dilatih untuk tugas Natural Language Inference (NLI) biner pada data berbahasa Indonesia. Tujuan utama NLI adalah untuk menentukan apakah sebuah "hipotesis" dapat disimpulkan dari sebuah "premis". \ |
| | Model ini secara spesifik dilatih dengan strategi pembobotan sampel ganda: |
| | 1. Pembobotan untuk menyeimbangkan kelas label utama (entailment vs. non-entailment). |
| | 2. Pembobotan tambahan untuk jenis-jenis perturbasi spesifik dalam sampel kelas negatif (label 0), untuk meningkatkan ketahanan model terhadap variasi linguistik atau artefak data tertentu. |
| |
|
| | Model ini menghasilkan salah satu dari dua label (0 untuk non-entailment/kontradiksi, 1 untuk entailment). |
| |
|
| | | metrik | score | |
| | |---------|--------| |
| | | accuracy | 0.9129205120571598 | |
| | | macro_precision | 0.9052220320834325 | |
| | | macro_recall | 0.8766231236407768 | |
| | | macro_f1 | 0.8893040191206835 | |
| | |average_loss | 0.5746491376413663 | |
| | | train_loss_sample_weighted | 0.07019188567586254 | |
| | |
| | |
| | |
| | ### Penggunaan yang Ditujukan |
| | Model ini ditujukan untuk digunakan dalam tugas klasifikasi teks NLI biner dalam bahasa Indonesia. Dapat digunakan untuk: |
| | * Memverifikasi apakah suatu klaim (hipotesis) didukung oleh teks sumber (premis). |
| | * Menganalisis hubungan logis antara beberapa kalimat teks sumber dan kalimat ringkasannya. |
| | * Model akan menganggap ringkasan tidak entails ketika terjadi halusinasi. |
| | * Halusinasi yang dapat dideteksi oleh model ini adalah (Pagnoni dkk., 2021): |
| | * Predicate error |
| | * Discourse link error |
| | * Entity Error |
| | * Circumstance Error |
| | * Out of Article Error |
| | |
| | ## Cara Menggunakan |
| | |
| | Anda dapat menggunakan model ini dengan pustaka `transformers` dari Hugging Face: |
| | |
| | ```python |
| | from transformers import AutoTokenizer, AutoModelForSequenceClassification |
| | import torch |
| | |
| | model_name = "fabhiansan/indoBERT-Large-FactChecking-Summarization" |
| |
|
| | tokenizer = AutoTokenizer.from_pretrained(model_name_or_path) |
| | model = AutoModelForSequenceClassification.from_pretrained(model_name_or_path) |
| |
|
| | device = torch.device("cuda" if torch.cuda.is_available() else "cpu") |
| | model.to(device) |
| | |
| | premise = "Timnas Indonesia berhasil memenangkan pertandingan sepak bola." |
| | hypothesis = "Indonesia kalah dalam laga tersebut." |
| | |
| | inputs = tokenizer(premise, hypothesis, return_tensors="pt", truncation=True, padding=True, max_length=512) |
| | inputs = {k: v.to(device) for k, v in inputs.items()} |
| | |
| | model.eval() # Set model ke mode evaluasi |
| | with torch.no_grad(): |
| | outputs = model(**inputs) |
| | logits = outputs.logits |
| | predictions = torch.argmax(logits, dim=-1) |
| | |
| | # Interpretasi hasil (asumsi label 0 = non-entailment, label 1 = entailment) |
| | if predictions.item() == 1: |
| | print("Hipotesis dapat disimpulkan dari premis (Entailment).") |
| | else: |
| | print("Hipotesis TIDAK dapat disimpulkan dari premis (Non-Entailment).") |