AIdeaText commited on
Commit
21661b7
1 Parent(s): fa9458f

Update modules/morphosyntax/morphosyntax_interface.py

Browse files
modules/morphosyntax/morphosyntax_interface.py CHANGED
@@ -1,184 +1,186 @@
1
- #modules/morphosyntax/morphosyntax_interface.py
2
- import streamlit as st
3
- from streamlit_float import *
4
- from streamlit_antd_components import *
5
- from streamlit.components.v1 import html
6
- import base64
7
- from .morphosyntax_process import process_morphosyntactic_input
8
- from ..chatbot.chatbot import initialize_chatbot
9
- from ..utils.widget_utils import generate_unique_key
10
- from ..database.morphosintax_mongo_db import store_student_morphosyntax_result
11
- from ..database.chat_db import store_chat_history
12
- from ..database.morphosintaxis_export import export_user_interactions
13
-
14
- import logging
15
- logger = logging.getLogger(__name__)
16
-
17
- def display_morphosyntax_interface(lang_code, nlp_models, t):
18
- st.title("Análisis Morfosintáctico")
19
-
20
- # Contenedor para el historial del chat
21
- chat_container = st.container()
22
-
23
- # Input del usuario (siempre visible en la parte inferior)
24
- user_input = st.chat_input(t['morpho_input_label'])
25
-
26
- # Procesar el input del usuario
27
- if user_input:
28
- # Añadir el mensaje del usuario al historial
29
- st.session_state.morphosyntax_chat_history.append({"role": "user", "content": user_input})
30
- store_chat_history(st.session_state.username, [{"role": "user", "content": user_input}], "morphosyntax")
31
-
32
- response, visualizations, result = process_morphosyntactic_input(user_input, lang_code, nlp_models, t)
33
-
34
- # Añadir la respuesta al historial
35
- assistant_message = {
36
- "role": "assistant",
37
- "content": response,
38
- "visualizations": visualizations if visualizations else []
39
- }
40
- st.session_state.morphosyntax_chat_history.append(assistant_message)
41
- store_chat_history(st.session_state.username, [assistant_message], "morphosyntax")
42
-
43
- # Si es un análisis, guardarlo en la base de datos
44
- if user_input.startswith('/analisis_morfosintactico') and result:
45
- store_student_morphosyntax_result(
46
- st.session_state.username,
47
- user_input.split('[', 1)[1].rsplit(']', 1)[0], # texto analizado
48
- visualizations
49
- )
50
-
51
- # Mostrar el historial del chat
52
- with chat_container:
53
- if 'morphosyntax_chat_history' not in st.session_state:
54
- st.session_state.morphosyntax_chat_history = []
55
- for message in st.session_state.morphosyntax_chat_history:
56
- with st.chat_message(message["role"]):
57
- st.write(message["content"])
58
- if "visualizations" in message and message["visualizations"]:
59
- for i, viz in enumerate(message["visualizations"]):
60
- st.markdown(f"**Oración {i+1} del párrafo analizado**")
61
- st.components.v1.html(
62
- f"""
63
- <div style="width: 100%; overflow-x: auto; white-space: nowrap;">
64
- <div style="min-width: 1200px;">
65
- {viz}
66
- </div>
67
- </div>
68
- """,
69
- height=370,
70
- scrolling=True
71
- )
72
- if i < len(message["visualizations"]) - 1:
73
- st.markdown("---") # Separador entre diagramas
74
-
75
- # Botón para limpiar el historial del chat
76
- if st.button(t['clear_chat'], key=generate_unique_key('morphosyntax', 'clear_chat')):
77
- st.session_state.morphosyntax_chat_history = []
78
- st.rerun()
79
-
80
- # Botón de exportación
81
- if st.button("Exportar Interacciones"):
82
- pdf_buffer = export_user_interactions(st.session_state.username, 'morphosyntax')
83
- st.download_button(
84
- label="Descargar PDF",
85
- data=pdf_buffer,
86
- file_name="interacciones_morfosintaxis.pdf",
87
- mime="application/pdf"
88
- )
89
-
90
- '''
91
- if user_input:
92
- # Añadir el mensaje del usuario al historial
93
- st.session_state.morphosyntax_chat_history.append({"role": "user", "content": user_input})
94
-
95
- # Procesar el input del usuario nuevo al 26-9-2024
96
- response, visualizations, result = process_morphosyntactic_input(user_input, lang_code, nlp_models, t)
97
-
98
- # Mostrar indicador de carga
99
- with st.spinner(t.get('processing', 'Processing...')):
100
- try:
101
- # Procesar el input del usuario
102
- response, visualizations, result = process_morphosyntactic_input(user_input, lang_code, nlp_models, t)
103
-
104
- # Añadir la respuesta al historial
105
- message = {
106
- "role": "assistant",
107
- "content": response
108
- }
109
- if visualizations:
110
- message["visualizations"] = visualizations
111
- st.session_state.morphosyntax_chat_history.append(message)
112
-
113
- # Mostrar la respuesta más reciente
114
- with st.chat_message("assistant"):
115
- st.write(response)
116
- if visualizations:
117
- for i, viz in enumerate(visualizations):
118
- st.markdown(f"**Oración {i+1} del párrafo analizado**")
119
- st.components.v1.html(
120
- f"""
121
- <div style="width: 100%; overflow-x: auto; white-space: nowrap;">
122
- <div style="min-width: 1200px;">
123
- {viz}
124
- </div>
125
- </div>
126
- """,
127
- height=350,
128
- scrolling=True
129
- )
130
- if i < len(visualizations) - 1:
131
- st.markdown("---") # Separador entre diagramas
132
-
133
- # Si es un análisis, guardarlo en la base de datos
134
- if user_input.startswith('/analisis_morfosintactico') and result:
135
- store_morphosyntax_result(
136
- st.session_state.username,
137
- user_input.split('[', 1)[1].rsplit(']', 1)[0], # texto analizado
138
- result.get('repeated_words', {}),
139
- visualizations,
140
- result.get('pos_analysis', []),
141
- result.get('morphological_analysis', []),
142
- result.get('sentence_structure', [])
143
- )
144
-
145
-
146
- except Exception as e:
147
- st.error(f"{t['error_processing']}: {str(e)}")
148
-
149
-
150
-
151
- # Forzar la actualización de la interfaz
152
- st.rerun()
153
-
154
- # Botón para limpiar el historial del chat
155
- if st.button(t['clear_chat'], key=generate_unique_key('morphosyntax', 'clear_chat')):
156
- st.session_state.morphosyntax_chat_history = []
157
- st.rerun()
158
- '''
159
-
160
-
161
- '''
162
- ############ MODULO PARA DEPURACIÓN Y PRUEBAS #####################################################
163
- def display_morphosyntax_interface(lang_code, nlp_models, t):
164
- st.subheader(t['morpho_title'])
165
-
166
- text_input = st.text_area(
167
- t['warning_message'],
168
- height=150,
169
- key=generate_unique_key("morphosyntax", "text_area")
170
- )
171
-
172
- if st.button(
173
- t['results_title'],
174
- key=generate_unique_key("morphosyntax", "analyze_button")
175
- ):
176
- if text_input:
177
- # Aquí iría tu lógica de análisis morfosintáctico
178
- # Por ahora, solo mostraremos un mensaje de placeholder
179
- st.info(t['analysis_placeholder'])
180
- else:
181
- st.warning(t['no_text_warning'])
182
- ###
183
- #################################################
184
- '''
 
 
 
1
+ #modules/morphosyntax/morphosyntax_interface.py
2
+ import streamlit as st
3
+ from streamlit_float import *
4
+ from streamlit_antd_components import *
5
+ from streamlit.components.v1 import html
6
+ import base64
7
+ from .morphosyntax_process import process_morphosyntactic_input
8
+ from ..chatbot.chatbot import initialize_chatbot
9
+ from ..utils.widget_utils import generate_unique_key
10
+ from ..database.morphosintax_mongo_db import store_student_morphosyntax_result
11
+ from ..database.chat_db import store_chat_history
12
+ from ..database.morphosintaxis_export import export_user_interactions
13
+
14
+ import logging
15
+ logger = logging.getLogger(__name__)
16
+
17
+ def display_morphosyntax_interface(lang_code, nlp_models, t):
18
+ st.title("Análisis Morfosintáctico")
19
+
20
+ # Contenedor para el historial del chat
21
+ chat_container = st.container()
22
+
23
+ # Input del usuario (siempre visible en la parte inferior)
24
+ user_input = st.chat_input(t['morpho_input_label'])
25
+
26
+ # Inicializar el historial del chat si no existe
27
+ if 'morphosyntax_chat_history' not in st.session_state:
28
+ st.session_state.morphosyntax_chat_history = []
29
+
30
+ # Procesar el input del usuario
31
+ if user_input:
32
+ # Añadir el mensaje del usuario al historial
33
+ st.session_state.morphosyntax_chat_history.append({"role": "user", "content": user_input})
34
+ store_chat_history(st.session_state.username, [{"role": "user", "content": user_input}], "morphosyntax")
35
+
36
+ response, visualizations, result = process_morphosyntactic_input(user_input, lang_code, nlp_models, t)
37
+
38
+ # Añadir la respuesta al historial
39
+ assistant_message = {
40
+ "role": "assistant",
41
+ "content": response,
42
+ "visualizations": visualizations if visualizations else []
43
+ }
44
+ st.session_state.morphosyntax_chat_history.append(assistant_message)
45
+ store_chat_history(st.session_state.username, [assistant_message], "morphosyntax")
46
+
47
+ # Si es un análisis, guardarlo en la base de datos
48
+ if user_input.startswith('/analisis_morfosintactico') and result:
49
+ store_student_morphosyntax_result(
50
+ st.session_state.username,
51
+ user_input.split('[', 1)[1].rsplit(']', 1)[0], # texto analizado
52
+ visualizations
53
+ )
54
+
55
+ # Mostrar el historial del chat
56
+ with chat_container:
57
+ for message in st.session_state.morphosyntax_chat_history:
58
+ with st.chat_message(message["role"]):
59
+ st.write(message["content"])
60
+ if "visualizations" in message and message["visualizations"]:
61
+ for i, viz in enumerate(message["visualizations"]):
62
+ st.markdown(f"**Oración {i+1} del párrafo analizado**")
63
+ st.components.v1.html(
64
+ f"""
65
+ <div style="width: 100%; overflow-x: auto; white-space: nowrap;">
66
+ <div style="min-width: 1200px;">
67
+ {viz}
68
+ </div>
69
+ </div>
70
+ """,
71
+ height=370,
72
+ scrolling=True
73
+ )
74
+ if i < len(message["visualizations"]) - 1:
75
+ st.markdown("---") # Separador entre diagramas
76
+
77
+ # Botón para limpiar el historial del chat
78
+ if st.button(t['clear_chat'], key=generate_unique_key('morphosyntax', 'clear_chat')):
79
+ st.session_state.morphosyntax_chat_history = []
80
+ st.rerun()
81
+
82
+ # Botón de exportación
83
+ if st.button("Exportar Interacciones"):
84
+ pdf_buffer = export_user_interactions(st.session_state.username, 'morphosyntax')
85
+ st.download_button(
86
+ label="Descargar PDF",
87
+ data=pdf_buffer,
88
+ file_name="interacciones_morfosintaxis.pdf",
89
+ mime="application/pdf"
90
+ )
91
+
92
+ '''
93
+ if user_input:
94
+ # Añadir el mensaje del usuario al historial
95
+ st.session_state.morphosyntax_chat_history.append({"role": "user", "content": user_input})
96
+
97
+ # Procesar el input del usuario nuevo al 26-9-2024
98
+ response, visualizations, result = process_morphosyntactic_input(user_input, lang_code, nlp_models, t)
99
+
100
+ # Mostrar indicador de carga
101
+ with st.spinner(t.get('processing', 'Processing...')):
102
+ try:
103
+ # Procesar el input del usuario
104
+ response, visualizations, result = process_morphosyntactic_input(user_input, lang_code, nlp_models, t)
105
+
106
+ # Añadir la respuesta al historial
107
+ message = {
108
+ "role": "assistant",
109
+ "content": response
110
+ }
111
+ if visualizations:
112
+ message["visualizations"] = visualizations
113
+ st.session_state.morphosyntax_chat_history.append(message)
114
+
115
+ # Mostrar la respuesta más reciente
116
+ with st.chat_message("assistant"):
117
+ st.write(response)
118
+ if visualizations:
119
+ for i, viz in enumerate(visualizations):
120
+ st.markdown(f"**Oración {i+1} del párrafo analizado**")
121
+ st.components.v1.html(
122
+ f"""
123
+ <div style="width: 100%; overflow-x: auto; white-space: nowrap;">
124
+ <div style="min-width: 1200px;">
125
+ {viz}
126
+ </div>
127
+ </div>
128
+ """,
129
+ height=350,
130
+ scrolling=True
131
+ )
132
+ if i < len(visualizations) - 1:
133
+ st.markdown("---") # Separador entre diagramas
134
+
135
+ # Si es un análisis, guardarlo en la base de datos
136
+ if user_input.startswith('/analisis_morfosintactico') and result:
137
+ store_morphosyntax_result(
138
+ st.session_state.username,
139
+ user_input.split('[', 1)[1].rsplit(']', 1)[0], # texto analizado
140
+ result.get('repeated_words', {}),
141
+ visualizations,
142
+ result.get('pos_analysis', []),
143
+ result.get('morphological_analysis', []),
144
+ result.get('sentence_structure', [])
145
+ )
146
+
147
+
148
+ except Exception as e:
149
+ st.error(f"{t['error_processing']}: {str(e)}")
150
+
151
+
152
+
153
+ # Forzar la actualización de la interfaz
154
+ st.rerun()
155
+
156
+ # Botón para limpiar el historial del chat
157
+ if st.button(t['clear_chat'], key=generate_unique_key('morphosyntax', 'clear_chat')):
158
+ st.session_state.morphosyntax_chat_history = []
159
+ st.rerun()
160
+ '''
161
+
162
+
163
+ '''
164
+ ############ MODULO PARA DEPURACIÓN Y PRUEBAS #####################################################
165
+ def display_morphosyntax_interface(lang_code, nlp_models, t):
166
+ st.subheader(t['morpho_title'])
167
+
168
+ text_input = st.text_area(
169
+ t['warning_message'],
170
+ height=150,
171
+ key=generate_unique_key("morphosyntax", "text_area")
172
+ )
173
+
174
+ if st.button(
175
+ t['results_title'],
176
+ key=generate_unique_key("morphosyntax", "analyze_button")
177
+ ):
178
+ if text_input:
179
+ # Aquí iría tu lógica de análisis morfosintáctico
180
+ # Por ahora, solo mostraremos un mensaje de placeholder
181
+ st.info(t['analysis_placeholder'])
182
+ else:
183
+ st.warning(t['no_text_warning'])
184
+ ###
185
+ #################################################
186
+ '''