Arabic NLI Binary Classifier โ s03-marbert-nli
Binary Arabic text classifier (0 = faithful, 1 = unfaithful). Fine-tuned for Arabic NLI-based binary text classification.
Base model
UBC-NLP/MARBERT
Input format
nli โ [CLS] gold_answer [SEP] model_answer [SEP] (NLI framing: gold_answer as premise,
model_answer as hypothesis)
Dev results
- AUC-ROC (official, full dev n=1300): 0.9562
- AUC-ROC (clean dev, n=800, excludes ~100 questions also seen in train): 0.9266
- Macro F1 (official, threshold=0.50): 0.8989
Note: the official-dev number is inflated by ~500 dev rows whose questions also appear in the training set (near-memorization). The clean-dev AUC-ROC (0.9266) is the honest generalization estimate and the number to use for ranking against other runs. It essentially ties s02-camelbert-nli's clean-dev AUC-ROC of 0.9272 (-0.06pp), and both far exceed s01-camelbert-qa's clean-dev AUC-ROC of 0.8713 and the published CAMeLBERT baseline (0.7093 dev AUC-ROC). As a different architecture from CAMeLBERT with the same NLI input format, this model is used in the camelbert_nli + marbert_nli soft-vote ensemble (program.md S23).
Training data
Arabic training set โ 4,705 Arabic (question, gold_answer, model_answer) triples, 5 source LLMs, 13 knowledge domains.
Usage
from transformers import AutoTokenizer, AutoModelForSequenceClassification
import torch
tokenizer = AutoTokenizer.from_pretrained("HassanB4/s03-marbert-nli")
model = AutoModelForSequenceClassification.from_pretrained("HassanB4/s03-marbert-nli")
inputs = tokenizer(gold_answer, model_answer, return_tensors="pt", truncation=True, max_length=512)
with torch.no_grad():
logits = model(**inputs).logits
score = torch.softmax(logits, dim=-1)[0][1].item() # unfaithfulness score
predicted_label = int(score > 0.5)
- Downloads last month
- -