Spaces:
Sleeping
Sleeping
File size: 4,368 Bytes
e101f24 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 |
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
print(tf.__version__)
#Load tokenizer
fp = "resources/tokenizer.pkl"
with open(fp,mode="rb") as f:
tokenizer = pickle.load(f)
#Load LSTM
fp = 'resources/lstm_model.h5'
LSTM_model = tf.keras.models.load_model(fp, compile=True)
#Load GRU
fp = 'resources/gru_model.h5'
GRU_model = load_model(fp)
def tokenizer_pad(tokenizer,comment_text,max_length=200):
# converting text into integer sequences
comment_text = [comment_text]
tokenized_text = tokenizer.texts_to_sequences(comment_text)
# padding based on max length
padded_sequences = pad_sequences(sequences=tokenized_text,maxlen=max_length,padding="post",truncating="post")
return padded_sequences
def LSTM_predict(x):
x = tokenizer_pad(tokenizer=tokenizer,comment_text=x)
#print(x)
# processing before mapping
# predicting using best model
pred_proba = LSTM_model.predict(x)[0]
# making predictions readable
pred_proba = [round(i,2) for i in pred_proba]
print(pred_proba)
return pred_proba
def GRU_predict(x):
x = tokenizer_pad(tokenizer=tokenizer,comment_text=x)
print(x)
# processing before mapping
# predicting using best model
pred_proba = GRU_model.predict(x)[0]
# making predictions readable
pred_proba = [round(i,2) for i in pred_proba]
print(pred_proba)
return pred_proba
def judge(x):
label = ['độc hại', 'cực kì độc hại', 'tục tĩu', 'đe dọa', 'xúc phạm', 'thù ghét cá nhân']
result = []
judge_result = []
lstm_pred = LSTM_predict(x)
gru_pred = GRU_predict(x)
return_result = 'Result'
result_lstm = np.round(lstm_pred, 2)
result_gru = np.round(gru_pred, 2)
sensitive_result = max(max(result_lstm),max(result_gru))
print(sensitive_result)
return_result += '\nMô hình LSTM\n'
return_result += f"{result_lstm}\n"
for i in range(6):
if result_lstm[i]>=0 and result_lstm[i]<0.1:
return_result += "Tính {} là không có\n".format(label[i])
if result_lstm[i]>=0.1 and result_lstm[i]<0.5:
return_result += "Tính {} ở mức nhận thấy được, từ ngữ có thể chưa phù hợp\n".format(label[i])
if result_lstm[i]>=0.5 and result_lstm[i]<0.8:
return_result += "Tính {} ở mức rõ ràng, cần xem xét\n".format(label[i])
if result_lstm[i]>=0.8:
return_result += "Tính {} ở mức nghiêm trọng, yêu cầu chấn chỉnh\n".format(label[i])
return_result += '\nMô hình GRU\n'
return_result += f"{result_gru}\n"
for i in range(6):
if result_gru[i]>=0 and result_gru[i]<0.1:
return_result += "Tính {} là không có\n".format(label[i])
if result_gru[i]>=0.1 and result_gru[i]<0.5:
return_result += "Tính {} ở mức nhận thấy được, từ ngữ có thể chưa phù hợp\n".format(label[i])
if result_gru[i]>=0.5 and result_gru[i]<0.8:
return_result += "Tính {} ở mức rõ ràng, cần xem xét\n".format(label[i])
if result_gru[i]>=0.8:
return_result += "Tính {} ở mức nghiêm trọng, yêu cầu chấn chỉnh\n".format(label[i])
return_result += "\nTổng quan:\n"
if sensitive_result>=0 and sensitive_result<0.1:
return_result += "Ngôn ngữ phù hợp mọi lứa tuổi.\n"
if sensitive_result>=0.1 and sensitive_result<0.5:
return_result += "Ngôn ngữ có thể còn chứa từ ngữ chưa phù hợp.\n"
if sensitive_result>=0.5 and sensitive_result<0.8:
return_result += "Ngôn ngữ không phù hợp, cần xem xét lại.\n"
if sensitive_result>=0.8:
return_result += "Ngôn ngữ vi phạm tiêu chuẩn cộng đồng nghiêm trọng, yêu cầu chấn chỉnh.\n"
return return_result
if __name__ == "__main__":
# print("Loading")
# while(True):
# string = input("\nMời nhập văn bản: ")
# os.system('cls')
# print(f"Văn bản đã nhập: {string}")
# judge(string)
interface = gr.Interface(fn=judge,
inputs=gr.Textbox(lines=2, placeholder='Please write something', label="Input Text"),
outputs='text')
interface.launch() |