File size: 5,286 Bytes
c58df45
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
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."))





        '''