Spaces:
Runtime error
Runtime error
Update README.md
Browse files
README.md
CHANGED
@@ -9,4 +9,109 @@ app_file: app.py
|
|
9 |
pinned: false
|
10 |
---
|
11 |
|
12 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
9 |
pinned: false
|
10 |
---
|
11 |
|
12 |
+
# Mini Traductor Inglés a Español con Gradio
|
13 |
+
|
14 |
+
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.
|
15 |
+
|
16 |
+
## Funcionalidades
|
17 |
+
|
18 |
+
* **Entrada de texto en inglés:** Un cuadro de texto grande para que los usuarios peguen o escriban el texto que desean traducir.
|
19 |
+
* **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.
|
20 |
+
* **Traducción automática:** Utiliza un modelo preentrenado de Hugging Face Transformers para traducir el texto del inglés al español.
|
21 |
+
* **Salida de texto traducido:** Un cuadro de texto grande donde se muestra la traducción al español. Este cuadro es de solo lectura.
|
22 |
+
* **Botón "Borrar todo":** Permite limpiar fácilmente el cuadro de texto de entrada.
|
23 |
+
* **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).
|
24 |
+
|
25 |
+
## Cómo usar
|
26 |
+
|
27 |
+
Esta aplicación está diseñada para ser desplegada en [Hugging Face Spaces](https://huggingface.co/spaces). Una vez que la aplicación esté corriendo:
|
28 |
+
|
29 |
+
1. Ingresa el texto que deseas traducir al inglés en el cuadro de texto etiquetado como "Texto en inglés".
|
30 |
+
2. La traducción al español aparecerá automáticamente en el cuadro de texto etiquetado como "Traducción al español".
|
31 |
+
3. Si necesitas borrar el texto de entrada, haz clic en el botón "Borrar todo".
|
32 |
+
4. 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.
|
33 |
+
|
34 |
+
## Código
|
35 |
+
|
36 |
+
Aquí está el código Python de la aplicación (puedes copiar y pegar esto en tu archivo `app.py`):
|
37 |
+
|
38 |
+
```python
|
39 |
+
from transformers import pipeline
|
40 |
+
import gradio as gr
|
41 |
+
|
42 |
+
# Define el modelo de traducción inglés-español
|
43 |
+
modelo_traduccion = pipeline("translation", model="Helsinki-NLP/opus-mt-en-es")
|
44 |
+
|
45 |
+
# Define el modelo de clasificación de idiomas
|
46 |
+
modelo_idioma = pipeline("text-classification", model="joosbu/roberta-small-langdet")
|
47 |
+
|
48 |
+
def detectar_idioma(texto):
|
49 |
+
"""
|
50 |
+
Detecta el idioma del texto utilizando el modelo roberta-small-langdet.
|
51 |
+
|
52 |
+
Args:
|
53 |
+
texto (str): El texto del cual se quiere detectar el idioma.
|
54 |
+
|
55 |
+
Returns:
|
56 |
+
str: El código del idioma detectado (ej: 'en', 'es').
|
57 |
+
"""
|
58 |
+
try:
|
59 |
+
resultado = modelo_idioma(texto, top_k=1)[0]
|
60 |
+
return resultado['label']
|
61 |
+
except Exception as e:
|
62 |
+
print(f"Error en la detección de idioma: {e}")
|
63 |
+
return None
|
64 |
+
|
65 |
+
def traducir_texto(texto_en):
|
66 |
+
"""
|
67 |
+
Traduce el texto de entrada del inglés al español, previa verificación del idioma.
|
68 |
+
|
69 |
+
Args:
|
70 |
+
texto_en (str): El texto en inglés que se va a traducir.
|
71 |
+
|
72 |
+
Returns:
|
73 |
+
str: El texto traducido al español o un mensaje de error si el idioma no es inglés.
|
74 |
+
"""
|
75 |
+
if not texto_en.strip():
|
76 |
+
return ""
|
77 |
+
|
78 |
+
idioma_detectado = detectar_idioma(texto_en)
|
79 |
+
|
80 |
+
if idioma_detectado == 'en':
|
81 |
+
try:
|
82 |
+
resultado = modelo_traduccion(texto_en)
|
83 |
+
return resultado[0]['translation_text']
|
84 |
+
except Exception as e:
|
85 |
+
return f"Error en la traducción: {e}"
|
86 |
+
else:
|
87 |
+
return "Por favor, introduce texto en inglés para traducir."
|
88 |
+
|
89 |
+
def borrar_entrada(texto_entrada):
|
90 |
+
"""
|
91 |
+
Borra el texto del cuadro de texto de entrada.
|
92 |
+
|
93 |
+
Args:
|
94 |
+
texto_entrada (str): El texto actual en el cuadro de texto de entrada.
|
95 |
+
|
96 |
+
Returns:
|
97 |
+
str: Una cadena vacía.
|
98 |
+
"""
|
99 |
+
return ""
|
100 |
+
|
101 |
+
with gr.Blocks() as interfaz_traductor:
|
102 |
+
"""
|
103 |
+
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).
|
104 |
+
"""
|
105 |
+
gr.Markdown("# Traductor Inglés a Español")
|
106 |
+
with gr.Row():
|
107 |
+
with gr.Column():
|
108 |
+
texto_entrada_en = gr.Textbox(label="Texto en inglés", placeholder="Pega aquí el texto en inglés", lines=10)
|
109 |
+
boton_borrar = gr.Button("Borrar todo")
|
110 |
+
with gr.Column():
|
111 |
+
texto_salida_es = gr.Textbox(label="Traducción al español", placeholder="La traducción aparecerá aquí", interactive=False, lines=10)
|
112 |
+
gr.Markdown("*Puedes copiar el texto traducido seleccionándolo y usando Ctrl+C (o Cmd+C en macOS).*")
|
113 |
+
|
114 |
+
texto_entrada_en.change(traducir_texto, inputs=texto_entrada_en, outputs=texto_salida_es)
|
115 |
+
boton_borrar.click(borrar_entrada, inputs=texto_entrada_en, outputs=texto_entrada_en)
|
116 |
+
|
117 |
+
interfaz_traductor.launch()
|