Noisy Channel Model
? ???? ?????? ∝ ? ?????? ???? ?(????)
应用场景:
语音识别,机器器翻译,拼写纠错,OCR,密码破解
机器翻译:
P(中文|英文) = P(英文|中文)P(中文)
其中P(英文|中文)为translation Model P(中文)为language Model(依据贝叶斯定理)
再比如:
拼接纠错
P(正确的写法|错误的写法) = P(错误的写法|正确的写法)P(正确的写法)
语言模型
语音识别:
P(文本|波信号) = P(波信号|文本)P(文本)
P(文本)代表语言模型。
那么什么是语言模型呢?
所谓的语言模型,就是判断一句话从语法上判断是否通顺。
Chain Rule
P(A,B,C,D) = P(A).P(B|A).P(C|A,B).P(D|A,B,C)
=p(A,B).p(C|A,B).P(D|A,B,C)
=p(A,B,C).P(D|A,B,C)
=P(A,B,C,D)
接下来我们用Chain Rule来计算一个合乎语法的句子的概率
P(今天 是 春节 我们 都 休息)
这样做的缺点就是,预测下一个词,需要依赖于之前所有的词,假设原文档中。没有出现今天是春节我们都。这几个词。
那么我们预测的P(休息|今天,是,春节,我们,都)的概率就为0.
但是我们可以不用考虑之前所有的词,只是考虑之前1个词会怎样呢?
2个词会怎样呢?
3个词会怎样呢?
考虑前一个词,那么就是P(休息|都) 1-gram
考虑前2个词,则是P(休息|我们,都) 2-gram
考虑前三个词则是P(休息|春节,我们,都) 3-gram
然后,我们用语言模型来计算生成的句子的概率。
P(今天,是,周日)=P(今天)P(是|今天)P(周日|是)
= 0.002 * 0.01 * 0.001 = 2*10^-8
P(今天周日是) = P(今天)P(周日|今天)P(是|周日)
0.002 * 0.0001*0.0002 =4*10^10
很明显,今天是周日的概率更大。