Transformer 通关秘籍3:利用 GPT2 将文本 token 化

在上一节,利用 BERT 模型将一个文本进行了 token 化。那你可能会问,是不是所有的模型将同一个文本 token 化之后,结果都一样呢?

当然不是。
这是因为不同的模型对文本进行 token 化时使用到的算法不一样。

在 BERT 中用到的是 WordPiece 算法,而 GPT 系列模型将文本进行 token 化时,使用的则是 Byte-Pair Encoding(BPE)算法,这两种算法虽然不是本专栏的重点,但后面也会专门来讲解一下。

下面来看一下如何使用 GPT2 模型来对文本进行 token 化,以及 GPT2 模型对文本 token 化之后的 token 序列和 BERT 输出的 token 序列有什么不同?

GPT2 如何对文本进行转换

GPT 发展

GPT(Generative Pre-trained Transformer)大家应该都不陌生了,它是 OpenAI 开发的一系列自然语言处理模型,这些模型同样可以用于生成文本、语言理解和其他语言相关的任务。

GPT1 发布于 2018 年,也是 GPT 系列最早的一个版本,当时发布时,就以其巨大的参数量(在当时而言)出名了。

GPT2 发布于 2019 年,是在 GPT1 版本上的演进。

GPT3 发布于 2020 年,参数量达到了 1750 亿个。

在 2023 年火爆出圈的 chatGPT 是基于 GPT-3.5 版本而来的,这是 GPT3 的增强版本,专门优化了模型的语言生成和对话能力,后来 2023 年又出了 GPT4,据说现在OpenAI 正在秘密训练 GPT5,不过目前还没有见到官方报道。

关于 GPT 系列的更多的介绍,可以参考这里:炸裂!GPT5 发布日期曝光

这里有一个全程一站式的 Transformer 讲解和实战辅导,带你从零手写一个可对话的大模型,点击链接查看详情从零手写大模型实战

利用 GPT2 将文本 token 化

本节使用一个 GPT 早期版本(GPT2)来将一段文本进行 token 化,相关代码如下:

from transformers import GPT2 token izer
# 加载模型和 token izer
 token izer = GPT2 token izer.from_pretrained('GPT2')

# 初始文本
prompt = "I debug my code all day, and I am like a debugger."

encode_id =  token izer.encode(prompt)
print(encode_id)
 token s =  token izer.convert_ids_to_ token s(encode_id)
print( token s)

上述代码运行完,会打印出 token 序列如下:

['I', 'Ġdebug', 'Ġmy', 'Ġcode', 'Ġall', 'Ġday', ',', 'Ġand', 'ĠI', 'Ġam', 'Ġlike', 'Ġa', 'Ġdebugger', '.']

可以看到,GPT2 输出的 token 序列与 BERT 输出的 token 序列并不一致,其中,每个单词前面的特殊符号表明这是一个新词的开始,用来将词与词进行区分。

你可以重点关注一下 debug 这个单词。在 BERT 中,debug被拆分为了de,bu和g三个子词,而在 GPT2 的输出中仍然是 debug,这便跟模型使用的算法有关。

同样,你也可以修改上述代码中的文本 text,看模型将其 token 化之后是什么样的。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

董董灿是个攻城狮

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值