Transformer 通关秘籍6:词汇表:文本到数值的转换

前面几节一直在介绍 token 相关的内容,相信你看到这里,对 token 肯定很了解了吧。如果对 token 本身还有其他疑问,可以在本文下留言。

本节开始,进入下一步骤,由 token 到数值的转换。该步骤大概包括几个重要的节点:

  1. 文本到数值
  2. 数值到词向量
  3. 词向量到 Transformer 可以直接处理的向量

以上3个步骤中,每一个其背后都有重要的意义和作用。

本节先介绍第一个步骤:文本到数值的转换。

为什么需要文本到数值的转换?

在之前介绍相关的内容时曾经说到过:计算机能处理的仅仅是数值(更精确点是二进制数据)。

在这里你就简单的理解为计算机只可以处理数值就可以了。

一张画着小狗的图像,计算机是如何可以识别出这是一只狗呢?

视觉模型处理这张图像时,处理的其实是图像像素之间的关系和特征(基于像素值),经过深层的神经网络,模型可以学习到像素之间的关系,并且提取出图像中物体的各种关键特征。

计算机对图像进行处理,是以像素值为基础单位的,同样的,计算机对文本语言进行处理,是以 token 为基本单位。

但是 token 是字符串呀,字符串在计算机芯片(处理器)的体系中是没有办法运算的。因此,让计算机能够完成运算的第一步,就是需要将 token 转换为数值。

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

怎么转换呢?

通过词汇表。

自然语言模型(或大模型)的研究人员,首先需要收集大量的文本数据进行AI模型的训练,这些数据可能来自出版的书籍、新闻杂志、网站、社交媒体等等。

随后,将收集到的文本数据进行预处理,比如去除掉一些无用的信息、修正一些拼写错误、统一格式等等。

然后,将预处理过的文本进行分词,分词所用的算法和过程可以参考4、文本token化的过程是怎样的。

分词之后,便得到了一个由所有文本 token 组成的词汇表。当然这里还需要对此词汇表进行一些处理(比如使用统计的方法,将一些出现频率很高的 token 保留着词汇表中,将一些不常见或者频率非常低的词汇,从词汇表删除或者用其他的 token 来代替等等)。

总之,经过分词和处理之后,便可以得到一个可用的词汇表,这个词汇表便包含了所搜集的所有文本分词之后的 token 。

在很多大模型中,词汇表是一个文本文件,比如在 bert-base-uncased 模型中,词汇表为 vocab.txt 文件。

你可以通过以下命令来查看词汇表的大小和行数。

shell 复制代码
$ wc -l vocab.txt // 查看 vocab.txt 的行数
30522 vocab.txt

可以看到,bert-base-uncased 模型的 vocab.txt 文件共有 30522 行,也就是说 bert-base-uncased 模型使用的词汇表中包含了 30522 个 token 。

这些 token 在 vocab.txt 中,具有唯一的序号:从 0 开始编码,一直到 30521,这样就完成了 token 字符串到数字的映射。

因此, token 映射到数值的第一步便是先映射到 token ID,也就是 token 在所构建的词汇表中的序号。

这么一听文本转换为数值是不是感觉挺简单的?

别急,这只是第一步,还有其他的步骤在后面再详细介绍。

这里,先来验证一下 token 在词汇表中的序号和通过程序获取的 token ID是否对应。

在《利用 Bert 将文本 token 化》这篇文章中,对 "I" (我)分词后仍然得到"I"(我),并且程序显示其 token ID 为1045。

通过查看 vocab.txt 文件的第 1045 行的 token ,发现确实是i(这里我打开 txt 文件的工具是从1排序的,所以显示为序号是 1046,词汇表中的 ID 是从 0 排序的)。

关于本节的内容,可以这么简单的理解:

计算机处理文本需要先将其转换为数值,于是就建立一个词汇表。

词汇表中的序号本身就是数值,每个序号对应一个tokne。

如此一来,词汇表就相当于一个字典,这个字典在计算机数值语言和人类语言之间架起了一座桥梁。

计算机在拿到数值后,就可以十分方便的进行后面的一列操作了。

我创建了一个《小而精的AI学习圈》知识星球,星球上有几十万字原创高质量的技术专栏分享,同时你也可以在星球向我提问。 点击这里,我们星球见! >>>
点击这里查看所有 AI 技术专栏

相关推荐
学行库小秘36 分钟前
基于门控循环单元的数据回归预测 GRU
人工智能·深度学习·神经网络·算法·回归·gru
_meow_1 小时前
数学建模 15 逻辑回归与随机森林
算法·数学建模·逻辑回归
二向箔reverse2 小时前
机器学习算法核心总结
人工智能·算法·机器学习
猿究院--冯磊2 小时前
JVM垃圾收集器
java·jvm·算法
野犬寒鸦3 小时前
力扣hot100:最大子数组和的两种高效方法:前缀和与Kadane算法(53)
java·后端·算法
我家大宝最可爱4 小时前
动态规划:入门思考篇
算法·动态规划·代理模式
肉夹馍不加青椒4 小时前
第三十三天(信号量)
java·c语言·算法
古译汉书4 小时前
嵌入式-SPI番外之按钮驱动程序的编写-Day15
c语言·stm32·单片机·嵌入式硬件·mcu·算法
快去睡觉~5 小时前
力扣48:旋转矩阵
算法·leetcode·矩阵
卡洛斯(编程版6 小时前
(1) 哈希表全思路-20天刷完Leetcode Hot 100计划
python·算法·leetcode