语料库
就是收集的句子,比如一下这5句话就是个语料库。
我喜欢吃苹果。
他喜欢吃香蕉,我也喜欢吃香蕉。
苹果和香蕉都是水果。
水果很好吃,他每天都吃水果。
我喜欢这个苹果。
词表
从语料库中统计生成"词表"。
按频率排序的词表(这也是一种词表)
| 词 | 出现次数 |
|---|---|
| 吃/水果 | 4 次 |
| 的/香蕉/苹果/喜欢 | 2 次 |
| 我/他/也/都/很/好/和/是/这个 | 1 次 |
制作一个真正的"好词表"
它不是简单的频率排序,而是会过滤 掉某些词(比如功能词"的、也、呢、吗")或者只保留特定类别的词。
比如:我想针对初级中文学习者制作一个"水果主题好词表"。基于上面的语料库,我不会把所有词都放进去,而是会:
删掉代词(我、他)、副词(也、都)、结构助词(的)、连词(和)、形容词(好、很)、动词(是、吃、喜欢)------ 这些对于"水果主题"不是核心。
只保留名词:苹果、香蕉、水果。
这样得到的"好词表"是:
苹果、香蕉、水果
这个表很小、很聚焦,适合初学者学习"水果"这一类词。
总结
| 维度 | 语料库(那5个句子) | 词频表(统计结果) | 好词表(水果主题) |
|---|---|---|---|
| 内容 | 完整、原始的句子 | 所有词 + 次数 | 仅苹果、香蕉、水果 |
| 大小 | 5句,约30个词 | 10多个词条 | 3个词条 |
| 作用 | 研究语言真实用法 | 了解哪些词更常见 | 教/学特定词汇 |
| 是否人工筛选 | 只需收集文本 | 自动统计 | 人为挑选 |
上下文长度(Context Length)
上下文长度 指的是模型一次能够处理的最大 token 数量(可以粗略理解为词或字符片段的数量),包含输入和输出。
输入部分:用户的问题 + 历史对话 + 系统提示 + 其他信息
输出部分:模型生成的回答
举例:
GPT-3.5 早期的上下文长度是 4k tokens(约 3000 个英文单词或 2000 个汉字左右)。
GPT-4 Turbo 可以达到 128k tokens(相当于一本 300 页的书)。
一些新模型(如 Claude 3)支持 200k tokens。
为什么重要:
如果对话历史太长,超过了上下文长度,模型就会"忘记"最早的内容(就像你念了很长的代码,让模型只能记住最后一部分)。
越长的上下文长度,模型越能处理长篇文档、长时间对话。
注意 :上下文长度是硬上限。即使你把一个 100k tokens 的上下文对象传给模型,如果模型的最大上下文长度只有 8k,那么超出的部分会被截断或报错。
token
就是一个一个的组词,可以是单词也可以是字符。
Tokenizer(分词器)的作用是:
- 将输入的原始文本(字符串)拆分为有意义的子单元(tokens);
- 将这些 tokens 映射为模型能理解的整数 ID(通过词汇表查找);
- 支持特殊标记如
[CLS]、[SEP]、[PAD]、[UNK]等,用于任务结构化或处理未知词。
embedding
把字符映射成一个密集的数字向量,也就是向量化。
原始文本:"我爱苹果" ↓ 分词/token化 Token序列:["我", "爱", "苹果"] ↓ 查Embedding表(或经过Embedding层) 向量序列: "我" → [0.12, -0.34, 0.56, ...] "爱" → [0.33, 0.21, -0.47, ...] "苹果" → [0.78, -0.05, 0.63, ...]
句子的长度就是你输入一句话的token数吧!!