tokenize

2024-05-11 13:12
文章标签 tokenize

本文主要是介绍tokenize,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

源码

def tokenize():eot = enc._special_tokens['<|endoftext|>'] # end of text tokendata_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 documenttext = "<|endoftext|>" + texttext = text.replace('\n\n', '\n\n<|endoftext|>')# encode the texttokens = 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 fileval_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())# printsprint(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 documenttext = "<|endoftext|>" + text# 在每个对话之间添加结束文本标记text = text.replace('\n\n', '\n\n<|endoftext|>')# 编码文本# encode the texttokens = 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())# 打印保存结果# printsprint(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 = "" + texttext = 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数据集文本,将每個人的陈述作为单独的文档处理,对文本进行编码,将编码后的文本划分为训练集和验证集,并将划分后的数据集保存为二进制文件。最后,打印保存的训练集和验证集的令牌数量和文件路径。

这篇关于tokenize的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/979627

相关文章

Jenkins高级篇之Pipeline实践篇-2-groovy中字符串操作split()和tokenize()区别

这篇来一个字符串切割的练习,很多人知道字符串切割是用split()方法,但是很少人知道在groovy中,有一个方法叫tokenize(),这两个方法其实都可以实现字符串切割,但是两者还是有区别的,本篇就来学习和掌握两者的共同点和区别。我也是,之前第一选择就是使用split()函数,直到知道有tokenize()方法, 1.split()得到结果是一个字符串数组,tokenise()得到结果是一个

NLP中常见的tokenize方式及token类型

目录 Tokenizer的细节与计算方式Tokenizer的计算方式各种Tokenizer的优缺点 NLP中常用的Tokens单词Tokens(Word Tokens)子词Tokens(Subword Tokens)字符Tokens(Character Tokens)字节Tokens(Byte Tokens)N-gram Tokens语法Tokens(Syntax Tokens)特殊Toke

Tokenize Anything via Prompting

SAM的延续,把SAM输出的token序列用来进行分类,分割和一个自然语言的decoder处理,但其实现在多模态的图像的tokenizer也几乎都是用VIT来实现的。一开始认为这篇文章可能是关于tokenize的,tokenize还是很重要的,后来看完,整体思路大概就是一般来做带类别的sam,目前是grounding dino+sam的思路,先用一个开放词汇检测的目标检测算法通过text将区域框出

Command “D:\Python\code\venv\Scripts\python.exe -u -c “import setuptools, tokenize;__file__完美解决方法

问题长这样子   输入pip list命令,查看目前pip当前的版本为19.0.3,因为存在python版本与pip版本会有不兼容的问题,我的是py3.8,把pip版本更新到为20版本以上的。 输入命令pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple  切换镜像 打开pycharm,在

Tokenize Anything via Prompting论文解读

文章目录 前言一、摘要二、引言三、模型结构图解读四、相关研究1、Vision Foundation Models2、Open-Vocabulary Segmentation3、Zero-shot Region Understanding 五、模型方法解读1、Promptable TokenizationPre-processingPromptable segmentationConcept

webassembly003 TTS BARK.CPP-02-bark_tokenize_input(ctx, text);

bark_tokenize_input函数 bark是没有语言控制选项的,但是官方的版本无法运行中文bark_tokenize_input会调用bert_tokenize函数,bark_tokenize_input函数对中文分词失效,也就是导致不支持中文的原因。 void bark_tokenize_input(struct bark_context * ctx, const char *