MCPcopy Create free account
hub / github.com/AkaliKong/MiniOneRec / build_interaction_list_amazon23

Function build_interaction_list_amazon23

data/amazon23_data_process.py:265–351  ·  view source on GitHub ↗

Build interaction sequences (history_len=10). Same logic as your original json2csv version but using: - user_id - rating - timestamp - title from metadata Output entry: [user_id_original, history_asins, target_asin, hist

(reviews, user2index, item2index, asin2title)

Source from the content-addressed store, hash-verified

263
264
265def build_interaction_list_amazon23(reviews, user2index, item2index, asin2title):
266 """
267 Build interaction sequences (history_len=10).
268 Same logic as your original json2csv version but using:
269 - user_id
270 - rating
271 - timestamp
272 - title from metadata
273 Output entry:
274 [user_id_original,
275 history_asins,
276 target_asin,
277 history_item_ids,
278 target_item_id,
279 history_titles,
280 target_title,
281 history_ratings,
282 target_rating,
283 history_timestamps,
284 target_timestamp]
285 """
286
287 # Group by user
288 interact = {}
289
290 for r in tqdm(reviews, desc="Collecting interactions"):
291 u = r["user_id"]
292 i = r["asin"]
293
294 if u not in interact:
295 interact[u] = {
296 "items": [],
297 "ratings": [],
298 "timestamps": [],
299 "item_ids": [],
300 "titles": [],
301 }
302
303 interact[u]["items"].append(i)
304 interact[u]["ratings"].append(r["rating"])
305 interact[u]["timestamps"].append(r["timestamp"])
306 interact[u]["item_ids"].append(item2index[i])
307 interact[u]["titles"].append(asin2title.get(i, ""))
308
309 # Build full list
310 interaction_list = []
311
312 for u in tqdm(interact.keys(), desc="Building sequence windows"):
313 items = interact[u]["items"]
314 ratings = interact[u]["ratings"]
315 timestamps = interact[u]["timestamps"]
316 item_ids = interact[u]["item_ids"]
317 titles = interact[u]["titles"]
318
319 # sort by timestamp
320 all_data = list(zip(items, ratings, timestamps, item_ids, titles))
321 all_data.sort(key=lambda x: x[2])
322 items, ratings, timestamps, item_ids, titles = zip(*all_data)

Callers 1

mainFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected