Spaces:
Sleeping
Sleeping
| # -*- coding: utf-8 -*- | |
| """app.ipynb | |
| Automatically generated by Colab. | |
| Original file is located at | |
| https://colab.research.google.com/drive/1WlcluswqcXF3-jlf1RYLOiRIVzgR1xge | |
| """ | |
| import numpy as np | |
| import gradio as gr | |
| from keras.models import load_model | |
| # Load trained model | |
| model = load_model("pp.h5") | |
| # Characters used during training (exact set used in your poem.py) | |
| chars = sorted(list(set("roses are red,\nviolets are blue,\nsugar is sweet,\nand so are you."))) | |
| char_to_idx = {c: i for i, c in enumerate(chars)} | |
| idx_to_char = {i: c for i, c in enumerate(chars)} | |
| vocab_size = len(chars) | |
| seq_length = 40 # Same as used in training | |
| def clean_seed(seed): | |
| """Remove unsupported characters from the seed""" | |
| return ''.join([c for c in seed.lower() if c in char_to_idx]) | |
| def generate_text(seed_text, length=200): | |
| seed_text = clean_seed(seed_text) | |
| # Pad if too short | |
| if len(seed_text) < seq_length: | |
| seed_text = seed_text.rjust(seq_length) | |
| generated = seed_text[:seq_length] | |
| for _ in range(length): | |
| input_seq = [char_to_idx.get(c, 0) for c in generated[-seq_length:]] | |
| input_seq = np.array(input_seq).reshape(1, seq_length) | |
| preds = model.predict(input_seq, verbose=0)[0] | |
| next_index = np.argmax(preds) | |
| next_char = idx_to_char[next_index] | |
| generated += next_char | |
| return generated | |
| # Gradio UI | |
| iface = gr.Interface( | |
| fn=generate_text, | |
| inputs=[ | |
| gr.Textbox(label="Enter seed text", placeholder="roses are red"), | |
| gr.Slider(minimum=50, maximum=500, value=200, step=10, label="Length of generated text") | |
| ], | |
| outputs=gr.Textbox(label="Generated Output"), | |
| title="Poem Generator", | |
| description="Generate poem-style text based on a seed input. Only characters from your training data are used." | |
| ) | |
| if __name__ == "__main__": | |
| iface.launch() |