tokenize

源码

def tokenize():
    eot = enc._special_tokens['<|endoftext|>'] # end of text token
    data_filename = os.path.join(DATA_CACHE_DIR, "tiny_shakespeare.txt")
    text = open(data_filename, 'r').read()
    # let's treat every person's statement in the dialog as a separate document
    text = "<|endoftext|>" + text
    text = text.replace('\n\n', '\n\n<|endoftext|>')
    # encode the text
    tokens = encode(text)
    tokens_np = np.array(tokens, dtype=np.int32)
    # let's take the first 32,768 tokens as the validation split (~10%)
    val_tokens_np = tokens_np[:32768]
    train_tokens_np = tokens_np[32768:]
    # save to file
    val_filename = os.path.join(DATA_CACHE_DIR, "tiny_shakespeare_val.bin")
    train_filename = os.path.join(DATA_CACHE_DIR, "tiny_shakespeare_train.bin")
    with open(val_filename, "wb") as f:
        f.write(val_tokens_np.tobytes())
    with open(train_filename, "wb") as f:
        f.write(train_tokens_np.tobytes())
    # prints
    print(f"Saved {len(val_tokens_np)} tokens to {val_filename}")
    print(f"Saved {len(train_tokens_np)} tokens to {train_filename}")

注释

    """
    将Tiny Shakespeare数据集进行分词处理,并将分词结果保存为二进制文件。

    Args:
        无参数。

    Returns:
        无返回值。

    """
def tokenize():
    # 结束文本标记
    eot = enc._special_tokens['<|endoftext|>'] # end of text token

    # 数据文件路径
    data_filename = os.path.join(DATA_CACHE_DIR, "tiny_shakespeare.txt")

    # 读取文件内容
    text = open(data_filename, 'r').read()

    # 将每个人的对话视为单独的文档
    # let's treat every person's statement in the dialog as a separate document
    text = "<|endoftext|>" + text

    # 在每个对话之间添加结束文本标记
    text = text.replace('\n\n', '\n\n<|endoftext|>')

    # 编码文本
    # encode the text
    tokens = encode(text)

    # 将 tokens 转换为 numpy 数组
    tokens_np = np.array(tokens, dtype=np.int32)

    # 取前 32,768 个 tokens 作为验证集(约占总量的 10%)
    # let's take the first 32,768 tokens as the validation split (~10%)
    val_tokens_np = tokens_np[:32768]

    # 剩余 tokens 作为训练集
    train_tokens_np = tokens_np[32768:]

    # 保存验证集到文件
    val_filename = os.path.join(DATA_CACHE_DIR, "tiny_shakespeare_val.bin")
    with open(val_filename, "wb") as f:
        f.write(val_tokens_np.tobytes())

    # 保存训练集到文件
    train_filename = os.path.join(DATA_CACHE_DIR, "tiny_shakespeare_train.bin")
    with open(train_filename, "wb") as f:
        f.write(train_tokens_np.tobytes())

    # 打印保存结果
    # prints
    print(f"Saved {len(val_tokens_np)} tokens to {val_filename}")
    print(f"Saved {len(train_tokens_np)} tokens to {train_filename}")

def tokenize():
    """
    对Tiny Shakespeare数据集进行分词和切分,以创建训练和验证数据集。
    
    该函数首先读取Tiny Shakespeare文本数据,然后对其进行处理,使得每个对话段落被视作独立的文档。
    接着,对处理后的文本进行编码,并将数据集划分为训练集和验证集。最后,将这些分好类的令牌保存到二进制文件中。
    
    参数:
    无
    
    返回值:
    无
    """
    # 获取结束文本标记的索引
    eot = enc._special_tokens[''] 
    # 指定数据文件的路径
    data_filename = os.path.join(DATA_CACHE_DIR, "tiny_shakespeare.txt")
    # 读取文本数据
    text = open(data_filename, 'r').read()
    # 将每个段落的结尾添加为结束文本标记,以便将每个段落作为单独的文档处理
    text = "" + text
    text = text.replace('\n\n', '\n\n')
    # 对处理后的文本进行编码
    tokens = encode(text)
    tokens_np = np.array(tokens, dtype=np.int32)
    # 将前32,768个令牌划分为验证集(约总数据集的10%)
    val_tokens_np = tokens_np[:32768]
    train_tokens_np = tokens_np[32768:]
    # 将训练集和验证集令牌保存到二进制文件
    val_filename = os.path.join(DATA_CACHE_DIR, "tiny_shakespeare_val.bin")
    train_filename = os.path.join(DATA_CACHE_DIR, "tiny_shakespeare_train.bin")
    with open(val_filename, "wb") as f:
        f.write(val_tokens_np.tobytes())
    with open(train_filename, "wb") as f:
        f.write(train_tokens_np.tobytes())
    # 打印保存的令牌数量和文件路径
    print(f"Saved {len(val_tokens_np)} tokens to {val_filename}")
    print(f"Saved {len(train_tokens_np)} tokens to {train_filename}")

解释

这段代码是一个用于将文本数据分为训练集和验证集的Python函数。以下是对该代码的逐行解释:

  1. def tokenize(): - 定义一个名为tokenize的函数。

  2. eot = enc._special_tokens['<|endoftext|>'] - 从enc对象(该对象在此代码段中未定义,可能是外部的全局变量或已导入的对象)的特殊标记中获取"end of text"的标记,并将其赋值给eot变量。

  3. data_filename = os.path.join(DATA_CACHE_DIR, "tiny_shakespeare.txt") - 使用os.path.join函数将DATA_CACHE_DIR(另一个未在此代码段中定义的变量,可能是一个路径字符串)和文件名"tiny_shakespeare.txt"组合成一个完整的文件路径,并将其赋值给data_filename变量。

  4. text = open(data_filename, 'r').read() - 打开data_filename指定的文件,并读取其内容,然后将其赋值给text变量。

  5. text = "<|endoftext|>" + text - 在text的开头添加"end of text"标记。

  6. text = text.replace('\n\n', '\n\n<|endoftext|>') - 将text中的所有连续两个换行符替换为连续两个换行符后跟一个"end of text"标记。

  7. tokens = encode(text) - 调用encode函数(该函数在此代码段中未定义)对text进行编码,并将结果赋值给tokens变量。

  8. tokens_np = np.array(tokens, dtype=np.int32) - 使用NumPy库将tokens转换为一个32位整数的NumPy数组,并将其赋值给tokens_np变量。

  9. val_tokens_np = tokens_np[:32768] - 从tokens_np数组中获取前32,768个元素作为验证集,并将其赋值给val_tokens_np变量。

  10. train_tokens_np = tokens_np[32768:] - 从tokens_np数组中获取从第32,769个元素开始的所有元素作为训练集,并将其赋值给train_tokens_np变量。

  11. val_filename = os.path.join(DATA_CACHE_DIR, "tiny_shakespeare_val.bin") - 为验证集创建一个文件名,由DATA_CACHE_DIR"tiny_shakespeare_val.bin"组合而成,并将其赋值给val_filename变量。

  12. train_filename = os.path.join(DATA_CACHE_DIR, "tiny_shakespeare_train.bin") - 为训练集创建一个文件名,由DATA_CACHE_DIR"tiny_shakespeare_train.bin"组合而成,并将其赋值给train_filename变量。

  13. 使用with open(val_filename, "wb") as f:with open(train_filename, "wb") as f:语句块分别打开验证集和训练集的文件,并将它们的内容以二进制形式写入文件。

  14. 最后两行是打印语句,分别显示验证集和训练集中保存的令牌数量以及对应的文件路径。

简而言之,这个函数读取一个文本文件,使用特殊的"end of text"标记将对话中的每个人的陈述分隔开,然后对该文本进行编码,并将编码后的令牌分为验证集和训练集,最后将这两个集合分别保存到二进制文件中。

该函数用于对Tiny Shakespeare数据集进行预处理和划分,将数据集中的文本进行编码,并将其划分为训练集和验证集。具体步骤包括:读取Tiny Shakespeare数据集文本,将每個人的陈述作为单独的文档处理,对文本进行编码,将编码后的文本划分为训练集和验证集,并将划分后的数据集保存为二进制文件。最后,打印保存的训练集和验证集的令牌数量和文件路径。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/612658.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

mysql中sql语句 exists 判断子句的用法

如果子查询成立才执行父查询 exists判断子查询的使用例子&#xff1a; 张三不存在所以前面的父查询不执行 后面的子句结果存在&#xff0c;所以前面的父查询被执行 where条件所连接的嵌套子查询都是&#xff0c;条件子查询 ———————————————————————…

无人播剧项目怎么做,快手无人播剧全攻略,版权难题一招破解!

相信大家比较关注的问题就是快手无人直播无人播剧到底是不是真的&#xff1f;是不是骗人的&#xff1f;靠不靠谱&#xff1f;是不是真的能赚钱&#xff1f;会不会涉及到版权问题&#xff1f;等等。接下来我就给大家一一做解答&#xff01; 首先关于快手无人播剧是不是骗人的&a…

Python-VBA函数之旅-sorted函数

目录 一、sorted函数的常见应用场景 二、sorted函数使用注意事项 三、如何用好sorted函数&#xff1f; 1、sorted函数&#xff1a; 1-1、Python&#xff1a; 1-2、VBA&#xff1a; 2、推荐阅读&#xff1a; 个人主页&#xff1a; https://blog.csdn.net/ygb_1024?spm1…

【WEEK11】 【DAY4】Employee Management System Part 5【English Version】

2024.5.9 Thursday Continued from 【WEEK11】 【DAY3】Employee Management System Part 4【English Version】 Contents 10.6. Add Employee10.6.1. Modify list.html10.6.2. Modify EmployeeController.java10.6.3. Create add.html10.6.4. Restart and Run 10.6. Add Emplo…

【Vue3进阶】- Pinia

什么是Pinia Pinia 是 Vue 的专属状态管理库&#xff0c;它允许你跨组件或页面共享状态。它提供了类似于 Vuex 的功能&#xff0c;但比 Vuex 更加简单和直观。 需要在多个组件之间共享状态或数据时使用 Pinia 的 store&#xff0c;这样可以避免 props 和 eventBus 等传统方法…

刷代码随想录有感(62):修建二叉搜索树

题干&#xff1a; 代码&#xff1a; class Solution { public:TreeNode* traversal(TreeNode* root, int low, int high){if(root NULL)return NULL;if(root->val < low)return traversal(root->right, low, high);if(root->val > high)return traversal(ro…

MATLAB 基于格网的点云最低点采样 (69)

MATLAB 基于格网的点云最低点采样 (69) 一、算法原理二、算法实现1.代码2.效果三、数据链接一、算法原理 最低点格网采样是一种基于点云数据的简化技术。它通过将点云数据划分为网格,并在每个网格单元中保留最低的点来实现简化。以下是该方法的步骤: 1 定义格网尺度: 选…

服务智能化公共生活场景人员检测计数,基于YOLOv9系列【yolov9/yolov9-c/yolov9-e】参数模型开发构建公共生活场景下人员检测计数识别系统

在当今社会&#xff0c;随着科技的飞速发展&#xff0c;各种智能化系统已广泛应用于各个领域&#xff0c;特别是在人员密集、流动性大的场合&#xff0c;如商场、火车站、景区等&#xff0c;智能人员检测计数系统发挥着至关重要的作用。特别是在特殊时期&#xff0c;如节假日、…

简单的神经网络

一、softmax的基本概念 我们之前学过sigmoid、relu、tanh等等激活函数&#xff0c;今天我们来看一下softmax。 先简单回顾一些其他激活函数&#xff1a; Sigmoid激活函数&#xff1a;Sigmoid函数&#xff08;也称为Logistic函数&#xff09;是一种常见的激活函数&#xff0c…

EPAI手绘建模APP动画、场景、手势操作

(15) 动画 图 299 动画控制器 ① 打开动画控制器。播放动画过程中&#xff0c;切换场景观察视角时&#xff0c;自动停止播放。动画编辑参见常用工具栏-更多-动画动画编辑器部分。 ② 关闭动画控制器。 ③ 设置动画参数&#xff1a;设置动画总帧数&#xff1b;这只帧率&#x…

从RAID 0到RAID 10:全面解析RAID技术与应用

&#x1f407;明明跟你说过&#xff1a;个人主页 &#x1f3c5;个人专栏&#xff1a;《Linux &#xff1a;从菜鸟到飞鸟的逆袭》&#x1f3c5; &#x1f516;行路有良友&#xff0c;便是天堂&#x1f516; 目录 一、前言 1、磁盘阵列简介 2、磁盘阵列诞生背景 3、硬件RA…

Spring Boot集成activiti快速入门Demo

1.什么事activiti&#xff1f; Activiti是一个工作流引擎,可以将业务系统中复杂的业务流程抽取出来,使用专门的建模语言BPMN2.0进行定义,业务流程按照预先定义的流程进行执行,实现了系统的流程流activiti进行管理,减少业务系统由于流程变更进行系统升级改造的工作量,从而提高系…

与队列和栈相关的【OJ题】

✨✨✨专栏&#xff1a;数据结构 &#x1f9d1;‍&#x1f393;个人主页&#xff1a;SWsunlight 目录 一、用队列实现栈&#xff1a; 1、2个队列的关联起来怎么由先进先出转变为先进后出&#xff1a;&#xff08;核心&#xff09; 2、认识各个函数干嘛用的&#xff1a; …

pgbackrest 备份工具使用 postgresql

为啥我会使用pgbackrest进行备份&#xff1f;因为postgresql没有自带的差异备份工具。。。而我们在生产环境上&#xff0c;一般都需要用到差异备份或者增量备份。我们的备份策略基本是&#xff0c;1天1次完整备份&#xff0c;1个小时1次差异备份。如果只需要完整备份&#xff0…

【Mac】Indesign 2023 Mac(ID2023) v18.5中文版安装教程

软件介绍 Adobe InDesign是一款由Adobe Systems开发的桌面排版软件&#xff0c;旨在用于创建、编辑和格式化印刷和数字出版物&#xff0c;如书籍、杂志、报纸、传单等。以下是一些关于Adobe InDesign的主要特点和功能&#xff1a; 1.强大的排版工具&#xff1a;InDesign提供了…

Linux的命令(第二篇)

昨天学习到了第17个命令到 rm 命令&#xff08;作用删除目录和文件&#xff09;&#xff0c;今天继续往下里面了解其他命令以及格式、选项&#xff1a; &#xff08;17&#xff09;wc命令&#xff08;此wc非wc&#xff09; 作用&#xff1a;统计行数、单词数、字符分数。 格…

JavaScript使用 BigInt

在 JavaScript 中&#xff0c;最大的安全整数是 2 的 53 次方减 1&#xff0c;即 Number.MAX_SAFE_INTEGER&#xff0c;其值为 9007199254740991。这是因为 JavaScript 中使用双精度浮点数表示数字&#xff0c;双精度浮点数的符号位占 1 位&#xff0c;指数位占 11 位&#xff…

探索计算之美:HTML CSS 计算器案例

本次案例是通过HTML和CSS&#xff0c;我们可以为计算器赋予独特的外观和功能&#xff1b; 在这个计算器中&#xff0c;你将会发现&#xff1a; 简洁清晰的界面设计&#xff0c;使用户能够轻松输入和查看计算结果。利用HTML构建的结构&#xff0c;确保页面具有良好的可访问性和…

gitee 简易使用 上传文件

Wiki - Gitee.com 官方教程 1.gitee 注册帐号 2.下载git 安装 http://git-scm.com/downloads 3. 桌面 鼠标右键 或是开始菜单 open git bash here 输入&#xff08;复制 &#xff0c;粘贴&#xff09; 运行完成后 刷新网页 下方加号即可以添加文件 上传文件 下载 教程…

前端崽的java study笔记

文章目录 basic1、sprint boot概述2、sprint boot入门3、yml 配置信息书写和获取 basic 1、sprint boot概述 sprint boot特性&#xff1a; 起步依赖&#xff08;maven坐标&#xff09;&#xff1a;解决配置繁琐的问题&#xff0c;只需要引入sprint boot起步依赖的坐标就行 自动…