From 2995b6ebdcdd8c4a1f3d77e6e0f663e66c13d008 Mon Sep 17 00:00:00 2001 From: snbenge Date: Sun, 19 Apr 2020 23:32:10 -0400 Subject: [PATCH] added ability to detect buildings from one location to another from chatbot including BBB, EECS, Pierpont, the Dude, and FXB --- src/semantic/buildingIntents.json | 28 +++++++++ src/semantic/building_words.pkl | Bin 0 -> 275 bytes src/semantic/building_words.txt | 14 +++++ src/semantic/buildings.pkl | Bin 0 -> 116 bytes src/semantic/buildings.txt | 5 ++ src/semantic/buildings_model.h5 | Bin 0 -> 122456 bytes src/semantic/gui_chatbot.py | 42 ++++++++++--- src/semantic/train_buildings.py | 96 ++++++++++++++++++++++++++++++ 8 files changed, 176 insertions(+), 9 deletions(-) create mode 100644 src/semantic/buildingIntents.json create mode 100644 src/semantic/building_words.pkl create mode 100644 src/semantic/building_words.txt create mode 100644 src/semantic/buildings.pkl create mode 100644 src/semantic/buildings.txt create mode 100644 src/semantic/buildings_model.h5 create mode 100644 src/semantic/train_buildings.py diff --git a/src/semantic/buildingIntents.json b/src/semantic/buildingIntents.json new file mode 100644 index 0000000..25284fc --- /dev/null +++ b/src/semantic/buildingIntents.json @@ -0,0 +1,28 @@ +{"intents": [ + {"tag": "Bob and Betty Beyster", + "patterns": ["BBB", "CSE", "CS","Computer Science", "Bob", "Bob and Betty Beyster", "Betty"], + "responses": ["Bob and Betty Beyster"], + "context": [""] + }, + {"tag": "Duderstadt", + "patterns": ["Dude", "the Dude", "Duderstadt", "Mujos", "Library", "North Campus Library"], + "responses": ["Duderstadt"], + "context": [""] + }, + {"tag": "FXB", + "patterns": ["FXB", "Francois-Xavier Bagnoud", "Aerospace", "Aerospace Engineering", "planes"], + "responses": ["FXB"], + "context": [""] + }, + {"tag": "Electrical and Computer Engineering", + "patterns": ["Electrical and Computer Engineering","Electrical", "Electrical Engineering", "Computer Engineering", "Computer", "EECS", "ECE"], + "responses": ["Electrical and Computer Engineering"], + "context": [""] + }, + {"tag": "Pierpont Commons", + "patterns": ["Pierpont", "Pierpont Commons", "Commons", "Panda Express"], + "responses": ["Pierpont Commons"], + "context": [""] + } +] +} diff --git a/src/semantic/building_words.pkl b/src/semantic/building_words.pkl new file mode 100644 index 0000000000000000000000000000000000000000..0a090e3ef53e75fb4ece48be07d5074cbdbae374 GIT binary patch literal 275 zcmXAk!EVAZ5JZb04TS^0(M$VB9M;YfTqV2K+D75V2l(jzZzriQvl@+No?nOG0u}X6v+{sYRK2=~H@`-6EW(^auoGrWO_C=anb`RpsXA J6;Dak0|3d%DK-EA literal 0 HcmV?d00001 diff --git a/src/semantic/buildings.txt b/src/semantic/buildings.txt new file mode 100644 index 0000000..8d72043 --- /dev/null +++ b/src/semantic/buildings.txt @@ -0,0 +1,5 @@ +Duderstadt +Electrical and Computer Engineering +FXB +Pierpont Commons +Bob and Betty Beyster diff --git a/src/semantic/buildings_model.h5 b/src/semantic/buildings_model.h5 new file mode 100644 index 0000000000000000000000000000000000000000..3cfbdd26322d4c3af2c1950bcda53b7da89c78f5 GIT binary patch literal 122456 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 z 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�E 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

^MeUy6Z*d{&UCb%a*dLeJXfT9b$hzn}rT~ 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 VHjl27ecJEDK5K>qzyFBg{{T%qvY7w? literal 0 HcmV?d00001 diff --git a/src/semantic/gui_chatbot.py b/src/semantic/gui_chatbot.py index 17def45..c4d5889 100644 --- a/src/semantic/gui_chatbot.py +++ b/src/semantic/gui_chatbot.py @@ -9,11 +9,15 @@ import spacy from keras.models import load_model model = load_model('chatbot_model.h5') +modelBuilding = load_model('buildings_model.h5') import json import random intents = json.loads(open('intents.json').read()) words = pickle.load(open('words.pkl','rb')) classes = pickle.load(open('classes.pkl','rb')) +buildingsIntents = json.loads(open('buildingIntents.json').read()) +building_words = pickle.load(open('building_words.pkl','rb')) +buildings = pickle.load(open('buildings.pkl','rb')) def clean_up_sentence(sentence): # tokenize the pattern - splitting words into array @@ -24,13 +28,13 @@ def clean_up_sentence(sentence): # return bag of words array: 0 or 1 for words that exist in sentence -def bag_of_words(sentence, words, show_details=True): +def bag_of_words(sentence, wording, show_details=True): # tokenizing patterns sentence_words = clean_up_sentence(sentence) # bag of words - vocabulary matrix - bag = [0]*len(words) + bag = [0]*len(wording) for s in sentence_words: - for i,word in enumerate(words): + for i,word in enumerate(wording): if word == s: # assign 1 if current word is in the vocabulary position bag[i] = 1 @@ -51,18 +55,29 @@ def predict_class(sentence): return_list.append({"intent": classes[r[0]], "probability": str(r[1])}) return return_list +def predict_building(currbuilding): + # filter below threshold predictions + p = bag_of_words(currbuilding, building_words,show_details=False) + res = modelBuilding.predict(np.array([p]))[0] + ERROR_THRESHOLD = 0.5 + results = [[i,r] for i,r in enumerate(res) if r>ERROR_THRESHOLD] + # sorting strength probability + results.sort(key=lambda x: x[1], reverse=True) + return_list = [] + for r in results: + return_list.append({"buildingIntents": buildings[r[0]], "probability": str(r[1])}) + return return_list + def getResponse(ints, intents_json): tag = ints[0]['intent'] list_of_intents = intents_json['intents'] - print("ints") - print(ints) for i in list_of_intents: if(i['tag']== tag): result = random.choice(i['responses']) break return result -def getInfo(sentence): +def getBuildingInfo(sentence): doc = nlp(sentence) start = 0 end = 0 @@ -101,9 +116,18 @@ def send(): ints = predict_class(msg) if ints[0]['intent'] == "navigation": - building = getInfo(msgClean) - #TODO: Check if buildings are available - res = "Now navigating to " + building[1] + " from " + building[0] + currbuilding = getBuildingInfo(msgClean) + if currbuilding[0] == 'random location': + currbuilding[0] = buildings[random.randint(0, len(buildings)-1)] + while currbuilding[0] == currbuilding[1]: + currbuilding[1] = buildings[random.randint(0, len(buildings)-1)] + if currbuilding[1] == 'random location': + currbuilding[1] = buildings[random.randint(0, len(buildings)-1)] + while currbuilding[0] == currbuilding[1]: + currbuilding[1] = buildings[random.randint(0, len(buildings)-1)] + fromBuild = predict_building(currbuilding[0]) + toBuild = predict_building(currbuilding[1]) + res = "Now navigating to " + toBuild[0]['buildingIntents'] + " from " + fromBuild[0]['buildingIntents'] #TODO: START CONVERSION TO GPS COORDINATES elif ints[0]['intent'] == "exit": res = getResponse(ints, intents) diff --git a/src/semantic/train_buildings.py b/src/semantic/train_buildings.py new file mode 100644 index 0000000..edcc2fc --- /dev/null +++ b/src/semantic/train_buildings.py @@ -0,0 +1,96 @@ +import numpy as np +from keras.models import Sequential +from keras.layers import Dense, Activation, Dropout +from keras.optimizers import SGD +import random + +import nltk +from nltk.stem import WordNetLemmatizer +lemmatizer = WordNetLemmatizer() +import json +import pickle + +building_words=[] +buildings = [] +documents = [] +ignore_letters = ['!', '?', ',', '.'] +buildingIntents_file = open('buildingIntents.json').read() +buildingIntents = json.loads(buildingIntents_file) + +# download nltk resources +nltk.download('punkt') +nltk.download('wordnet') + +for intent in buildingIntents['intents']: + for pattern in intent['patterns']: + #tokenize each word + word = nltk.word_tokenize(pattern) + building_words.extend(word) + #add documents in the corpus + documents.append((word, intent['tag'])) + # add to our buildings list + if intent['tag'] not in buildings: + buildings.append(intent['tag']) +print(documents) +# lemmaztize and lower each word and remove duplicates +building_words = [lemmatizer.lemmatize(w.lower()) for w in building_words if w not in ignore_letters] +building_words = sorted(list(set(building_words))) +# sort buildings +buildings = sorted(list(set(buildings))) +# documents = combination between patterns and buildingIntents +print (len(documents), "documents") +# buildings = buildingIntents +print (len(buildings), "buildings", buildings) +# building_words = all building_words, vocabulary +print (len(building_words), "unique lemmatized building_words", building_words) + +pickle.dump(building_words,open('building_words.pkl','wb')) +pickle.dump(buildings,open('buildings.pkl','wb')) + +# create our training data +training = [] +# create an empty array for our output +output_empty = [0] * len(buildings) +# training set, bag of building_words for each sentence +for doc in documents: + # initialize our bag of building_words + bag = [] + # list of tokenized building_words for the pattern + pattern_building_words = doc[0] + # lemmatize each word - create base word, in attempt to represent related building_words + pattern_building_words = [lemmatizer.lemmatize(word.lower()) for word in pattern_building_words] + # create our bag of building_words array with 1, if word match found in current pattern + for word in building_words: + bag.append(1) if word in pattern_building_words else bag.append(0) + + # output is a '0' for each tag and '1' for current tag (for each pattern) + output_row = list(output_empty) + output_row[buildings.index(doc[1])] = 1 + + training.append([bag, output_row]) +# shuffle our features and turn into np.array +random.shuffle(training) +training = np.array(training) +# create train and test lists. X - patterns, Y - buildingIntents +train_x = list(training[:,0]) +train_y = list(training[:,1]) +print("Buildings Training data created") + +# Create model - 3 layers. First layer 128 neurons, second layer 64 neurons and 3rd output layer contains number of neurons +# equal to number of buildingIntents to predict output intent with softmax +model = Sequential() +model.add(Dense(128, input_shape=(len(train_x[0]),), activation='relu')) +model.add(Dropout(0.5)) +model.add(Dense(64, activation='relu')) +model.add(Dropout(0.5)) +model.add(Dense(len(train_y[0]), activation='softmax')) + +# Compile model. Stochastic gradient descent with Nesterov accelerated gradient gives good results for this model +sgd = SGD(lr=0.01, decay=1e-6, momentum=0.9, nesterov=True) +model.compile(loss='categorical_crossentropy', optimizer=sgd, metrics=['accuracy']) + +#fitting and saving the model +hist = model.fit(np.array(train_x), np.array(train_y), epochs=200, batch_size=5, verbose=1) +model.save('buildings_model.h5', hist) + +print("building model created")