|
|
|
import gradio as gr |
|
import json |
|
import numpy as np |
|
import tensorflow as tf |
|
from tensorflow.keras.preprocessing.text import Tokenizer |
|
from tensorflow.keras.preprocessing.sequence import pad_sequences |
|
|
|
|
|
vocab_size = 103 |
|
max_seq_len = 18 |
|
model = tf.keras.Sequential([ |
|
tf.keras.layers.Embedding(vocab_size, 120, input_length=max_seq_len-1), |
|
tf.keras.layers.Bidirectional(tf.keras.layers.LSTM(120)), |
|
tf.keras.layers.Dense(vocab_size, activation='softmax') |
|
]) |
|
model.load_weights("model_weight/") |
|
word_token = json.load("word_token.json") |
|
|
|
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[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() |
|
|