import tensorflow
from tensorflow.keras.datasets import imdb
from tensorflow import keras
import gradio as gr
import numpy as np

rnn = keras.models.load_model('model.h5')
words_per_review = 200
word_to_index = imdb.get_word_index()

# Створення функції для оцінки коментаря
def predict_comment_score(comment):
    class_names = ["Negative", "Positive"]
    words = comment.split()
    print(len(words))
    indexes = np.zeros(words_per_review).astype(int)
    indexes[words_per_review -len(words) - 1] = 1
    for i, word in enumerate(words):
      indexes[words_per_review -len(words) + i] = word_to_index.get(word, 0) + 3
    indexes = np.expand_dims(indexes, axis=0)
    predictions = rnn.predict(indexes)
    prediction = { } 
    prediction["Negative"] = float(np.round(1 - predictions[0], 3)) 
    prediction["Positive"] = float(np.round(predictions[0], 3)) 
    return prediction

demo = gr.Blocks()

# Створення інтерфейсу Gradio
with demo:
    with gr.Tab("Predict comment score"):
      image_input = gr.TextArea(label="Enter a comment")
      output = gr.Label(label="Comment score")
      image_button = gr.Button("Predict")
      image_button.click(predict_comment_score, inputs=image_input, outputs=output)

demo.launch()