Create app.py
Browse filesCuando no se entiende muy bien el inglés y se quiere leer algo en este idioma es difícil hacerlo ya que las palabras pueden ser difíciles de traducir a primera vista. Estos modelos ayudan a la traducción y a leer esos textos. He utilizado los siguientes modelos:
Falconsai: este modelo resume un texto de ingles a ingles. Puedes ponerle el máximo de caracteres que quieres que aparezcan y te devuelve una lista de diccionarios con el texto dentro.
Helsinki-NLP/opus-mt-en-es: este modelo resume textos de ingles a español. Para usar este modelo se necesita usar un tokenizador el cual será un paso previo a la traducción del texto. También hay que ponerle al texto antes una etiqueta para que sepa que está traduciendo al español. Una vez se traduzca el texto se decodifica y se enseña.
Una vez conseguido que funcionen los dos modelos se usa gradio para crear una interfaz sencilla en la cual apareceran los textos traducidos, el resumido y el completo.
|
@@ -0,0 +1,26 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
from transformers import pipeline, MarianMTModel, MarianTokenizer
|
| 2 |
+
import gradio as gr
|
| 3 |
+
|
| 4 |
+
summarizer = pipeline("summarization", model="Falconsai/text_summarization") # modelo de resumen de texto inglés a inglés
|
| 5 |
+
|
| 6 |
+
# modelo para la traducción del texto ingles a español
|
| 7 |
+
model_name = "Helsinki-NLP/opus-mt-en-es"
|
| 8 |
+
tokenizer = MarianTokenizer.from_pretrained(model_name)
|
| 9 |
+
model = MarianMTModel.from_pretrained(model_name)
|
| 10 |
+
|
| 11 |
+
def traducir(texto):
|
| 12 |
+
text_summarized = summarizer(texto, max_length=1000, min_length=30, do_sample=False)
|
| 13 |
+
texto_solo = ">>esp<< " + text_summarized[0]["summary_text"]
|
| 14 |
+
translated_entero = model.generate(**tokenizer(texto, return_tensors="pt", padding=True))
|
| 15 |
+
texto_entero = [tokenizer.decode(t, skip_special_tokens=True) for t in translated_entero]
|
| 16 |
+
translated_resumido = model.generate(**tokenizer(texto_solo, return_tensors="pt", padding=True))
|
| 17 |
+
texto_resumido = [tokenizer.decode(t, skip_special_tokens=True) for t in translated_resumido]
|
| 18 |
+
return texto_resumido[0], texto_entero[0],
|
| 19 |
+
|
| 20 |
+
demo = gr.Interface(
|
| 21 |
+
fn=traducir,
|
| 22 |
+
inputs=["text"],
|
| 23 |
+
outputs=["text", "text"],
|
| 24 |
+
)
|
| 25 |
+
|
| 26 |
+
demo.launch()
|