Spaces:
Runtime error
Runtime error
File size: 2,870 Bytes
b8cc7cf 4d13f14 10f8e16 b8cc7cf 10f8e16 60503e8 68949f2 7f13aa1 60503e8 7f13aa1 68949f2 7f13aa1 68949f2 7f13aa1 4d13f14 68949f2 60503e8 4d13f14 68949f2 7f13aa1 ede4f5f 7f13aa1 60503e8 68949f2 b8cc7cf dc71bb1 b8cc7cf dc71bb1 68949f2 7f13aa1 4d13f14 7f13aa1 |
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 77 78 79 80 |
from transformers import pipeline
import gradio as gr
# Define el modelo de traducción inglés-español
modelo_traduccion = pipeline("translation", model="Helsinki-NLP/opus-mt-en-es")
# Define el modelo de clasificación de idiomas (cambiado a fasttext)
modelo_idioma = pipeline("text-classification", model="facebook/fasttext-language-identification")
def detectar_idioma(texto):
"""
Detecta el idioma del texto utilizando el modelo fasttext.
Args:
texto (str): El texto del cual se quiere detectar el idioma.
Returns:
str: El código del idioma detectado (ej: 'en', 'es').
"""
try:
resultado = modelo_idioma(texto, top_k=1)[0]
# El modelo fasttext devuelve códigos de idioma precedidos por '__label__'
return resultado['label'].replace('__label__', '')
except Exception as e:
print(f"Error en la detección de idioma: {e}")
return None
def traducir_texto(texto_en):
"""
Traduce el texto de entrada del inglés al español, previa verificación del idioma.
Args:
texto_en (str): El texto en inglés que se va a traducir.
Returns:
str: El texto traducido al español o un mensaje de error si el idioma no es inglés.
"""
if not texto_en.strip():
return ""
idioma_detectado = detectar_idioma(texto_en)
if idioma_detectado == 'en':
try:
resultado = modelo_traduccion(texto_en)
return resultado[0]['translation_text']
except Exception as e:
return f"Error en la traducción: {e}"
else:
return "Por favor, introduce texto en inglés para traducir."
def borrar_entrada(texto_entrada):
"""
Borra el texto del cuadro de texto de entrada.
Args:
texto_entrada (str): El texto actual en el cuadro de texto de entrada.
Returns:
str: Una cadena vacía.
"""
return ""
with gr.Blocks() as interfaz_traductor:
"""
Define la interfaz gráfica de la aplicación de traducción de inglés a español con detección de idioma (fasttext).
"""
gr.Markdown("# Traductor Inglés a Español")
with gr.Row():
with gr.Column():
texto_entrada_en = gr.Textbox(label="Texto en inglés", placeholder="Pega aquí el texto en inglés", lines=10)
boton_borrar = gr.Button("Borrar todo")
with gr.Column():
texto_salida_es = gr.Textbox(label="Traducción al español", placeholder="La traducción aparecerá aquí", interactive=False, lines=10)
gr.Markdown("*Puedes copiar el texto traducido seleccionándolo y usando Ctrl+C (o Cmd+C en macOS).*")
texto_entrada_en.change(traducir_texto, inputs=texto_entrada_en, outputs=texto_salida_es)
boton_borrar.click(borrar_entrada, inputs=texto_entrada_en, outputs=texto_entrada_en)
interfaz_traductor.launch() |