|
|
""" |
|
|
FINAL SMART RECOMMENDER SYSTEM |
|
|
Embeddings + Intent + Filtering + Reranking + Keyword Boosting |
|
|
""" |
|
|
|
|
|
from filtered_search_engine import SmartRecommender |
|
|
from reranker import Reranker |
|
|
from keyword_boosting_layer import apply_keyword_boost |
|
|
import pandas as pd |
|
|
|
|
|
class FinalSalahkar: |
|
|
|
|
|
def __init__(self): |
|
|
print("β¨ Initializing Final AI Recommender...") |
|
|
self.engine = SmartRecommender() |
|
|
self.reranker = Reranker() |
|
|
self.df = pd.read_csv("salahkar_enhanced.csv") |
|
|
|
|
|
|
|
|
|
|
|
self.name_map = self.df.set_index("name").to_dict('index') |
|
|
|
|
|
print("π System Ready!") |
|
|
|
|
|
def ask(self, query, k=7): |
|
|
print("\n==============================================") |
|
|
print(f"π§ INPUT QUERY β {query}") |
|
|
print("==============================================") |
|
|
|
|
|
|
|
|
|
|
|
results, intent = self.engine.recommend(query, k=k) |
|
|
|
|
|
|
|
|
prepared = [] |
|
|
for item in results: |
|
|
name = item["name"] |
|
|
|
|
|
|
|
|
row = self.name_map.get(name) |
|
|
|
|
|
if row: |
|
|
prepared.append({ |
|
|
"name": name, |
|
|
"domain": item["domain"], |
|
|
"category": item["category"], |
|
|
"region": item["region"], |
|
|
"embedding_score": item["score"], |
|
|
"text": row["search_embedding_text"], |
|
|
"intent": intent |
|
|
}) |
|
|
|
|
|
|
|
|
ranked = self.reranker.rerank(query, prepared) |
|
|
|
|
|
|
|
|
|
|
|
boosted = apply_keyword_boost(query, ranked) |
|
|
|
|
|
|
|
|
print("\nπ FINAL SMART RANKED RESULTS:") |
|
|
for i, item in enumerate(boosted[:k]): |
|
|
score = item.get('final_score', item.get('rerank_score', 0)) |
|
|
print(f"{i+1}. {item['name']} | Final Score: {round(score, 3)}") |
|
|
|
|
|
return boosted |
|
|
|
|
|
|
|
|
if __name__ == "__main__": |
|
|
bot = FinalSalahkar() |
|
|
|
|
|
|
|
|
bot.ask("romantic historical place india") |
|
|
bot.ask("spiritual peaceful temple") |
|
|
bot.ask("best south indian spicy breakfast") |
|
|
bot.ask("sweet festival food india") |
|
|
bot.ask("famous beaches near ongole") |