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?
- Comparación de Funciones de Coste:
- Probar KL-divergence vs Frobenius.
- Documentar diferencias en resultados.
- Métricas de Coherencia Semántica:
- Implementar cálculo de coherencia UCI.
- Implementar coherencia UMass.
- Comparar coherencia entre diferentes valores de k.
- Visualizaciones de Tópicos:
- Generar wordclouds por tópico.
- Crear matriz de distribución documento-tópico.
- Guardar visualizaciones en
data/visualizations/.
- 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))