当使用 Hugging Face 上的 dirtycomputer/weibo_senti_100k 数据集时,我们发现该数据集只包含了训练集,并没有提供测试集和验证集。因此,在使用该数据集进行模型训练和评估时,我们需要自行将训练集的一部分数据拆分出来作为测试集和验证集。
下面的代码演示了如何实现这个功能。首先,我们加载数据集并将其划分为训练集、测试集和验证集。然后,我们对训练集进行了扩充,以提高模型的泛化能力和性能。最后,我们将处理后的数据集保存到文件中,以备后续使用。
import pandas as pd
from datasets import load_dataset, Dataset
from sentiment_utils import makeupJsonlFile
# 加载数据集
dataset = load_dataset("dirtycomputer/weibo_senti_100k")
# 转换为DataFrame
df = pd.DataFrame(dataset['train'])
# 去除 '\ufeff' 字符
df['review'] = df['review'].apply(lambda x: x.replace('\ufeff', ''))
# 根据标签值进行分割
positive_samples = df[df['label'] == 1].sample(n=5000, random_state=42)
negative_samples = df[df['label'] == 0].sample(n=5000, random_state=42)
# 合并成测试集
test_set = pd.concat([positive_samples, negative_samples])
# 从训练集中移除测试集
train_set = df.drop(test_set.index)
# 将DataFrame转换回Dataset格式
train_dataset = Dataset.from_pandas(train_set)
test_dataset = Dataset.from_pandas(test_set)
# 删除额外索引列
train_dataset = train_dataset.remove_columns("__index_level_0__")
test_dataset = test_dataset.remove_columns("__index_level_0__")
# 打印测试集和训练集的长度
print("train_set", train_dataset)
print("test_set", test_dataset)
print("train_dataset[:3]", train_dataset[:3])
print("test_dataset[:3]", test_dataset[:3])
print("test data len:", len(train_dataset))
print("train data len:", len(test_dataset))
makeupJsonlFile(train_dataset["review"], train_dataset["label"], "dataset/weibo_senti_100k/train.jsonl")
makeupJsonlFile(test_dataset["review"], test_dataset["label"], "dataset/weibo_senti_100k/test.jsonl")
在makeupJsonlFile方法中,我们采用了 处理Hugging Face上的数据集 中介绍的数据处理方法。该方法主要用于处理从Hugging Face下载的数据集,以便后续用于模型训练和评估。
此外,我们还可以使用huggingface自带的保存方法将处理后的数据保存到本地。
train_dataset.save_to_disk("train_dataset")
test_dataset.save_to_disk("test_dataset")