Spaces:
Sleeping
Sleeping
File size: 2,575 Bytes
616bff2 0141c28 616bff2 |
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 |
import numpy as np
import pickle
import json
from nltk.tokenize import word_tokenize
from nltk.stem import WordNetLemmatizer
import numpy as np
import nltk
import onnxruntime as rt
from sklearn.metrics.pairwise import cosine_similarity
nltk.download("punkt_tab")
nltk.download("wordnet")
def similar(a,b):
return np.linalg.matmul(a,b)/(np.linalg.norm(a)*np.linalg.norm(b))
def pred_next(text,how_many):
with open("tokenz_next_word.json") as file:
tokenizer=json.load(file)
file.close()
text=text.lower()
model=rt.InferenceSession("next_word.onnx",providers=["CPUExecutionProvider"])
for i in range(how_many):
tokens=[tokenizer[token] for token in text.split() if token in tokenizer.keys()]
length=len(tokens)
if length<=14:
paded=np.pad(tokens,(14-length,0))
else:
paded=tokens[:14]
index=np.argmax(model.run(['dense'],{"input":np.expand_dims(paded.astype(np.int32),axis=0)}))
word=list(tokenizer)[index+1]
text=text+" "+word
return text
def give_sentiment(text):
model=rt.InferenceSession('sentiment_analysis.onnx',providers=['CPUExecutionProvider'])
with open("sentiment_tokens.json") as file:
tokenizer=json.load(file)
file.close()
tokens=word_tokenize(text)
lemmatize=WordNetLemmatizer()
lemma_tokens=[lemmatize.lemmatize(word) for word in tokens]
vector=[tokenizer[word] for word in lemma_tokens if word in tokenizer.keys()]
if len(vector)<=100:
paded=np.pad(vector,(100-len(vector),0))
else:
paded=np.array(vector[:100])
vector=np.expand_dims(paded,axis=0)
try:
pred=model.run(['dense_32'],{"input":vector})
except Exception as e:
return 0
if pred[0][0][0]>0.5:
return 1
else:
return 0
def ChatWithMe(question):
with open("chatbot_tokenizer.pkl","rb") as file:
vectorize=pickle.load(file)
file.close()
sim=[]
answers=np.load("answer_bank.npy")
X=np.load("question_array.npy")
text=vectorize.transform([question])
text=text.toarray()
for ques in X:
sim.append(cosine_similarity(ques.reshape(1,-1),text))
if max(sim)<0.1:
return "I do not know about that"
else:
index=np.argmax(sim)
return answers[index]
def tell_vernelable(img):
model=rt.InferenceSession("vernelable_detect.onnx",providers=['CPUExecutionProvider'])
pred=model.run(['dense_2'],{"input":img})
if pred[0][0][0]>0.5:
return 1
else:
return 0
|