Spaces:
Sleeping
Sleeping
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() | |