alertDetection / app.py
Nacho86's picture
Rename main.py to app.py
a366c63 verified
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()