from flask import Flask, render_template, request, jsonify, Response import numpy as np from tensorflow.keras.preprocessing.text import Tokenizer from tensorflow.keras.preprocessing.sequence import pad_sequences from tensorflow.keras.models import load_model import json import tensorflow as tf np.random.seed(42) tf.random.set_seed(42) lstm = load_model("model/model_lstm.h5") bilstm = load_model("model/model_bilstm.h5") gru = load_model("model/model_gru.h5") app = Flask(__name__) @app.route('/') def index(): return render_template('index.html') @app.route('/about/') def about(): return render_template('about.html') @app.route('/test') def ml(): return render_template('test.html') #option 1 @app.route('/classify', methods=['GET', 'POST']) def classify(): photo_x = "" photo_question_mark = "" photo_check = "" try: text_ = request.form.get('text') file = "model/model_classification.h5" loaded_model = load_model(file) print(1) except: return render_template('classify.html', prediction_text="None", text="None", prediction_photo=photo_question_mark) try: new_data = [text_] tokenizer = Tokenizer(num_words=100, oov_token = "") tokenizer.fit_on_texts(new_data) new_sequences = tokenizer.texts_to_sequences(new_data) new_padded = pad_sequences(new_sequences, maxlen=100, padding="post", truncating="post") predictions = loaded_model.predict(new_padded) predict_labels = [1 if values>0.5 else 0 for values in predictions] res = "Positive" if predict_labels[0]==1 else "Negative" icon = photo_check if predict_labels[0]==1 else photo_x return render_template('classify.html', prediction_text=res, text=text_, prediction_photo=icon) except ValueError: return render_template('classify.html', prediction_text='INVALID INPUT', text=text_, prediction_photo=photo_question_mark) except: return render_template('classify.html', prediction_text="None", text="None", prediction_photo=photo_question_mark) @app.route('/generate', methods=['GET', 'POST']) def generate(): text_ = request.form.get('input') if text_ == None: return render_template('generate.html' ,res_lstm="",res_bilstm="",res_gru="") try: txt_lstm = predict(text_,5,lstm) txt_bilstm = predict(text_,5,bilstm) txt_gru = predict(text_,5,gru) return render_template('generate.html' ,res_lstm=txt_lstm,res_bilstm=txt_bilstm,res_gru=txt_gru) except : return render_template('generate.html' ,res_lstm="Something went wrong",res_bilstm="Something went wrong",res_gru="Something went wrong") def predict(seed_text,next_words,model): #return "Detect change sleep deformed which worse it time all house in philippines" with open("static/dictionary.json", "r") as file: loaded_dictionary = json.load(file) with open('static/tokenizer.json', 'r') as json_file: tokenizer_json = json_file.read() tokenizer = tf.keras.preprocessing.text.tokenizer_from_json(tokenizer_json) for _ in range(next_words): tokenizer.word_index = loaded_dictionary token_list = tokenizer.texts_to_sequences([seed_text])[0] token_list = pad_sequences([token_list], maxlen=51-1, padding='pre') predicted = np.argmax(model.predict(token_list), axis=-1) output_word = "" for word, index in tokenizer.word_index.items(): if index == predicted: output_word = word seed_text += " " + output_word return seed_text if __name__ == '__main__': app.run(debug=True)