Daily Scrum — 4 de febrero de 2026

🎯 Objetivo hoy

Completar NMF con métricas de coherencia y generar visualizaciones.


✅ ¿Qué hice ayer?

  • Creé script scripts/math/topic_modeling.py.
  • Matriz TF-IDF construida a partir de datos sintéticos.
  • NMF ejecutado con k=3, 5, 10 componentes.
  • Palabras principales por tópico identificadas.

🚀 ¿Qué haré hoy?

  1. Comparación de Funciones de Coste:
    • Probar KL-divergence vs Frobenius.
    • Documentar diferencias en resultados.
  2. Métricas de Coherencia Semántica:
    • Implementar cálculo de coherencia UCI.
    • Implementar coherencia UMass.
    • Comparar coherencia entre diferentes valores de k.
  3. Visualizaciones de Tópicos:
    • Generar wordclouds por tópico.
    • Crear matriz de distribución documento-tópico.
    • Guardar visualizaciones en data/visualizations/.
  4. Mapa de Conceptos:
    • Generar estructura de conceptos basada en tópicos.
    • Preparar formato para futura integración en interfaz.

🚧 Obstáculos potenciales

  • Interpretación de métricas de coherencia.
  • Wordcloud puede requerir instalación adicional.

✅ Criterios de aceptación

  • Coherencia UCI y UMass calculadas (implementación manual).
  • Visualizaciones generadas y guardadas en data/visualizations/.
  • Documentación de comparación Frobenius vs KL (Frobenius mejor: purity 0.77 vs 0.62).
  • Estructura de mapa de conceptos definida (concept_map.json).

📝 Notas técnicas

Comparación Frobenius vs KL-divergence (k=5)

Métrica Frobenius KL-divergence
Purity 0.77 0.62
UCI Coherence 0.20 -3.81
UMass Coherence -0.62 -1.33
Convergencia 50 iter 200 iter

Conclusión: Frobenius norm produce tópicos más coherentes y con mejor separación.

Experimento Adicional: Se comparó KL-divergence usando Bag-of-Words (conteos puros) vs Frobenius con TF-IDF.

  • TF-IDF + Frobenius: Purity 0.7625
  • BoW + KL: Purity 0.5531
  • Resultado: Frobenius sigue ganando en este dataset sintético (probablemente debido a la uniformidad de longitud de los documentos).

Implementación de Coherencia (Manual)

# UCI: PMI con sliding window
pmi = log((P(w1,w2) + ε) / (P(w1) × P(w2)))

# UMass: Co-ocurrencia documental  
score = log((D(w1,w2) + 1) / D(w2))