|
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:
|
|
|
|
|
|
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."))
|
|
|
|
|
|
''' |