前言
提醒:
文章内容为方便作者自己后日复习与查阅而进行的书写与发布,其中引用内容都会使用链接表明出处(如有侵权问题,请及时联系)。
其中内容多为一次书写,缺少检查与订正,如有问题或其他拓展及意见建议,欢迎评论区讨论交流。
文章目录
数据集介绍
免费数据下载链接
数据集下载在链接1,百度网盘
数据集下载在链接2,github
数据集下载在链接3,github
数据集下载在链接4,huggingface
Amazon 用户评论质量预测数据集信息表
项目 | 内容描述 |
---|---|
数据集名称 | Amazon Review Quality Prediction Dataset |
数据来源 | Amazon.com 用户商品评论 |
用途 | 用户评论“有帮助”程度预测、文本质量评估、监督学习 |
任务类型 | 二分类(有帮助 / 无帮助),或回归(预测被标记为有帮助的次数) |
主要字段 | - reviewText :评论正文- helpful :一个二元组,格式为 [有帮助票数, 总票数] - overall :商品评分(1-5 星)- reviewerID :用户 ID- asin :商品 ID |
目标变量 | - 有帮助的概率(可计算为 有帮助票数 / 总票数 )- 或转换为二分类(如比例 ≥ 0.5 为有帮助) |
数据格式 | JSON 或 CSV(根据版本不同) |
语言 | 英文(少部分版本支持多语言) |
评论时间跨度 | 大多数数据从 1995 年开始,具体取决于品类 |
数据规模 | 数十万到数百万条评论,按品类划分(如电子、图书、家居等) |
适用模型 | 文本分类模型(如 BERT、XGBoost、LSTM)、回归模型等 |
常用预处理方式 | 文本清洗、标注样本有帮助标签、采样平衡类别等 |
数据实例
review_id
:评论 IDreviewText
:用户评论文本product_id
/product_category
:商品信息label
/quality
:表示评论质量的标签(如高质量/低质量)overall
:商品评分(1-5 星)
以下是一个专为这类数据设计的分析脚本,涵盖文本长度、类别分布、缺失值检查等常见内容:
✅ 1. 加载并预览数据集
import pandas as pd
# 加载数据
train_df = pd.read_csv('train.xlsx', sep='\t')
print(train_df.head())
df = train_df
# 显示基本信息
print("📌 前5行数据:")
print(df.head())
print("\n📐 数据维度 (行, 列):", df.shape)
print("\n🔎 字段信息:")
print(df.info())
✅ 2. 缺失值统计和基本描述
# 缺失值
print("\n🚫 缺失值统计:")
print(df.isnull().sum())
# 描述性统计(只适用于数值列)
print("\n📊 数值字段描述:")
print(df.describe())
✅ 3. 评论长度分析
# 添加评论长度字段
df['review_length'] = df['review_text'].astype(str).apply(len)
# 显示最短、最长评论长度
print("\n📝 评论长度统计:")
print(df['review_length'].describe())
可视化评论长度分布:
import matplotlib.pyplot as plt
import seaborn as sns
plt.figure(figsize=(10,6))
sns.histplot(df['review_length'], bins=50, kde=True)
plt.title("评论长度分布")
plt.xlabel("字符数")
plt.ylabel("评论数量")
plt.show()
✅ 4. 标签分布(如评论质量标签)
label_col = 'label' if 'label' in df.columns else 'quality'
if label_col in df.columns:
print("\n📈 标签分布:")
print(df[label_col].value_counts())
# 可视化
sns.countplot(x=label_col, data=df)
plt.title("评论质量标签分布")
plt.show()
✅ 5. 词云可视化高质量与低质量评论词频(如有助于 NLP 分析需求)
from wordcloud import WordCloud
# 假设 1 为高质量,0 为低质量
high_quality = df[df[label_col]==1]['review_text'].dropna()
low_quality = df[df[label_col]==0]['review_text'].dropna()
def plot_wordcloud(texts, title):
text = " ".join(texts.astype(str))
wordcloud = WordCloud(width=800, height=400, background_color='white').generate(text)
plt.figure(figsize=(10,5))
plt.imshow(wordcloud, interpolation='bilinear')
plt.axis('off')
plt.title(title)
plt.show()
plot_wordcloud(high_quality, "高质量评论词云")
plot_wordcloud(low_quality, "低质量评论词云")