Spaces:
Build error
Build error
| from keras.models import load_model | |
| from keras.preprocessing.sequence import pad_sequences | |
| import gradio as gr | |
| import numpy as np | |
| import sys | |
| # load the model from disk | |
| model = load_model("model_pretrain.h5") | |
| char_to_int = {' ': 0, | |
| 'a': 1, | |
| 'b': 2, | |
| 'c': 3, | |
| 'd': 4, | |
| 'e': 5, | |
| 'f': 6, | |
| 'g': 7, | |
| 'h': 8, | |
| 'i': 9, | |
| 'j': 10, | |
| 'k': 11, | |
| 'l': 12, | |
| 'm': 13, | |
| 'n': 14, | |
| 'o': 15, | |
| 'p': 16, | |
| 'q': 17, | |
| 'r': 18, | |
| 's': 19, | |
| 't': 20, | |
| 'u': 21, | |
| 'v': 22, | |
| 'w': 23, | |
| 'x': 24, | |
| 'y': 25, | |
| 'z': 26} | |
| int_to_char = dict((i, c) for c, i in char_to_int.items()) | |
| def get_sequence_from_encoding(sequence_encoded, ind_to_word): | |
| in_text = '' | |
| for index in sequence_encoded: | |
| if index in ind_to_word: | |
| word = ind_to_word[index] | |
| else: | |
| word = '' | |
| in_text += '' + word | |
| return in_text | |
| def get_encoding_from_sequence(sequence, word_to_ind): | |
| out_encode = [] | |
| for word in list(sequence.lower()): | |
| if word in word_to_ind: | |
| index = word_to_ind[word] | |
| else: | |
| index = 0 | |
| out_encode.append(index) | |
| return out_encode | |
| def generate_text(start_text,text_length=100): | |
| encoding = get_encoding_from_sequence(start_text.lower(),char_to_int) | |
| decoding = get_sequence_from_encoding(encoding,int_to_char) | |
| print("Input sequence: ", start_text) | |
| print("Start generating the paragraph: \n") | |
| line_print = '' | |
| new_sequence = start_text | |
| sys.stdout.write(start_text) | |
| for repeat in range(text_length): | |
| test_data = np.reshape(encoding, (1, len(encoding))) | |
| maxlen = 20 # specify how long the sequences should be. This cuts sequences that exceed that number. | |
| test_data_pad = pad_sequences(test_data, padding='pre', maxlen=maxlen) | |
| prediction = model.predict(test_data_pad, verbose=0) | |
| index = np.argmax(prediction) | |
| result = int_to_char[index] | |
| seq_in = [int_to_char[value] for value in encoding] | |
| if len(line_print) > 70 and result == ' ': | |
| sys.stdout.write("\n") | |
| line_print = '' | |
| sys.stdout.write(result) | |
| line_print = line_print + result | |
| new_sequence = new_sequence + result | |
| encoding.append(index) | |
| encoding = encoding[1:len(encoding)] | |
| return new_sequence | |
| ### configure inputs/outputs | |
| set_input = gr.Textbox(label = 'Starting words') | |
| set_len = gr.Slider(1, 1000, step=5, label = 'Text Length') | |
| set_output = gr.Textbox(label = 'Generated sentences') | |
| ### configure gradio, detailed can be found at https://www.gradio.app/docs/#i_slider | |
| interface = gr.Interface(fn=generate_text, | |
| inputs=[set_input,set_len], | |
| outputs=set_output, | |
| title="CSCI4750/5750 Demo 8: Web Application for Text Generation using RNN", | |
| description= "Click examples below for a quick demo", | |
| theme = 'huggingface' | |
| ) | |
| interface.launch(debug=True) | |