DonWare commited on
Commit
d7fdbbd
verified
1 Parent(s): 59a9dee

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +29 -39
app.py CHANGED
@@ -1,54 +1,44 @@
1
  import gradio as gr
2
- from transformers import MBartForConditionalGeneration, MBart50TokenizerFast
3
- import torch
4
 
5
- # Dispositivo: GPU si est谩 disponible, sino CPU
6
- device = "cuda" if torch.cuda.is_available() else "cpu"
7
-
8
- # Cargar modelo y tokenizer
9
- model_name = "facebook/mbart-large-50"
10
- tokenizer = MBart50TokenizerFast.from_pretrained(model_name)
11
- model = MBartForConditionalGeneration.from_pretrained(model_name).to(device)
12
-
13
- # Lista de idiomas disponibles
14
- idiomas = {
15
- "Ingl茅s": "en_XX",
16
- "Espa帽ol": "es_XX",
17
- "Franc茅s": "fr_XX",
18
- "Alem谩n": "de_XX",
19
- "Ruso": "ru_RU",
20
- "Chino": "zh_CN",
21
- "脕rabe": "ar_AR"
22
  }
23
 
 
 
 
 
 
 
 
 
 
24
  def traducir(texto, idioma_origen, idioma_destino):
25
- """
26
- Traduce texto de un idioma a otro usando mBART-50.
27
- """
28
- if not texto.strip():
29
- return "Por favor ingresa alg煤n texto."
30
-
31
- tokenizer.src_lang = idioma_origen
32
- encoded = tokenizer(texto, return_tensors="pt").to(device)
33
- generated_tokens = model.generate(
34
- **encoded,
35
- forced_bos_token_id=tokenizer.lang_code_to_id[idioma_destino]
36
- )
37
- traduccion = tokenizer.batch_decode(generated_tokens, skip_special_tokens=True)[0]
38
- return traduccion
39
 
40
  # Crear interfaz Gradio
41
  iface = gr.Interface(
42
  fn=traducir,
43
  inputs=[
44
- gr.Textbox(label="Texto a traducir", placeholder="Escribe aqu铆 tu texto...", lines=4),
45
- gr.Dropdown(label="Idioma de origen", choices=list(idiomas.values()), value="en_XX"),
46
- gr.Dropdown(label="Idioma de destino", choices=list(idiomas.values()), value="es_XX")
47
  ],
48
  outputs=gr.Textbox(label="Traducci贸n"),
49
- title="Traductor mBART-50",
50
- description="Traduce texto entre m煤ltiples idiomas usando mBART-50."
51
  )
52
 
53
- # Ejecutar interfaz
54
  iface.launch()
 
1
  import gradio as gr
2
+ from transformers import MarianMTModel, MarianTokenizer
 
3
 
4
+ # Diccionario de modelos multilenguaje OPUS-MT (origen -> destino)
5
+ modelos = {
6
+ ("mul", "en"): "Helsinki-NLP/opus-mt-mul-en",
7
+ ("en", "es"): "Helsinki-NLP/opus-mt-en-es",
8
+ ("es", "en"): "Helsinki-NLP/opus-mt-es-en",
9
+ ("en", "fr"): "Helsinki-NLP/opus-mt-en-fr",
10
+ ("fr", "en"): "Helsinki-NLP/opus-mt-fr-en",
 
 
 
 
 
 
 
 
 
 
11
  }
12
 
13
+ # Funci贸n para cargar modelo y tokenizer seg煤n idioma
14
+ def cargar_modelo(origen, destino):
15
+ key = (origen, destino)
16
+ model_name = modelos.get(key, "Helsinki-NLP/opus-mt-mul-en")
17
+ tokenizer = MarianTokenizer.from_pretrained(model_name)
18
+ model = MarianMTModel.from_pretrained(model_name)
19
+ return tokenizer, model
20
+
21
+ # Funci贸n de traducci贸n
22
  def traducir(texto, idioma_origen, idioma_destino):
23
+ tokenizer, model = cargar_modelo(idioma_origen, idioma_destino)
24
+ inputs = tokenizer(texto, return_tensors="pt", padding=True)
25
+ translated = model.generate(**inputs)
26
+ return tokenizer.decode(translated[0], skip_special_tokens=True)
27
+
28
+ # Lista de idiomas disponibles
29
+ idiomas = ["mul", "en", "es", "fr"]
 
 
 
 
 
 
 
30
 
31
  # Crear interfaz Gradio
32
  iface = gr.Interface(
33
  fn=traducir,
34
  inputs=[
35
+ gr.Textbox(label="Texto a traducir", lines=5, placeholder="Escribe aqu铆..."),
36
+ gr.Dropdown(idiomas, label="Idioma origen", value="mul"),
37
+ gr.Dropdown(idiomas, label="Idioma destino", value="en")
38
  ],
39
  outputs=gr.Textbox(label="Traducci贸n"),
40
+ title="Traductor Multilenguaje OPUS-MT",
41
+ description="Traduce textos entre m煤ltiples idiomas usando OPUS-MT en CPU."
42
  )
43
 
 
44
  iface.launch()