AIdeaText commited on
Commit
0172e7f
verified
1 Parent(s): 409ec3b

Update modules/morphosyntax/morphosyntax_interface.py

Browse files
modules/morphosyntax/morphosyntax_interface.py CHANGED
@@ -62,34 +62,39 @@ def display_morphosyntax_interface(lang_code, nlp_models, morpho_t):
62
  </style>
63
  """, unsafe_allow_html=True)
64
 
65
- # Estado consistente con keys 煤nicas
66
  if 'morpho_state' not in st.session_state:
67
  st.session_state.morpho_state = {
68
  'original_text': '',
69
  'original_analysis': None,
70
  'iteration_text': '',
71
  'iteration_analysis': None,
72
- 'analysis_count': 0
 
 
73
  }
74
 
75
- # Texto original - Key 煤nica basada en timestamp
76
- text_key = f"original_text_{st.session_state.morpho_state['analysis_count']}"
77
- text_input = st.text_area(
78
- "",
79
- value=st.session_state.morpho_state['original_text'],
80
- key=text_key,
81
- height=100
82
- )
83
-
84
- # Bot贸n analizar original
85
- col1, col2, col3 = st.columns([2,1,2])
86
- with col1:
87
- analyze_button = st.button(
88
- "Analizar Texto Original",
89
- type="primary",
90
- use_container_width=True
91
  )
92
 
 
 
 
 
 
 
 
 
 
 
 
93
  # Procesar texto original
94
  if analyze_button and text_input.strip():
95
  try:
@@ -99,12 +104,11 @@ def display_morphosyntax_interface(lang_code, nlp_models, morpho_t):
99
  nlp_models[lang_code]
100
  )
101
 
102
- # Actualizar estado original
103
  st.session_state.morpho_state.update({
104
  'original_text': text_input,
105
  'original_analysis': {'doc': doc, 'analysis': analysis},
106
  'iteration_text': text_input,
107
- 'analysis_count': st.session_state.morpho_state['analysis_count'] + 1
108
  })
109
 
110
  if store_student_morphosyntax_result(
@@ -112,80 +116,88 @@ def display_morphosyntax_interface(lang_code, nlp_models, morpho_t):
112
  text=text_input,
113
  arc_diagrams=analysis['arc_diagrams']
114
  ):
115
- # Mostrar diagrama original
116
- st.subheader("An谩lisis Original")
117
- display_morphosyntax_results({'doc': doc, 'analysis': analysis}, lang_code, morpho_t)
118
-
119
- st.markdown("---")
120
-
121
- # Campo para iteraci贸n
122
- iteration_key = f"iteration_{st.session_state.morpho_state['analysis_count']}"
123
- iteration_text = st.text_area(
124
- "",
125
- value=st.session_state.morpho_state['iteration_text'],
126
- key=iteration_key,
127
- height=100
 
 
 
 
 
 
 
 
 
 
 
 
 
 
128
  )
129
 
130
- # Bot贸n analizar iteraci贸n
131
- col1, col2, col3 = st.columns([2,1,2])
132
- with col1:
133
- iterate_button = st.button(
134
- "Analizar Cambios",
135
- type="primary",
136
- use_container_width=True
137
  )
138
 
139
- # Procesar iteraci贸n
140
- if iterate_button and iteration_text.strip():
141
- try:
142
- doc_iter = nlp_models[lang_code](iteration_text)
143
- analysis_iter = perform_advanced_morphosyntactic_analysis(
144
- iteration_text,
145
- nlp_models[lang_code]
146
- )
147
-
148
- # Actualizar estado de iteraci贸n
149
- st.session_state.morpho_state.update({
150
- 'iteration_text': iteration_text,
151
- 'iteration_analysis': {'doc': doc_iter, 'analysis': analysis_iter}
152
- })
153
-
154
- # Guardar iteraci贸n
155
- if store_student_morphosyntax_result(
156
- username=st.session_state.username,
157
- text=iteration_text,
158
- arc_diagrams=analysis_iter['arc_diagrams']
159
- ):
160
- # Mostrar ambos diagramas
161
  st.subheader("An谩lisis Original")
162
  display_morphosyntax_results(
163
- st.session_state.morpho_state['original_analysis'],
164
- lang_code,
165
  morpho_t
166
  )
167
 
168
  st.markdown("---")
169
 
 
170
  st.subheader("An谩lisis de Cambios")
171
  display_morphosyntax_results(
172
- {'doc': doc_iter, 'analysis': analysis_iter},
173
- lang_code,
174
  morpho_t
175
  )
176
 
177
- except Exception as e:
178
- st.error("Error al procesar iteraci贸n")
179
- logger.error(f"Error: {str(e)}")
180
-
181
- except Exception as e:
182
- st.error("Error al procesar texto original")
183
- logger.error(f"Error: {str(e)}")
184
 
185
  except Exception as e:
186
  st.error("Error general en la interfaz")
187
  logger.error(f"Error: {str(e)}")
188
 
 
 
 
 
189
  def display_morphosyntax_results(result, lang_code, morpho_t):
190
  """
191
  Muestra solo el diagrama de arco.
 
62
  </style>
63
  """, unsafe_allow_html=True)
64
 
65
+ # Estado consistente
66
  if 'morpho_state' not in st.session_state:
67
  st.session_state.morpho_state = {
68
  'original_text': '',
69
  'original_analysis': None,
70
  'iteration_text': '',
71
  'iteration_analysis': None,
72
+ 'analysis_count': 0,
73
+ 'show_original': False,
74
+ 'show_iteration': False
75
  }
76
 
77
+ # Contenedor para entrada original
78
+ with st.container():
79
+ text_key = f"original_text_{st.session_state.morpho_state['analysis_count']}"
80
+ text_input = st.text_area(
81
+ "",
82
+ value=st.session_state.morpho_state['original_text'],
83
+ key=text_key,
84
+ height=100
 
 
 
 
 
 
 
 
85
  )
86
 
87
+ col1, col2, col3 = st.columns([2,1,2])
88
+ with col1:
89
+ analyze_button = st.button(
90
+ "Analizar Texto Original",
91
+ type="primary",
92
+ use_container_width=True
93
+ )
94
+
95
+ # Contenedor para visualizaciones
96
+ diagram_container = st.container()
97
+
98
  # Procesar texto original
99
  if analyze_button and text_input.strip():
100
  try:
 
104
  nlp_models[lang_code]
105
  )
106
 
 
107
  st.session_state.morpho_state.update({
108
  'original_text': text_input,
109
  'original_analysis': {'doc': doc, 'analysis': analysis},
110
  'iteration_text': text_input,
111
+ 'show_original': True
112
  })
113
 
114
  if store_student_morphosyntax_result(
 
116
  text=text_input,
117
  arc_diagrams=analysis['arc_diagrams']
118
  ):
119
+ with diagram_container:
120
+ st.subheader("An谩lisis Original")
121
+ display_morphosyntax_results(
122
+ st.session_state.morpho_state['original_analysis'],
123
+ lang_code,
124
+ morpho_t
125
+ )
126
+
127
+ # Contenedor para iteraci贸n
128
+ if st.session_state.morpho_state['show_original']:
129
+ iteration_container = st.container()
130
+ with iteration_container:
131
+ st.markdown("---")
132
+ iteration_key = f"iteration_{st.session_state.morpho_state['analysis_count']}"
133
+ iteration_text = st.text_area(
134
+ "",
135
+ value=st.session_state.morpho_state['iteration_text'],
136
+ key=iteration_key,
137
+ height=100
138
+ )
139
+
140
+ col1, col2, col3 = st.columns([2,1,2])
141
+ with col1:
142
+ iterate_button = st.button(
143
+ "Analizar Cambios",
144
+ type="primary",
145
+ use_container_width=True
146
  )
147
 
148
+ if iterate_button and iteration_text.strip():
149
+ try:
150
+ doc_iter = nlp_models[lang_code](iteration_text)
151
+ analysis_iter = perform_advanced_morphosyntactic_analysis(
152
+ iteration_text,
153
+ nlp_models[lang_code]
 
154
  )
155
 
156
+ st.session_state.morpho_state.update({
157
+ 'iteration_text': iteration_text,
158
+ 'iteration_analysis': {'doc': doc_iter, 'analysis': analysis_iter},
159
+ 'show_iteration': True
160
+ })
161
+
162
+ if store_student_morphosyntax_result(
163
+ username=st.session_state.username,
164
+ text=iteration_text,
165
+ arc_diagrams=analysis_iter['arc_diagrams']
166
+ ):
167
+ # Redibujar ambos diagramas
168
+ with diagram_container:
169
+ st.empty() # Limpiar contenedor
170
+
171
+ # Mostrar original
 
 
 
 
 
 
172
  st.subheader("An谩lisis Original")
173
  display_morphosyntax_results(
174
+ st.session_state.morpho_state['original_analysis'],
175
+ lang_code,
176
  morpho_t
177
  )
178
 
179
  st.markdown("---")
180
 
181
+ # Mostrar iteraci贸n
182
  st.subheader("An谩lisis de Cambios")
183
  display_morphosyntax_results(
184
+ {'doc': doc_iter, 'analysis': analysis_iter},
185
+ lang_code,
186
  morpho_t
187
  )
188
 
189
+ except Exception as e:
190
+ st.error("Error al procesar iteraci贸n")
191
+ logger.error(f"Error: {str(e)}")
 
 
 
 
192
 
193
  except Exception as e:
194
  st.error("Error general en la interfaz")
195
  logger.error(f"Error: {str(e)}")
196
 
197
+
198
+
199
+ ############################################################################
200
+
201
  def display_morphosyntax_results(result, lang_code, morpho_t):
202
  """
203
  Muestra solo el diagrama de arco.