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