|
|
|
|
|
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") |
|
|
|
|
|
with st.container(): |
|
|
|
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...")): |
|
|
|
doc = nlp_models[lang_code](text_input) |
|
metrics = analyze_text_dimensions(doc) |
|
|
|
|
|
with results_col: |
|
display_recommendations(metrics, t) |
|
|
|
|
|
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") |
|
|
|
|
|
THRESHOLDS = { |
|
'vocabulary': 0.7, |
|
'structure': 0.6, |
|
'cohesion': 0.65 |
|
} |
|
|
|
|
|
recommendations = [] |
|
|
|
|
|
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.") |
|
|
|
|
|
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.") |
|
|
|
|
|
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 |
|
""") |
|
|
|
|
|
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" |
|
) |