vishurdx commited on
Commit
aae5063
·
verified ·
1 Parent(s): 7dbcaf2

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +47 -14
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
- top_indices = similarities.argsort()[-top_k:][::-1]
97
- return [self.events[idx] for idx in top_indices]
 
 
 
 
 
 
 
 
 
 
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
- result = {
110
- "Event Name": event.name,
111
- "Online Event": event.is_online_event,
112
- "Start Time": event.start_datetime,
113
- "Venue Address": event.primary_venue.address.address_1,
114
- "Venue Name": event.primary_venue.name,
115
- "Description": event.short_description,
116
- "Tickets URL": event.tickets_url,
117
- "Language": event.language,
118
- "Categories": [tag.text for tag in event.tags_categories],
119
- }
120
- results.append(result)
 
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