Spaces:
Sleeping
Sleeping
Commit
•
e6e6052
1
Parent(s):
630ecc3
Update app.py
Browse files
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 |
-
#
|
75 |
-
df2['
|
|
|
|
|
|
|
76 |
|
77 |
-
#
|
78 |
-
|
|
|
|
|
|
|
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)
|