ancerlop's picture
Update app.py
300b1fd
import gradio as gr
from setfit import SetFitModel
import spacy
# Cargar el modelo
model = SetFitModel.from_pretrained("desarrolloasesoreslocales/SetFitArgumentos")
# Cargar el modelo de spaCy para espa帽ol
spacy.cli.download("es_core_news_sm")
nlp = spacy.load("es_core_news_sm")
# Mapear las etiquetas
id2label = {0: "49", 1: "994", 2: "1002", 3: "2014"}
# Definir la funci贸n para dividir en p谩rrafos
def dividir_en_parrafos(texto):
doc = nlp(texto)
parrafos = []
parrafo_actual = []
for oracion in doc.sents:
parrafo_actual.append(oracion.text)
if oracion.text.endswith((".", "!", "?")):
parrafos.append(" ".join(parrafo_actual))
parrafo_actual = []
if parrafo_actual:
parrafos.append(" ".join(parrafo_actual))
return parrafos
# Definir la funci贸n de predicci贸n
def predict(payload):
# Dividir el texto en p谩rrafos
parrafos = dividir_en_parrafos(payload)
# Inicializar un conjunto para almacenar etiquetas 煤nicas
etiquetas_encontradas = set()
# Procesar cada p谩rrafo por separado
for parrafo in parrafos:
# Predecir con el modelo
results = model.predict_proba([parrafo])[0]
# Filtrar etiquetas con score > 0.60
etiquetas_filtradas = [id2label[i] for i, score in enumerate(results) if score > 0.60]
# Agregar etiquetas al conjunto
etiquetas_encontradas.update(etiquetas_filtradas)
return "\n".join(etiquetas_encontradas)
# Crear una interfaz Gradio
iface = gr.Interface(
fn=predict,
inputs=gr.Textbox(),
outputs=gr.Textbox(),
live=False,
title="Clasificador de Texto"
)
# Iniciar la interfaz Gradio
iface.launch()