Fix recommendation link and lower similarity threshold

This commit is contained in:
estromenko 2025-10-31 00:52:39 +03:00
parent 8e9df066a9
commit 44ca1dcf98
2 changed files with 8 additions and 6 deletions

View File

@ -20,7 +20,7 @@ class Command(BaseCommand):
).values_list('vacancy_id', flat=True)
query_filter = Filter(must_not=[HasIdCondition(has_id=recommended_vacancy_ids)])
search_result_id, vacancy_content = search_similarities(query_filter, customer_cv.id)
search_result_id, vacancy_content, link = search_similarities(query_filter, customer_cv.id)
recommendation = RecommendedVacancy.objects.create(
customer=customer_cv.customer,
@ -31,6 +31,6 @@ class Command(BaseCommand):
chat_id=recommendation.customer.chat_id,
text=vacancy_content,
reply_markup=InlineKeyboardMarkup([[
InlineKeyboardButton("Откликнуться", url=recommendation.vacancy.link),
InlineKeyboardButton("Откликнуться", url=link),
]]),
))

View File

@ -91,7 +91,7 @@ def add_vectors(collection_name: str, _id: int, features: dict, payload: dict):
scored.append({"id": vid, "score": total})
scored.sort(key=lambda x: x["score"], reverse=True)
if scored and scored[0]["score"] > 35: #treshold
if scored and scored[0]["score"] > 33: # threshold
return
client.upsert(
@ -132,17 +132,19 @@ def search_similarities(query_filter: Filter, cv_id: int) -> list[dict]:
max_similarities[vid] = {}
max_similarities[vid][name] = sim
if vid not in vacancies_content:
vacancies_content[vid] = res.payload["content"]
vacancies_content[vid] = {}
vacancies_content[vid]["content"] = res.payload["content"]
vacancies_content[vid]["link"] = res.payload["link"]
scored = []
for vid, feature_sims in max_similarities.items():
total = sum(feature_sims[feature] * weights.get(feature, 1) for feature in feature_sims)
scored.append({"id": vid, "score": total, "content": vacancies_content[vid]})
scored.append({"id": vid, "score": total, "content": vacancies_content[vid]["content"], "link": vacancies_content[vid]["link"]})
scored.sort(key=lambda x: x["score"], reverse=True)
for i in range(20):
print(f"{scored[i]['content']} {scored[i]['score']}")
return scored[0]["id"], scored[0]["content"]
return scored[0]["id"], scored[0]["content"], scored[0]["link"]
def extract_features(content: str) -> VacancyFeatures: