深度学习 A to Z · 3-5

文本 — 从字符到数字向量

对计算机来说,“초파리”(果蝇)从一开始就是数字。每个字符都有一个规定好的编号(Unicode),这个编号以字节的形式存储。要把文本送进神经网络,需要把句子切分成词元(token),给每个词元编号,再把编号变成承载含义的向量(嵌入),并加上顺序信息。本页用一个只有 36 句的小型韩语语料库,亲手计算每一个步骤。

11,172 个可以组合出的现代韩文音节(19 × 21 × 28)
3 字节一个韩文字符的 UTF-8 大小
10 → 3 个“초파리가 꽃을 좋아한다”(果蝇喜欢花)的词元数(BPE 合并 0 次 → 60 次)
0.970“초파리는”(果蝇)与“모기는”(蚊子)的嵌入余弦相似度
36 句本页的语料库
2 段可在 Colab 中直接运行的代码
1Unicode

Unicode — 每个字符的编号,以及字节

韩文音节编号 = 0xAC00 + (初声 × 21 + 中声) × 28 + 终声Unicode 标准第 3.12 节

示例句子
2词元切分

词元切分 — 既不是字符也不是单词,而是“常出现的片段”

按字符切分,词元会太多;按单词切分,又无法处理没见过的词。BPE 在语料库中反复把最常相邻出现的两个片段合并成一个,从而找到两者之间的折中。

合并次数
句子
3词元编号

词元编号 — 在词表中排第几格

BPE 合并 60 次后,把语料库中出现的词元收集起来就构成词表。每个词元都会得到词表中的格子编号。词表中没有的词元会得到“未知”编号。

句子
4嵌入

嵌入 — 把编号变成“承载含义的坐标”

编号 54 和 55 虽然相邻,但含义毫无关系。所以要给每个编号配上一个多维向量,目标是让用法相似的词拥有相近的坐标。这里用“在同一句中前后 ±2 个位置内共同出现的次数”,为 55 个词各做了一个 8 维向量。

单词

给初学者的解说

“经常一起出现的词相似,含义也相似”这一想法由来已久。把词与文档的出现表用奇异值分解压缩、找出隐藏语义结构的潜在语义分析(LSA)是具有代表性的早期方法 [R2]。本页对词与词共同出现的次数表取 log(1 + 次数),再用特征值分解提取出 8 维。如今的语言模型则把嵌入作为“预测下一个词元”训练的一部分一起学习。第 5 节的位置信息也是加到这个向量上的。

5位置信息

位置信息 — 词袋不知道顺序

如果把词元不分顺序地装进袋子里计数(词袋),顺序就消失了。韩语的助词会标明词的角色,所以语序改变时含义常常不变,但并非总是如此。

比较
6模型处理

模型如何处理 — 下一个词元的概率

文本 → 词元 → 编号 → 向量(+位置)→ Transformer(3-8)→ 下一个词元的概率。最简单的语言模型只看前一个词来统计下一个词。我们用这个语料库亲手算一算,再看看 Transformer 多做了什么。

前一个词

Colab 代码 — 亲手运行本页内容

两段代码都只使用 Colab 默认安装的库。点击“下载笔记本(.ipynb)”后,在 Colab 中通过文件 → 上传笔记本打开,或者复制后粘贴到新笔记本的单元格中。

代码 1 · 从字符到数字 — Unicode、词元、编号、嵌入对应第 1~6 节 · numpy, matplotlib · CPU 1 秒

不借助库,计算 Unicode·UTF-8、韩文字母公式、BPE 的学习与应用、词元编号、由共现次数构成的嵌入,以及基于前一个词的概率。想换成自己的数据,就修改 CORPUS。

运行结果(2026-10-03 运行,Python 3.12 · numpy 2.4 · CPU)。计算中没有随机数,任何时候运行结果都相同。
代码 2 · 用 scikit-learn 走同样的流程 — 词元编号、句子向量、相似句子对应第 2·3·4 节 · numpy, scikit-learn · CPU 1 秒

用实务中常用的库把句子转换成“句子 × 词元”矩阵,比较按词切分与按字符片段切分,并用 TF-IDF 和潜在语义分析查找相似的句子。

运行结果(2026-10-03 运行,scikit-learn 1.8 · numpy 2.4 · CPU)。TruncatedSVD 的随机种子固定为 0。

AI 应用提示词 — 以这段代码为起点

这是粘贴到 ChatGPT、Qwen、Claude 等 AI 助手中的提示词。点击“复制”时,所选代码会一并附在提示词后面。把〔 〕里的内容换成自己的情况即可。

一并附上的代码

AI 的回答只是起点。它提出的论文·数值·库函数务必对照原文和官方文档核实。如果在竞赛·论文中借助了 AI,请按照主办方和期刊的规定说明使用的事实和范围。

术语表

与正文中黄色虚线下划线相同的词典。整个系列使用统一的写法。点击章节名可跳到首次出现的位置。

类比合集 — 以及类比失灵之处

类比是理解的第一步,但也可能成为误解的种子。果蝇·大脑类比标注了强度。直接 有证据表明实际在做同样的事 · 部分 只有部分性质相似 · 无 尚未发现对应的东西

概念日常类比果蝇·大脑类比类比失灵之处
Unicode给全世界的字符分配的身份证号无编号只用于区分字符,并不能说明字符之间有多相似
BPE把经常一起使用的词做成缩略语(“초파리”作为一个整体)无缩略语是人根据含义创造的,而 BPE 只看次数来合并,也会产生与含义无关的片段
词元编号图书馆藏书的索书号无索书号按主题聚在一起,而词元编号只是按字母顺序或出现顺序排列
嵌入地图上的坐标:相邻的街区彼此相似部分 果蝇的蘑菇体用多个凯尼恩细胞的激活模式(向量)来表示气味蘑菇体把气味广泛分散开,使之容易区分(稀疏),而嵌入则把信息紧凑地装进几百维中。生成方法也不同
词袋把句子剪成单词卡片装进信封无从信封里取出卡片,也无法知道原来的顺序。韩语中,助词卡片能提供部分线索
下一个词元的概率在词语接龙中猜下一个词部分 有研究表明,大脑也会预测接下来的语音大脑的预测与含义、情境和身体经验交织在一起,而模型只靠字符片段的统计来计算

作者简介与参考文献

E-1 作者简介 · E-2 学术参考文献 · E-3 图片参考资料

E-1 作者简介

Sangsun Ahn(M-Robo 公司代表)

曾任职于韩国电气安全公社、《每日经济新闻》,现创办每日经济外部风投企业 M-Robo 公司并担任代表。M-Robo 公司是由媒体内部创业起步的媒体风投企业,曾为《国民日报》提供机器人记者(StockBot)服务,并在韩国互联网振兴院、韩国言论振兴财团、韩国广播通信电波振兴院等机构开展了多个项目。此后运营自有的 AI 新闻报纸 Money-Robo。任代表期间获得亚洲开放数据黑客马拉松冠军,并因在数据创业领域的贡献两次获得行政安全部长官奖,是人工智能及区块链领域 5 项专利的发明人和注册人。著有《AI 犯罪与自我防御》,并为韩国技术教育大学在线终身教育院开发了金融科技、统计学、人工智能领域的在线学习内容。最高学位为经济学博士(东国大学,微观数理经济学)。目前在国民大学、湖西大学等多所大学讲授数据及人工智能相关课程。详细简历

课程

  • Sangsun Ahn (2025). 《面向商业的数据科学》讲义. 韩国开放网络大学 人工智能融合学科.
  • Sangsun Ahn (2025). [K-数字] 人工智能自然语言处理. STEP(智能职业培训平台), 韩国技术教育大学 在线终身教育院.
  • Sangsun Ahn (2024). [K-数字] 金融科技数据分析基础. STEP(智能职业培训平台), 韩国技术教育大学 在线终身教育院.

STEP 课程直达链接:link.step.or.kr/1qyVoJ · link.step.or.kr/M9na9N · link.step.or.kr/brqEyc
如因网站改版无法顺利访问,请访问 www.step.or.kr。

论文与报告

  • Sangsun Ahn (2025). 利用国民养老保障面板数据的家庭支出预测模型研究:基于人工智能模型的方法. 《未来社会》, 16(2). 原文
  • Sangsun Ahn (2025). 利用国民养老保障面板数据的家庭支出预测模型研究:人工智能方法. 国民养老保障面板学术会议报告资料(2025.05.13), 国民年金公团 国民年金研究院. 报告资料
  • Sangsun Ahn (2025). 基于 SNS 文本的可疑毒品交易检测算法研究:以模式与语境分析为中心. 《未来社会》, 16(1). 原文
  • Sangsun Ahn (2024). 面向金融领域异常检测模型安全的基于统计的对抗性数据应对方案:实证分析与模拟结果. 《未来社会》, 15(3). 原文
  • Sangsun Ahn (2024). 利用人工智能、基于虚拟角色特性的 SNS 帖子检测解决方案. 2024 Summer Newmedia Party 海报发表(2024.06.19), 首尔媒体研究生院大学.
  • Sangsun Ahn (2024). 利用工伤面板数据的机器学习模型. 第 10 届工伤保险面板学术会议海报发表(2024.05.17), 劳动福利公团 劳动福利研究院.
  • Sangsun Ahn (2024). 虚拟资产时间序列数据的分析与预测:时间序列模型与人工智能模型的比较及改进建议. 《未来社会》, 15(1). 原文

E-2 学术参考文献

  1. [R1] Sennrich, R., Haddow, B., & Birch, A. (2016). Neural machine translation of rare words with subword units. Proceedings of the 54th Annual Meeting of the ACL, 1715–1725. doi:10.18653/v1/P16-1162 — 第 2 节(BPE 词元切分)
  2. [R2] Deerwester, S., Dumais, S. T., Furnas, G. W., Landauer, T. K., & Harshman, R. (1990). Indexing by latent semantic analysis. Journal of the American Society for Information Science, 41(6), 391–407. doi:10.1002/(SICI)1097-4571(199009)41:6<391::AID-ASI1>3.0.CO;2-9 — 第 4 节、代码 2(潜在语义分析)
  3. [R3] The Unicode Consortium. The Unicode Standard, 第 3.12 节 Conjoining Jamo Behavior(韩文音节的组合与分解公式). unicode.org — 第 1 节

E-3 语料库与图示参考资料

  • 语料库是 36 句的示例
  • 数字与代码 1 的计算相同

给教育者的提示

这是面向讲师、实务 OJT 负责人和辅导老师的教学指南。时间为预估值,请根据实际课堂调整。

对象想处理客户咨询、评论、文档等文本数据的大学生和从业者;好奇语言模型如何接收文本的人
先修知识向量和余弦相似度的概念。了解 3-8 的位置信息会让第 5·6 节更容易理解
学习目标① 说明字符 → Unicode → 字节的过程 ② 说明 BPE 构建词元词表的过程以及处理未见过的词的方法 ③ 说明编号、嵌入、位置信息各自为什么必要
预计时间阅读 35~45 分钟 · 演示 20 分钟 · Colab 实践 25 分钟(代码 1 15 分钟,代码 2 10 分钟)

三种教学方案

讲授型 50 分钟

以概念为主

导入 5 分钟(第 1 节 表情符号 4 字节)→ 第 2 节 BPE 15 分钟 → 第 3·4 节 15 分钟 → 第 5 节 dog bites man 5 分钟 → 第 6 节 5 分钟 → 检测题 5 分钟。

实务 OJT 90 分钟

以业务应用为主

用本团队文档中的 30 句话构建语料库 15 分钟 → 修改代码 1 的 CORPUS,重新计算 BPE 和嵌入 30 分钟 → 用代码 2 查找相似的咨询 25 分钟 → 讨论“未知”词元与个人信息处理 20 分钟。

一对一辅导

按水平安排进度

入门者只讲第 1·2·4 节。中级学员先手工做三次 BPE 合并(统计词频 → 找出最常见的组合),再与第 2 节的规则列表对照。

各节教学要点

章节停下来提问的问题操作提示
1 Unicode“字符数相同,为什么存储大小不同?”按韩语句子 → “Hello 초파리” → 表情符号句子的顺序
2 词元切分“为什么韩语词尾‘한다’最先被合并?”0 → 60 次,接着演示含未见过的词的句子
3 词元编号“54 号比 5 号大,这有意义吗?”在“AI가 꽃을 본다”(AI 看花)中指出“未知”词元
4 嵌入“从没教过‘昆虫’,为什么昆虫会聚在一起?”按 초파리는(果蝇)→ 신경망은(神经网络)的顺序比较邻居的性质
5 位置信息“韩语语序很自由,为什么还需要位置信息?”依次点击三种比较
6 模型处理“只看前一个词的模型有什么弱点?”比较“초파리는”(果蝇)和“꿀벌은”(蜜蜂)的概率

常见误解 Top 5

误解正确解释要展示的场景
词元 = 单词词元是由语料库决定的片段,可能是字符,可能是单词,也可能介于两者之间第 2 节
一个韩文字符占 1 字节在 UTF-8 中,韩文音节占 3 字节第 1 节
词元编号相近,含义也相近编号只是词表中的格子位置,含义装在嵌入里第 3·4 节
嵌入相近就是同义词经常搭配使用的词也会变得相近。“相似”的含义取决于构建方法第 4 节“신경망은”
模型像人一样理解文本模型用编号和向量计算下一个词元的概率。是否“理解”是另一个需要单独讨论的问题第 6 节

检测题(点击展开解析)

Q1. “가”的 Unicode 编号是 0xAC00。初声 ㄱ(0)、中声 ㅏ(0)、终声 ㄱ(1) 的“각”编号是多少?

0xAC00 + (0 × 21 + 0) × 28 + 1 = 0xAC01.

Q2. 把“초파리 🙂”(含空格共 5 个字符)用 UTF-8 存储,需要多少字节?

韩文 3 个字 × 3 + 空格 1 + 表情符号 4 = 14 字节。

Q3. BPE 中的“最常相邻出现的组合”统计的是什么?

对语料库中的所有单词,统计相邻两个片段组成的对,并按该单词出现的次数累加。把次数最多的对合并成一个。

Q4. 未见过的词“초파리들이”(果蝇们 + 主格助词)在按词切分和 BPE 切分时分别如何处理?

按词切分时,它不在词表中,整个词变成“未知”。用 BPE 时,它会像 ["초파리", "들", "이"] 这样切成已知的片段。

Q5. 用词袋表示“dog bites man”和“man bites dog”会怎样?需要什么?

两者都是 {dog:1, bites:1, man:1},完全相同。要区分顺序,需要位置信息。

Colab 作业

基础

在代码 1 的 CORPUS 中加入“나비는 꽃을 좋아한다”(蝴蝶喜欢花)和“나비는 날개가 있다”(蝴蝶有翅膀)后重新运行。查看与“나비는”(蝴蝶)最接近的词,并结合第 4 节的说明写出原因。

挑战

把代码 1 的 bpe_train 中的合并次数依次改为 10·30·60·100,把词表大小和每句平均词元数整理成表格。说明词表大小与词元数之间的权衡,并写出如果是业务文档会选哪个值及其依据。

难度调整与延伸学习

入门者第 1 节的字母公式和第 3 节即使跳过,也不会打断整体流程
进阶让学员调查并比较 BPE 以外的其他词元切分方法(Unigram 语言模型、基于形态素分析器的方法)。所调查的论文要查阅原文确认
延伸学习Sangsun Ahn,《面向商业的数据科学》讲义(数据科学综论)· STEP [K-Digital] 人工智能自然语言处理(与本篇直接相关)· STEP [K-Digital] 金融科技数据分析基础(与 3-6 相关)
讲师用资料检测题的评分标准和作业参考答案见 教师用答案页面(3-5)

辛苦了!

你已经读完了「3-5 文本」篇。研究室的成员们各用一句话为你总结。

博士
博士我们拆解了字符变成数字向量这个像魔法一样的过程。
  • 一个韩文字符在 UTF-8 中占 3 字节
  • BPE 合并常相邻出现的片段来构成词元
  • 与“초파리는”(果蝇)最接近的词是“모기는”(蚊子)(0.970)
助手
助手从没教过“昆虫”,昆虫们却聚到了一起。
果蝇研究员
果蝇研究员居然和蚊子归成一类,有点委屈啊。