Spaces:
Sleeping
Sleeping
Update app.py
Browse files
app.py
CHANGED
|
@@ -91,10 +91,24 @@ class EventbriteRAGPipeline:
|
|
| 91 |
return self.model.encode([event_to_text(event) for event in self.events])
|
| 92 |
|
| 93 |
def query_events(self, query: str, top_k: int = 5) -> List[Event]:
|
|
|
|
|
|
|
|
|
|
|
|
|
| 94 |
query_embedding = self.model.encode(query).reshape(1, -1)
|
| 95 |
similarities = cosine_similarity(query_embedding, self.event_embeddings)[0]
|
| 96 |
-
|
| 97 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 98 |
|
| 99 |
# Event Evaluator
|
| 100 |
class EventEvaluator:
|
|
@@ -103,21 +117,40 @@ class EventEvaluator:
|
|
| 103 |
|
| 104 |
def evaluate_query(self, query):
|
| 105 |
"""Evaluate a single query and return results."""
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 106 |
top_events = self.pipeline.query_events(query)
|
|
|
|
| 107 |
results = []
|
|
|
|
|
|
|
| 108 |
for event in top_events:
|
| 109 |
-
|
| 110 |
-
|
| 111 |
-
|
| 112 |
-
|
| 113 |
-
|
| 114 |
-
|
| 115 |
-
|
| 116 |
-
|
| 117 |
-
|
| 118 |
-
|
| 119 |
-
|
| 120 |
-
|
|
|
|
| 121 |
return results
|
| 122 |
|
| 123 |
# Fetch events from Eventbrite API
|
|
|
|
| 91 |
return self.model.encode([event_to_text(event) for event in self.events])
|
| 92 |
|
| 93 |
def query_events(self, query: str, top_k: int = 5) -> List[Event]:
|
| 94 |
+
# query_embedding = self.model.encode(query).reshape(1, -1)
|
| 95 |
+
# similarities = cosine_similarity(query_embedding, self.event_embeddings)[0]
|
| 96 |
+
# top_indices = similarities.argsort()[-top_k:][::-1]
|
| 97 |
+
# return [self.events[idx] for idx in top_indices]
|
| 98 |
query_embedding = self.model.encode(query).reshape(1, -1)
|
| 99 |
similarities = cosine_similarity(query_embedding, self.event_embeddings)[0]
|
| 100 |
+
|
| 101 |
+
top_indices = similarities.argsort()[-(top_k * 2):][::-1] # Get extra events to filter duplicates
|
| 102 |
+
|
| 103 |
+
unique_events = {}
|
| 104 |
+
for idx in top_indices:
|
| 105 |
+
event = self.events[idx]
|
| 106 |
+
if event.id not in unique_events:
|
| 107 |
+
unique_events[event.id] = event
|
| 108 |
+
if len(unique_events) == top_k:
|
| 109 |
+
break
|
| 110 |
+
|
| 111 |
+
return list(unique_events.values())
|
| 112 |
|
| 113 |
# Event Evaluator
|
| 114 |
class EventEvaluator:
|
|
|
|
| 117 |
|
| 118 |
def evaluate_query(self, query):
|
| 119 |
"""Evaluate a single query and return results."""
|
| 120 |
+
# top_events = self.pipeline.query_events(query)
|
| 121 |
+
# results = []
|
| 122 |
+
# for event in top_events:
|
| 123 |
+
# result = {
|
| 124 |
+
# "Event Name": event.name,
|
| 125 |
+
# "Online Event": event.is_online_event,
|
| 126 |
+
# "Start Time": event.start_datetime,
|
| 127 |
+
# "Venue Address": event.primary_venue.address.address_1,
|
| 128 |
+
# "Venue Name": event.primary_venue.name,
|
| 129 |
+
# "Description": event.short_description,
|
| 130 |
+
# "Tickets URL": event.tickets_url,
|
| 131 |
+
# "Language": event.language,
|
| 132 |
+
# "Categories": [tag.text for tag in event.tags_categories],
|
| 133 |
+
# }
|
| 134 |
+
# results.append(result)
|
| 135 |
top_events = self.pipeline.query_events(query)
|
| 136 |
+
|
| 137 |
results = []
|
| 138 |
+
seen = set()
|
| 139 |
+
|
| 140 |
for event in top_events:
|
| 141 |
+
if event.id not in seen: # Ensure unique events
|
| 142 |
+
seen.add(event.id)
|
| 143 |
+
results.append({
|
| 144 |
+
"Event Name": event.name,
|
| 145 |
+
"Online Event": event.is_online_event,
|
| 146 |
+
"Start Time": event.start_datetime,
|
| 147 |
+
"Venue Address": event.primary_venue.address.address_1,
|
| 148 |
+
"Venue Name": event.primary_venue.name,
|
| 149 |
+
"Description": event.short_description,
|
| 150 |
+
"Tickets URL": event.tickets_url,
|
| 151 |
+
"Language": event.language,
|
| 152 |
+
"Categories": [tag.text for tag in event.tags_categories],
|
| 153 |
+
})
|
| 154 |
return results
|
| 155 |
|
| 156 |
# Fetch events from Eventbrite API
|