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

Function convert_interactions_amazon23

data/amazon23_data_process.py:221–262  ·  view source on GitHub ↗

Convert interactions to amazon18-style: - user2index - item2index - user2items[user_index] = [item_index...] - interactions list of (user_id, asin, rating, timestamp)

(reviews)

Source from the content-addressed store, hash-verified

219 return new_reviews, user_counts, item_counts
220
221def convert_interactions_amazon23(reviews):
222 """
223 Convert interactions to amazon18-style:
224 - user2index
225 - item2index
226 - user2items[user_index] = [item_index...]
227 - interactions list of (user_id, asin, rating, timestamp)
228 """
229
230 user_reviews = collections.defaultdict(list)
231
232 for r in reviews:
233 user_reviews[r["user_id"]].append(r)
234
235 # Sort each user's reviews by time
236 for u in user_reviews:
237 user_reviews[u].sort(key=lambda x: x["timestamp"])
238
239 user2index, item2index = {}, {}
240 user2items = collections.defaultdict(list)
241 interactions = []
242
243 for user in user_reviews:
244 if user not in user2index:
245 user2index[user] = len(user2index)
246
247 for r in user_reviews[user]:
248 item = r["asin"]
249 if item not in item2index:
250 item2index[item] = len(item2index)
251
252 uid = user2index[user]
253 iid = item2index[item]
254
255 user2items[uid].append(iid)
256 interactions.append((user, item, r["rating"], r["timestamp"]))
257
258 print(
259 f"[Mapping] Users={len(user2index)}, Items={len(item2index)}, "
260 f"Interactions={len(interactions)}"
261 )
262 return user2items, user2index, item2index, interactions
263
264
265def build_interaction_list_amazon23(reviews, user2index, item2index, asin2title):

Callers 1

mainFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected