Spaces:
Runtime error
Runtime error
import gradio as gr | |
import random | |
from transformers import AutoTokenizer, AutoModelForSeq2SeqLM | |
author_set = {'Leopoldo Lugones', 'Nacho Buzón', 'Octavio Paz', 'Luis Cañizal de la Fuente', 'Juan de Salinas', 'Vicente Huidobro', 'Hilario Barrero', | |
'Ramón de Campoamor', 'Anna Ajmátova', 'Víctor Hugo López Cancino', 'Ramón María del Valle-Inclán', 'Infantiles', 'Jorge Luis Borges', | |
'Carlos Bousoño', 'Gonzalo Rojas', 'Juan Ruiz, Arcipreste de Hita', 'Rubén Izaguirre Fiallos', 'Juan Meléndez Valdés', | |
'José María de Heredia', 'Jaime Sabines', 'Alejandra Pizarnik', 'María Cristina Azcona', 'Guillermo Aguirre y Fierro', | |
'Miguel Ramos Carrión', 'José de Espronceda', 'Juan del Encina', 'Jorge Guillén', 'Manuel Machado', 'José Santos Chocano', 'Meira Delmar', | |
'Iván Tubau', 'Tirso de Molina', 'Oliverio Girondo', 'Justo Braga', 'Consuelo Hernández', 'Belén Reyes', 'Pablo Neruda', | |
'Francisco de Aldana', 'Bertolt Brecht', 'José Antonio Labordeta', 'Emilio Prados', 'Porfirio Barba Jacob', 'Leopoldo Marechal', | |
'Aurelio González Ovies', 'Darío Jaramillo Agudelo', 'Víctor Botas', 'Leopoldo María Panero', 'Juan de Mena', 'Tomás de Iriarte', | |
'Gabriela Mistral', 'Gonzalo de Berceo', 'Antonio Machado', 'Santiago Montobbio', 'Pedro Calderón de la Barca', 'Dionisio Ridruejo', | |
'Atahualpa Yupanqui', 'Nicolás Guillén', 'Claudio Rodríguez', 'José María Blanco White', 'Gil Vicente', 'Corina Bruni', 'Gabriel Celaya', | |
'Javier Alvarado', 'Rosalía de Castro', 'Gustavo Pereira', 'Miguel de Cervantes y Saavedra', 'Jorge Riechmann', 'José Juan Tablada', | |
'Lope de Vega', 'Basilio Sánchez', 'Alfonso X el sabio', 'Rafael de León', 'Eunice Odio', 'Manuel Acuña', 'Víctor Jiménez', | |
'José Asunción Silva', 'Omar García Ramírez', 'Luis Cernuda', 'perdón', 'Blas de Otero', 'Luis Benítez', 'Ángeles Carbajal', | |
'Manuel Bretón de los Herreros', 'Baldomero Fernández Moreno', 'Luis Barahona de Soto', 'Guillermo Valencia', 'José María Hinojosa', | |
'Macedonio Fernández', 'Manuel Gutiérrez Nájera', 'Alfredo Buxán', 'Salvador Novo', 'José Ángel Valente', 'José Cadalso', | |
'Juan Ramón Mansilla', 'Ana Istarú', 'Juan Ramón Jiménez', 'Miguel Ángel Asturias', 'Ángel González', 'amistad', 'Alfredo Lavergne', | |
'Xavier Villaurrutia', 'René Chacón Linares', 'Carolina Coronado', 'Bartolomé Leonardo de Argensola', 'Marilina Rébora', | |
'Vicente Aleixandre', 'Alberto Girri', 'Juana de Ibarbourou', 'Ricardo Dávila Díaz Flores', 'Garcilaso de la Vega', | |
'Lupercio Leonardo de Argensola', 'Enrique Lihn', 'Julia de Burgos', 'Mariano Brull', 'Efraín Huerta', 'Roxana Popelka', | |
'Pelayo Fueyo', 'San Juan de la Cruz', 'Vicente García', 'Basilio Fernández', 'Paz Díez Taboada', 'cristianos', 'León Felipe', | |
'Diana Bellessi', 'Genaro Ortega Gutiérrez', 'Cristóbal de Castillejo', 'Gioconda Belli', 'Iacyr Anderson Freitas', | |
'Juan José Vélez Otero', 'Ezequiel Martínez Estrada', 'Juan de Arguijo', 'Gertrudis Gómez de Avellaneda', 'Marcos Rafael Blanco Belmonte', | |
'Julio Aumente', 'Ramón López Velarde', 'para la familia', 'Antonia Álvarez Álvarez', 'José Zorrilla', 'Juan Luis Panero', | |
'Teresa Palazzo Conti', 'Claribel Alegría', 'Francisco de Medrano', 'Antonio Colinas', 'Jordi Doce', 'Ismael Enrique Arciniegas', | |
'Josefina Plá', 'José Agustín Goytisolo', 'Blanca Andreu', 'Enrique González Martínez', 'José García Nieto', 'Ernesto Cardenal', | |
'Pedro Luis Menéndez', 'Carmen Conde Abellán', 'Salvador Rueda', 'Dulce María Loynaz', 'Odette Alonso', 'Manuel Altolaguirre', | |
'Byron Espinoza', 'Francisco Álvarez', 'Vicente Gerbasi', 'César Vallejo', 'Gloria Fuertes', 'Sor Juana Inés de la Cruz', | |
'Francisco de la Torre', 'Francisco Matos Paoli', 'Rubén Darío', 'Rafael Pombo', 'Mara Romero', 'José Albi', 'Francisco de Quevedo', | |
'Juan de Dios Peza', 'Leopoldo Panero', 'Fernando de Herrera', 'Victoriano Crémer', 'Ana Rossetti', 'Gabriel García Márquez', | |
'Teresa Domingo Català', 'Melchor de Palau', 'Miguel Rasch Isla', 'Luis Antonio de Villena', 'Mario Benedetti', 'Ramón Pérez de Ayala', | |
'Antonio Plaza Llamas', 'David Escobar Galindo', 'Mario Meléndez', 'José Gorostiza', 'Delfina Acosta', 'en español', 'Delmira Agustini', | |
'José Luis Piquero', 'Baltasar del Alcázar', 'Nimia Vicéns', 'Rafael Alberti', 'María Eugenia Caseiro', 'Nicomedes Santa Cruz', | |
'Carlos Pellicer', 'Luis de Góngora', 'Manuel Alcántara', 'Toni García Arias', 'Antonio Fernández Lera', 'José María Pemán', | |
'Dina Posada', 'Gaspar Melchor de Jovellanos', 'Alfonso Reyes', 'José María Gabriel y Galán', 'Manuel José Othón', 'Luciano Castañón', | |
'Luis Alberto de Cuenca', 'Andrés Eloy Blanco', 'Luis Antonio Chávez', 'Pedro Salinas', 'Luis Palés Matos', 'Álvaro García', | |
'Pablo de Rokha', 'Dámaso Alonso', 'Luis Álvarez Piner', 'Salvador García Ramírez', 'Roque Dalton', 'Gerardo Diego', | |
'Felipe Benítez Reyes', 'William Shakespeare', 'José Ángel Buesa', 'Miguel Florián', 'Luis Gonzaga Urbina', 'Jesús Hilario Tundidor', | |
'Amado Nervo', 'Miguel Hernández', 'Federico García Lorca', 'José Martí', 'Oscar Ferreiro', 'Pedro Miguel Lamet', 'Fray Luis de León', | |
'Julio Flórez Roa', 'León de Greiff', 'Gustavo Adolfo Bécquer', 'Carlos Edmundo de Ory', 'Miguel de Unamuno', 'Manuel del Cabral', | |
'Oscar Acosta', 'José Lezama Lima', 'Hernando de Acuña', 'Ángel García Aller', 'Salvador Díaz Mirón', 'Ricardo Molinari', | |
'Julio Herrera y Reissig', 'Francisco Luis Bernárdez', 'Fa Claes', 'Jorge Debravo', 'Francisco de Figueroa', 'Marqués de Santillana', | |
'Eugenio Florit', 'José Gautier Benítez', 'Óscar Hahn', 'Andrés Bello', 'Santa Teresa de Jesús, Sánchez de Cep', 'Juan Liscano', | |
'Jorge Teillier', 'Félix María de Samaniego', 'Nicolás Fernández de Moratín', 'Juan Boscán', 'Manuel María Flores', 'Gutierre de Cetina', | |
'Alfonsina Storni', 'José Luis Rey Cano', 'Jorge Manrique', 'Nicanor Parra'} | |
model_name = 'hackathon-pln-es/poem-gen-spanish-t5-small' | |
tokenizer = AutoTokenizer.from_pretrained(model_name) | |
model = AutoModelForSeq2SeqLM.from_pretrained(model_name) | |
# tts_es = gr.Interface.load("huggingface/facebook/tts_transformer-es-css10") | |
def make_poem(author, sentiment, words, text): | |
num_lines=5 | |
poem = text | |
prev_output = '' | |
l_words = [x.strip() for x in words.split(',')] | |
# Add empty strings to words | |
if num_lines > len(l_words): | |
diff = num_lines - len(l_words) | |
l_words += [''] * diff | |
random.shuffle(l_words) | |
for i in range(num_lines): | |
word = l_words[i] | |
if word == '': | |
input_text = f"""poema: estilo: {author} && sentimiento: {sentiment} && texto: {poem} """ | |
else: | |
input_text = f"""poema: estilo: {author} && sentimiento: {sentiment} && palabras: {word} && texto: {poem} """ | |
inputs = tokenizer(input_text, return_tensors="pt") | |
outputs = model.generate(inputs["input_ids"], | |
do_sample = True, | |
max_length = 30, | |
repetition_penalty = 20.0, | |
top_k = 50, | |
top_p = 0.92) | |
detok_outputs = [tokenizer.decode(x, skip_special_tokens=True) for x in outputs] | |
pre_output = detok_outputs[0] | |
# pre_output = pre_output.replace('.', ' ') | |
poem += '\n' + pre_output | |
# audio = tts_es(poem) | |
# return poem, audio | |
return poem | |
article = "<p style='text-align: center'>Don't miss this other cool space based in Spanish generation of poems based in sonnets: <a href='https://huggingface.co/spaces/hackathon-pln-es/sonnet-poetry-generator-spanish' target='_blank'>sonnet-poetry-generator-spanish</a></p>" | |
iface = gr.Interface( | |
fn=make_poem, | |
title='Generación de poemas', | |
description="""For the participation in the First Spanish Hackathon of NLP the team worked with two datasets. | |
- The first one was a collection of [sonnets in Spanish](https://huggingface.co/datasets/hackathon-pln-es/disco_spanish_poetry), and | |
- the second one was a collection of [poems](https://huggingface.co/datasets/hackathon-pln-es/spanish-poetry-dataset). | |
For the dataset of sonnets was trained a GPT-2 model that you can find [here](https://huggingface.co/hackathon-pln-es/gpt2-small-spanish-disco-poetry) and was created this [space](https://huggingface.co/spaces/hackathon-pln-es/sonnet-poetry-generator-spanish). | |
For the second dataset was trained a T5 model that you can find [here](https://huggingface.co/hackathon-pln-es/poem-gen-spanish-t5-small) and this is the space that was created to play with it :)""", | |
inputs= | |
[ | |
gr.inputs.Dropdown(sorted(author_set), type="value", label='Nombre del autor'), | |
gr.inputs.Radio(['positivo', 'negativo'], type="value", label='Sentimiento del texto generado'), | |
gr.inputs.Textbox(lines=1, placeholder='palabra_1, palabra_2, ..., palabra_n', label='Palabras que desea incluir'), | |
gr.inputs.Textbox(lines=4, placeholder='texto inicial', label='Texto inicial'), | |
], | |
outputs= | |
[ | |
gr.outputs.Textbox(label="Texto generado"), | |
# gr.outputs.Audio(label="Primeros segundos") | |
], | |
article= article, | |
examples= | |
[ | |
['Pablo Neruda', 'positivo', 'cielo, luna, mar', 'Todos fueron a verle pasar'] | |
]) | |
iface.launch(enable_queue=True) |