v3 / modules /discourse /discourse_interface.py
AIdeaText's picture
Upload 216 files
c58df45 verified
raw
history blame
5.29 kB
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."))
'''