AIdeaText commited on
Commit
411ee97
verified
1 Parent(s): 915e40c

Update modules/morphosyntax/morphosyntax_interface.py

Browse files
modules/morphosyntax/morphosyntax_interface.py CHANGED
@@ -70,7 +70,18 @@ def display_iteration_analysis(container, analysis, lang_code, morpho_t):
70
  display_morphosyntax_results(analysis, lang_code, morpho_t)
71
 
72
  ############################################################################
 
 
 
 
 
73
 
 
 
 
 
 
 
74
  def display_morphosyntax_interface(lang_code, nlp_models, morpho_t):
75
  try:
76
  # CSS para layout estable
@@ -166,32 +177,61 @@ def display_morphosyntax_interface(lang_code, nlp_models, morpho_t):
166
  st.error("Error al procesar texto original")
167
  logger.error(f"Error al procesar texto original: {str(e)}")
168
 
169
- # Secci贸n de iteraci贸n
170
- if st.session_state.arc_analysis_state.get('original_analysis'):
171
- with iteration_input_container:
172
- st.markdown("---")
173
- with st.form(key="iteration_form"):
174
- iteration_key = f"iteration_{st.session_state.arc_analysis_state['analysis_count']}"
175
- iteration_text = st.text_area(
176
- "",
177
- value=st.session_state.arc_analysis_state['iteration_text'],
178
- key=iteration_key,
179
- height=100
180
- )
181
- iterate_button = st.form_submit_button(
182
- "Analizar Cambios",
183
- type="primary",
184
- use_container_width=True
185
- )
 
 
 
 
 
 
 
 
 
 
 
186
 
187
- if iterate_button and iteration_text.strip():
 
 
 
 
188
  try:
189
- doc_iter = nlp_models[lang_code](iteration_text)
190
- analysis_iter = perform_advanced_morphosyntactic_analysis(
191
- iteration_text,
192
- nlp_models[lang_code]
193
- )
 
 
 
 
 
 
 
 
 
 
 
 
 
194
 
 
195
  st.session_state.arc_analysis_state.update({
196
  'iteration_text': iteration_text,
197
  'iteration_analysis': {'doc': doc_iter, 'analysis': analysis_iter}
@@ -202,21 +242,28 @@ def display_morphosyntax_interface(lang_code, nlp_models, morpho_t):
202
  text=iteration_text,
203
  arc_diagrams=analysis_iter['arc_diagrams']
204
  ):
205
- # Mostrar an谩lisis original y de cambios
206
- display_original_analysis(
207
- original_diagram_container,
208
- st.session_state.arc_analysis_state['original_analysis'],
209
- lang_code,
210
- morpho_t
211
- )
212
 
213
- display_iteration_analysis(
214
- iteration_diagram_container,
215
- {'doc': doc_iter, 'analysis': analysis_iter},
216
- lang_code,
217
- morpho_t
218
- )
 
 
 
 
 
 
 
 
 
219
 
 
 
 
220
  except Exception as e:
221
  st.error("Error al procesar iteraci贸n")
222
  logger.error(f"Error al procesar iteraci贸n: {str(e)}")
 
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 'analysis_cache' not in st.session_state:
76
+ st.session_state.analysis_cache = {}
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
+
84
+ ############################################################################
85
  def display_morphosyntax_interface(lang_code, nlp_models, morpho_t):
86
  try:
87
  # CSS para layout estable
 
177
  st.error("Error al procesar texto original")
178
  logger.error(f"Error al procesar texto original: {str(e)}")
179
 
180
+ # Secci贸n de iteraci贸n
181
+ if st.session_state.arc_analysis_state.get('original_analysis'):
182
+ with iteration_input_container:
183
+ st.markdown("---")
184
+
185
+ # Usar un formulario con callback
186
+ def on_iteration_submit():
187
+ st.session_state.iteration_submitted = True
188
+
189
+ with st.form(key="iteration_form"):
190
+ iteration_key = f"iteration_{st.session_state.arc_analysis_state['analysis_count']}"
191
+ iteration_text = st.text_area(
192
+ "",
193
+ value=st.session_state.arc_analysis_state.get('iteration_text', ''),
194
+ key=iteration_key,
195
+ height=100
196
+ )
197
+
198
+ # Guardar en estado temporal
199
+ if iteration_text:
200
+ st.session_state.temp_iteration_text = iteration_text
201
+
202
+ iterate_button = st.form_submit_button(
203
+ "Analizar Cambios",
204
+ type="primary",
205
+ use_container_width=True,
206
+ on_click=on_iteration_submit
207
+ )
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.temp_iteration_text
212
+
213
+ if iteration_text.strip():
214
  try:
215
+ # Verificar si ya existe en cach茅
216
+ cache_key = f"iter_{iteration_text}"
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,
226
+ nlp_models[lang_code]
227
+ )
228
+ # Guardar en cach茅
229
+ cache_analysis_results(cache_key, {
230
+ 'doc': doc_iter,
231
+ 'analysis': analysis_iter
232
+ })
233
 
234
+ # Actualizar estado
235
  st.session_state.arc_analysis_state.update({
236
  'iteration_text': iteration_text,
237
  'iteration_analysis': {'doc': doc_iter, 'analysis': analysis_iter}
 
242
  text=iteration_text,
243
  arc_diagrams=analysis_iter['arc_diagrams']
244
  ):
245
+ # Mostrar ambos an谩lisis
246
+ col1, col2 = st.columns(2)
 
 
 
 
 
247
 
248
+ with col1:
249
+ display_original_analysis(
250
+ original_diagram_container,
251
+ st.session_state.arc_analysis_state['original_analysis'],
252
+ lang_code,
253
+ morpho_t
254
+ )
255
+
256
+ with col2:
257
+ display_iteration_analysis(
258
+ iteration_diagram_container,
259
+ {'doc': doc_iter, 'analysis': analysis_iter},
260
+ lang_code,
261
+ morpho_t
262
+ )
263
 
264
+ # Limpiar flag de env铆o
265
+ st.session_state.iteration_submitted = False
266
+
267
  except Exception as e:
268
  st.error("Error al procesar iteraci贸n")
269
  logger.error(f"Error al procesar iteraci贸n: {str(e)}")