文章目录
在自然语言处理(NLP)的发展历程中,基础语言模型是构建复杂任务的基石。无论是早期的文本分类、机器翻译,还是如今大模型的预训练,都能看到 N-Gram 模型和 Bag-of-Words(词袋模型) 的影子。本文将从这两个经典模型出发,深入剖析它们的核心原理、相关支撑技术及适用场景,为理解现代“词嵌入”(Word Embedding)技术乃至大模型打下基础。
一、N-Gram模型:基于序列统计的语言建模先驱
N-Gram 模型是一种基于统计的语言模型,其核心思想是通过对文本中相邻词语序列的统计分析来估算句子的概率分布。它虽结构简单,但在 NLP 发展初期发挥了至关重要的作用。
(1)香农熵:衡量语言不确定性的核心指标
信息论之父克劳德·香农提出的“熵”概念,是语言模型的重要理论基础。它衡量的是语言序列的信息不确定性。
假设语言符号集合的概率分布为:
P
(
x
1
,
x
2
,
.
.
.
,
x
n
)
P(x_1, x_2, ..., x_n)
P(x1,x2,...,xn)
则序列的香农熵定义为:
H
(
X
)
=
−
∑
P
(
x
)
log
2
P
(
x
)
H(X) = -\sum P(x) \log_2 P(x)
H(X)=−∑P(x)log2P(x)
简单解释:
熵值越高,语言越复杂;熵值越低,语言越容易预测。
在自然语言中,直接计算整段文本的熵极其困难,因此通常采用“条件熵”,即:
H
(
X
∣
Y
)
=
−
∑
P
(
x
,
y
)
log
2
P
(
x
∣
y
)
H(X|Y) = -\sum P(x,y) \log_2 P(x|y)
H(X∣Y)=−∑P(x,y)log2P(x∣y)
表示在给定前文情况下,下一个词的不确定性。
由此可引出两个重要指标:
- 交叉熵:衡量模型预测分布与真实分布的差异;
- 困惑度(Perplexity):模型预测能力的指标,值越低表示模型越“聪明”。
(2)N-Gram原理:利用马尔可夫假设简化序列建模
N-Gram 模型的核心是 马尔可夫假设:
第 n 个词的概率仅与前 n-1 个词相关。
具体表现如下:
| 类型 | 表示方式 | 示例 | 优点 |
|---|---|---|---|
| Unigram | P(我爱吃苹果)=P(我)×P(爱)×P(吃)×P(苹果) | 词独立 | 计算最简单 |
| Bigram | P(我爱吃苹果)=P(我)×P(爱 | 我)×P(吃 | 爱)×P(苹果 |
| Trigram | P(我爱吃苹果)=P(我)×P(爱 | 我)×P(吃 | 我爱)×P(苹果 |
其概率估计公式为:
P
(
x
i
∣
x
i
−
1
)
=
c
o
u
n
t
(
x
i
−
1
,
x
i
)
c
o
u
n
t
(
x
i
−
1
)
P(x_i|x_{i-1}) = \frac{count(x_{i-1},x_i)}{count(x_{i-1})}
P(xi∣xi−1)=count(xi−1)count(xi−1,xi)
这种基于语料计数的“最大似然估计(MLE)”非常直观,但会遇到数据稀疏问题——训练集中未出现过的组合,其概率估计为 0。
为此引入平滑技术:
- 拉普拉斯平滑:对所有计数加 1;
- 卡茨平滑:用低阶概率近似高阶稀疏概率。
(3)Token概念与分词技术
在进入语言建模之前,必须理解“Token”是什么。
- Token(词元):语言模型处理文本的最小单位,可为单词、字符、子词等。
例如:- 英文句子
"I love NLP"→ [“I”, “love”, “NLP”] - 中文句子
"我爱自然语言处理"→ [“我”, “爱”, “自然语言处理”]
- 英文句子
常用分词工具:
| 工具 | 特点 |
|---|---|
| jieba | 支持多模式,国内应用最广 |
| HanLP | 基于深度学习,高精度多语种支持 |
| THULAC | 清华大学出品,速度快、适合大规模语料 |
常见预处理步骤:
- 去噪(去 HTML、符号等)
- 统一大小写(for English)
- 去停用词(如“的”、“是”、“在”)
- 词性标注与词干提取(stemming,如 love ← loved)
二、Bag-of-Words词袋模型:忽略顺序的文本表示方法
词袋模型更关注词频而非词序,是实现文本向量化的经典方法。
(1)核心原理与构建流程
举例:
若词表为 [“我”, “爱”, “吃”, “苹果”, “香蕉”]
则文本“我爱吃苹果,我爱吃香蕉”向量为:
[
2
,
2
,
2
,
1
,
1
]
[2, 2, 2, 1, 1]
[2,2,2,1,1]
(每个数字表示该词出现次数)
但词袋模型的向量维度通常很高,且稀疏性强,因此常用 TF-IDF加权:
T
F
I
D
F
=
T
F
×
log
(
总文档数
包含该词的文档数
+
1
)
TFIDF = TF \times \log\left(\frac{总文档数}{包含该词的文档数+1}\right)
TFIDF=TF×log(包含该词的文档数+1总文档数)
以突出少见但重要的关键词。
(2)文本相似度计算方法
✅ 余弦相似度(Cosine Similarity)
衡量两个向量之间的夹角:
cos
(
θ
)
=
A
⋅
B
∣
∣
A
∣
∣
×
∣
∣
B
∣
∣
\text{cos}(θ) = \frac{A·B}{||A|| \times ||B||}
cos(θ)=∣∣A∣∣×∣∣B∣∣A⋅B
当角度越小,相似度越高。
示例:
文本1向量 A=[2,2,2,1,1]
文本2向量 B=[1,1,1,2,2]
✅ 欧氏距离(Euclidean Distance)
d
(
A
,
B
)
=
∑
(
A
i
−
B
i
)
2
d(A,B)=\sqrt{\sum (A_i - B_i)^2}
d(A,B)=∑(Ai−Bi)2
示例:
d
=
5
≈
2.24
d = \sqrt{5} ≈ 2.24
d=5≈2.24
对比:
- 欧氏距离——关注数值差异;
- 余弦相似度——关注方向一致性;
在文本处理中,余弦相似度更常用。
三、N-Gram与Bag-of-Words对比总结
| 评价维度 | N-Gram模型 | Bag-of-Words模型 |
|---|---|---|
| 核心优势 | 保留序列信息;能进行概率预测;训练速度快 | 计算简单;可结合TF-IDF;适合分类任务 |
| 缺点 | 易受数据稀疏影响;无法捕捉长依赖;存储开销大 | 忽略词序;语义信息缺失;向量高维稀疏 |
| 适用场景 | 文本生成、语音识别、纠错 | 文本分类、检索、情感分析 |
| 不适用场景 | 语义推理、长文本模型化 | 机器翻译、文本生成 |
四、从基础模型到词嵌入(Word Embedding)
N-Gram 和 Bag-of-Words 为后续的 词嵌入技术 奠定了理论基础。
它们的不足——无法体现词语间的语义联结与上下文依赖——催生了 Word2Vec、GloVe 等更先进的分布式表示方法。
词嵌入的核心思想:
将每个词映射到一个稠密向量空间,使得语义相似的词在向量空间中距离更近。
例如:
向量("国王")
−
向量("男人")
+
向量("女人")
≈
向量("王后")
\text{向量("国王")}-\text{向量("男人")}+\text{向量("女人")}≈\text{向量("王后")}
向量("国王")−向量("男人")+向量("女人")≈向量("王后")
这一区域式的语义计算成为现代 NLP 的基础,也使得模型如 Transformer 能够理解语义关系而非仅进行符号统计。
🧩 结语:从“词频”到“语义”的跃迁
N-Gram 解决了“序列概率”,Bag-of-Words解决了“文本量化”,而词嵌入解决了“语义表示”。
三者构成了语言建模的演化阶梯:
如今的语言模型虽已进入深度学习时代,但这些基础模型的思想仍在——无论是序列依赖(N-Gram)还是词向量化(Bag-of-Words),都是理解自然语言本质的第一步。



被折叠的 条评论
为什么被折叠?



