HelBot / app.py
Alien-Y's picture
Update app.py
bd1faea
Raw History Blame Contribute Delete
1.35 kB
import json
import random
import pickle
import numpy as np
import streamlit as st
from tensorflow import keras
from sklearn.preprocessing import LabelEncoder
# load dataset
with open("intents.json", encoding="utf8") as file:
data = json.load(file)
# load tokenizer object
with open('tokenizer.pickle', 'rb') as handle:
tokenizer = pickle.load(handle)
# load label encoder object
with open('label_encoder.pickle', 'rb') as enc:
lbl_encoder = pickle.load(enc)
# load pretrained model
model = keras.models.load_model('model')
# parameters
max_len = 20
question = st.text_area('.... HelBot اسأل')
if question == '':
st.write('')
else:
result = model.predict(keras.preprocessing.sequence.pad_sequences(tokenizer.texts_to_sequences([question]),
truncating='post', maxlen=max_len))
idk = ['عذراً، لا يمكنني الإجابة عن السؤال المطروح', 'عذراً، لم أفهم سؤالك']
if result[0][np.argmax(result)] < 0.65: # if perplexity is high
st.write(np.random.choice(idk))
else:
tag = lbl_encoder.inverse_transform([np.argmax(result)])
for i in data['intents']:
if i['tag'] == tag:
out = np.random.choice(i['responses'])
st.write(out)