Spaces:
Running
Running
| import streamlit as st | |
| import pandas as pd | |
| from streamlit_float import * | |
| from .discourse_process import process_discourse_input | |
| from ..chatbot.chatbot import initialize_chatbot | |
| from ..database.database_oldFromV2 import store_discourse_analysis_result | |
| from ..text_analysis.discourse_analysis import perform_discourse_analysis | |
| from ..utils.widget_utils import generate_unique_key | |
| def display_discourse_interface(lang_code, nlp_models, t): | |
| st.subheader(t['discourse_title']) | |
| text_input = st.text_area( | |
| t['warning_message'], | |
| height=150, | |
| key=generate_unique_key("discourse", "text_area") | |
| ) | |
| if st.button( | |
| t['results_title'], | |
| key=generate_unique_key("discourse", "analyze_button") | |
| ): | |
| if text_input: | |
| # Aqu铆 ir铆a tu l贸gica de an谩lisis morfosint谩ctico | |
| # Por ahora, solo mostraremos un mensaje de placeholder | |
| st.info(t['analysis_placeholder']) | |
| else: | |
| st.warning(t['no_text_warning']) | |
| ''' | |
| def display_discourse_interface(lang_code, nlp_models, t): | |
| st.subheader(t['title']) | |
| # Inicializar el chatbot si no existe | |
| if 'discourse_chatbot' not in st.session_state: | |
| st.session_state.discourse_chatbot = initialize_chatbot('discourse') | |
| # Mostrar el historial del chat | |
| chat_history = st.session_state.get('discourse_chat_history', []) | |
| for message in chat_history: | |
| with st.chat_message(message["role"]): | |
| st.write(message["content"]) | |
| if "visualization" in message: | |
| st.pyplot(message["visualization"]) | |
| # Input del usuario | |
| user_input = st.chat_input(t['discourse_initial_message'], key=generate_unique_key('discourse', st.session_state.username)) | |
| if user_input: | |
| # Procesar el input del usuario | |
| response, visualization = process_discourse_input(user_input, lang_code, nlp_models[lang_code], st.session_state.get('file_contents'), t) | |
| # Actualizar el historial del chat | |
| chat_history.append({"role": "user", "content": user_input}) | |
| chat_history.append({"role": "assistant", "content": response, "visualization": visualization}) | |
| st.session_state.discourse_chat_history = chat_history | |
| # Mostrar el resultado m谩s reciente | |
| with st.chat_message("assistant"): | |
| st.write(response) | |
| if visualization: | |
| st.pyplot(visualization) | |
| # Bot贸n para limpiar el historial del chat | |
| if st.button(t['clear_chat'], key=generate_unique_key('discourse', 'clear_chat')): | |
| st.session_state.discourse_chat_history = [] | |
| st.rerun() | |
| # Secci贸n para cargar archivos | |
| col1, col2 = st.columns(2) | |
| with col1: | |
| uploaded_file1 = st.file_uploader(t['file_uploader1'], type=['txt', 'pdf', 'docx', 'doc', 'odt']) | |
| with col2: | |
| uploaded_file2 = st.file_uploader(t['file_uploader2'], type=['txt', 'pdf', 'docx', 'doc', 'odt']) | |
| if uploaded_file1 and uploaded_file2: | |
| file_contents1 = uploaded_file1.getvalue().decode('utf-8') | |
| file_contents2 = uploaded_file2.getvalue().decode('utf-8') | |
| st.session_state.file_contents = (file_contents1, file_contents2) | |
| if st.button(t['analyze_button']): | |
| result = perform_discourse_analysis(file_contents1, file_contents2, nlp_models[lang_code], lang_code) | |
| st.session_state.discourse_result = result | |
| display_discourse_results(result, lang_code, t) | |
| store_discourse_analysis_result(st.session_state.username, file_contents1, file_contents2, result) | |
| def display_discourse_results(result, lang_code, t): | |
| if result is None: | |
| st.warning(t.get('no_results', "No hay resultados disponibles.")) | |
| return | |
| col1, col2 = st.columns(2) | |
| with col1: | |
| with st.expander(t.get('file_uploader1', "Documento 1"), expanded=True): | |
| st.subheader(t.get('key_concepts', "Conceptos Clave")) | |
| if 'key_concepts1' in result: | |
| df1 = pd.DataFrame(result['key_concepts1'], columns=['Concepto', 'Frecuencia']) | |
| df1['Frecuencia'] = df1['Frecuencia'].round(2) | |
| st.table(df1) | |
| if 'graph1' in result: | |
| st.pyplot(result['graph1']) | |
| with col2: | |
| with st.expander(t.get('file_uploader2', "Documento 2"), expanded=True): | |
| st.subheader(t.get('key_concepts', "Conceptos Clave")) | |
| if 'key_concepts2' in result: | |
| df2 = pd.DataFrame(result['key_concepts2'], columns=['Concepto', 'Frecuencia']) | |
| df2['Frecuencia'] = df2['Frecuencia'].round(2) | |
| st.table(df2) | |
| if 'graph2' in result: | |
| st.pyplot(result['graph2']) | |
| # Relaci贸n de conceptos entre ambos documentos (Diagrama de Sankey) | |
| st.subheader(t.get('comparison', "Relaci贸n de conceptos entre ambos documentos")) | |
| if 'key_concepts1' in result and 'key_concepts2' in result: | |
| # C贸digo para generar el diagrama de Sankey (como en la funci贸n original) | |
| pass | |
| else: | |
| st.warning(t.get('comparison_not_available', "La comparaci贸n no est谩 disponible.")) | |
| ''' |