自然语言处理4——统计语言模型

自然语言处理4——统计语言模型

概述

理论基础:信源–信道模型,即已知输出,求解最有可能的输入。

数学描述: I = a r g m a x P ( I ∣ O ) = a r g m a x P ( O ∣ I ) P ( I ) I = argmaxP(I|O) = argmaxP(O|I)P(I) I=argmaxP(IO)=argmaxP(OI)P(I)

  • 信源模型:以概率 P ( I ) P(I) P(I)生成输入信号
  • 信道模型:信道以概率分布 P ( O ∣ I ) P(O|I) P(OI)将输入信号转换成输出信号

统计语言模型:为了捕获自然语言的统计规律以改善各种自然语言应用系统的性能,即对各种语言单位进行概率分布的估计。

语言模型:用概率模型估计语言句子出现的概率。

方法:链式规则 P ( S ) = P ( w 1 ) P ( w 2 ∣ w 1 ) . . . P ( w n ∣ w 1 w 2 . . . w n − 1 ) P(S) = P(w_1)P(w_2|w_1)...P(w_n|w_1w_2...w_{n-1}) P(S)=P(w1)P(w2w1)...P(wnw1w2...wn1)

缺点:需要这个句子原封不动地出现在语料库中才能估计它的概率。

解决方法:有限历史假设,即取决于前K个状态,即n-gram模型

n-gram模型

由n个词构成的序列,不考虑太旧的历史,只记住前n-1个词。相当于n-1阶的马尔科夫链。

n=1n=2n=3
unigram模型: P ( S ) = P ( w 1 ) P ( w 2 ) . . . P ( w n ) P(S) = P(w_1)P(w_2)...P(w_n) P(S)=P(w1)P(w2)...P(wn)bigram模型:$P(S) = P(w_1)P(w_2w_1)…P(w_n

**n的选择:**选择大的n,会使得约束信息变多,辨别能力大,但过大会导致数据稀疏,即两个低频词连在一起的情况下,概率为0;选择小的n,词序列在训练语料库中出现次数更多,更可靠

应用:音字转换、中文分词

方法:最大似然估计(MLE),用相对频率计算概率

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_1w_2...w_{n-1}) = \frac{c(w_1w_2...w_n)}{c(w_1w_2...w_{n-1})} P(wnw1w2...wn1)=c(w1w2...wn1)c(w1w2...wn),其中 c ( a ) c(a) c(a)表示序列a在语料库中出现的次数。

模型训练:在训练语料库中获得n-gram的频度信息

问题:零概率问题<---->解决:数据平滑

数据平滑

平滑指对概率分布进行调整使得统计语言模型中每个概率参数均不为0,且使概率分布更加合理、均匀。

  • 加一平滑:每个n-gram出现的次数+1
  • Good-Turing估计:加多少取决于词串发生的频率,多的少加,少的多加。 r ∗ = ( r + 1 ) n r + 1 n r r* = (r+1)\frac{n_{r+1}}{n_r} r=(r+1)nrnr+1 n r n_r nr表示训练集中实际出现r次的n元对个数
  • 线性插值平滑:数据稀疏主要发生在高阶的模型中,通过线性插值回退到低阶模型。若n元串出现次数为0,那就看n-1元串概率,即使不等于0也用n-1、n-2的中和一下。如bigaram的线性插值:
    P ( w i ∣ w i − 1 ) = a P ( w i ∣ w i − 1 ) + ( 1 − a ) P ( w i ) P(w_i|w_{i-1} ) = aP(w_i|w_i-1) + (1-a)P(w_i) P(wiwi1)=aP(wiwi1)+(1a)P(wi)
  • 回退式数据平滑:若条件概率 = 0时,回退到n-1gram;很小但不等于0时,用Good–turing;很大时不平滑

平滑效果与训练语料库的规模有关,规模越小,平滑效果越显著。

N-pos模型

基于词类的n-gram模型,当前词出现的概率取决于前一个词及其词性

优点:降低了模型参数的规模;n可以取很大;也可以作为数据稀疏问题的一种解决方式。

N-gram与N-pos的区别:

  • N-gram难以描述长距离的语言约束关系
  • N-pos参数空间小,不存在数据稀疏问题,但过于泛化,限制了模型的描述能力

结合它俩优点的模型:基于自动聚类生成词类数量的N-gram模型

动态、自适应、基于缓存的模型

应对网咯现象提出的模型,即某一段时间内,一类文本大量出现,而之后出现次数很少的现象。该模型能够根据词在局部文本中出现情况动态地调整语言模型中概率分布数据。

方法:将n个最近出现的词存于一个缓存中,作为独立的训练数据,由这些数据计算动态频度分布数据,将动态频度分布数据与静态分布数据(由大规模语料库训练得到)通过线性插值的方法结合:
P ( w i ∣ w i − 2 w i − 1 ) = a P 动 ( w i ∣ w i − 2 w i − 1 ) + ( 1 − a ) P 静 ( w i ∣ w i − 2 w i − 1 ) P(w_i|w_{i-2}w_{i-1}) = aP_动(w_i|w_{i-2}w_{i-1}) + (1-a)P_静(w_i|w_{i-2}w_{i-1}) P(wiwi2wi1)=aP(wiwi2wi1)+(1a)P(wiwi2wi1)

往期文章:
自然语言处理1——NLP概述
自然语言处理2——语言学基础
自然语言处理3——语言学资源

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值