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')