AMR-KELEG/NADI2024-baseline
AMR-KELEG
Clasificación de texto
Un modelo basado en BERT ajustado para realizar la Identificación de Dialectos Árabes (ADI) de una sola etiqueta. En lugar de predecir el dialecto más probable, los logits se usan para generar predicciones de etiquetas múltiples. El modelo está ajustado con los conjuntos de datos de entrenamiento de: NADI2020, 2021, 2023 y MADAR 2018.
Como usar
import torch
from transformers import AutoModelForSequenceClassification, AutoTokenizer
DIALECTS = ["Algeria", "Bahrain", "Egypt", "Iraq", "Jordan", "Kuwait", "Lebanon", "Libya", "Morocco", "Oman", "Palestine", "Qatar", "Saudi_Arabia", "Sudan", "Syria", "Tunisia", "UAE", "Yemen"]
assert len(DIALECTS) == 18
MODEL_NAME = "AMR-KELEG/NADI2024-baseline"
tokenizer = AutoTokenizer.from_pretrained(MODEL_NAME)
model = AutoModelForSequenceClassification.from_pretrained(MODEL_NAME)
def predict_top_p(text, P=0.9):
"""Predecir los dialectos principales con una confianza acumulada de al menos P."""
assert P >= 0
logits = model(**tokenizer(text, return_tensors="pt")).logits
probabilities = torch.softmax(logits, dim=1).flatten().tolist()
topk_predictions = torch.topk(logits, 18).indices.flatten().tolist()
predictions = [0 for _ in range(18)]
total_prob = 0
for i in range(18):
total_prob += probabilities[topk_predictions[i]]
predictions[topk_predictions[i]] = 1
if total_prob >= P:
break
return [DIALECTS[i] for i, p in enumerate(predictions) if p == 1]
s1 = "كيفك يا زلمة"
s1_pred = predict_top_p(s1) # ['Jordan', 'Lebanon', 'Palestine', 'Syria']
print(s1, s1_pred)
s2 = "خليلي في مساج بريفي كيفاش الاتصال"
s2_pred = predict_top_p(s2) # ['Algeria', 'Tunisia']
print(s2, s2_pred)
Funcionalidades
- Identificación de dialectos árabes a nivel de país con etiquetas múltiples
- Ajustado desde el modelo MarBERTv2
- Implementación usando PyTorch y Transformers
- Compatible con 18 dialectos de países
Casos de uso
- Identificación de dialectos árabes a nivel de país
- Análisis lingüístico de textos árabes
- Clasificación y segmentación de datos en dialectos específicos