v4 / modules /studentact /current_situation_interface.py
AIdeaText's picture
Update modules/studentact/current_situation_interface.py
e2c4138 verified
raw
history blame
4.68 kB
# 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"
)