Update modules/morphosyntax/morphosyntax_interface.py
Browse files
modules/morphosyntax/morphosyntax_interface.py
CHANGED
@@ -32,7 +32,8 @@ logger = logging.getLogger(__name__)
|
|
32 |
|
33 |
###########################################################################
|
34 |
def initialize_arc_analysis_state():
|
35 |
-
"""Inicializa el estado del análisis de arcos si no
|
|
|
36 |
if 'arc_analysis_state' not in st.session_state:
|
37 |
st.session_state.arc_analysis_state = {
|
38 |
'original_text': '',
|
@@ -43,6 +44,11 @@ def initialize_arc_analysis_state():
|
|
43 |
}
|
44 |
logger.info("Estado de análisis de arcos inicializado")
|
45 |
|
|
|
|
|
|
|
|
|
|
|
46 |
###########################################################################
|
47 |
|
48 |
def reset_morpho_state():
|
@@ -70,14 +76,19 @@ def display_iteration_analysis(container, analysis, lang_code, morpho_t):
|
|
70 |
display_morphosyntax_results(analysis, lang_code, morpho_t)
|
71 |
|
72 |
############################################################################
|
|
|
73 |
def cache_analysis_results(key, result):
|
74 |
"""Almacena resultados de análisis en caché"""
|
75 |
-
if
|
76 |
-
|
77 |
st.session_state.analysis_cache[key] = result
|
|
|
78 |
|
79 |
def get_cached_analysis(key):
|
80 |
"""Recupera resultados de análisis del caché"""
|
|
|
|
|
|
|
81 |
return st.session_state.analysis_cache.get(key)
|
82 |
|
83 |
|
@@ -208,7 +219,7 @@ def display_morphosyntax_interface(lang_code, nlp_models, morpho_t):
|
|
208 |
|
209 |
# Procesar iteración cuando se envía el formulario
|
210 |
if hasattr(st.session_state, 'iteration_submitted') and st.session_state.iteration_submitted:
|
211 |
-
iteration_text = st.session_state
|
212 |
|
213 |
if iteration_text.strip():
|
214 |
try:
|
@@ -217,9 +228,11 @@ def display_morphosyntax_interface(lang_code, nlp_models, morpho_t):
|
|
217 |
cached_result = get_cached_analysis(cache_key)
|
218 |
|
219 |
if cached_result:
|
|
|
220 |
doc_iter = cached_result['doc']
|
221 |
analysis_iter = cached_result['analysis']
|
222 |
else:
|
|
|
223 |
doc_iter = nlp_models[lang_code](iteration_text)
|
224 |
analysis_iter = perform_advanced_morphosyntactic_analysis(
|
225 |
iteration_text,
|
@@ -267,6 +280,8 @@ def display_morphosyntax_interface(lang_code, nlp_models, morpho_t):
|
|
267 |
except Exception as e:
|
268 |
st.error("Error al procesar iteración")
|
269 |
logger.error(f"Error al procesar iteración: {str(e)}")
|
|
|
|
|
270 |
|
271 |
# Otros subtabs...
|
272 |
with subtabs[1]:
|
|
|
32 |
|
33 |
###########################################################################
|
34 |
def initialize_arc_analysis_state():
|
35 |
+
"""Inicializa el estado del análisis de arcos y el caché si no existen"""
|
36 |
+
# Inicializar estado de análisis
|
37 |
if 'arc_analysis_state' not in st.session_state:
|
38 |
st.session_state.arc_analysis_state = {
|
39 |
'original_text': '',
|
|
|
44 |
}
|
45 |
logger.info("Estado de análisis de arcos inicializado")
|
46 |
|
47 |
+
# Inicializar caché de análisis
|
48 |
+
if 'analysis_cache' not in st.session_state:
|
49 |
+
st.session_state.analysis_cache = {}
|
50 |
+
logger.info("Caché de análisis inicializado")
|
51 |
+
|
52 |
###########################################################################
|
53 |
|
54 |
def reset_morpho_state():
|
|
|
76 |
display_morphosyntax_results(analysis, lang_code, morpho_t)
|
77 |
|
78 |
############################################################################
|
79 |
+
|
80 |
def cache_analysis_results(key, result):
|
81 |
"""Almacena resultados de análisis en caché"""
|
82 |
+
if not hasattr(st.session_state, 'analysis_cache'):
|
83 |
+
initialize_arc_analysis_state()
|
84 |
st.session_state.analysis_cache[key] = result
|
85 |
+
logger.info(f"Resultado almacenado en caché con clave: {key}")
|
86 |
|
87 |
def get_cached_analysis(key):
|
88 |
"""Recupera resultados de análisis del caché"""
|
89 |
+
if not hasattr(st.session_state, 'analysis_cache'):
|
90 |
+
initialize_arc_analysis_state()
|
91 |
+
return None
|
92 |
return st.session_state.analysis_cache.get(key)
|
93 |
|
94 |
|
|
|
219 |
|
220 |
# Procesar iteración cuando se envía el formulario
|
221 |
if hasattr(st.session_state, 'iteration_submitted') and st.session_state.iteration_submitted:
|
222 |
+
iteration_text = getattr(st.session_state, 'temp_iteration_text', '')
|
223 |
|
224 |
if iteration_text.strip():
|
225 |
try:
|
|
|
228 |
cached_result = get_cached_analysis(cache_key)
|
229 |
|
230 |
if cached_result:
|
231 |
+
logger.info("Usando resultado cacheado")
|
232 |
doc_iter = cached_result['doc']
|
233 |
analysis_iter = cached_result['analysis']
|
234 |
else:
|
235 |
+
logger.info("Generando nuevo análisis")
|
236 |
doc_iter = nlp_models[lang_code](iteration_text)
|
237 |
analysis_iter = perform_advanced_morphosyntactic_analysis(
|
238 |
iteration_text,
|
|
|
280 |
except Exception as e:
|
281 |
st.error("Error al procesar iteración")
|
282 |
logger.error(f"Error al procesar iteración: {str(e)}")
|
283 |
+
# Limpiar flag de envío en caso de error
|
284 |
+
st.session_state.iteration_submitted = False
|
285 |
|
286 |
# Otros subtabs...
|
287 |
with subtabs[1]:
|