Spaces:
Runtime error
Runtime error
metadata
title: Gui Ejemplo Transformer Encoder Decoder
emoji: 📉
colorFrom: green
colorTo: gray
sdk: gradio
sdk_version: 5.31.0
app_file: app.py
pinned: false
Mini Traductor Inglés a Español con Gradio
Esta aplicación web utiliza la librería Gradio y modelos de Hugging Face Transformers para proporcionar una interfaz sencilla para traducir texto del inglés al español.
Funcionalidades
- Entrada de texto en inglés: Un cuadro de texto grande para que los usuarios peguen o escriban el texto que desean traducir.
- Detección de idioma: Antes de la traducción, se intenta detectar si el texto ingresado es inglés. Si no lo es, se muestra un mensaje de advertencia.
- Traducción automática: Utiliza un modelo preentrenado de Hugging Face Transformers para traducir el texto del inglés al español.
- Salida de texto traducido: Un cuadro de texto grande donde se muestra la traducción al español. Este cuadro es de solo lectura.
- Botón "Borrar todo": Permite limpiar fácilmente el cuadro de texto de entrada.
- Instrucciones para copiar: Se incluye un texto informativo indicando cómo copiar el texto traducido utilizando los atajos estándar del sistema operativo (Ctrl+C / Cmd+C).
Cómo usar
Esta aplicación está diseñada para ser desplegada en Hugging Face Spaces. Una vez que la aplicación esté corriendo:
- Ingresa el texto que deseas traducir al inglés en el cuadro de texto etiquetado como "Texto en inglés".
- La traducción al español aparecerá automáticamente en el cuadro de texto etiquetado como "Traducción al español".
- Si necesitas borrar el texto de entrada, haz clic en el botón "Borrar todo".
- Para copiar el texto traducido, selecciónalo en el cuadro de "Traducción al español" y utiliza los atajos de teclado estándar (Ctrl+C en Windows/Linux, Cmd+C en macOS) o el menú contextual del navegador.
Código
Aquí está el código Python de la aplicación (puedes copiar y pegar esto en tu archivo app.py
):
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
modelo_idioma = pipeline("text-classification", model="joosbu/roberta-small-langdet")
def detectar_idioma(texto):
"""
Detecta el idioma del texto utilizando el modelo roberta-small-langdet.
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]
return resultado['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 (roberta-small-langdet).
"""
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()