Summit_app_demo / app.py
PBusienei's picture
Update app.py
dd3c9f3
raw
history blame
1.54 kB
import streamlit as st
import time
import pandas as pd
import numpy as np
#pip install -U sentence-transformers
from sentence_transformers import SentenceTransformer, util
# Load document embeddings
doc_emb = np.loadtxt("abstract-embed.txt", dtype=float)
doc_emb
# Load data
df = pd.read_csv("sessions.csv", usecols=['Unique ID', 'Name', 'Description', 'Activity Code', 'Start Time', 'End Time', 'Location Name'])
df.head()
# Get attributes from dataframe
docs = list(df["Description"])
titles = list(df["Name"])
start_times = list(df["Start Time"])
end_times = list(df["End Time"])
locations = list(df["Location Name"])
# Query
query = input("Enter your query: ")
#Encode query and documents
query_emb = model.encode(query).astype(float)
#Compute dot score between query and all document embeddings
scores = util.dot_score(query_emb, doc_emb.astype(float))[0].cpu().tolist()
#Combine docs & scores with other attributes
doc_score_pairs = list(zip(docs, scores, titles, start_times, end_times, locations))
# top_k results to return
top_k=3
print(" Your top", top_k, "most similar sessions in the Summit:")
#Sort by decreasing score
doc_score_pairs = sorted(doc_score_pairs, key=lambda x: x[1], reverse=True)
#Output presentation recommendations
for doc, score, title, start_time, end_time, location in doc_score_pairs[:top_k]:
print("Score: %f" %score)
print("Title: %s" %title)
print("Abstract: %s" %doc)
print("Location: %s" %location)
f"From {start_time} to {end_time}"
print('\n')