AIdeaText commited on
Commit
261f4c3
·
verified ·
1 Parent(s): 53aeb24

Update modules/discourse/discourse_interface.py

Browse files
modules/discourse/discourse_interface.py CHANGED
@@ -12,6 +12,7 @@ from ..database.discourse_mongo_db import store_student_discourse_result
12
 
13
  logger = logging.getLogger(__name__)
14
 
 
15
  def display_discourse_interface(lang_code, nlp_models, discourse_t):
16
  """
17
  Interfaz para el análisis del discurso
@@ -129,9 +130,10 @@ def display_discourse_interface(lang_code, nlp_models, discourse_t):
129
 
130
 
131
  #####################################################################################################################
132
-
133
  def display_discourse_results(result, lang_code, discourse_t):
134
- """Muestra los resultados del análisis del discurso"""
 
 
135
  if not result.get('success'):
136
  st.warning(discourse_t.get('no_results', 'No hay resultados disponibles'))
137
  return
@@ -186,7 +188,16 @@ def display_discourse_results(result, lang_code, discourse_t):
186
  st.subheader(discourse_t.get('doc1_title', 'Documento 1'))
187
  st.markdown(discourse_t.get('key_concepts', 'Conceptos Clave'))
188
  if 'key_concepts1' in result:
189
- # [conceptos_html se mantiene igual]...
 
 
 
 
 
 
 
 
 
190
 
191
  if 'graph1' in result:
192
  st.markdown('<div class="graph-container">', unsafe_allow_html=True)
@@ -200,6 +211,33 @@ def display_discourse_results(result, lang_code, discourse_t):
200
  st.image(result['graph1'])
201
  else:
202
  st.warning("Formato de gráfico no reconocido")
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
203
 
204
  # Documento 2
205
  with col2:
@@ -219,7 +257,16 @@ def display_discourse_results(result, lang_code, discourse_t):
219
 
220
  if 'graph2' in result:
221
  st.markdown('<div class="graph-container">', unsafe_allow_html=True)
222
- st.pyplot(result['graph2'])
 
 
 
 
 
 
 
 
 
223
 
224
  # Botones y controles
225
  button_col2, spacer_col2 = st.columns([1,4])
@@ -250,4 +297,4 @@ def display_discourse_results(result, lang_code, discourse_t):
250
 
251
  # Nota informativa sobre la comparación
252
  st.info(discourse_t.get('comparison_note',
253
- 'La funcionalidad de comparación detallada estará disponible en una próxima actualización.'))
 
12
 
13
  logger = logging.getLogger(__name__)
14
 
15
+ #############################################################################################
16
  def display_discourse_interface(lang_code, nlp_models, discourse_t):
17
  """
18
  Interfaz para el análisis del discurso
 
130
 
131
 
132
  #####################################################################################################################
 
133
  def display_discourse_results(result, lang_code, discourse_t):
134
+ """
135
+ Muestra los resultados del análisis del discurso
136
+ """
137
  if not result.get('success'):
138
  st.warning(discourse_t.get('no_results', 'No hay resultados disponibles'))
139
  return
 
188
  st.subheader(discourse_t.get('doc1_title', 'Documento 1'))
189
  st.markdown(discourse_t.get('key_concepts', 'Conceptos Clave'))
190
  if 'key_concepts1' in result:
191
+ concepts_html = f"""
192
+ <div class="concepts-container">
193
+ {''.join([
194
+ f'<div class="concept-item"><span class="concept-name">{concept}</span>'
195
+ f'<span class="concept-freq">({freq:.2f})</span></div>'
196
+ for concept, freq in result['key_concepts1']
197
+ ])}
198
+ </div>
199
+ """
200
+ st.markdown(concepts_html, unsafe_allow_html=True)
201
 
202
  if 'graph1' in result:
203
  st.markdown('<div class="graph-container">', unsafe_allow_html=True)
 
211
  st.image(result['graph1'])
212
  else:
213
  st.warning("Formato de gráfico no reconocido")
214
+
215
+ # Botones y controles
216
+ button_col1, spacer_col1 = st.columns([1,4])
217
+ with button_col1:
218
+ if 'graph1_bytes' in result:
219
+ st.download_button(
220
+ label="📥 " + discourse_t.get('download_graph', "Download"),
221
+ data=result['graph1_bytes'],
222
+ file_name="discourse_graph1.png",
223
+ mime="image/png",
224
+ use_container_width=True
225
+ )
226
+
227
+ # Interpretación como texto normal sin expander
228
+ st.markdown("**📊 Interpretación del grafo:**")
229
+ st.markdown("""
230
+ - 🔀 Las flechas indican la dirección de la relación entre conceptos
231
+ - 🎨 Los colores más intensos indican conceptos más centrales en el texto
232
+ - ⭕ El tamaño de los nodos representa la frecuencia del concepto
233
+ - ↔️ El grosor de las líneas indica la fuerza de la conexión
234
+ """)
235
+
236
+ st.markdown('</div>', unsafe_allow_html=True)
237
+ else:
238
+ st.warning(discourse_t.get('graph_not_available', 'Gráfico no disponible'))
239
+ else:
240
+ st.warning(discourse_t.get('concepts_not_available', 'Conceptos no disponibles'))
241
 
242
  # Documento 2
243
  with col2:
 
257
 
258
  if 'graph2' in result:
259
  st.markdown('<div class="graph-container">', unsafe_allow_html=True)
260
+
261
+ # Verificar el tipo de graph2
262
+ if isinstance(result['graph2'], plt.Figure):
263
+ # Es una figura de matplotlib directamente
264
+ st.pyplot(result['graph2'])
265
+ elif isinstance(result['graph2'], bytes):
266
+ # Es bytes, mostrar como imagen
267
+ st.image(result['graph2'])
268
+ else:
269
+ st.warning("Formato de gráfico no reconocido")
270
 
271
  # Botones y controles
272
  button_col2, spacer_col2 = st.columns([1,4])
 
297
 
298
  # Nota informativa sobre la comparación
299
  st.info(discourse_t.get('comparison_note',
300
+ 'La funcionalidad de comparación detallada estará disponible en una próxima actualización.'))