【HuggingFace Transformer库学习笔记】基础组件学习:Datasets

这篇具有很好参考价值的文章主要介绍了【HuggingFace Transformer库学习笔记】基础组件学习:Datasets。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

基础组件——Datasets

【HuggingFace Transformer库学习笔记】基础组件学习:Datasets,# LLM,transformer,学习,笔记
【HuggingFace Transformer库学习笔记】基础组件学习:Datasets,# LLM,transformer,学习,笔记

datasets基本使用

【HuggingFace Transformer库学习笔记】基础组件学习:Datasets,# LLM,transformer,学习,笔记

导入包

from datasets import *

加载数据

datasets = load_dataset("madao33/new-title-chinese")
datasets

DatasetDict({
    train: Dataset({
        features: ['title', 'content'],
        num_rows: 5850
    })
    validation: Dataset({
        features: ['title', 'content'],
        num_rows: 1679
    })
})

加载数据集合集中的某一项子集

boolq_dataset = load_dataset("super_glue", "boolq")
boolq_dataset

DatasetDict({
    train: Dataset({
        features: ['question', 'passage', 'idx', 'label'],
        num_rows: 9427
    })
    validation: Dataset({
        features: ['question', 'passage', 'idx', 'label'],
        num_rows: 3270
    })
    test: Dataset({
        features: ['question', 'passage', 'idx', 'label'],
        num_rows: 3245
    })
})

按照数据集划分进行加载

dataset = load_dataset("madao33/new-title-chinese", split="train")
dataset

Dataset({
    features: ['title', 'content'],
    num_rows: 5850
})
dataset = load_dataset("madao33/new-title-chinese", split="train[10:100]")
dataset

Dataset({
    features: ['title', 'content'],
    num_rows: 90
})
dataset = load_dataset("madao33/new-title-chinese", split="train[:50%]")
dataset

Dataset({
    features: ['title', 'content'],
    num_rows: 2925
})
dataset = load_dataset("madao33/new-title-chinese", split=["train[:50%]", "train[50%:]"])
dataset

[Dataset({
     features: ['title', 'content'],
     num_rows: 2925
 }),
 Dataset({
     features: ['title', 'content'],
     num_rows: 2925
 })]

查看数据集

datasets = load_dataset("madao33/new-title-chinese")
datasets

DatasetDict({
    train: Dataset({
        features: ['title', 'content'],
        num_rows: 5850
    })
    validation: Dataset({
        features: ['title', 'content'],
        num_rows: 1679
    })
})

查看某一个数据

datasets["train"][0]

{'title': '望海楼是危险的赌博',
 'content': '近期妥善处理)'}

查看某一些数据

datasets["train"][:2]

{'title': ['望海楼是危险的赌博'],
 'content': ['撒打发是',
  '在推进“双一流”高校建设进程中']}

查看列名

datasets["train"].column_names

['title', 'content']

查看列属性

{'title': Value(dtype='string', id=None),
 'content': Value(dtype='string', id=None)}

数据集划分
可使用train_test_split这个函数

dataset = datasets["train"]
dataset.train_test_split(test_size=0.1)		# 按测试集比例为10%划分

DatasetDict({
    train: Dataset({
        features: ['title', 'content'],
        num_rows: 5265
    })
    test: Dataset({
        features: ['title', 'content'],
        num_rows: 585
    })
})

对于分类任务,指定标签字段,然后让这个数据集均衡划分标签字段

dataset = boolq_dataset["train"]
dataset.train_test_split(test_size=0.1, stratify_by_column="label")     # 分类数据集可以按照比例划分

DatasetDict({
    train: Dataset({
        features: ['question', 'passage', 'idx', 'label'],
        num_rows: 8484
    })
    test: Dataset({
        features: ['question', 'passage', 'idx', 'label'],
        num_rows: 943
    })
})

数据选取与过滤

# 选取
datasets["train"].select([0, 1])

Dataset({
    features: ['title', 'content'],
    num_rows: 2
})
# 过滤
## 传入一个lambda函数,让其只取含有中国的数据
filter_dataset = datasets["train"].filter(lambda example: "中国" in example["title"])
filter_dataset["title"][:5]

['世界探寻中国成功秘诀',
 '信心来自哪里',
 '世界减贫跑出加速度',
 '和音瞩目历史交汇点',
 '风采感染世界']

数据映射

def add_prefix(example):
    example["title"] = 'Prefix: ' + example["title"]
    return example
prefix_dataset = datasets.map(add_prefix)	# 每个title数据前面添加了前缀
prefix_dataset["train"][:10]["title"]

['Prefix: 危险的',
 'Prefix: 大力推进高校治理能力建设',
 'Prefix: 坚持事业为上选贤任能',
 'Prefix: “大朋友”的话儿记心头',
 'Prefix: 用好可持续发展这把“金钥匙”',
 'Prefix: 跨越雄关,我们走在大路上',
 'Prefix: 脱贫奇迹彰显政治优势',
 'Prefix: 拱卫亿万人共同的绿色梦想',
 'Prefix: 育人育才',
 'Prefix: 净化网络语言']
from transformers import AutoTokenizer
tokenizer = AutoTokenizer.from_pretrained("bert-base-chinese")
def preprocess_function(example, tokenizer=tokenizer):
    model_inputs = tokenizer(example["content"], max_length=512, truncation=True)
    labels = tokenizer(example["title"], max_length=32, truncation=True)
    # label就是title编码的结果
    model_inputs["labels"] = labels["input_ids"]
    return model_inputs
processed_datasets = datasets.map(preprocess_function)	# 添加了分类标签
processed_datasets

DatasetDict({
    train: Dataset({
        features: ['title', 'content', 'input_ids', 'token_type_ids', 'attention_mask', 'labels'],
        num_rows: 5850
    })
    validation: Dataset({
        features: ['title', 'content', 'input_ids', 'token_type_ids', 'attention_mask', 'labels'],
        num_rows: 1679
    })
})
processed_datasets = datasets.map(preprocess_function, batched=True)	# 使用批处理
processed_datasets

DatasetDict({
    train: Dataset({
        features: ['title', 'content', 'input_ids', 'token_type_ids', 'attention_mask', 'labels'],
        num_rows: 5850
    })
    validation: Dataset({
        features: ['title', 'content', 'input_ids', 'token_type_ids', 'attention_mask', 'labels'],
        num_rows: 1679
    })
})

去除某一字段

processed_datasets = datasets.map(preprocess_function, batched=True, remove_columns=datasets["train"].column_names)
processed_datasets

DatasetDict({
    train: Dataset({
        features: ['input_ids', 'token_type_ids', 'attention_mask', 'labels'],
        num_rows: 5850
    })
    validation: Dataset({
        features: ['input_ids', 'token_type_ids', 'attention_mask', 'labels'],
        num_rows: 1679
    })
})

保存与加载

# 保存
processed_datasets.save_to_disk("./processed_data")
# 加载
processed_datasets = load_from_disk("./processed_data")

加载本地数据集

# 加载本地csv文件
dataset = load_dataset("csv", data_files="./ChnSentiCorp_htl_all.csv", split="train")
dataset

Dataset({
    features: ['label', 'review'],
    num_rows: 7766
})
dataset = Dataset.from_csv("./ChnSentiCorp_htl_all.csv")
dataset

Dataset({
    features: ['label', 'review'],
    num_rows: 7766
})

加载文件夹内全部文件作为数据集

# 使用data_dir加载全部文件夹内文件
dataset = load_dataset("csv", data_dir="./all_data/", split='train')
dataset

Dataset({
    features: ['label', 'review'],
    num_rows: 23298
})
# 使用data_files加载文件夹内指定文件
dataset = load_dataset("csv", data_files=["./all_data/ChnSentiCorp_htl_all.csv", "./all_data/ChnSentiCorp_htl_all copy.csv"], split='train')
dataset

Dataset({
    features: ['label', 'review'],
    num_rows: 15532
})

通过其他方式读取数据,再将其转换成datasets

import pandas as pd

data = pd.read_csv("./ChnSentiCorp_htl_all.csv")
data.head()

【HuggingFace Transformer库学习笔记】基础组件学习:Datasets,# LLM,transformer,学习,笔记

dataset = Dataset.from_pandas(data)
dataset

Dataset({
    features: ['label', 'review'],
    num_rows: 7766
})
# List格式的数据需要内嵌{},明确数据字段
data = [{"text": "abc"}, {"text": "def"}]
# data = ["abc", "def"]
Dataset.from_list(data)

Dataset({
    features: ['text'],
    num_rows: 2
})

通过自定义加载脚本加载数据集文章来源地址https://www.toymoban.com/news/detail-809173.html

 load_dataset("json", data_files="./cmrc2018_trial.json", field="data")

DatasetDict({
    train: Dataset({
        features: ['title', 'paragraphs', 'id'],
        num_rows: 256
    })
})
dataset = load_dataset("./load_script.py", split="train")
dataset


dataset[0]

{'id': 'TRIAL_800_QUERY_0',
 'context': '基于《跑跑卡丁车》与《泡泡堂》上所开发的游戏,由韩国Nexon开发与发行。中国大陆由盛大游戏运营,这是Nexon时隔6年再次授予盛大网络其游戏运营权。台湾由游戏橘子运营。玩家以水枪、小枪、锤子或是水炸弹泡封敌人(玩家或NPC),即为一泡封,将水泡击破为一踢爆。若水泡未在时间内踢爆,则会从水泡中释放或被队友救援(即为一救援)。每次泡封会减少生命数,生命数耗完即算为踢爆。重生者在一定时间内为无敌状态,以踢爆数计分较多者获胜,规则因模式而有差异。以2V2、4V4随机配对的方式,玩家可依胜场数爬牌位(依序为原石、铜牌、银牌、金牌、白金、钻石、大师) ,可选择经典、热血、狙击等模式进行游戏。若游戏中离,则4分钟内不得进行配对(每次中离+4分钟)。开放时间为暑假或寒假期间内不定期开放,8人经典模式随机配对,采计分方式,活动时间内分数越多,终了时可依该名次获得奖励。',
 'question': '生命数耗完即算为什么?',
 'answers': {'text': ['踢爆'], 'answer_start': [127]}}

到了这里,关于【HuggingFace Transformer库学习笔记】基础组件学习:Datasets的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Transformer 论文学习笔记

    重新学习了一下,整理了一下笔记 论文 :《Attention Is All You Need》 代码 :http://nlp.seas.harvard.edu/annotated-transformer/ 地址 :https://arxiv.org/abs/1706.03762v5 翻译 :Transformer论文翻译 特点 : 提出一种不使用 RNN、CNN,仅使用注意力机制的新模型 Transformer; 只关注句内各 token 之间的关

    2024年02月14日
    浏览(39)
  • Transformer学习笔记

    由于本人水平有限,难免出现错漏,敬请批评改正。 更多精彩内容,可点击进入YOLO系列专栏或我的个人主页查看 YOLOv5:添加SE、CBAM、CoordAtt、ECA注意力机制 YOLOv5:yolov5s.yaml配置文件解读、增加小目标检测层 YOLOv5:IoU、GIoU、DIoU、CIoU、EIoU YOLOv7训练自己的数据集(口罩检测)

    2024年02月14日
    浏览(35)
  • 简单易懂的Transformer学习笔记

    1. 整体概述 2. Encoder         2.1 Embedding         2.2 位置编码                 2.2.1 为什么需要位置编码                 2.2.2 位置编码公式                 2.2.3 为什么位置编码可行         2.3 注意力机制         2.3.1 基本注意力机制  

    2024年02月14日
    浏览(36)
  • 浅尝Transformer和LLM

    大语言模型势不可挡啊。 哲学上来说,语言就是我们的一切,语言所不能到达的地方我们也不能达到。就人类来说,语言或许已经不仅仅是一种工具那么简单,其不仅是人类在物理世界进行活动时不可或缺的媒介,也是我们自身构建精神世界时的一砖一瓦。语言的重要性已经

    2024年02月13日
    浏览(28)
  • 【论文+代码】1706.Transformer简易学习笔记

    Transformer 论文: 1706.attention is all you need! 唐宇迪解读transformer:transformer2021年前,从NLP活到CV的过程 综述:2110.Transformers in Vision: A Survey 代码讲解1: Transformer 模型详解及代码实现 - 进击的程序猿 - 知乎 代码讲解2:: Transformer代码解读(Pytorch) - 神洛的文章 - 知乎 输入:词向量(

    2024年02月09日
    浏览(44)
  • transformer优化(一)-UNeXt 学习笔记

    论文地址:https://arxiv.org/abs/2203.04967 代码地址:hhttps://link.zhihu.com/?target=https%3A//github.com/jeya-maria-jose/UNeXt-pytorch UNeXt是约翰霍普金斯大学在2022年发布的论文。它在早期阶段使用卷积,在潜在空间阶段使用 MLP。通过一个标记化的 MLP 块来标记和投影卷积特征,并使用 MLP 对表示进

    2024年01月25日
    浏览(27)
  • 李宏毅LLM——机器学习基础知识

    机器学习 = 机器自动找出一种函数 根据函数的不同,可以分为回归问题(输出数值)和分类问题(输出类别,选择题) 生成有结构的物件,如图片、文句 ChatGPT是生成式学习,只不过是将生成式学习拆成多个分类问题来简化 找出函式的三大步骤 前置作业:决定需要什么样的

    2024年01月20日
    浏览(45)
  • 【学习笔记】Unity基础(八)【镜头camera组件属性(clear flag、target texture、occlusion culling、镜面效果、小地图等)】

    转载请注明出处:🔗https://blog.csdn.net/weixin_44013533/article/details/131071235 参考: 官网手册 Graphics 本人使用的unity版本是2021.3.25f 摄像机所看到的内容由它的Transform和 Camera component来定义。Transform position 定义了视点,其向前的 (Z) 轴定义视图方向。Camera 组件的设置还定义了视图中

    2024年02月13日
    浏览(43)
  • 学习笔记 | 多层感知机(MLP)、Transformer

    目录 多层感知机(MLP) Transformer  1. inputs 输入 2. Transformer的Encoder         2.1 Multi-Head Attention         2.2 Add&Normalize         2.3 Feed-Forward Networks 3. Transformer的Decoder         3.1Transformer Decoder的输入         3.2 Masked Multi-Head Attention         3.3 基于En

    2024年02月02日
    浏览(40)
  • transformer学习笔记:Positional Encoding(位置编码)

    对于任何一门语言,单词在句子中的位置以及排列顺序是非常重要的,它们不仅是一个句子的语法结构的组成部分,更是表达语义的重要概念。一个单词在句子的位置或排列顺序不同,可能整个句子的意思就发生了偏差。举个例子来说: I  do not  like the story of the movie, but I 

    2023年04月08日
    浏览(52)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包