NLP学习(5) 语言模型

语言模型 (Language Model)

用口语来说, 就是判断一句话是否在语法上通顺

Compute the probability of a sentence or sequence of words.

Noise Channel Model

由源文本生成目标文本的概率 p ( t e s t ∣ s o u r c e ) ∝ p ( s o u r c e ∣ t e x t ) p ( t e x t ) \text{p}(test|source)\propto \text{p}(source|text)\text{p}(text) p(testsource)p(sourcetext)p(text)

例如, 拼写纠错 p ( 正 确 单 词 ∣ 错 误 单 词 ) ∝ p ( 错 误 单 词 ∣ 正 确 单 词 ) p ( 正 确 单 词 ) \text{p}(正确单词|错误单词)\propto\text{p}(错误单词|正确单词)\text{p}(正确单词) p()p()p()

p ( t e x t ) \text{p}(text) p(text)是语言模型, 目标字符串要符合语法

Unigram

p ( [ 今 天 , 是 , 春 节 , 我 们 , 都 , 休 息 ] ) = p ( 今 天 ) p ( 是 ) p ( 春 节 ) p ( 我 们 ) p ( 都 ) p ( 休 息 ) \text{p}([今天,是,春节,我们,都,休息])=\text{p}(今天)\text{p}(是)\text{p}(春节)\text{p}(我们)\text{p}(都)\text{p}(休息) p([,,,,,])=p()p()p()p()p()p()

p ( [ 今 天 , 春 节 , 是 , 都 , 我 们 , 休 息 ] ) = p ( 今 天 ) p ( 是 ) p ( 春 节 ) p ( 我 们 ) p ( 都 ) p ( 休 息 ) \text{p}([今天,春节,是,都,我们,休息])=\text{p}(今天)\text{p}(是)\text{p}(春节)\text{p}(我们)\text{p}(都)\text{p}(休息) p([,,,,,])=p()p()p()p()p()p()

不通的次序会生成相同的概率.

Bigram

p ( [ 今 天 , 是 , 春 节 , 我 们 , 都 , 休 息 ] ) = p ( 今 天 ) p ( 是 ∣ 今 天 ) p ( 春 节 ∣ 是 ) p ( 我 们 ∣ 春 节 ) p ( 都 ∣ 我 们 ) p ( 休 息 ∣ 都 ) \text{p}([今天,是,春节,我们,都,休息])=\text{p}(今天)\text{p}(是|今天)\text{p}(春节|是)\text{p}(我们|春节)\text{p}(都|我们)\text{p}(休息|都) p([,,,,,])=p()p()p()p()p()p()

p ( [ 今 天 , 春 节 , 是 , 都 , 我 们 , 休 息 ] ) = p ( 今 天 ) p ( 春 节 ∣ 今 天 ) p ( 是 ∣ 春 节 ) p ( 都 ∣ 是 ) p ( 我 们 ∣ 都 ) p ( 休 息 ∣ 我 们 ) \text{p}([今天,春节,是,都,我们,休息])=\text{p}(今天)\text{p}(春节|今天)\text{p}(是|春节)\text{p}(都|是)\text{p}(我们|都)\text{p}(休息|我们) p([,,,,,])=p()p()p()p()p()p()

N-gram

N>2都称为Higher Order

N=3称为Tri-gram

概率估计
Unigram

假设有语料库

5项| 今天 的 天气 很好 啊
5项| 我 很 想 出去 运动
5项| 但 今天 上午 有 课程
4项| 训练营 明天 才 开始

P ( [ 今 天 , 开 始 , 训 练 营 , 课 程 ] ) = P ( 今 天 ) P ( 开 始 ) P ( 训 练 营 ) P ( 课 程 ) = 2 19 ⋅ 1 19 ⋅ 1 19 ⋅ 1 19 = 2 19 4 \begin{aligned} & P([今天,开始,训练营,课程]) \\ = & P(今天)P(开始)P(训练营)P(课程) \\ = & {2 \over 19}\cdot {1 \over 19}\cdot {1 \over 19}\cdot {1 \over 19} \\ = & {2 \over {19}^4} \end{aligned} ===P([,,,])P()P()P()P()1921911911911942

Bigram

假设有语料库

5项| 今天 的 天气 很好 啊
5项| 我 很 想 出去 运动
5项| 但 今天 上午 想 上课
4项| 训练营 明天 才 开始

P ( 上 午 ∣ 今 天 ) = 1 2 P ( 的 ∣ 今 天 ) = 1 2 P ( 出 去 ∣ 想 ) = 1 2 P ( 上 课 ∣ 想 ) = 1 2 P ( [ 今 天 , 上 午 , 想 , 出 去 , 运 动 ] ) = P ( 今 天 ) P ( 上 午 ∣ 今 天 ) P ( 想 ∣ 上 午 ) P ( 出 去 ∣ 想 ) P ( 运 动 ∣ 出 去 ) = 2 19 ⋅ 1 2 ⋅ 1 ⋅ 1 2 ⋅ 1 = 1 36 \begin{matrix} \begin{aligned} P(上午|今天)={1 \over 2}\\ P(的|今天)={1 \over 2}\\ P(出去|想)={1\over 2}\\ P(上课|想)={1\over 2} \end{aligned} & \begin{aligned} &P([今天,上午,想,出去,运动]) \\ =&P(今天)P(上午|今天)P(想|上午)P(出去|想)P(运动|出去)\\ =&{2\over 19}\cdot {1\over 2}\cdot 1\cdot{1 \over 2}\cdot 1\\ =&{1\over 36} \end{aligned} \end{matrix} P()=21P()=21P()=21P()=21===P([,,,,])P()P()P()P()P()192211211361

模型评估
Perplexity

Perplexity= 2 − ( x ) 2^{-(x)} 2(x), x x x: average log likelihood

则perplexity越小, 语言模型越好.

例子: 假设有训练好的Bigram

p(天气|今天)=0.01
p(今天)=0.002
p(很好|天气)=0.1
p(适合|很好)=0.01
p(出去|适合)=0.02
p(运动|出去)=0.1

则"今天 天气 很好 适合 出去 运动"的困惑度为

x = log ⁡ 0.002 ⋅ log ⁡ 0.01 ⋅ log ⁡ 0.1 ⋅ log ⁡ 0.01 ⋅ log ⁡ 0.02 ⋅ log ⁡ 0.1 6 perplexity = 2 − x \begin{aligned} x&=\frac{\log 0.002\cdot \log 0.01\cdot \log 0.1\cdot \log 0.01\cdot \log 0.02\cdot \log 0.1}{6}\\ \text{perplexity}&=2^{-x} \end{aligned} xperplexity=6log0.002log0.01log0.1log0.01log0.02log0.1=2x

平滑
Add-one Smoothing

在平滑之前, 在单词 w i − 1 w_{i-1} wi1后出现单词 w i w_i wi的概率是
P M L E ( w i ∣ w i − 1 ) = c ( w i , w i − 1 ) c ( w i − 1 ) P_{MLE}(w_i|w_{i-1})=\frac{c(w_{i},w_{i-1})}{c(w_{i-1})} PMLE(wiwi1)=c(wi1)c(wi,wi1)

加平滑之后,
P A d d − 1 ( w i ∣ w i − 1 ) = c ( w i , w i − 1 ) + 1 c ( w i − 1 ) + V P_{Add-1}(w_i|w_{i-1})=\frac{c(w_{i}, w_{i-1})+1}{c(w_{i-1})+V} PAdd1(wiwi1)=c(wi1)+Vc(wi,wi1)+1

V V V是词典的大小. 因为 P ( w i ) P(w_i) P(wi)可以有 V V V种选择, 所以分母必须加 V V V, 是的 P ( ∗ ∣ w i − 1 ) = 1 P(*|w_{i-1})=1 P(wi1)=1

Add-K Smoothing

x P A d d − 1 ( w i ∣ w i − 1 ) = c ( w i , w i − 1 ) + k c ( w i − 1 ) + k V xP_{Add-1}(w_i|w_{i-1})=\frac{c(w_{i}, w_{i-1})+k}{c(w_{i-1})+kV} xPAdd1(wiwi1)=c(wi1)+kVc(wi,wi1)+k

如何选择最好的 k k k?

  1. k = 1 , 2 , … , 100 k=1,2,\dots,100 k=1,2,,100
  2. 优化(最小化) perplexity = f ( k ) \text{perplexity}=f(k) perplexity=f(k)
Interpolation

计算Trigram的概率时同时考虑Unigram, Bigram, Trigram出现的频次

p ( w n ∣ w n − 1 , w n − 2 ) = λ 1 p ( w n ∣ w n − 1 , w n − 2 ) + λ 2 p ( w n ∣ w n − 1 ) + λ 3 p ( w n ) \begin{aligned} p(w_n|w_{n-1},w_{n-2})&=\lambda_1 p(w_n|w_{n-1},w_{n-2})\\ &+\lambda_2 p(w_n|w_{n-1})\\ &+\lambda_3 p(w_n) \end{aligned} p(wnwn1,wn2)=λ1p(wnwn1,wn2)+λ2p(wnwn1)+λ3p(wn)

其中 λ 1 + λ 2 + λ 3 = 1 \lambda_1+\lambda_2+\lambda_3=1 λ1+λ2+λ3=1

Good-Turning Smoothing

[视频不存在]

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值