File size: 4,682 Bytes
e2c4138
 
 
 
 
 
 
 
 
 
 
 
 
 
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
107
108
109
110
111
112
113
114
115
116
117
118
119
120
# 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"
        )