当前位置:   article > 正文

HuggingFace学习笔记--datasets的使用_dataset.save_to_disk

dataset.save_to_disk

目录

1--datasets的使用

1-1--加载数据集

1-2--查看数据集

1-3--打乱和排序数据集

1-4--选择和筛选数据集

1-5--划分数据集

1-6--修改数据集

1-7--导出数据集


1--datasets的使用

1-1--加载数据集

代码:

  1. from datasets import load_dataset, load_from_disk
  2. if __name__ == "__main__":
  3. # 加载数据集
  4. dataset = load_dataset(path = 'lansinuote/ChnSentiCorp')
  5. # 保存数据集
  6. dataset.save_to_disk(dataset_dict_path = './data/ChnSentiCorp')
  7. # 从本地加载数据集
  8. dataset = load_from_disk('./data/ChnSentiCorp')
  9. print(dataset)

输出结果:

  1. DatasetDict({
  2. train: Dataset({
  3. features: ['text', 'label'],
  4. num_rows: 9600
  5. })
  6. validation: Dataset({
  7. features: ['text', 'label'],
  8. num_rows: 1200
  9. })
  10. test: Dataset({
  11. features: ['text', 'label'],
  12. num_rows: 1200
  13. })
  14. })

1-2--查看数据集

代码:

  1. from datasets import load_from_disk
  2. if __name__ == "__main__":
  3. # 从本地加载数据集
  4. dataset = load_from_disk('./data/ChnSentiCorp')
  5. # 取出训练集
  6. dataset = dataset['train']
  7. print(dataset)
  8. print(dataset[0]) # 查看单个样本

输出结果:

  1. Dataset({
  2. features: ['text', 'label'],
  3. num_rows: 9600
  4. })
  5. {'text': '选择珠江花园的原因就是方便,有电动扶梯直接到达海边,周围餐馆、食廊、商场、超市、摊位一应俱全。酒店装修一般,但还算整洁。 泳池在大堂的屋顶,因此很小,不过女儿倒是喜欢。 包的早餐是西式的,还算丰富。 服务吗,一般', 'label': 1}

1-3--打乱和排序数据集

代码:

  1. from datasets import load_from_disk
  2. if __name__ == "__main__":
  3. # 从本地加载数据集
  4. dataset = load_from_disk('./data/ChnSentiCorp')
  5. # 取出训练集
  6. dataset = dataset['train']
  7. print(dataset['label'][:10]) # 未排序前是乱序的
  8. # 排序
  9. sorted_dataset = dataset.sort('label')
  10. print("sort: ", sorted_dataset['label'][:10])
  11. print("sort: ", sorted_dataset['label'][-10:])
  12. # 打乱
  13. shuffled_dataset = sorted_dataset.shuffle(seed = 1) # 设置随机种子打乱
  14. print("shuffle: ", shuffled_dataset['label'][:10])

输出结果:

  1. [1, 1, 0, 0, 1, 0, 0, 0, 1, 1]
  2. sort: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
  3. sort: [1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
  4. shuffle: [0, 1, 0, 0, 0, 0, 0, 1, 0, 1]

1-4--选择和筛选数据集

代码:

  1. from datasets import load_dataset, load_from_disk
  2. if __name__ == "__main__":
  3. # 从本地加载数据集
  4. dataset = load_from_disk('./data/ChnSentiCorp')
  5. # 取出训练集
  6. dataset = dataset['train']
  7. sel_data = dataset.select([0, 10, 20, 30, 40, 50]) # 根据索引选取数据集
  8. print(sel_data)
  9. # 筛选数据集
  10. def f(data):
  11. return data['text'].startswith('选择') # 筛选以选择开头的
  12. start_with_ar = dataset.filter(f)
  13. print(len(start_with_ar))
  14. print(start_with_ar['text'])

输出结果:

  1. Dataset({
  2. features: ['text', 'label'],
  3. num_rows: 6
  4. })
  5. Filter: 100%|█████████████████████████████████████████████████████████████████| 9600/9600 [00:00<00:00, 231601.55 examples/s]
  6. 2
  7. ['选择珠江花园的原因就是方便,有电动扶梯直接到达海边,周围餐馆、食廊、商场、超市、摊位一应俱全。酒店装修一般,但还算整洁。 泳池在大堂的屋顶,因此很小,不过女儿倒是喜欢。 包的早餐是西式的,还算丰富。 服务吗,一般', '选择的事例太离奇了,夸大了心理咨询的现实意义,让人失去了信任感!如果说这样写的效果能在一开始抓住读者的眼球,但是看到案例主人公心理问题的原因解释时就逐渐失去了兴趣,反正有点拣了芝麻丢了西瓜的感觉。']

1-5--划分数据集

代码:

  1. from datasets import load_from_disk
  2. if __name__ == "__main__":
  3. # 从本地加载数据集
  4. dataset = load_from_disk('./data/ChnSentiCorp')
  5. # 取出训练集
  6. dataset = dataset['train']
  7. print(dataset)
  8. # 划分数据集
  9. new_dataset1 = dataset.train_test_split(test_size = 0.1)
  10. print(new_dataset1)
  11. # 数据集均分到四个桶里,并取第一个桶
  12. new_dataset2 = dataset.shard(num_shards = 4, index = 0)
  13. print(new_dataset2)

输出结果:

  1. # 训练集
  2. Dataset({
  3. features: ['text', 'label'],
  4. num_rows: 9600
  5. })
  6. # 训练集按比例划分
  7. DatasetDict({
  8. train: Dataset({
  9. features: ['text', 'label'],
  10. num_rows: 8640
  11. })
  12. test: Dataset({
  13. features: ['text', 'label'],
  14. num_rows: 960
  15. })
  16. })
  17. # 第一桶的数据
  18. Dataset({
  19. features: ['text', 'label'],
  20. num_rows: 2400
  21. })

1-6--修改数据集

代码:

  1. from datasets import load_from_disk
  2. if __name__ == "__main__":
  3. # 从本地加载数据集
  4. dataset = load_from_disk('./data/ChnSentiCorp')
  5. # 取出训练集
  6. dataset = dataset['train']
  7. # 修改列名,将text更改为mytext
  8. new_dataset1 = dataset.rename_column('text', 'mytext')
  9. print(new_dataset1)
  10. # 删除列名
  11. new_dataset2 = dataset.remove_columns(['text'])
  12. print(new_dataset2)
  13. # 修改数据
  14. def f(data):
  15. data['text'] = 'My sentence: ' + data['text'] # 每一个句子都增加前缀
  16. return data
  17. datatset_map = dataset.map(f)
  18. print(datatset_map['text'][:5])
  19. # 修改类型
  20. dataset.set_format(type = 'torch', columns = ['label'])
  21. print(dataset[0])

输出结果:

  1. # 更改列名
  2. Dataset({
  3. features: ['mytext', 'label'],
  4. num_rows: 9600
  5. })
  6. # 删除列
  7. Dataset({
  8. features: ['label'],
  9. num_rows: 9600
  10. })
  11. # 修改数据
  12. ['My sentence: 选择珠江花园的原因就是方便,有电动扶梯直接到达海边,周围餐馆、食廊、商场、超市、摊位一应俱全。酒店装修一般,但还算整洁。 泳池在大堂的屋顶,因此很小,不过女儿倒是喜欢。 包的早餐是西式的,还算丰富。 服务吗,一般',
  13. 'My sentence: 15.4寸笔记本的键盘确实爽,基本跟台式机差不多了,蛮喜欢数字小键盘,输数字特方便,样子也很美观,做工也相当不错',
  14. 'My sentence: 房间太小。其他的都一般。。。。。。。。。',
  15. 'My sentence: 1.接电源没有几分钟,电源适配器热的不行. 2.摄像头用不起来. 3.机盖的钢琴漆,手不能摸,一摸一个印. 4.硬盘分区不好办.',
  16. 'My sentence: 今天才知道这书还有第6卷,真有点郁闷:为什么同一套书有两种版本呢?当当网是不是该跟出版社商量商量,单独出个第6卷,让我们的孩子不会有所遗憾。']
  17. # 修改类型
  18. {'label': tensor(1)}

1-7--导出数据集

代码:

  1. from datasets import load_from_disk
  2. if __name__ == "__main__":
  3. # 从本地加载数据集
  4. dataset = load_from_disk('./data/ChnSentiCorp')
  5. # 取出训练集
  6. dataset = dataset['train']
  7. # 保存为csv格式
  8. dataset.to_csv(path_or_buf = './data/ChnSentiCorp.csv')
  9. # 加载csv格式数据
  10. csv_dataset = load_dataset(path='csv', data_files='./data/ChnSentiCorp.csv', split='train')
  11. print(dataset[0])
  12. print(csv_dataset[0])
  13. # 保存为json格式
  14. dataset.to_json(path_or_buf = './data/ChnSentiCorp.json')
  15. # 加载json格式数据
  16. json_dataset = load_dataset(path='json', data_files='./data/ChnSentiCorp.json', split='train')
  17. print(dataset[1])
  18. print(json_dataset[1])

输出结果:

  1. {'text': '选择珠江花园的原因就是方便,有电动扶梯直接到达海边,周围餐馆、食廊、商场、超市、摊位一应俱全。酒店装修一般,但还算整洁。 泳池在大堂的屋顶,因此很小,不过女儿倒是喜欢。 包的早餐是西式的,还算丰富。 服务吗,一般', 'label': 1}
  2. {'text': '选择珠江花园的原因就是方便,有电动扶梯直接到达海边,周围餐馆、食廊、商场、超市、摊位一应俱全。酒店装修一般,但还算整洁。 泳池在大堂的屋顶,因此很小,不过女儿倒是喜欢。 包的早餐是西式的,还算丰富。 服务吗,一般', 'label': 1}
  3. {'text': '15.4寸笔记本的键盘确实爽,基本跟台式机差不多了,蛮喜欢数字小键盘,输数字特方便,样子也很美观,做工也相当不错', 'label': 1}
  4. {'text': '15.4寸笔记本的键盘确实爽,基本跟台式机差不多了,蛮喜欢数字小键盘,输数字特方便,样子也很美观,做工也相当不错', 'label': 1}

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/凡人多烦事01/article/detail/428930
推荐阅读
相关标签
  

闽ICP备14008679号