-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMyModel.py
More file actions
53 lines (41 loc) · 1.55 KB
/
MyModel.py
File metadata and controls
53 lines (41 loc) · 1.55 KB
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
import pickle
import numpy as np
import spacy
import nltk
import json
from nltk.stem import PorterStemmer
stemmer = PorterStemmer()
from tensorflow import keras
import re
class MyModel:
def __init__(self):
with open('BModels/stem_model.pickle', 'rb') as file:
self.model = pickle.load(file)
def loadEncoder(self):
with open('BModels/stem_label_encoder.pickle', 'rb') as file:
self.encoder = pickle.load(file)
def loadToken(self):
with open('BModels/stem_tokenizer.pickle', 'rb') as file:
self.tokenizer = pickle.load(file)
def preprocess_text(self , text):
print('from pre ' ,text)
sequence = self.tokenizer.texts_to_sequences([text])
sequence = keras.preprocessing.sequence.pad_sequences(sequence, truncating='post',maxlen=18)
return sequence
def load_dataset(self):
with open('Datasets/intents.json', 'rb') as file:
data = file.read()
self.data = json.loads(data)
def predict(self,text):
self.loadEncoder()
self.loadToken()
self.load_dataset()
p_text = self.preprocess_text(text)
prediction = self.model.predict(p_text)
predicted_label = np.argmax(prediction)
tag = self.encoder.inverse_transform([predicted_label])[0]
responce=""
for i in self.data['intents']:
if i['tag'] == tag:
responce = np.random.choice(i['responses'])
return responce