Poem_gen / app.py
Hari022's picture
Rename app (1).py to app.py
3414e3c verified
# -*- 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()