Spaces:
Runtime error
Runtime error
| import streamlit as st | |
| import numpy as np | |
| import numpy.linalg as la | |
| import pickle | |
| #import streamlit_analytics | |
| # Compute Cosine Similarity | |
| def cosine_similarity(x,y): | |
| x_arr = np.array(x) | |
| y_arr = np.array(y) | |
| return np.dot(x_arr,y_arr)/(la.norm(x_arr)*la.norm(y_arr)) | |
| # Function to Load Glove Embeddings | |
| def load_glove_embeddings(file): | |
| print("Loading Glove Model") | |
| glove_model = {} | |
| with open(file, 'r', encoding='utf-8') as f: | |
| for line in f: | |
| values = line.split() | |
| word = values[0] | |
| vector = np.asarray(values[1:], dtype='float32') | |
| glove_model[word] = vector | |
| print("Loaded {} words".format(len(glove_model))) | |
| return glove_model | |
| # Get Averaged Glove Embedding of a sentence | |
| def averaged_glove_embeddings(sentence, embeddings_dict): | |
| words = sentence.split(" ") | |
| glove_embedding = np.zeros(50) | |
| count_words = 0 | |
| for word in words: | |
| if word in embeddings_dict: | |
| glove_embedding += embeddings_dict[word] | |
| count_words += 1 | |
| return glove_embedding/max(count_words,1) | |
| # Gold standard words to search from | |
| gold_words = ["flower","mountain","tree","car","building"] | |
| # Text Search | |
| #with streamlit_analytics.track(): | |
| st.title("Search Based Retrieval Demo") | |
| st.subheader("Pass in an input word or even a sentence (e.g. jasmine or mount adams)") | |
| text_search = st.text_input("", value="") | |
| # Load glove embeddings | |
| glove_embeddings = load_glove_embeddings('glove.6B.50d.txt') | |
| if text_search: | |
| input_embedding = averaged_glove_embeddings(text_search, glove_embeddings) | |
| cosine_sim = {} | |
| for index in range(len(gold_words)): | |
| cosine_sim[index] = cosine_similarity(input_embedding, glove_embeddings[gold_words[index]]) | |
| print(cosine_sim) | |
| sorted_cosine_sim = sorted(cosine_sim.items(), key = lambda x: x[1], reverse=True) | |
| st.write("(My search uses glove embeddings)") | |
| st.write("Closest word I have between flower, mountain, tree, car and building for your input is: ") | |
| word = gold_words[sorted_cosine_sim[0][0]] | |
| if word == "flower": | |
| st.subheader(word) | |
| st.image('images/flower.png', width=200) | |
| elif word == "mountain": | |
| st.subheader(word) | |
| st.image('images/mountain.png', width=200) | |
| elif word == "tree": | |
| st.subheader(word) | |
| st.image('images/tree.png', width=200) | |
| elif word == "car": | |
| st.subheader(word) | |
| st.image('images/car.png', width=200) | |
| else: | |
| st.subheader(word) | |
| st.image('images/building.png', width=200) | |
| st.write("") | |