juancamval's picture
Update app.py
60503e8 verified
raw
history blame
2.87 kB
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()