Spaces:
Sleeping
Sleeping
| # import gradio as gr | |
| import tensorflow as tf | |
| import numpy as np | |
| from keras.models import load_model | |
| from tensorflow.keras.preprocessing.text import Tokenizer | |
| import pickle | |
| from tensorflow.keras.preprocessing.sequence import pad_sequences | |
| import os | |
| from pathlib import Path | |
| import pandas as pd | |
| import plotly.express as px | |
| import keras | |
| import unicodedata as ud | |
| from underthesea import word_tokenize | |
| from phoBERT import BERT_predict | |
| import time | |
| LSTM_model = tf.keras.models.load_model('lstm_model.tf') | |
| GRU_model = tf.keras.models.load_model('gru_model.tf') | |
| def LSTM_predict(x): | |
| t1 = time.time() | |
| pred_proba = LSTM_model.predict([x])[0] | |
| t2 = time.time() | |
| print(f'LSTM: {t2-t1}s') | |
| pred_proba = [round(i,2) for i in pred_proba] | |
| return pred_proba | |
| def GRU_predict(x): | |
| t1 = time.time() | |
| pred_proba = GRU_model.predict([x])[0] | |
| t2 = time.time() | |
| print(f'GRU: {t2-t1}s') | |
| pred_proba = [round(i,2) for i in pred_proba] | |
| return pred_proba | |
| def tokenize(x): | |
| x = ud.normalize('NFKC', x) | |
| x = word_tokenize(x, format="text") | |
| return x | |
| def judge(x): | |
| result = [] | |
| x = tokenize(x) | |
| lstm_pred = LSTM_predict(x) | |
| gru_pred = GRU_predict(x) | |
| result_lstm = np.round(lstm_pred, 2) | |
| result_gru = np.round(gru_pred, 2) | |
| for i in range(6): | |
| result.append((result_lstm[i]+result_gru[i])/2) | |
| return (result) | |
| def judgePlus(x): | |
| result = [] | |
| x = tokenize(x) | |
| lstm_pred = LSTM_predict(x) | |
| gru_pred = GRU_predict(x) | |
| try: | |
| bert_pred = BERT_predict(x) | |
| except: | |
| bert_pred = np.average([lstm_pred, gru_pred], axis=0) | |
| result_lstm = np.round(lstm_pred, 2) | |
| result_gru = np.round(gru_pred, 2) | |
| result_bert = np.round(bert_pred, 2) | |
| if((result_lstm[0]+result_gru[0])<(result_bert[0]*2)): | |
| for i in range(6): | |
| result.append((result_bert[i])/1) | |
| else: | |
| for i in range(6): | |
| result.append((result_lstm[i]+result_gru[i])/2) | |
| return (result) | |
| def judgeBert(x): | |
| result = [] | |
| x = tokenize(x) | |
| try: | |
| bert_pred = BERT_predict(x) | |
| except: | |
| bert_pred = np.zeros(6, dtype=float) | |
| result_bert = np.round(bert_pred, 2) | |
| for i in range(6): | |
| result.append((result_bert[i])/1) | |
| return (result) | |