当前位置: 首页 > article >正文

datasets 笔记: 文本数据集的预处理(Tokenization)

  • 将文本分割为单词或子单元(tokens),然后将 tokens 映射为数字

0 加载数据集和分词器

from transformers import AutoTokenizer
from datasets import load_dataset

tokenizer = AutoTokenizer.from_pretrained("bert-base-uncased")
dataset = load_dataset("rotten_tomatoes", split="train")

1 对单条样本进行分词

tokenizer(dataset[0]["text"])
'''
{'input_ids': [101, 1996, 2600, 2003, 16036, 2000, 2022, 1996, 7398, 2301, 1005, 1055, 2047, 1000, 16608, 1000, 1998, 2008, 2002, 1005, 1055, 2183, 2000, 2191, 1037, 17624, 2130, 3618, 2084, 7779, 29058, 8625, 13327, 1010, 3744, 1011, 18856, 19513, 3158, 5477, 4168, 2030, 7112, 16562, 2140, 1012, 102], 
'token_type_ids': [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], 
'attention_mask': [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]}
'''

2 对整个数据集进行批量分词

def tokenization(example):
    return tokenizer(example["text"])

dataset = dataset.map(tokenization, batched=True)
dataset[0].keys()
'''
dict_keys(['text', 'label', 'input_ids', 'token_type_ids', 'attention_mask'])
'''

原先的text和label的基础上,多了input_ids,token_type_ids和attention_mask三个key

3 设置数据集格式以适配 PyTorch

dataset.set_format(type="torch", columns=["input_ids", "token_type_ids", "attention_mask", "label"])
dataset[0]
'''
{'label': tensor(1),
 'input_ids': tensor([  101,  1996,  2600,  2003, 16036,  2000,  2022,  1996,  7398,  2301,
          1005,  1055,  2047,  1000, 16608,  1000,  1998,  2008,  2002,  1005,
          1055,  2183,  2000,  2191,  1037, 17624,  2130,  3618,  2084,  7779,
         29058,  8625, 13327,  1010,  3744,  1011, 18856, 19513,  3158,  5477,
          4168,  2030,  7112, 16562,  2140,  1012,   102]),
 'token_type_ids': tensor([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
         0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]),
 'attention_mask': tensor([1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
         1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1])}
'''


http://www.kler.cn/a/446372.html

相关文章:

  • libmodbus安装使用
  • 3.使用SD卡挂载petalinux根文件系统
  • 基于LSB最低有效位的音频水印嵌入提取算法FPGA实现,包含testbench和MATLAB对比
  • 前端知识图谱 - JavaScript基础(变量和类型)
  • 模具生产过程中的标签使用流程图
  • 穷举vs暴搜vs深搜vs回溯vs剪枝系列一>找出所有子集的异或总和再求和
  • 【libuv】Fargo信令2:【深入】client为什么收不到服务端响应的ack消息
  • CCF-GESP 等级考试 2024年12月认证C++七级真题解析
  • 解决git clone时报错“authentication failed for huggingface repository”
  • Web应用中的CSRF防护机制
  • 【专升本】倒计时99天
  • Spring Security 6 系列之三 - Filter过滤器
  • Xcode 16 编译弹窗问题、编译通过无法,编译通过打包等问题汇总
  • 四大跨平台开发框架深度解析——uniapp、uniapp-X、React Native与Flutter
  • 服务器被入侵登录不上怎么办?
  • 0基础学前端-----CSS DAY9
  • 【JavaEE进阶】第一个Spring Boot程序
  • python elasticsearch 8.x通过代理发起请求方法
  • VMware安装Ubuntu24.04以及安装好后初步使用配置!
  • CSS系列(27)- 图形与滤镜详解
  • List深拷贝后,数据还是被串改
  • 监控易:开启摄像头故障监控的卓越之钥
  • 挑战一个月基本掌握C++(第七天)了解指针,引用,时间,输入输出,结构体,vector容器,数据结构 - 通用完结
  • go 聊天系统项目-5 客户端发消息
  • Kubernetes(k8s)离线部署DolphinScheduler3.2.2
  • C# 动态组合判断条件对数据进行筛选