大模型核心技术(三):CNN、RNN 与 NLP返回课程目录

文本转向量的基本流程

原始语料

image-20260710150948021

准备工作

1 构建词表

ID Token
0 <PAD>
1 <UNK> 解决的是 未登录词(oov) 问题
2 我
3 你
4 他
5 我们
6 爱
7 喜欢
8 学习
9 北京
10 上海
11 南京
12 中国
13 今天
14 天气
15 很好
16 吃
17 苹果
18 。
19 ,

2 训练词向量矩阵

ID Token Embedding(5维)
0 <PAD> [0.00, 0.00, 0.00, 0.00, 0.00]
1 <UNK> [-0.18, 0.47, 0.35, -0.12, 0.26]
2 我 [0.12, -0.35, 0.81, 0.42, -0.56]
3 你 [-0.64, 0.25, 0.38, -0.15, 0.71]
4 他 [0.48, -0.71, 0.09, 0.31, -0.22]
5 我们 [0.26, 0.54, -0.62, 0.18, 0.43]
6 爱 [-0.73, 0.58, 0.16, -0.21, 0.37]
7 喜欢 [0.51, 0.12, -0.44, 0.73, -0.18]
8 学习 [-0.38, 0.67, 0.52, -0.49, 0.29]
9 北京 [0.89, -0.14, 0.36, 0.08, -0.63]
10 上海 [-0.55, 0.79, -0.27, 0.41, 0.12]
11 南京 [0.94, 0.11, -0.48, 0.67, -0.39]
12 中国 [0.37, -0.22, 0.91, -0.36, 0.54]
13 今天 [-0.11, 0.63, 0.18, 0.55, -0.41]
14 天气 [0.45, -0.39, 0.27, 0.84, 0.06]
15 很好 [-0.52, 0.08, 0.74, -0.16, 0.33]
16 吃 [0.21, -0.83, 0.33, 0.57, -0.28]
17 苹果 [-0.69, 0.44, -0.12, 0.29, 0.65]
18 。 [-0.20, -0.52, 0.37, 0.15, -0.09]
19 , [0.17, 0.06, -0.41, -0.68, 0.58]

正式流程

1 原始句子

2 分词

3 分词结果 转换为 ID,即 Word2ID

源文档图片缺失:image-20260710151911965

4 Embedding 查表

我(ID=2)
[ 0.12, -0.35,  0.81,  0.42, -0.56]

爱(ID=6)
[-0.73,  0.58,  0.16, -0.21,  0.37]

南京(ID=11)
[ 0.94,  0.11, -0.48,  0.67, -0.39]

。(ID=18)
[-0.20, -0.52,  0.37,  0.15, -0.09]

5 最终Embedding输出

Shape = (1, 4, 5)
Embedding Output

[
    [                                   ← 第1句话(Batch)
        [ 0.12, -0.35,  0.81,  0.42, -0.56],   ← 我
        [-0.73,  0.58,  0.16, -0.21,  0.37],   ← 爱
        [ 0.94,  0.11, -0.48,  0.67, -0.39],   ← 南京
        [-0.20, -0.52,  0.37,  0.15, -0.09]    ← 。
    ]
]

6 流程总结

                词表(Vocabulary)
┌──────────────────────────────────────┐
│ 我 → 2           爱 → 6           南京 → 11          。 → 18 │
└──────────────────────────────────────┘
                 │
                 ▼
输入句子

         我       爱       南京        。
         │       │        │        │
         ▼       ▼        ▼        ▼
         2        6        11        18
                     │
                     ▼
            nn.Embedding(20, 5)
                     │
                     ▼

            Shape = (1, 4, 5)

[
    [
        [ 0.12, -0.35,  0.81,  0.42, -0.56],   ← 我
        [-0.73,  0.58,  0.16, -0.21,  0.37],   ← 爱
        [ 0.94,  0.11, -0.48,  0.67, -0.39],   ← 南京
        [-0.20, -0.52,  0.37,  0.15, -0.09]    ← 。
    ]
]

          (Batch Size, Seq Length, Embedding Dim)
            (1,             4,           5)