视频列表:
31 n-gram语言模型(一)
32 n-gram语言模型(二)
33 n-gram语言模型(三)
34 n-gram语言模型(四)
35 n-gram语言模型(五)
36 n-gram语言模型(六)
37 n-gram语言模型(七)
31 n-gram语言模型(一)
第五章 n-gram语言模型
噪声信道模型
I
=
a
r
g
m
a
x
I
P
(
I
∣
O
)
)
=
a
r
g
m
a
x
I
P
(
O
∣
I
)
P
(
I
)
P
(
O
)
)
=
a
r
g
m
a
x
I
P
(
O
∣
I
)
P
(
I
)
I=\underset{I}{argmax}P(I|O))=\underset{I}{argmax}\frac{P(O|I)P(I)}{P(O)})=\underset{I}{argmax}P(O|I)P(I)
I=IargmaxP(I∣O))=IargmaxP(O)P(O∣I)P(I))=IargmaxP(O∣I)P(I)
目标:通过有噪声的输出信号试图恢复输入信号
噪声信道模型的应用
噪声信道模型是一种普适性的模型,通过修改噪声信道的定义,可以将如下应用纳入到这一模型的框架之中
语音识别
一个声学信号对应于一个语句,一个语音识别器需找到其对应的可能性最大的语言文本
T
=
a
r
g
m
a
x
T
P
(
T
∣
A
)
)
T=\underset{T}{argmax}P(T|A))
T=TargmaxP(T∣A))
根据贝叶斯公式 :
T
=
a
r
g
m
a
x
T
P
(
A
∣
T
)
P
(
T
)
P
(
A
)
)
=
a
r
g
m
a
x
I
P
(
A
∣
T
)
P
(
T
)
T=\underset{T}{argmax}\frac{P(A|T)P(T)}{P(A)})=\underset{I}{argmax}P(A|T)P(T)
T=TargmaxP(A)P(A∣T)P(T))=IargmaxP(A∣T)P(T)
信息源对应于以概率
P
(
T
)
P(T)
P(T)生成语句文本,噪声信道对应于以概率分布
P
(
A
∣
T
)
P(A|T)
P(A∣T)将语句文本转换成声音信号。语音识别的目的就是由通过噪声信道而输出的声音信号恢复其原始的语句文本。
其他应用
信源以概率 P ( T ) P(T) P(T)生成语句文本,信道为 P ( O ∣ T ) P(O|T) P(O∣T),语音/图像/翻译文本/字音转换模型
- 手写体汉字识别
文本-〉书写(或者打印、扫描)-〉图像 - 文本校错
文本-〉输入编辑-〉带有错误的文本 - 机器翻译
目标语言的文本-〉翻译-〉源语言文本 - 音字转换
文本-〉字音转换-〉汉字(拼音)编码 - 词性标注
词性标注序列-〉词性词串转换-〉词串
香农游戏1
给定前n-1个词(或者字母),预测下一个词(字母)
32 n-gram语言模型(二)
语言模型
-
P
(
T
)
P(T)
P(T)语言模型,如何计算P(T)?
根据链规则:
P ( T ) = P ( S ) = P ( w 1 w 2 . . . w 3 ) = P ( w 1 ) P ( w 2 ∣ w 1 ) P ( w 3 ∣ w 1 w 2 ) . . . P ( w n ∣ w 1 w 2 . . . w n − 1 ) P(T)=P(S)=P(w_{1}w_{2}...w_{3})=P(w_{1})P(w_{2}|w_{1})P(w_{3}|w_{1}w_{2})...P(w_{n}|w_{1}w_{2}...w_{n-1}) P(T)=P(S)=P(w1w2...w3)=P(w1)P(w2∣w1)P(w3∣w1w2)...P(wn∣w1w2...wn−1)
问题:
1、参数空间过大,无法实用!
2、数据稀疏问题
马尔科夫假设
P ( T ) = P ( S ) = P ( w 1 w 2 . . . w 3 ) = P ( w 1 ) P ( w 2 ∣ w 1 ) P ( w 3 ∣ w 1 w 2 ) . . . P ( w n ∣ w 1 w 2 . . . w n − 1 ) P(T)=P(S)=P(w_{1}w_{2}...w_{3})=P(w_{1})P(w_{2}|w_{1})P(w_{3}|w_{1}w_{2})...P(w_{n}|w_{1}w_{2}...w_{n-1}) P(T)=P(S)=P(w1w2...w3)=P(w1)P(w2∣w1)P(w3∣w1w2)...P(wn∣w1w2...wn−1)
- biigram
假设下一个词的出现依赖于它前面的一个词
≈ P ( w 1 ) P ( w 2 ∣ w 1 ) P ( w 3 ∣ w 2 ) . . . P ( w n ∣ w n − 1 ) \approx P(w_{1})P(w_{2}|w_{1})P(w_{3}|w_{2})...P(w_{n}|w_{n-1}) ≈P(w1)P(w2∣w1)P(w3∣w2)...P(wn∣wn−1) - trigram
假设下一下一个词的出现依赖于它前面的两个词
≈ P ( w 1 ) P ( w 2 ∣ w 1 ) P ( w 3 ∣ w 1 w 2 ) . . . P ( w n ∣ w n − 2 w n − 1 ) \approx P(w_{1})P(w_{2}|w_{1})P(w_{3}|w_{1}w_{2})...P(w_{n}|w_{n-2}w_{n-1}) ≈P(w1)P(w2∣w1)P(w3∣w1w2)...P(wn∣wn−2wn−1)
N-gram语言模型
- 最大相似度估计( Maximum Likelihood Estimate )
P ( w n ∣ w 1 w 2 . . . w n − 1 ) = C ( w 1 w 2 . . . w n ) C ( w 1 w 2 . . . w n − 1 ) P(w_{n}|w_{1}w_{2}...w_{n-1})=\frac{C(w_{1}w_{2}...w_{n})}{C(w_{1}w_{2}...w_{n-1})} P(wn∣w1w2...wn−1)=C(w1w2...wn−1)C(w1w2...wn) - “n-gram” = n个词构成的序列
unigram
bigram
trigram
four-gram(quadgram 4-gram)
…… - N元文法对下一个单词的条件概率逼近的通用等式是:
P ( w n ∣ w 1 n − 1 ) ≈ P ( w n ∣ w n − N + 1 n − 1 ) P(w_{n}|w_{1}^{n-1})\approx P(w_{n}|w_{n-N+1}^{n-1}) P(wn∣w1n−1)≈P(wn∣wn−N+1n−1)
构造(训练)N-gram语言模型:在训练语料库中统计获得n-gram的频度信息
举例
- 假设语料库总词数为13,748词
I | 3437 |
---|---|
want | 1215 |
to | 3256 |
eat | 938 |
Chinese | 213 |
food | 1506 |
lunch | 459 |
\ | I | want | to | eat | Chinese | food | lunch |
---|---|---|---|---|---|---|---|
I | 8 | 1087 | 0 | 13 | 0 | 0 | 0 |
want | 3 | 0 | 786 | 0 | 6 | 8 | 6 |
to | 3 | 0 | 10 | 860 | 3 | 0 | 12 |
eat | 0 | 0 | 2 | 0 | 19 | 2 | 52 |
Chinese | 2 | 0 | 0 | 0 | 0 | 120 | 1 |
food | 19 | 0 | 17 | 0 | 0 | 0 | 0 |
lunch | 4 | 0 | 0 | 0 | 0 | 1 | 0 |
P(I want to eat Chinese food)
=P(I)P(want|I)P(to|want)P(eat|to)P(Chinese|eat)P(food|Chinese)
=0.251087/3437786/1215860/325619/938120/213
= 0.000154171
- N的选择:可靠性 vs. 辨别力
“我 正在 ________ ”
讲课?图书馆?听课?学习?借书?……
“我 正在 图书馆 ________”
学习? 借书?……
更大的 n: 对下一个词出现的约束性信息更多,更大的辨别力
更小的n: 在训练语料库中出现的次数更多,更可靠的统计结果,更高的可靠性
- N的选择方法
词表中词的个数 |V| = 20,000 词
n | 所有可能的n-gram的个数 |
---|---|
2 (bigrams) | 400,000,000 |
3 (trigrams) | 8,000,000,000,000 |
4 (4-grams) | 1.6 x 1 0 17 1.6 x 10^{17} 1.6x1017 |
数据稀疏问题
假设我们使用trigram模型
P
(
S
)
=
P
(
w
1
)
P
(
w
2
∣
w
1
)
P
(
w
3
∣
w
1
w
2
)
.
.
.
P
(
w
n
∣
w
n
−
2
w
n
−
1
)
P(S) = P(w_{1})P(w_{2}|w_{1})P(w_{3}|w_{1}w_{2})...P(w_{n}|w_{n-2}w_{n-1})
P(S)=P(w1)P(w2∣w1)P(w3∣w1w2)...P(wn∣wn−2wn−1)
如果某个
P
(
w
i
∣
w
i
−
2
w
i
−
1
)
=
C
(
w
i
−
2
w
i
−
1
w
i
)
C
(
w
i
−
2
w
i
−
1
)
=
0
P(w_{i}|w_{i-2}w_{i-1})=\frac{C(w_{i-2}w_{i-1}w_{i})}{C(w_{i-2}w_{i-1})}=0
P(wi∣wi−2wi−1)=C(wi−2wi−1)C(wi−2wi−1wi)=0
那么
P
(
S
)
=
0
P(S)=0
P(S)=0
数据稀疏问题
必须保证
C
≠
0
C\neq 0
C̸=0从而使
P
≠
0
P\neq 0
P̸=0
假设某语料库词汇分布如下:
最大相似度估计
期望概率分布
33 n-gram语言模型(三)
数据平滑技术
- 降低已出现的n-gram条件概率分布,以使未出现n-gram条件概率分布非0
- 又可称为“折扣方法” (Discounting methods)
- (确认)“Validation” –特指使用两个不同的训练语料库的平滑方法
拉普拉斯定律
- 加一平滑法
- Jeffreys-Perks Law
- Good-Turing估计
- Good-Turing估计示例
建立频度bigram个数表(词表中词数14585,语料库中出现的各不相同的bigram总数199252个,bigram总数为617091个)
对于未出现的bigram
假设语料库中,某bigram 出现了1次,
P=0.3663/617091=5.94E-7 - 简单 Good-Turing
对于比较大的 r,Nr=arb (b < -1) 用线性回归的方法估算 a 和 b :log Nr= log a + b log r, 对于比较小的 r, 直接使用Nr - 关于Good-Turing平滑的两个问题2
1、Good-Turing 估计的理论依据是什么?
2、Good-Turing 估计是完备的吗?
其他常用平滑方法
- Back-off 平滑
- 线性插值平滑
- Witten-Bell平滑
平滑的效果
- 数据平滑的效果与训练语料库的规模有关
- 数据平滑技术是构造高鲁棒性语言模型的重要手段
- 训练语料库规模越小,数据平滑的效果越显著,
- 训练语料库规模越大,数据平滑的效果越不显著,甚至可以忽略不计
34 n-gram语言模型(四)
一元模型,N-gram模型与N-pos模型之间的关系
考察N-pos模型的极端情况,即当整个模型只有一个词类,与每一个词都有一个各自不同的词类的情况:如果N-pos模型只有一个词类,那么前N-1个词类没有提供任何上下文信息,于是N-pos模型退化为Unigram模型;如果每一个词都有一个各不相同的词类,那么这样的N-pos模型等价于N-gram模型
统计语言模型的评价
- 实用方法
通过查看该模型在实际应用中的表现来评价统计语言模型
优点: 直观,实用
缺点:缺乏针对性,不够客观 - 理论方法
交叉熵与迷惑度
Kullback-Leibler (KL)距离
Kullback-Leibler (KL)距离(相关熵)
两个概率密度函数p(x)与q(x)它们的相关熵由下式给出:
描述了两个概率分布之间的差异
(D(p||q)==0 iff p=q)
非量度(不满足交换率和三角不等式)
语言与其模型的交叉熵
我们构造的语言模型为q(x),如何评价它的好坏?
Idea:如果q(x)与正确的语言模型p(x)的相关熵越小,模型越好
问题是我们并不知道p(x)
可以借助交叉熵
某语言L,其真实的概率分布为p(x),我们构造的该语言的概率模型为q(x),那么该语言与其模型的交叉熵为:
如果我们将语言视为平稳各态可遍历的随机过程:
那么
迷惑度
举例:150万词WSJ语料库得到的不同n-gram语言模型的迷惑度:
Unigram:962
Bigram:170
Trigram:109
35 n-gram语言模型(五)
- 音字转换系统
附录1 语言模型构造实例
N-gram语言模型构造举例
36 n-gram语言模型(六)
附录2 最大熵模型基础
- 最大熵模型
一种基于最大熵原理的统计预测模型。 - 最大熵原理
在一定的限制条件下,尽可能地选择熵最大的概率分布(均匀分布)作为预测结果
对不知道(限制条件以外)的情形,不做任何假设
举例-1
抛一枚硬币: p(H)=p1, p(T)=p2.
限制条件: p1 + p2 = 1
问题:如何估计概率分布 p=(p1, p2)?
基于最大熵原理的答案: 选择使H§最大的那个p
举例-2
最大熵模型
- 目的:估计在限定条件下的概率p
选择满足限定条件的p,使H§为最大
H ( x ) = − ∑ x ∈ X p ( x ) log p ( x ) H(x)=-{\sum_{}^{x\in X}}p(x)\log p(x) H(x)=−∑x∈Xp(x)logp(x)
x = ( a , b ) , a ∈ A ∧ b ∈ B x=(a,b),a\in A\wedge b\in B x=(a,b),a∈A∧b∈B
A A A 为上下文特征集合, 为待预测标记的集合
37 n-gram语言模型(七)
- 如何获得这样的模型 从训练数据中统计 (a, b) 对: a: 上下文 b:预测标记(观察值) (a,b)称为一个事件 举例: 词性标注 a=在某个文本窗口中的词 b=NN - 学习得到每个 (a, b)的概率值:p(a, b) - 问题:如何表示限制条件 - 特征 - 在最大熵模型中,特征是一个关于事件二值函数
f
j
:
X
→
{
0
,
1
}
,
X
=
A
×
B
f_{j}:X\rightarrow \left \{ 0, 1\right \},X=A\times B
fj:X→{0,1},X=A×B
举例:
特征(事件)举例
(title caps, NNP): Citibank, Mr.
(sufix -ing, VBG): running, cooking
(POS tag DT, I-NP): the bank, a thief
(current word from, I-PP): from the bank
(next word Inc., I-ORG): Lotus Inc.
(previous word said, I-PER): said Mr. Vinken
复杂特征
- 文档级特征
(document category = 篮球& current word = “火箭”, I-ORG)
可能将“火箭”标为 I-ORG 而非普通名词 - 原子级(词)特征
(current word = “李宁” & next word = 公司, I-ORG)
可能将“李宁”标为 I-ORG而非I-PER
限制条件
最大熵模型的使用
根据局部概率值直接标注
计算全局最优解
- Viterbi search
- Beam search
最大熵模型总结
原理:找到满足所有限制的熵最大的概率分布
训练:通过 GIS 或者 IIS,收敛速度可能较慢
对交叉性的特征也能很好的处理
对自然语言处理的许多问题都能提供很好的解决方案
致谢
关毅老师,现为哈工大计算机学院语言技术中心教授,博士生导师。通过认真学习了《自然语言处理(哈工大 关毅 64集视频)》3(来自互联网)的课程,受益良多,在此感谢关毅老师的辛勤工作!为进一步深入理解课程内容,对部分内容进行了延伸学习4 5 612,在此分享,期待对大家有所帮助,欢迎加我微信(验证:NLP),一起学习讨论,不足之处,欢迎指正。
参考文献
Claude E. Shannon. “Prediction and Entropy of Printed English”, Bell System Technical Journal 30:50-64. 195 ↩︎ ↩︎
An Empirical Study of Smoothing Techniques for Language Modeling, Stanley F. Chen ↩︎ ↩︎
《自然语言处理(哈工大 关毅 64集视频)》(来自互联网) ↩︎
王晓龙、关毅 《计算机自然语言处理》 清华大学出版社 2005年 ↩︎
哈工大语言技术平台云官网:http://ltp.ai/ ↩︎
Steven Bird,Natural Language Processing with Python,2015 ↩︎