File size: 3,221 Bytes
7bf61c5
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
import streamlit as st
import nltk
from secciones.procesar_textos import procesar_textos  # Asegúrate de que esta ruta sea correcta
from secciones.home_page import home_page
from secciones.info_page import info_page


def main():
    """
    Función principal que ejecuta la aplicación Streamlit.

    Esta función se encarga de configurar la página, cargar el modelo y el vectorizador, y gestionar el menú de
    navegación de la aplicación. Dependiendo de la opción seleccionada en el menú, renderiza diferentes vistas como
    la página de inicio, la página de análisis de texto o la página de información.

    :return: None. Ejecuta y mantiene activa la aplicación Streamlit.
    """
    # Configuración de la página
    logo_log_bar = r'imagenes/Captura de pantalla 2024-01-06 a las 17.13.19.png'
    st.set_page_config(page_title='Análisis sentimientos', page_icon=logo_log_bar, layout="wide")

    # Descargar recursos de NLTK
    @st.cache_data
    def descargar_recursos_nltk():
        """
        Descarga los recursos necesarios de NLTK.

        Esta función descarga los componentes 'punkt' y 'stopwords' de NLTK, que son necesarios para tokenizar y
        preprocesar el texto en las funciones de análisis.

        :return: None.
        """
        nltk.download('punkt')
        nltk.download('stopwords')

    descargar_recursos_nltk()

    # Menú de opciones
    with st.sidebar:
        # Imagen y título del menú centrados
        st.image("imagenes/uoc.png", width=290)  # Tamaño más grande para el logo
        st.markdown('<h1 style="text-align: center; color: black;">Menú de Navegación</h2>', unsafe_allow_html=True)

        # Opciones del menú con emojis como iconos
        opciones_menu = {
            "Home": "🏠 Home",
            "Analizar texto": "🔍 Analizar texto",
            "Info": "ℹ️ Info"
        }
        # Valor predeterminado para 'selected'
        if 'selected' not in st.session_state:
            st.session_state['selected'] = "Home"

        # Estilo personalizado para los botones
        btn_style = """
            <style>
                .css-2trqyj { 
                    display: flex; 
                    justify-content: center; 
                    align-items: center; 
                    font-size: 18px; 
                    font-weight: bold;
                }
            </style>
        """
        st.markdown(btn_style, unsafe_allow_html=True)

        # Crear botones en la barra lateral para cada opción del menú
        for opcion, etiqueta in opciones_menu.items():
            if st.button(etiqueta, key=opcion, use_container_width=True):
                st.session_state['selected'] = opcion

    # Vista de información
    if st.session_state['selected'] == "Home":
        st.image("imagenes/uoc2.png", use_column_width=True)
        home_page()

    # Analizar texto
    elif st.session_state['selected'] == "Analizar texto":
        st.image("imagenes/uoc2.png", use_column_width=True)
        procesar_textos()

    # Info
    elif st.session_state['selected'] == "Info":
        st.image("imagenes/uoc2.png", use_column_width=True)
        info_page()


if __name__ == "__main__":
    main()