首页 > 其他分享 >使用tokenizer进行数据处理的基本步骤

使用tokenizer进行数据处理的基本步骤

时间:2024-03-22 15:58:05浏览次数:32  
标签:tokenizer 步骤 self ids len tokens token 数据处理 data

一、打开data数据(以csv为例)

#打开并且预处理数据(以一个四类数据一个标签的数据库为例)
def data_read(data_dir):
    data = pandas.read_csv(data_dir)
    data['content'] = data['content'].fillna('')
    data['text'] = data['content'] + data['label1'] + data['label2'] + data['label3'] + data['lable4']
    return data

二、补充长度不够的数据,使得数据长度一致

def fill_paddings(data, max_len):
    if len(data) <= maxlen:
        pad_len = max_len - len(data)
        padding = [0 for _ in range(pad_len)]
        data = torch.tensor(data + padding)
    else:
        data = torch.tensor(data[:max_len])
    return data

三、使用tokenizer

class DataInput():
    def __init__(self, tokenizer, max_len):
        self.data = data
        self.tokenizer = tokenizer
        self.max_len = max_len

    def __len__(self,):
        return len(self.data)

    def __getitem__(self, item):
        text = str(self.data['text'][item])
        labels = self.data['labels'][item]
        labels = torch.tensor(labels, dtype = torch.long)

        #手动构建三个要素
        tokens = self.tokenizer.tokenize(text)
        tokens_ids = self.tokenizer.convert_tokens_to_ids(tokens)
        tokens_ids = [101] + tokens_ids + [102]
        input_ids = fill_paddings(tokens_ids, self.max_len)

        attention_mask = [1 for _ in range(tokens_ids)]
        attention_mask = fill_paddings(attention_mask, self.max_len)

        token_type_ids = [0 for _ in range(tokens_ids)]
        token_type_ids = fill_paddings(token_type_Ids, self.max_Len)

        return {
                'text' : text
                'input_ids' : input_ids
                'attention_mask' : attention_mask
                'token_typen_ids' : token_type_ids
                'labels' : labels
                }

注:此处的token_type_ids是不严谨的定义,由于在本博客中,默认每个token_ids都只表示一句话,所以本是用来分割两句话的token_type_ids设置为单一的0值而不是第一句0表示,第二句1表示。

标签:tokenizer,步骤,self,ids,len,tokens,token,数据处理,data
From: https://blog.csdn.net/AsukaRanyo/article/details/136918796

相关文章

  • 麒麟系统修改网卡名步骤和网卡占用故障处理
    第1章 单网卡环境修改网卡名■修改网卡配置。•检查当前网卡名称和MAC地址,网卡名称ens33,MAC地址00:0c:29:ab:3a:40。[root@localhost~]#ipa1:lo:<LOOPBACK,UP,LOWER_UP>mtu65536qdiscnoqueuestateUNKNOWNgroupdefaultqlen1000link/loopback00:00:......
  • 数据仓库的数据处理架构Lambda和Kappa
    1.数据仓库数据仓库(Data Warehouse),简写DW。顾名思义,数据仓库是一个很大的数据存储集合,为企业分析性报告和决策支持而创建,是对多元业务数据的筛选与整合,具备一定的BI能力,主要用于企业的数据分析、数据挖掘、数据报表等方向,指导业务流程改进、监视时间、成本、质量以及控......
  • C++序列点解析:确保代码行为可控的关键步骤
     概述:在C++中,序列点是表达式中确保求值顺序的点。其缺失可能导致未定义行为。基础功能示例演示了自增运算符的序列点,而高级功能示例展示了函数调用的序列点,有助于避免不确定行为。在编写代码时遵循序列点规则是确保程序行为可预测的关键。在C++中,序列点是在表达式中保证求值......
  • QT增加线程函数步骤流程
    在使用线程的时候,不仅要关注线程开启的时机,同时还要关注线程安全退出,这样才能保证程序的健壮性,如果线程开启的较多,且开启关闭比较频繁,建议使用线程池来处理。开启线程有三种方式:第一种C++的开线程方式;第二种自定义一个继承自QObject的类,把要处理的事情放在这个类中实现,然后再ne......
  • VUE3 ECharts5 快速上手(附详细步骤)
    安装pnpminstallecharts引入EChartsimport*asechartsfrom'echarts';设置容器注意:虽然echarts可以在配置时设置宽高,但还是推荐在配置前直接为容器设置宽高<template><divid="main"class="echart-style"></div></template><style......
  • 个人App上架步骤详解
    ​ 想要成功将个人开发的App上架到应用商店,需要经过一系列关键步骤,包括注册开发者账号、准备应用材料、提交审核等。以下将对这些步骤进行详细介绍。   ​一、注册开发者账号在将应用程序发布至应用商店之前,开发者需要注册开发者账号。目前,主要的应用商店包括苹果App......
  • 个人开发App成功上架手机应用市场的关键步骤
    在当前移动应用市场竞争激烈的背景下,个人开发App如何成功上架成为开发者们必须面对的重要任务。本文将重点介绍自建App上架至手机应用市场的流程,包括苹果审核、APP备案、APPStore审核以及上线工作,旨在帮助开发者顺利将自建App推向市场并提升应用可见性。近年来,个人开发App备受瞩......
  • 初学如何建立图床,详细步骤如下(包含遇到的困难)
    首先,为了对图床搭建的过程有一个整体感受,先简要列出主要步骤:1.下载WattToolkit,并学会如何使用其进行加速2.用github创建图床服务器(包括创建新仓库,生成token令牌)3.下载PicGo4.配置PicGo5.使用PicGo上传图片接下来,详细的搭建图床过程开始啦!整个搭建图床中,我主要借鉴了这篇......
  • 做一道题的基本步骤
    作为一个合格的编程爱好者,刷题是必不可少的。那么,我们应该如何去完成每一道题呢?下面我就告诉你做一道题的基本步骤。这里我们以去年小学组省赛第三题(Topscoding)为例。第一步:读题读题无疑是很重要的一步。认真、仔细的读题可以帮助我们更深刻的理解题意,使我们能更快、更高效的完......
  • tokenizer分词器中的BPE分词方法的原理、样例、代码示例
    BytePairEncoding(BPE):想象一下你正在玩一种叫做“文字乐高”的游戏。在这个游戏中,你有很多小块,每个小块上写着一个字母或汉字。你的任务是用这些小块来构建单词或句子。开始时,你只能用单个字母或汉字的小块。但是游戏规则允许你找出那些经常一起出现的字母或汉字对,然后把它......