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

Recibe las últimas noticias y actualizaciones sobre el mundo de IA directamente en tu bandeja de entrada.