HaggiVaggi commited on
Commit
e6e6052
1 Parent(s): 630ecc3

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +20 -9
app.py CHANGED
@@ -8,6 +8,7 @@ from sentence_transformers import SentenceTransformer, InputExample, losses
8
  from torch.utils.data import DataLoader
9
  import torch
10
  import ast
 
11
 
12
 
13
 
@@ -64,20 +65,30 @@ if page == "какая-то еще":
64
  outputs = model(**tokens)
65
  embeddings = outputs.last_hidden_state.mean(dim=1)
66
  return embeddings
 
 
 
 
 
 
 
 
67
  df2 = pd.read_csv('data_with_embeddings.csv')
68
  embeddings = pd.read_pickle('embeddings.pkl')
69
- user_input = st.text_area('Введите описание фильма')
70
- input_embedding = encode_description(user_input)
71
- def parse_tensor_string(tensor_string):
72
- return torch.tensor(ast.literal_eval(tensor_string))
73
 
74
- # Преобразование колонки description_embedding в embeddings_tensor
75
- df2['embeddings_tensor'] = df2['description_embedding'].apply(parse_tensor_string)
 
 
 
76
 
77
- # Объединение тензоров в один большой тензор
78
- embeddings_tensor = torch.stack(df2['embeddings_tensor'].tolist())
 
 
 
79
 
80
- # Ваш оставшийся код остается без изменений
81
  similarity_scores = cosine_similarity(input_embedding.view(1, -1).detach().numpy(), embeddings_tensor.reshape(embeddings_tensor.shape[0], -1))[0]
82
  sorted_indices = similarity_scores.argsort()[::-1]
83
  recs = df2.iloc[sorted_indices[:10]].reset_index(drop=True)
 
8
  from torch.utils.data import DataLoader
9
  import torch
10
  import ast
11
+ import re
12
 
13
 
14
 
 
65
  outputs = model(**tokens)
66
  embeddings = outputs.last_hidden_state.mean(dim=1)
67
  return embeddings
68
+ def convert_tensor_string(tensor_string):
69
+ try:
70
+ # Извлечение чисел из строки с использованием регулярного выражения
71
+ numbers = re.findall(r'-?\d+\.?\d*', tensor_string)
72
+ return [float(num) for num in numbers]
73
+ except ValueError:
74
+ # В случае ошибки (например, если строка не соответствует ожидаемому формату), вернем пустой список
75
+ return []
76
  df2 = pd.read_csv('data_with_embeddings.csv')
77
  embeddings = pd.read_pickle('embeddings.pkl')
 
 
 
 
78
 
79
+ # Проверка и преобразование строки с тензорами
80
+ df2['description_embedding'] = df2['description_embedding'].apply(lambda x: parse_tensor_string(x) if pd.notna(x) else [])
81
+
82
+ # Объединение тензоров в один большой тензор
83
+ embeddings_tensor = torch.stack(df2['description_embedding'].tolist())
84
 
85
+ # Получение ввода пользователя
86
+ user_input = st.text_area('Введите описание фильма')
87
+
88
+ # Код для получения вектора вложения ввода пользователя
89
+ input_embedding = encode_description(user_input)
90
 
91
+ # Расчет косинусной схожести и рекомендации
92
  similarity_scores = cosine_similarity(input_embedding.view(1, -1).detach().numpy(), embeddings_tensor.reshape(embeddings_tensor.shape[0], -1))[0]
93
  sorted_indices = similarity_scores.argsort()[::-1]
94
  recs = df2.iloc[sorted_indices[:10]].reset_index(drop=True)