Amazon Review Dataset数据集记录了用户对亚马逊网站商品的评价,是推荐系统的经典数据集,并且Amazon一直在更新这个数据集,根据时间顺序,Amazon数据集可以分成三类:
Amazon数据集可以根据商品类别分为 Books,Electronics,Movies and TV,CDs and Vinyl等子数据集,这些子数据集包含两类信息:
以2014版数据集为例:
商品信息描述
asin | 商品id |
---|---|
title | 商品名称 |
price | 价格 |
imUrl | 商品图片链接 |
related | 相关商品 |
salesRank | 折扣信息 |
brand | 品牌 |
categories | 目录类别 |
官方例子:
{
"asin": "0000031852",
"title": "Girls Ballet Tutu Zebra Hot Pink",
"price": 3.17,
"imUrl": "http://ecx.images-amazon.com/images/I/51fAmVkTbyL._SY300_.jpg",
"related":
{
"also_bought": ["B00JHONN1S", "B002BZX8Z6"],
"also_viewed": ["B002BZX8Z6", "B00JHONN1S"],
"bought_together": ["B002BZX8Z6"]
},
"salesRank": {"Toys & Games": 211836},
"brand": "Coxlures",
"categories": [["Sports & Outdoors", "Other Sports", "Dance"]]
}
用户评分记录数据
reviewerID | 用户id |
---|---|
asin | 商品id |
reviewerName | 用户名 |
helpful | 有效评价率(helpfulness rating of the review, e.g. 2/3) |
reviewText | 评价文本 |
overall | 评分 |
summary | 评价总结 |
unixReviewTime | 评价时间戳 |
reviewTime | 评价时间 |
{
"reviewerID": "A2SUAM1J3GNN3B",
"asin": "0000013714",
"reviewerName": "J. McDonald",
"helpful": [2, 3],
"reviewText": "I bought this for my husband who plays the piano. He is having a wonderful time playing these old hymns. The music is at times hard to read because we think the book was published for singing from more than playing from. Great purchase though!",
"overall": 5.0,
"summary": "Heavenly Highway Hymns",
"unixReviewTime": 1252800000,
"reviewTime": "09 13, 2009"
}
Amazon数据集读取:
因为下载的数据是json文件,不易操作,这里主要介绍如何将json文件转化为csv格式文件。以2014版Amazon Electronics数据集的转化为例:
商品信息读取
import pickle
import pandas as pd
file_path = 'meta_Electronics.json'
fin = open(file_path, 'r')
df = {}
useless_col = ['imUrl','salesRank','related','title','description'] # 不想要的字段
i = 0
for line in fin:
d = eval(line)
for s in useless_col:
if s in d:
d.pop(s)
df[i] = d
i += 1
df = pd.DataFrame.from_dict(df, orient='index')
df.to_csv('meta_Electronics.csv',index=False)
用户评分记录数据读取
file_path = 'Electronics_10.json'
fin = open(file_path, 'r')
df = {}
useless_col = ['reviewerName','reviewText','unixReviewTime','summary'] # 不想要的字段
i = 0
for line in fin:
d = eval(line)
for s in useless_col:
if s in d:
d.pop(s)
df[i] = d
i += 1
df = pd.DataFrame.from_dict(df, orient='index')
df.to_csv('Electronics_10.csv',index=False)