Create README.md
Browse files
README.md
ADDED
|
@@ -0,0 +1,93 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
---
|
| 2 |
+
license: mit
|
| 3 |
+
language:
|
| 4 |
+
- id
|
| 5 |
+
library_name: transformers
|
| 6 |
+
tags:
|
| 7 |
+
- text-classification
|
| 8 |
+
- natural-language-inference
|
| 9 |
+
- indonesian
|
| 10 |
+
- roberta
|
| 11 |
+
- perturbation-robustness
|
| 12 |
+
datasets:
|
| 13 |
+
- custom
|
| 14 |
+
pipeline_tag: text-classification
|
| 15 |
+
widget:
|
| 16 |
+
- text: 'Premis: [TEKS PREMIS DI SINI]. Hipotesis: [TEKS HIPOTESIS DI SINI]'
|
| 17 |
+
base_model:
|
| 18 |
+
- indobenchmark/indobert-base-p2
|
| 19 |
+
---
|
| 20 |
+
|
| 21 |
+
# Indonesian RoBERTa Large for Natural Language Inference (Perturbation Weighted)
|
| 22 |
+
|
| 23 |
+
## Deskripsi Model
|
| 24 |
+
|
| 25 |
+
Model ini adalah versi *fine-tuned* dari `indobenchmark/indobert-base-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:
|
| 26 |
+
1. Pembobotan untuk menyeimbangkan kelas label utama (misalnya, entailment vs. non-entailment).
|
| 27 |
+
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.
|
| 28 |
+
|
| 29 |
+
Model ini menghasilkan salah satu dari dua label (misalnya, 0 untuk non-entailment/kontradiksi, 1 untuk entailment).
|
| 30 |
+
|
| 31 |
+
| metrik | score |
|
| 32 |
+
|---------|--------|
|
| 33 |
+
| accuracy | 0.8865733849359928 |
|
| 34 |
+
| macro_precision | 0.8772256008206331 |
|
| 35 |
+
| macro_recall | 0.8361628900067384 |
|
| 36 |
+
| macro_f1 | 0.8531230288690632 |
|
| 37 |
+
| average_loss | 0.5036396079513776 |
|
| 38 |
+
| train_loss_sample_weighted | 0.17769948870748825 |
|
| 39 |
+
|
| 40 |
+
|
| 41 |
+
## Penggunaan yang Ditujukan & Batasan
|
| 42 |
+
|
| 43 |
+
### Penggunaan yang Ditujukan
|
| 44 |
+
Model ini ditujukan untuk digunakan dalam tugas klasifikasi teks NLI biner dalam bahasa Indonesia. Dapat digunakan untuk:
|
| 45 |
+
* Memverifikasi apakah suatu klaim (hipotesis) didukung oleh teks sumber (premis).
|
| 46 |
+
* Menganalisis hubungan logis antara dua kalimat.
|
| 47 |
+
* Sebagai komponen dalam sistem yang lebih besar yang membutuhkan pemahaman hubungan tekstual, terutama yang sensitif terhadap jenis perturbasi data yang spesifik.
|
| 48 |
+
|
| 49 |
+
### Faktor di Luar Cakupan & Batasan
|
| 50 |
+
* **Bahasa:** Model ini dilatih khusus untuk bahasa Indonesia. Kinerjanya pada bahasa lain tidak diketahui dan kemungkinan buruk.
|
| 51 |
+
* **Domain Data:** Kinerja model sangat bergantung pada kesamaan antara data input dan data pelatihan. Data pelatihan berasal dari `New/data/NEGFILTERED_xsum_indonesia_train_entailment_score_filtered_GEN_perturbed2_FULL_BSCORE_entprobs_sentsim.json`, yang tampaknya merupakan data yang diproses dan mungkin diperturbasi dari dataset XSUM versi Indonesia. Kinerja pada domain yang sangat berbeda mungkin menurun.
|
| 52 |
+
* **Jenis Perturbasi:** Meskipun dilatih untuk menangani jenis perturbasi tertentu yang ada dalam data pelatihan, model mungkin tidak tangguh terhadap jenis perturbasi baru atau yang tidak terlihat.
|
| 53 |
+
* **Jumlah Label:** Model ini dilatih untuk klasifikasi biner (`num_labels: 2`). Tidak cocok untuk tugas NLI multi-kelas (misalnya, entailment, contradiction, neutral) tanpa modifikasi dan pelatihan ulang.
|
| 54 |
+
* **Interpretasi:** Seperti kebanyakan model deep learning, keputusan model mungkin sulit untuk diinterpretasikan sepenuhnya.
|
| 55 |
+
|
| 56 |
+
## Cara Menggunakan
|
| 57 |
+
|
| 58 |
+
Anda dapat menggunakan model ini dengan pustaka `transformers` dari Hugging Face:
|
| 59 |
+
|
| 60 |
+
```python
|
| 61 |
+
from transformers import AutoTokenizer, AutoModelForSequenceClassification
|
| 62 |
+
import torch
|
| 63 |
+
|
| 64 |
+
# Ganti 'nama-anda/nama-model-anda' dengan path ke model yang disimpan atau nama di Hugging Face Hub
|
| 65 |
+
model_name_or_path = "New/models/finetuned_perturb_double_weighted_run_roberta_large/epoch-6" # Contoh epoch terakhir
|
| 66 |
+
# Atau jika diunggah ke Hub: "username/model_name"
|
| 67 |
+
|
| 68 |
+
tokenizer = AutoTokenizer.from_pretrained(model_name_or_path)
|
| 69 |
+
model = AutoModelForSequenceClassification.from_pretrained(model_name_or_path)
|
| 70 |
+
|
| 71 |
+
# Pindahkan model ke GPU jika tersedia
|
| 72 |
+
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
|
| 73 |
+
model.to(device)
|
| 74 |
+
|
| 75 |
+
premise = "Timnas Indonesia berhasil memenangkan pertandingan sepak bola."
|
| 76 |
+
hypothesis = "Indonesia kalah dalam laga tersebut."
|
| 77 |
+
|
| 78 |
+
# Tokenisasi input
|
| 79 |
+
inputs = tokenizer(premise, hypothesis, return_tensors="pt", truncation=True, padding=True, max_length=512)
|
| 80 |
+
inputs = {k: v.to(device) for k, v in inputs.items()}
|
| 81 |
+
|
| 82 |
+
# Lakukan prediksi
|
| 83 |
+
model.eval() # Set model ke mode evaluasi
|
| 84 |
+
with torch.no_grad():
|
| 85 |
+
outputs = model(**inputs)
|
| 86 |
+
logits = outputs.logits
|
| 87 |
+
predictions = torch.argmax(logits, dim=-1)
|
| 88 |
+
|
| 89 |
+
# Interpretasi hasil (asumsi label 0 = non-entailment, label 1 = entailment)
|
| 90 |
+
if predictions.item() == 1:
|
| 91 |
+
print("Hipotesis dapat disimpulkan dari premis (Entailment).")
|
| 92 |
+
else:
|
| 93 |
+
print("Hipotesis TIDAK dapat disimpulkan dari premis (Non-Entailment).")
|