| |
| """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 |
|
|
| |
| model = load_model("pp.h5") |
|
|
| |
| 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 |
|
|
| 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) |
|
|
| |
| 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 |
|
|
| |
| 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() |