|
|
|
import gradio as gr |
|
import json |
|
import pickle |
|
import numpy as np |
|
import tensorflow as tf |
|
from tensorflow.keras.preprocessing.text import Tokenizer |
|
from tensorflow.keras.preprocessing.sequence import pad_sequences |
|
|
|
|
|
max_seq_len = 18 |
|
model = tf.keras.models.load_model('poembot_weight.h5') |
|
|
|
with open('tokenizer.pickle', 'rb') as handle: |
|
tokenizer = pickle.load(handle) |
|
|
|
|
|
with open("word_token.json") as wt: |
|
word_token = json.load(wt) |
|
|
|
def text_generator(seed_text,n): |
|
|
|
for _ in range(n): |
|
token_list = tokenizer.texts_to_sequences([seed_text])[0] |
|
token_list = pad_sequences([token_list], maxlen=max_seq_len-1, padding='pre') |
|
predicted = np.argmax(model.predict(token_list), axis=-1) |
|
output_word = "" |
|
output_word = word_token.get(str(predicted[0])) |
|
if "0" in output_word[-1]: |
|
output_word = output_word[:-1] |
|
seed_text += " " + output_word +"." |
|
break |
|
seed_text += " " + output_word |
|
return seed_text |
|
iface = gr.Interface( |
|
fn=text_generator, |
|
inputs=["text","slider"], |
|
outputs="text", |
|
title="Poem Bot", |
|
live=False |
|
) |
|
iface.launch(debug=True) |
|
|