RESTRA / app.py
Adriiiii24's picture
Update app.py
7f0238c verified
import gradio as gr
from transformers import pipeline, T5Tokenizer, T5ForConditionalGeneration
import requests
import os
# Cargar el token de Hugging Face configurado en el entorno
token = os.getenv("HF_TOKEN")
if not token:
raise ValueError("El token no se configuró correctamente en las variables de entorno.")
API_URL = "https://api-inference.huggingface.co/models/Helsinki-NLP/opus-mt-en-es"
headers = {"Authorization": f"Bearer {token}"}
# Cargar el modelo y el tokenizador de resumen
tokenizer = T5Tokenizer.from_pretrained("sumedh/t5-base-amazonreviews", clean_up_tokenization_spaces=True, legacy=False)
model = T5ForConditionalGeneration.from_pretrained("sumedh/t5-base-amazonreviews")
summarizer = pipeline("summarization", model=model, tokenizer=tokenizer)
# Función para realizar el resumen y la traducción
def texto_sum(text):
# Dividir el texto en partes si es demasiado largo para el modelo de resumen
max_input_length = 512
text_chunks = [text[i:i+max_input_length] for i in range(0, len(text), max_input_length)]
# Resumir cada parte y unir los resúmenes
summaries = [summarizer(chunk, max_length=30, min_length=10, do_sample=False)[0]['summary_text'] for chunk in text_chunks]
full_summary = " ".join(summaries)
# Realizar la traducción del resumen completo utilizando la API de Hugging Face
response = requests.post(API_URL, headers=headers, json={"inputs": full_summary})
translation = response.json()
# Verificar si hay errores en la respuesta de la traducción
if 'error' in translation:
return f"Error en la traducción: {translation['error']}"
return translation[0]['translation_text']
# Interfaz de Gradio
description_text = """
### Instrucciones para el uso de la aplicación
1. Introduzca el texto que desea resumir en el cuadro de texto.
2. La aplicación dividirá automáticamente el texto si es muy largo.
3. Primero, se realizará un resumen del texto introducido.
4. A continuación, el resumen será traducido al español.
5. El resultado final será un texto resumido y traducido al español.
**El resumen y la traducción pueden tomar algunos segundos e intentos.**
"""
demo = gr.Interface(
fn=texto_sum,
inputs=gr.Textbox(label="Texto a introducir:", placeholder="Introduce el texto a resumir aquí..."),
outputs=gr.Textbox(label="Texto resumido y traducido:"),
title="Aplicación de Resumen y Traducción",
description=description_text
)
# Lanzar la interfaz
demo.launch()