2025-09-24

1) Producto + Cómo funciona (resumen)

Next‑Word Predictor: sugerencias de la próxima palabra en tiempo real usando n‑gramas (1–4) con Stupid Backoff (lambda = 0.4) y pruning por historia (Top‑K + umbral de frecuencia).

  • Pipeline: limpieza → tokenización → n‑gramas + conteos → pruning → ranking por backoff.
  • Ventajas: latencia baja, modelo compacto, explicable y portable a Shiny/móvil.
Tamaño del modelo en memoria (aprox.)
Tabla Filas MB
Unigramas 30 0.00
Bigramas 37 0.01
Trigramas 38 0.01
4-gramas 38 0.01

2) Rendimiento (métricas)

  • Precisión@k, MRR (hold‑out) y Perplejidad (en versión normalizada/interpolada, si aplica).
  • Latencia promedio (ms/pred) medido offline.
Métricas (complete con sus resultados)
Modelo Acc_top1 Acc_top3 MRR Perplejidad Lat_ms
SB (online) NA NA NA NA NA
Interpolado (offline) NA NA NA NA NA

3) Demostración rápida

Entrada → “to be or” ⇒ Sugerencias

##    next_word       score
##       <char>       <num>
## 1:       not 1.000000000
## 2:        to 0.006243902
## 3:        be 0.004682927

Entrada → “i love” ⇒ Sugerencias

##    next_word       score
##       <char>       <num>
## 1:        to 0.400000000
## 2:       all 0.080000000
## 3:        be 0.004682927

4) App Shiny y próximos pasos

Cómo usar la app - Local: shiny::runApp() en la carpeta con app.R y (opcional) ngram_model.rds. - Deploy: rsconnect::deployApp(appName = "nextword-predictor-bea").

Por qué es increíble - <100 ms por predicción (fluido) y huella en MB controlada. - Arquitectura simple/robusta; más datos ⇒ mejor sin re‑diseño.

Futuro inmediato - Descuento Kneser–Ney e interpolación (perplejidad más baja). - Cache de sesión y subword/BPE para OOV. - Telemetría anónima para ajustar Top‑K/lambda por uso real.