1. 文本分类
- 输入:长短不一的文本
- 输出:一个分类值
| 例子 | 任务 |
|---|---|
| 淘宝商品评价 | 正面 / 负面 |
| 邮件内容 | 是否垃圾邮件 |
| 新闻内容 | 自动分到某类别 |
2. 文本回归
- 输入:一段文本
- 输出:一个连续值
例子:根据用户评价文本返回具体分值;给作文打分。
与分类的区别:输出是连续数值而非离散类别。
3. 命名实体识别(NER)
任务:识别文本中的专有名词——人名、地名、机构名等。
- 输入:文本序列
- 输出:等长的标注序列(输入输出长度一致)
BIO 标注法
| 标注 | 含义 |
|---|---|
| B-XXX | 实体的开头 |
| I-XXX | 实体的内部 |
| O | 不属于任何实体 |
- B-T / I-T:时间实体
- B-N / I-N:人名实体
- B-L / I-L:地点实体
为什么需要 B 和 I 区分
连续实体需要区分边界:
"北京上海" → B-L, I-L, B-L, I-L (两个地名,而不是一个)
应用
识别实体后可构建知识图谱、文档归类/索引、检索。
4. 翻译、摘要
- 输入、输出都是文本序列
- 与 NER 不同:输入输出长度不同(sequence-to-sequence)
5. 文本蕴含(Textual Entailment)
判断两句话的逻辑关系:一句前提,一句假设。
| 前提 | 假设 | 关系 |
|---|---|---|
| 小王养了一只猫 | 小王养了动物 | 蕴含 |
| 小王没有养任何动物 | 小王养了一只猫 | 矛盾 |
| 小王养了一只猫 | 小王喜欢游泳 | 中立 |
- 输入:两个序列
- 输出:一个分类结果(支持/反对/不相关)
6. 语言模型(Language Model)
6.1 作用
给出一个句子的合理性概率。
经典应用:语音识别消歧
"我每天都会洗澡。" (概率大 ✅)
"我每天都会洗枣。" (读音相同,概率小)
语言模型判断哪句更常见,语音识别选概率大的。
6.2 概率定义
即:整句概率 = 每个词在其前面所有词出现条件下的条件概率连乘。
6.3 问题:完整条件概率算不了
- 上下文丰富,词汇表庞大
- 很多词序列在语料中根本没出现过 → 数据稀疏
6.4 近似解法:n-gram
假设当前词只依赖前面 (n-1) 个词:
| 模型 | 依赖 |
|---|---|
| unigram (1-gram) | 每个词独立 |
| bigram (2-gram) | 依赖前 1 个词 |
| trigram (3-gram) | 依赖前 2 个词 |
例:“I love natural language processing” 的 bigram 概率:
通过统计词对共现频率估计条件概率。
6.5 神经网络语言模型
神经语言模型也从语料学习统计规律,只是用可学习的分布式表示和参数化函数估计条件概率,不再局限于直接查 n-gram 频数表。用 RNN、LSTM、Transformer、GPT 等构建,能力更强。
7. 大语言模型统一所有任务
在 ChatGPT 之前,语言模型只是辅助其他任务的”配角”(如语音转文本)。
大语言模型出现后,语言模型成了”主角”:
语言模型能给出句子概率 → 能找出接下来最可能的词 → 不断续写
如果输入是任务描述:
"我喜欢这个杯子。上面这句话是正面还是负面评价?"
→ 大模型续写最可能的词 = "正面"
→ 语言模型就完成了文本分类!
原理:所有 NLP 任务都可以改写成”续写最可能的词”——所以一个强大的语言模型能统一所有任务。
但大模型计算成本大,传统的专用 NLP 模型(如 NER、分类的小模型)依然在各行业发挥作用。
8. 总结
六类 NLP 任务一览:
文本分类 文本 → 类别
文本回归 文本 → 连续值
NER 序列 → 等长标注序列(BIO)
翻译/摘要 序列 → 不同长度序列
文本蕴含 两个序列 → 分类(支持/反对/不相关)
语言模型 序列 → 该句的概率
语言模型演进:
统计 n-gram(bigram/trigram)
→ 神经网络语言模型(RNN/LSTM/Transformer/GPT)
→ 大语言模型统一所有任务(续写最可能的词)
关键洞察:
语言模型 = 预测下一个词的概率
所有 NLP 任务 = 改写成"续写"
所以强语言模型 = 万能 NLP 模型