Spaces:
Running
Running
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]:
|