Spaces:
Runtime error
Runtime error
Create app.py
Browse files
app.py
ADDED
@@ -0,0 +1,73 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
# Imports
|
2 |
+
|
3 |
+
from sentence_splitter import SentenceSplitter
|
4 |
+
import torch
|
5 |
+
from transformers import AutoTokenizer, AutoModelForSeq2SeqLM
|
6 |
+
from deep_translator import GoogleTranslator
|
7 |
+
import random
|
8 |
+
|
9 |
+
# Funciones
|
10 |
+
|
11 |
+
model_name2 = "Vamsi/T5_Paraphrase_Paws"
|
12 |
+
torch_device2 = "cuda" if torch.cuda.is_available() else "cpu"
|
13 |
+
tokenizer2 = AutoTokenizer.from_pretrained(model_name2)
|
14 |
+
model2 = AutoModelForSeq2SeqLM.from_pretrained(model_name2).to(torch_device2)
|
15 |
+
|
16 |
+
def get_response_t5(input_text, num_return_sequences):
|
17 |
+
batch = tokenizer2.prepare_seq2seq_batch([input_text], truncation=True, padding='longest', max_length=100, return_tensors="pt").to(torch_device2)
|
18 |
+
translated = model2.generate(**batch, max_length=100, num_beams=10, num_return_sequences=num_return_sequences, temperature=0.7)
|
19 |
+
tgt_text = tokenizer2.batch_decode(translated, skip_special_tokens=True)
|
20 |
+
return tgt_text
|
21 |
+
|
22 |
+
def traducir_a_ingles(frase):
|
23 |
+
translated = GoogleTranslator(source='auto', target='en')
|
24 |
+
return translated.translate(frase)
|
25 |
+
|
26 |
+
def traducir_a_espanol(frase):
|
27 |
+
translated = GoogleTranslator(source='auto', target='es')
|
28 |
+
return translated.translate(frase)
|
29 |
+
|
30 |
+
def paraphrase_t5(text):
|
31 |
+
frase = get_response_t5(traducir_a_ingles(text), 10)
|
32 |
+
return traducir_a_espanol(frase[random.randint(0, 9)])
|
33 |
+
|
34 |
+
# Parafrasear
|
35 |
+
|
36 |
+
def parafrasear_texto(texto):
|
37 |
+
texto = texto.replace('\n\n', '\n')
|
38 |
+
paragraph_list = texto.split('\n')
|
39 |
+
|
40 |
+
cadena = ""
|
41 |
+
for paragraph in paragraph_list:
|
42 |
+
splitter = SentenceSplitter(language='en')
|
43 |
+
sentence_list = splitter.split(paragraph)
|
44 |
+
|
45 |
+
for sentence in sentence_list:
|
46 |
+
sentence_paraphrase = paraphrase_t5(sentence)
|
47 |
+
if sentence_paraphrase is not None:
|
48 |
+
cadena += sentence_paraphrase + " "
|
49 |
+
|
50 |
+
cadena += 'token_salto_parrafo'
|
51 |
+
|
52 |
+
cadena = cadena.replace(' ', ' ')
|
53 |
+
cadena = cadena.replace('token_salto_parrafo', '\n\n')
|
54 |
+
cadena = cadena.lstrip('\n').rstrip('\n')
|
55 |
+
return cadena
|
56 |
+
|
57 |
+
# Interfaz
|
58 |
+
|
59 |
+
import gradio as gr
|
60 |
+
|
61 |
+
def function(texto):
|
62 |
+
result = parafrasear_texto(texto)
|
63 |
+
return result
|
64 |
+
|
65 |
+
demo = gr.Interface(
|
66 |
+
fn=function,
|
67 |
+
inputs=gr.Textbox(lines=10, label="Texto a parafrasear", placeholder="Ingrese el texto a parafrasear..."),
|
68 |
+
outputs=gr.Textbox(lines=10, label="Resultado de la paráfrasis", placeholder="Texto parafraseado..."),
|
69 |
+
title="Paráfrasis en español con el Modelo T5",
|
70 |
+
examples=[["¿Qué es un científico de datos?\n\nComo especialidad, la ciencia de datos aun es nueva. Surgió de los campos del análisis estadístico y de la minería de datos. The Data Science Journal se lanzó inicialmente en 2002 y su publicación corrió a cargo del International Council for Science: Committee on Data for Science and Technology. En 2008 surgió el nombre de científico de datos y este campo prosperó rápidamente. Desde entonces, ha habido una escasez de científicos de datos, a pesar de que cada vez más colegios y universidades han comenzado a ofrecer grados en ciencia de datos.\n\nLas tareas de un científico de datos pueden incluir el desarrollo de estrategias para analizar datos, la preparación de datos para su análisis, explorar, analizar y visualizar datos, construir modelos con datos mediante el uso de lenguajes de programación como Python y R y desplegar modelos en aplicaciones.\n\nEl científico de datos no trabaja solo. De hecho, la data science más efectiva se ejecuta en equipos. Además de un científico de datos, este equipo puede incluir un analista empresarial que define el problema, un ingeniero de datos que prepara los datos y su método de acceso, un arquitecto de TI que supervisa los procesos subyacentes y la infraestructura, y un desarrollador de aplicaciones que implementa los modelos o las salidas del análisis en aplicaciones y productos."]],
|
71 |
+
)
|
72 |
+
|
73 |
+
demo.launch(inline=False)
|