Spaces:
Runtime error
Runtime error
from transformers import BertTokenizer, BertModel | |
import torch | |
from sklearn.metrics.pairwise import cosine_similarity | |
import pandas as pd | |
import numpy as np | |
import time | |
loaded_model = BertModel.from_pretrained('model') | |
loaded_tokenizer = BertTokenizer.from_pretrained('tokenizer') | |
device = torch.device("cuda") if torch.cuda.is_available() else torch.device("cpu") | |
def filter_by_ganre(df: pd.DataFrame, ganre_list: list): | |
filtered_df = df[df['ganres'].apply(lambda x: any(g in ganre_list for g in(x)))] | |
return filtered_df | |
end_time = time.time() | |
def recommendation(df: pd.DataFrame, embeddings:np.array, user_text: str, n=10): | |
start_time = time.time() | |
tokens = loaded_tokenizer(user_text, return_tensors="pt", padding=True, truncation=True) | |
loaded_model.to(device) | |
loaded_model.eval() | |
with torch.no_grad(): | |
tokens = {key: value.to(loaded_model.device) for key, value in tokens.items()} | |
outputs = loaded_model(**tokens) | |
user_embedding = output.last_hidden_state.mean(dim=1).squeeze().cpu().detach().numpy() | |
cosine_similarities = cosine_similarity(embeddings, user_embedding.reshape(1, -1)) | |
df_res = pd.DataFrame(cosine_similarities.ravel(), columns=['cos_sim']).sort_values('cos_sim', ascending=False) | |
dict_topn = df_res.iloc[:n, :].cos_sim.to_dict() | |
end_time = time.time() | |
return dict_topn | |