Spaces:
Running
Running
# modules/studentact/current_situation_interface.py | |
import streamlit as st | |
import logging | |
from ..utils.widget_utils import generate_unique_key | |
from .current_situation_analysis import ( | |
analyze_text_dimensions, | |
create_vocabulary_network, | |
create_syntax_complexity_graph, | |
create_cohesion_heatmap | |
) | |
logger = logging.getLogger(__name__) | |
def display_current_situation_interface(lang_code, nlp_models, t): | |
""" | |
Interfaz simplificada para el análisis inicial, enfocada en recomendaciones directas. | |
""" | |
st.markdown("## Análisis Inicial de Escritura") | |
# Container principal con dos columnas | |
with st.container(): | |
# Columnas para entrada y resultados | |
input_col, results_col = st.columns([1,2]) | |
with input_col: | |
st.markdown("### Ingresa tu texto") | |
text_input = st.text_area( | |
t.get('input_prompt', "Escribe o pega tu texto aquí:"), | |
height=400, | |
key=generate_unique_key("initial_analysis", "input"), | |
help="Este texto será analizado para darte recomendaciones personalizadas" | |
) | |
if st.button( | |
t.get('analyze_button', "Analizar mi escritura"), | |
type="primary", | |
disabled=not text_input, | |
use_container_width=True | |
): | |
try: | |
with st.spinner(t.get('processing', "Analizando...")): | |
# Procesar texto y obtener métricas | |
doc = nlp_models[lang_code](text_input) | |
metrics = analyze_text_dimensions(doc) | |
# Mostrar resultados en la columna derecha | |
with results_col: | |
display_recommendations(metrics, t) | |
# Opción para ver detalles | |
with st.expander("🔍 Ver análisis detallado", expanded=False): | |
display_current_situation_visual(doc, metrics) | |
except Exception as e: | |
logger.error(f"Error en análisis: {str(e)}") | |
st.error(t.get('analysis_error', "Error al analizar el texto")) | |
def display_recommendations(metrics, t): | |
""" | |
Muestra recomendaciones basadas en las métricas del texto. | |
""" | |
st.markdown("### Recomendaciones Personalizadas") | |
# Definir umbrales | |
THRESHOLDS = { | |
'vocabulary': 0.7, | |
'structure': 0.6, | |
'cohesion': 0.65 | |
} | |
# Evaluar métricas y mostrar recomendaciones | |
recommendations = [] | |
# 1. Recomendaciones morfosintácticas | |
st.markdown("#### Ejercicios de Análisis Morfosintáctico") | |
if metrics['structural_complexity'] < THRESHOLDS['structure']: | |
st.markdown(""" | |
📝 **Para mejorar la estructura de tus textos:** | |
1. Analiza la estructura de 3 párrafos usando diagramas de arco | |
2. Practica combinando oraciones simples en compuestas | |
3. Identifica y clasifica tipos de oraciones en un texto académico | |
4. Realiza ejercicios de variación sintáctica | |
""") | |
else: | |
st.success("✨ ¡Buen manejo de estructuras! Continúa practicando para mantener el nivel.") | |
# 2. Recomendaciones semánticas | |
st.markdown("#### Ejercicios de Análisis Semántico") | |
if metrics['vocabulary_richness'] < THRESHOLDS['vocabulary']: | |
st.markdown(""" | |
📚 **Para enriquecer tu vocabulario:** | |
A. Crea mapas conceptuales de tus lecturas | |
B. Identifica campos semánticos en textos académicos | |
C. Practica la sustitución léxica en párrafos | |
D. Desarrolla glosarios temáticos | |
E. Analiza relaciones semánticas entre conceptos | |
""") | |
else: | |
st.success("📖 ¡Excelente riqueza léxica! Sigue expandiendo tu vocabulario.") | |
# 3. Recomendaciones de cohesión | |
if metrics['cohesion_score'] < THRESHOLDS['cohesion']: | |
st.warning(""" | |
🔄 **Para mejorar la cohesión de tus textos:** | |
- Practica el uso de conectores textuales | |
- Identifica cadenas léxicas en textos modelo | |
- Realiza ejercicios de referencia y correferencia | |
""") | |
# Botón para comenzar ejercicios | |
st.markdown("---") | |
col1, col2, col3 = st.columns([1,2,1]) | |
with col2: | |
st.button( | |
"🎯 Comenzar ejercicios recomendados", | |
type="primary", | |
use_container_width=True, | |
key="start_exercises" | |
) |