File size: 4,330 Bytes
5a6bd8e
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
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"
        )