# Importar librerías necesarias import streamlit as st from transformers import AutoTokenizer, AutoModelForSequenceClassification import torch import numpy as np # Cargar el modelo BERT preentrenado y el tokenizador MODEL_NAME = "bert-base-uncased" tokenizer = AutoTokenizer.from_pretrained(MODEL_NAME) model = AutoModelForSequenceClassification.from_pretrained(MODEL_NAME, num_labels=3) # Diccionario de palabras clave con sentimientos asociados palabras_clave = { "Positivo": ["feliz", "alegre", "contento", "genial", "maravilloso"], "Negativo": ["triste", "deprimido", "mal", "horrible", "terrible"], "Ambiguo": ["no sé", "confuso", "indeciso", "raro"] } # Función para predecir el sentimiento del modelo def predecir_sentimiento(texto): """ Toma un texto de entrada y devuelve la clasificación del sentimiento usando el modelo BERT. Sentimientos posibles: Negativo, Neutral, Positivo. """ entradas = tokenizer(texto, return_tensors="pt", truncation=True, padding=True, max_length=128) with torch.no_grad(): salidas = model(**entradas) prediccion = np.argmax(salidas.logits.numpy(), axis=1) etiquetas = ["Negativo", "Neutral", "Positivo"] return etiquetas[prediccion[0]] # Función para ajustar el sentimiento con palabras clave def ajustar_sentimiento(texto, sentimiento_modelo): """ Ajusta el sentimiento clasificado por el modelo si se encuentran palabras clave en el texto. """ texto = texto.lower() for palabra in palabras_clave["Positivo"]: if palabra in texto: return "Positivo" for palabra in palabras_clave["Negativo"]: if palabra in texto: return "Negativo" for palabra in palabras_clave["Ambiguo"]: if palabra in texto: return "Ambiguo" return sentimiento_modelo # Estilos personalizados con CSS st.markdown(""" """, unsafe_allow_html=True) # Título de la aplicación st.markdown("""
Desarrollado por Grupo 7 - Procesamiento de datos con AI - Especialización en Inteligencia Artificial UAO | Proyecto del Taller Final - Módulo 2 🚀
""", unsafe_allow_html=True)