Create user features (U-Token)
(reviews, user2index, output_path, dataset_name)
| 474 | |
| 475 | |
| 476 | def create_user_features(reviews, user2index, output_path, dataset_name): |
| 477 | """Create user features (U-Token)""" |
| 478 | user_features = {} |
| 479 | user_ratings = collections.defaultdict(list) |
| 480 | |
| 481 | for review in reviews: |
| 482 | if review['reviewerID'] in user2index: |
| 483 | user_ratings[review['reviewerID']].append(float(review['overall'])) |
| 484 | |
| 485 | for user, ratings in user_ratings.items(): |
| 486 | avg_rating = sum(ratings) / len(ratings) |
| 487 | if avg_rating > 4.5: |
| 488 | u_token = '[USER_HIGH_RATING]' |
| 489 | elif avg_rating > 3.5: |
| 490 | u_token = '[USER_MID_RATING]' |
| 491 | else: |
| 492 | u_token = '[USER_LOW_RATING]' |
| 493 | |
| 494 | # Map original user ID to feature |
| 495 | user_features[user] = u_token |
| 496 | |
| 497 | write_json_file(user_features, os.path.join(output_path, dataset_name, f'{dataset_name}.user.json')) |
| 498 | return user_features |
| 499 | |
| 500 | |
| 501 | def process_dataset_recursive(args, metadata, reviews, start_timestamp, end_timestamp): |
no test coverage detected