聊天机器人-Noisy Channel Model
1. Noisy Channel Model
公式:
应用场景:语音识别、机器翻译、拼写纠错、OCR、密码破解...(信号到文本)
-
机器翻译:
P(中文|英文) ∝ P(英文|中文)*P(中文)
P(英文|中文)定义为翻译模型,P(中文)定义为语言模型。 -
拼写纠错:
P(正确的写法|错误的写法) ∝ P(错误的写法|正确的写法)*P(正确的写法)
P(错误的写法|正确的写法)定义为编辑距离,P(正确的写法)定义为语言模型。 -
语音识别:
P(文本|语音信号) ∝ P(语音信号|文本)*P(文本)
P(语音信号|文本)定义为翻译模型或Recognition Model,P(文本)定义为语言模型。 -
密码破解:
P(明文|密文) ∝ P(密文|明文)*P(明文)
P(密文|明文)定义为翻译模型,P(明文)定义为语言模型。
2. Language Model (NLP最为重要的概念)
语言模型用来判断:是否一句话从语法上通顺。
比较:
P(今天是周三) VS P(今天周三是)
P(人工智能是趋势) VS P(趋势人工智能是)
一个翻译系统一个单词一个单词翻译后,需要把这些单词转换成一个通顺的句子。
目标:Compute the probability of a sentence or sequence of words. 。
举例:
P(人工智能是趋势)=P(人工智能)P(是|人工智能)P(趋势|人工智能, 是)
语料库:
....今天是国庆我们都休息................................
.....................................................
.....................................................
.....................................................
今天是国庆我们都放假....................................
.....................................................
.....................................................
P(休息|今天, 是, 国庆, 我们, 都) = 1/2
P(出门|今天, 是, 国庆, 我们, 都) = 0
关键词:Sparsing
3. Markov Assumption(马尔科夫假设) 与 Unigram、Bigram、N-gram
- 1st order markov
(Bigram)
- 2st order markov
(Trigram)
- 3st order markov
(使用1st)比较:今天是周三 VS 今天周三是
给出概率: |
---|
P(是|今天)=0.01 |
P(今天)=0.002 |
P(周三|是)=0.001 |
P(周三|今天)=0.0001 |
P(周日)=0.02 |
P(是|周三)=0.0002 |
P(今天是周三) = P(今天)P(是|今天)P(周三|是) = 0.002 * 0.01 * 0.001
P(今天周三是) = P(今天)P(周三|今天)P(是|周三) = 0.002 * 0.0001 * 0.0002
4. Estimating Probability(估计语言模型概率)
-
Unigram
为单词个数,为词表个数。 -
Bigram
为前后相邻单词个数,为单词个数。 -
N-gram
当N=3时,同理。但是有时到时,可能语料库中没有出现过。
5. Evaluation of Language Model
Q:训练出来的语言模型效果好还是坏?
- 理想情况下
- 假设有两个语言模型A,B
- 选定一个特定的任务比如拼写纠错
- 把两个模型A,B都应用在此任务中
- 最后比较准确率,从而判断A,B的表现
如何不依赖于具体任务,对语言模型进行评估呢?
答:Perplexity
越小越好。
6. Smoothing(平滑方法)
- Add-one Smoothing
语料库 | 概率 |
---|---|
今天 上午 的 天气 很好 | |
我 很 想 出去 运动 | |
但 今天 上午 有 课程 | ... |
NLP 明天 才 开始 |
- Add-K Smoothing
训练集语料库 | 验证集语料库 | 如何选择k? |
---|---|---|
今天 上午 的 天气 很好 | k=1,2,3...,100... | |
我 很 想 出去 运动 | 今天 上午 想 出去 运动 | 比较验证集中: |
但 今天 上午 有 课程 | 明天 才 开始 NLP | minimize |
NLP 明天 才 开始 |
- Interpolation
核心思路:在计算Trigam概率时同时考虑Unigram, Bigram, Trigram出现的频次。
问题 | 解决方案(重要的事情说三遍)
|
---|---|
C(in the kitchen)=0 C(the kitchen)=3 C(kitchen)=4 C(arboretum)=0 | 公式(6.3) |
P(kitchen | in the)=0 P(arboretum | in the)=0 | 公式(6.3) |
未来数据量多些时,kitchen的概率其实要比arboretum概率大的 | 公式(6.3) |
- Good-Turning Smoothing
定义:出现c次的单词个数。
例:Tom I am I am Tom I do not eat
统计单词出现次数 | 给出定义解释 |
---|---|
Tom : 2次,I : 3次 | : 有多少单词出现3次 |
am : 2次,do : 1次 | : 有多少单词出现2次 |
not : 1次,eat : 1次 | : 有多少单词出现1次 |
假设你在钓鱼,已经抓到了18只鱼: 10条鲤鱼,3条黑鱼,2条刀鱼,1条鲨鱼,1条草鱼,1条鳗鱼......
没有出现过的单词 | 出现过的单词 |
---|---|