Spaces:
Sleeping
Sleeping
| import os | |
| import gradio as gr | |
| import torch | |
| from transformers import BartForConditionalGeneration, BartTokenizer | |
| import asyncio | |
| import selectors | |
| # Parche para Python 3.13 y Gradio | |
| class SafeSelector(selectors.DefaultSelector): | |
| def get_map(self): | |
| try: | |
| return super().get_map() | |
| except Exception: | |
| return {} | |
| # Aplicar el parche antes de importar Transformers | |
| selector = SafeSelector() | |
| loop = asyncio.new_event_loop() | |
| asyncio.set_event_loop(loop) | |
| # ID de tu repositorio con los archivos de image_80ac1b.png | |
| model_id = "ivanmorals/dostoevsky_bart" | |
| # Carga explícita del modelo y tokenizador | |
| tokenizer = BartTokenizer.from_pretrained(model_id) | |
| model = BartForConditionalGeneration.from_pretrained(model_id) | |
| def formal_to_dostoevsky(texto_informal): | |
| # Aseguramos que el input no esté vacío | |
| if not texto_informal.strip(): | |
| return "El silencio es, a veces, la confesión más aterradora..." | |
| inputs = tokenizer( | |
| texto_informal, | |
| return_tensors="pt", | |
| truncation=True, | |
| max_length=512 | |
| ) | |
| # Forzamos parámetros de generación específicos para transformación de estilo | |
| output_ids = model.generate( | |
| inputs["input_ids"], | |
| attention_mask=inputs["attention_mask"], | |
| max_length=300, | |
| min_length=30, # Forzamos a que desarrolle la idea | |
| num_beams=5, | |
| do_sample=True, # Necesario para usar temperature | |
| temperature=0.75, | |
| top_p=0.80, | |
| no_repeat_ngram_size=3, | |
| repetition_penalty=1.7, | |
| early_stopping=True | |
| ) | |
| # Decodificar omitiendo los tokens especiales | |
| resultado = tokenizer.decode(output_ids[0], skip_special_tokens=True) | |
| # Validación: Si el modelo sigue devolviendo lo mismo, forzamos un post-procesado básico | |
| if resultado.strip().lower() == texto_informal.strip().lower(): | |
| return f"¡Ah! ¿Acaso no comprendes que... {resultado}? Es la miseria del alma lo que habita en esas palabras." | |
| return resultado | |
| # Interfaz enfocada en la transformación de estilo | |
| demo = gr.Interface( | |
| fn=formal_to_dostoevsky, | |
| inputs=gr.Textbox( | |
| label="Texto de entrada", | |
| placeholder="Ej: 'Me siento mal porque no tengo dinero y la ciudad es fea.'" | |
| ), | |
| outputs=gr.Textbox(label="Versión de Dostoievski"), | |
| title="Dostoevsky-zador", | |
| description="Transforma pensamientos cotidianos en pasajes de angustia existencialista rusa." | |
| ) | |
| demo.launch() |