modeloQANoticiasDominicanas

Descripción

Modelo desarrollado para el Dominican News Question Answering Challenge de ICC-344-T. El sistema recibe una pregunta y un contexto noticioso, y extrae una respuesta contenida explícitamente en el contexto.

Integrantes

  • Esmery Vásquez, ID: 10154325
  • Jeverlin Ramos, ID: 10154300

Recursos oficiales

Modelo base

  • Repositorio: Lisibonny/modelo_qa_beto_squad_es_pdqa
  • Justificación: Modelo proporcionado para el proyecto final de la asignatura Procesamiento de Lenguaje Natural
  • Número aproximado de parámetros: 110 millones, que es la arquitectura BERT base

Datos

División Filas Uso
train 68 Entrenamiento
validation 15 Comparación y selección
test 20 Predicciones finales

No se publicaron ni utilizaron respuestas privadas de test.

Se identificó que el conjunto de train original de 45 filas solo tenía un ejemplo simple de enumeración de entidades, sin ejemplos de enumeración con tres o más entidades con datos adicionales para cada una. Esta ausencia se relacionó con uno de los tres patrones de error analizados en el baseline. Por este motivo, el conjunto de train fue ampliado con 23 ejemplos adicionales, obtenidos de noticias reales que fueron publicadas en periódicos digitales como Diario Libre, El Nacional, Remolacha.net, AlMomento.net y GenteTuya.com, orientados a reforzar estos tres patrones identificados. Cada ejemplo fue verificado individualmente para asegurar que cumpliera con la calidad de los datos ya proporcionados. Todos los detalles de cada noticia, incluyendo la fuente y el enlace correspondiente, se encuentra documentado en https://docs.google.com/spreadsheets/d/1E_z-ZiIk2mUd9bRt1rgEKCENXrJZTgtK0KY-_gsEU3w/edit?usp=sharing

Entrenamiento

Parámetro Valor
Seed 42
Learning rate 0.00002
Batch size 4
Épocas 16
Max length 50
Doc stride 128
Weight decay 0
Hardware GPU de Google Colab
Tiempo Aproximadamente un minuto por variante

Experimentos

Experimento Cambio EM validation F1 validation
Baseline oficial Sin cambios 60 75.84
Variante 1 (train 45 filas) De 4 a 8 épocas, batch_size de 16 a 8 60 71.03
Variante 2 (train 45 filas) Learning rate de 0.00002 a 0.00001, weight_decay de 0 a 0.01 60 75.06
Variante 3 (train 45 filas) Igual a la variante 1, agregando weight_decay de 0.01 60 71.03
Variante 4 (train 45 filas) Batch_size de 8 a 4, épocas de 8 a 12 73.33 78.00
Variante 5 (train 45 filas) Batch_size en 4, épocas de 12 a 16 60 76.46
Variante 5 con max_answer_len=50 (train 45 filas) Ajuste realizado durante la predicción 66.67 80.54
Variante 1 (train 68 filas) Misma configuración de la variante 1, sobre el train ampliado 66.67 77.49
Variante 2 (train 68 filas) Misma configuración de la variante 2, sobre el train ampliado 60 80.64
Variante 3 (train 68 filas) Misma configuración de la variante 3, sobre el train ampliado 66.67 77.49
Variante 4 (train 68 filas) Misma configuración de la variante 4, sobre el train ampliado 66.67 77.49
Variante 5 (train 68 filas) Misma configuración de la variante 5, sobre el train ampliado 66.67 77.49
Variante 5 con max_answer_len=50 (train 68 filas) Ajuste realizado durante la predicción 66.67 85.70
Modelo final Variante 5 (train 68 filas) con max_answer_len=50 y función de posprocesamiento 73.33 83.38

Ablación o comparación controlada

Para aislar el efecto del weight_decay sobre el modelo, se hizo una ablación en la que se mantuvo la misma configuración de parámetros que en la variante 5, cambiando solamente el weight_decay de 0 a 0.01. Se escogió el weight_decay como variable a aislar porque de todos los parámetros modificados, ese era el único que no se había evaluado de forma controlada conservando la configuración igual.

El resultado fue el mismo que el de la variante 5, con un exact match de 66.67 y un F1 de 77.49, lo que sugiere que para esa configuración y tamaño de dataset, el weight_decay no tiene efecto sobre el desempeño del modelo.

Resultados

  • Exact Match en validation: 73.33
  • F1 en validation: 83.38
  • Script de evaluación: 05_evaluate_qa.py

Ejemplo de uso

Para reproducir las métricas reportadas, es necesario, además de cargar el modelo con el pipeline estándar de Hugging Face, aplicar los ajustes realizados durante la predicción, un max_answer_len de 50 y una función de posprocesamiento. A continuación se muestra el código necesario para reproducir el comportamiento.

from transformers import pipeline

REPO_ID = "JeverlinRamos/modeloQANoticiasDominicanas"

qa_nbest = pipeline(
    "question-answering",
    model=REPO_ID,
    tokenizer=REPO_ID,
    max_answer_len=50,
    top_k=5,
)

def predecir_con_extension(question, context, umbral_score_relativo=0.15):
    if question.strip().lower().startswith(("¿cómo", "¿como")):
        preds = qa_nbest(question=question, context=context)
        if isinstance(preds, dict):
            preds = [preds]
        return preds[0]

    preds = qa_nbest(question=question, context=context)
    if isinstance(preds, dict):
        preds = [preds]
    top1 = preds[0]
    mejor_extension = None
    for p in preds[1:]:
        if not p["answer"] or top1["answer"] not in p["answer"]:
            continue
        if p["score"] < top1["score"] * umbral_score_relativo:
            continue
        if mejor_extension is None or p["score"] > mejor_extension["score"]:
            mejor_extension = p
    return mejor_extension if mejor_extension else top1

predecir_con_extension(
    question="¿Quién hizo el anuncio?",
    context="La ministra informó que el programa comenzará en agosto."
)

Análisis de errores

De las 15 preguntas del conjunto de validation, el modelo final acierta 11 de forma exacta, lo que equivale al 73.33% de Exact Match. Las 4 preguntas restantes obtienen un F1 parcial, siendo la fila 0 la más cercana a un acierto completo, con F1=0.81, ya que la predicción incluye la respuesta correcta pero con texto adicional de más. De las 4 fallas, se identifican tres patrones distintos:

Fila 0 (F1=0.81): el modelo agrega palabras de más al inicio ("es") y al final ("en su día a día") de una respuesta que en esencia es correcta. Fila 9 (F1=0.00): el modelo confunde una pregunta que espera una respuesta cualitativa ("seguirá siendo alta") con un dato cuantitativo cercano en el texto ("en torno al 7%"). Fila 11 (F1=0.00): el modelo extrae una fecha ("diciembre") en vez de la causa que pide la pregunta ("por las turbulencias en el sector bancario..."). Fila 13 (F1=0.69): el modelo extiende demasiado la respuesta, incluyendo texto de más antes y después de los nombres correctos, en vez de devolver únicamente los nombres de los exministros.

En conjunto, estos errores reflejan dificultades para identificar el tipo de respuesta esperada según el tipo de pregunta.

Limitaciones

  • La respuesta debe estar presente en el contexto.

  • El modelo puede confundir entidades, fechas o cantidades similares.

  • El modelo no verifica la veracidad de la noticia.

  • No debe utilizarse como única fuente para decisiones de alto impacto.

  • El modelo suele confundir respuestas cualitativas con datos numéricos cercanos en preguntas del estilo "¿Cómo será...?", y a confundir la causa real con otro tipo de información en preguntas del tipo "¿Por qué...?". Ambos patrones continuan, en menor medida, a pesar de haber ampliado el conjunto de entrenamiento con ejemplos destinados corregirlos.

Reproducibilidad

Downloads last month
-
Safetensors
Model size
0.1B params
Tensor type
F32
·
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Model tree for JeverlinRamos/modeloQANoticiasDominicanas

Finetuned
(6)
this model

Dataset used to train JeverlinRamos/modeloQANoticiasDominicanas