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
|