Spaces:
Running
Running
File size: 3,094 Bytes
3767294 058b417 c162eaf 1fd0e40 183273b 2f92e03 35f0188 3e30ac6 2f92e03 3e30ac6 2f92e03 bf9ae69 b5c1947 d17bdaa 1681a58 d17bdaa 3e30ac6 d17bdaa 35f0188 bf9ae69 0745070 b2802d9 0745070 b5c1947 0745070 45c0de0 0745070 b5c1947 0745070 c73ec2c b5c1947 02b6ab1 b5c1947 c73ec2c c4b2c28 3e30ac6 45c0de0 0745070 3e30ac6 016a73d 0745070 c73ec2c 0745070 c73ec2c 10a0cf1 c73ec2c 2f92e03 0745070 79852cb |
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
from transformers import pipeline
import time
import matplotlib.pyplot as plt
#######################creacion de funciones######################
@st.cache_resource
#funcion eleccion del modelo
def cargar_modelo(model_name):
return pipeline("zero-shot-classification", model=model_name, device=0)
#funcion que grafica el resultado del modelo
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 = [
"MoritzLaurer/mDeBERTa-v3-base-xnli-multilingual-nli-2mil7",
"joeddav/xlm-roberta-large-xnli",
"MoritzLaurer/multilingual-MiniLMv2-L6-mnli-xnli",
"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)
#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:
# basado en el string crear array labels que pasan como clases al modelo
labels = [label.strip() for label in etiquetas.split(",")]
#Llamado del modelo y las clases elegidas por el usuario
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"""
<div style="background-color: #283747;padding:10px;margin-bottom:10px;border-radius:5px;border: 1px solid #ddd;">
<h4 style="margin:0;">{label}</h4>
<p style="margin:0;">Confianza: <b>{score:.2f}</b></p>
</div>
""",
unsafe_allow_html=True,
)
graficar(result)
else:
st.warning("Por favor, ingresa una oraci贸n y categor铆as v谩lidas.")
#Clasificador = pipeline('sentiment-analysis', model = Nombre_modelo,device='cuda')
#Res=Cla("sundays are good day for relaxing")
#print(Res)
|