Project_Mizan / model /predict.py
KhaledTTarabay's picture
Fix the labels
ae62413
Raw
History Blame Contribute Delete
1.24 kB
import torch
from transformers import AutoTokenizer, AutoModelForSequenceClassification
from langdetect import detect
MODEL_NAME = "KhaledTTarabay/mizan-arabertv2"
ar_tokenizer = AutoTokenizer.from_pretrained(MODEL_NAME)
ar_model = AutoModelForSequenceClassification.from_pretrained(MODEL_NAME)
ar_model.eval()
def predict(text):
lang = detect(text)
if lang != "ar":
return {"label": "Unsupported", "confidence": 0.0, "certainty": "Uncertain", "language": lang}
inputs = ar_tokenizer(text, return_tensors="pt", truncation=True, max_length=128)
with torch.no_grad():
outputs = ar_model(**inputs)
probabilities = torch.softmax(outputs.logits, dim=1)[0]
label = torch.argmax(probabilities).item()
confidence = round(probabilities[label].item() * 100, 1)
label_map = {0: "Fake", 1: "Credible"}
return {
"label": label_map[int(label)],
"confidence": confidence,
"certainty": get_certainty(confidence),
"language": lang,
}
def get_certainty(confidence):
if confidence >= 86:
return "Almost Certainly"
elif confidence >= 71:
return "Probably"
elif confidence >= 56:
return "Likely"
else:
return "Uncertain"