selvaonline commited on
Commit
e360e01
·
verified ·
1 Parent(s): 5e78218

Upload app.py with huggingface_hub

Browse files
Files changed (1) hide show
  1. app.py +48 -7
app.py CHANGED
@@ -144,21 +144,62 @@ def classify_text(text, fetch_deals=True):
144
  deals_data = fetch_deals_data(num_pages=2) # Limit to 2 pages for faster response
145
  deals_cache = process_deals_data(deals_data)
146
 
147
- # Search for relevant deals
148
  query_terms = text.lower().split()
149
- relevant_deals = []
150
 
 
 
 
 
 
 
 
 
 
151
  for deal in deals_cache:
152
  title = deal['title'].lower()
153
  content = deal['content'].lower()
154
  excerpt = deal['excerpt'].lower()
155
 
156
- # Check if any query term is in the deal information
157
- if any(term in title or term in content or term in excerpt for term in query_terms):
158
- relevant_deals.append(deal)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
159
 
160
- # Limit to top 5 most relevant deals
161
- relevant_deals = relevant_deals[:5]
162
 
163
  if relevant_deals:
164
  for i, deal in enumerate(relevant_deals, 1):
 
144
  deals_data = fetch_deals_data(num_pages=2) # Limit to 2 pages for faster response
145
  deals_cache = process_deals_data(deals_data)
146
 
147
+ # Search for relevant deals with improved matching
148
  query_terms = text.lower().split()
 
149
 
150
+ # Add related terms for specific queries
151
+ expanded_terms = list(query_terms) # Start with original terms
152
+
153
+ # Special case for headphones
154
+ if 'headphone' in query_terms or 'headphones' in query_terms:
155
+ expanded_terms.extend(['earbuds', 'earphones', 'earpods', 'airpods', 'audio', 'bluetooth', 'wireless'])
156
+
157
+ # Score and rank deals
158
+ scored_deals = []
159
  for deal in deals_cache:
160
  title = deal['title'].lower()
161
  content = deal['content'].lower()
162
  excerpt = deal['excerpt'].lower()
163
 
164
+ # Calculate relevance score
165
+ score = 0
166
+
167
+ # Check original query terms (higher weight)
168
+ for term in query_terms:
169
+ # Title matches are most important
170
+ if term in title:
171
+ score += 10
172
+ # Content and excerpt matches
173
+ if term in content:
174
+ score += 3
175
+ if term in excerpt:
176
+ score += 3
177
+
178
+ # Check expanded terms (lower weight)
179
+ for term in expanded_terms:
180
+ if term not in query_terms: # Skip original terms
181
+ if term in title:
182
+ score += 5
183
+ if term in content:
184
+ score += 1
185
+ if term in excerpt:
186
+ score += 1
187
+
188
+ # Special case for headphones - look for exact product matches
189
+ if 'headphone' in query_terms or 'headphones' in query_terms:
190
+ headphone_terms = ['headphone', 'headphones', 'earbuds', 'earphones', 'earpods', 'airpods']
191
+ if any(term in title for term in headphone_terms):
192
+ score += 20 # Significant boost for headphone products
193
+
194
+ # Add to scored deals if it has any relevance
195
+ if score > 0:
196
+ scored_deals.append((deal, score))
197
+
198
+ # Sort by score (descending)
199
+ scored_deals.sort(key=lambda x: x[1], reverse=True)
200
 
201
+ # Extract the deals from the scored list
202
+ relevant_deals = [deal for deal, score in scored_deals[:5]]
203
 
204
  if relevant_deals:
205
  for i, deal in enumerate(relevant_deals, 1):