Spaces:
Sleeping
Sleeping
File size: 2,578 Bytes
e7c3073 032078e 2081f80 85ea949 032078e 85ea949 48bb05d 2081f80 f016269 032078e 2081f80 f016269 da3019f 48bb05d 85ea949 48bb05d 2081f80 85ea949 48bb05d 85ea949 ddf5494 48bb05d 85ea949 ddf5494 48bb05d 947d6c9 2081f80 85ea949 2081f80 48bb05d 2081f80 48bb05d 85ea949 48bb05d 85ea949 48bb05d 2081f80 74be984 f016269 | 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 | 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() |