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数据集文本,将每個人的陈述作为单独的文档处理,对文本进行编码,将编码后的文本划分为训练集和验证集,并将划分后的数据集保存为二进制文件。最后,打印保存的训练集和验证集的令牌数量和文件路径。

相关推荐

  1. <span style='color:red;'>tokenize</span>

    tokenize

    2024-05-11 14:46:07      41 阅读
  2. flask中生成token,校验tokentoken装饰器

    2024-05-11 14:46:07       66 阅读
  3. Auto tokenizer和Bert tokenizer的区别

    2024-05-11 14:46:07       63 阅读
  4. Jwt生成token以及解析token

    2024-05-11 14:46:07       48 阅读
  5. Electron axios token失效刷新token

    2024-05-11 14:46:07       36 阅读
  6. C#生成Token字符串

    2024-05-11 14:46:07       54 阅读
  7. Android 12 Token 机制

    2024-05-11 14:46:07       43 阅读
  8. JWT令牌(Token)设计

    2024-05-11 14:46:07       50 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-05-11 14:46:07       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-05-11 14:46:07       100 阅读
  3. 在Django里面运行非项目文件

    2024-05-11 14:46:07       82 阅读
  4. Python语言-面向对象

    2024-05-11 14:46:07       91 阅读

热门阅读

  1. HTTP 报文详解

    2024-05-11 14:46:07       35 阅读
  2. final关键字

    2024-05-11 14:46:07       29 阅读
  3. Vue的生命周期

    2024-05-11 14:46:07       39 阅读
  4. python文本转语音

    2024-05-11 14:46:07       30 阅读
  5. Swift 函数

    2024-05-11 14:46:07       32 阅读
  6. 厦门智慧在线教育系统,公开课如何进行销讲?

    2024-05-11 14:46:07       30 阅读