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()