Download app.py from Alien-Y/HelBot: direct link, hf CLI and curl.
- Browser
- Download file 1.35 kB
-
https://huggingface.co/spaces/Alien-Y/HelBot/resolve/main/app.py
- Command line
-
hf download hf://spaces/Alien-Y/HelBot/app.py
-
curl -L -o app.py https://huggingface.co/spaces/Alien-Y/HelBot/resolve/main/app.py
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) |