import streamlit as st from transformers import pipeline import time import matplotlib.pyplot as plt #Nombre_modelo = 'pysentimiento/robertuito-sentiment-analysis' #######################creacion de funciones###################### @st.cache_resource def cargar_modelo(model_name): return pipeline("zero-shot-classification", model=model_name, device=0) def graficar(result): # Crear un gráfico de pastel fig, ax = plt.subplots() ax.pie(result["scores"], labels=result["labels"], autopct="%1.1f%%", startangle=90) ax.axis("equal") # Hace que el gráfico sea un círculo perfecto # Mostrar el gráfico en Streamlit st.pyplot(fig) #######################fin creacion de funciones###################### st.title("Ejercicio interfaz transformers pipeline con modelos Zero-shot") model_options = [ "facebook/bart-large-mnli", "roberta-large-mnli", "cross-encoder/nli-roberta-base" ] # Seleccionar el modelo del pipeline selected_model = st.selectbox("Selecciona un modelo", model_options) #funcion eleccion del modelo #asignacion del modelo a usar classifier = cargar_modelo(selected_model) # Entrada de texto para la oración nombre = st.text_input("Ingrese un nombre o una oración a clasificar:") etiquetas = st.text_area( "Ingresa las categorías separadas por comas:", placeholder="Ejemplo: masculino,femenino" ) # Botón para clasificar if st.button("Clasificar"): # Show a spinner during a process with st.spinner(text="Ejecutando el modelo"): time.sleep(3) st.success("Revisar el resultado obtenido en la parte inferior") if nombre and etiquetas: # Procesar las categorías ingresadas por el usuario labels = [label.strip() for label in etiquetas.split(",")] # Obtener las predicciones result = classifier(nombre, candidate_labels=labels) # Mostrar los resultados st.subheader("Resultados de Clasificación") #for label, score in zip(result["labels"], result["scores"]): # st.write(f"**{label}**: {score:.2f}") for label, score in zip(result["labels"], result["scores"]): with st.container(): st.markdown( f"""
Confianza: {score:.2f}