学习笔记(3)——二元语法

语言模型

语言模型 指的是对语言现象的数学抽象。即给定一个句子 w,语言模型就是计算句子的出现概率 p(w) 的模型,而统计的对象就是人工标注而成的语料库。

数据稀疏 :p(w) 的计算非常难,句子数量无穷无尽。即便是大型语料库,也只能“枚举”有限的数百万个句子。实际遇到的句子大部分都在语料库之外,意味着它们的概率都被当作0。

句子一般不重复,但单词是在重复使用,所以把句子表示成单词列表: w 1 w 2 ⋯ w k w_{1} w_{2} \cdots w_{k} w1w2wk,每个 w t , t ∈ [ 1 , k ] w_{t}, t \in[1, k] wt,t[1,k]都是一个单词,定义语言模型:

p ( w ) = p ( w 1 w 2 ⋯ w k ) = p ( w 1 ∣ w 0 ) × p ( w 2 ∣ w 0 w 1 ) × ⋯ × p ( w k + 1 ∣ w 0 w 1 w 2 … w k ) = ∏ t = 1 k + 1 p ( w t ∣ w 0 w 1 ⋯ w t − 1 ) \begin{aligned} p(\boldsymbol{w}) &=p\left(w_{1} w_{2} \cdots w_{k}\right) \\ &=p\left(w_{1} \mid w_{0}\right) \times p\left(w_{2} \mid w_{0} w_{1}\right) \times \cdots \times p\left(w_{k+1} \mid w_{0} w_{1} w_{2} \ldots w_{k}\right) \\ &=\prod_{t=1}^{k+1} p\left(w_{t} \mid w_{0} w_{1} \cdots w_{t-1}\right) \end{aligned} p(w)=p(w1w2wk)=p(w1w0)×p(w2w0w1)××p(wk+1w0w1w2wk)=t=1k+1p(wtw0w1wt1)

其中, w 0 = B O S w_{0}=B O S w0=BOS (Begin Of Sentence, 有时用 s),
w k + 1 = E O S ( w_{k+1}=E O S( wk+1=EOS( EndOfSentence , , , 有时也用 < / s > ) </ s>) </s>)

随句子长度增大,语言模型会遇到如下两个问题:

  • 数据稀疏 指的是长度越大的句子越难出现,可能统计不到频次,即 p ( w k ∣ w 1 w 2 … w k − 1 ) = 0 p\left(w_{k} \mid w_{1} w_{2} \ldots w_{k-1}\right)=0 p(wkw1w2wk1)=0
  • 计算代价大 k 越大,需存储的 p 就越多,即便用字典树索引,依然代价不菲。

马尔可夫链与二元语法

为解决以上两个问题,需要使用马尔可夫假设来简化语言模型。
马尔可夫链 :给定时间线上有一串事件顺序发生,假设每个事件的发生概率只取决于前一个事件,那么这串事件构成的因果链被称作马尔可夫链。

在语言模型中,第 t 个事件指的是 Wt 作为第 t 个单词出现。即每个单词出现的概率只取决于前一个单词:

p ( w t ∣ w 0 w 1 … w t − 1 ) = p ( w t ∣ w t − 1 ) p\left(w_{t} \mid w_{0} w_{1} \ldots w_{t-1}\right)=p\left(w_{t} \mid\right.w_{t-1}) p(wtw0w1wt1)=p(wtwt1)

此时的语言模型称为二元语法模型

p ( w ) = p ( w 1 w 2 ⋯ w k ) = p ( w 1 ∣ w 0 ) × p ( w 2 ∣ w 1 ) × ⋯ × p ( w k + 1 ∣ w k ) = ∏ t = 1 k + 1 p ( w t ∣ w t − 1 ) \begin{aligned} p(\boldsymbol{w}) &=p\left(w_{1} w_{2} \cdots w_{k}\right) \\ &=p\left(w_{1} \mid w_{0}\right) \times p\left(w_{2} \mid w_{1}\right) \times \cdots \times p\left(w_{k+1} \mid w_{k}\right) \\ &=\prod_{t=1}^{k+1} p\left(w_{t} \mid w_{t-1}\right) \end{aligned} p(w)=p(w1w2wk)=p(w1w0)×p(w2w1)××p(wk+1wk)=t=1k+1p(wtwt1)

由于语料库中二元连续的重复程度要高于整个句子的重要程度,缓解了数据稀疏的问题,另外二元连续的总数量远远小于句子的数量,存储和查询也得到了解决。

n元语法

n元语法 的定义:每个单词的概率仅取决于该单词之前的 n 个单词:

p ( w ) = ∏ t = 1 k + n − 1 p ( w t ∣ w t − n + 1 ⋯ w t − 1 ) p(w)=\prod_{t=1}^{k+n-1} p\left(w_{t} \mid w_{t-n+1} \cdots w_{t-1}\right) p(w)=t=1k+n1p(wtwtn+1wt1)

当 n=1 时的 n 元语法称为一元语法 ( unigram) ;当 n=3 时的 n 元语法称为三元语法(trigram); n≥4时数据稀疏和计算代价又变得显著起来,实际工程中几乎不使用。

数据稀疏与平滑策略

对于 n 元语法模型,n 越大,数据稀疏问题越严峻。一个解决方案是利用低阶 n 元语法平滑高阶 n 元语法。所谓平滑 ,就是字面上的意思:使 n 元语法频次的折线平滑为曲线。最简单的一种是线性插值法

p ( w t ∣ w t − 1 ) = λ p M L ( w t ∣ w t − 1 ) + ( 1 − λ ) p ( ω t ) p\left(w_{t} \mid w_{t-1}\right)=\lambda p_{\mathrm{ML}}\left(w_{t} \mid w_{t-1}\right)+\left(1-\lambda )p\left(\omega_{t}\right)\right. p(wtwt1)=λpML(wtwt1)+(1λ)p(ωt)

其中,λ∈(0,1)常数平滑因子。通俗理解:线性插值就是劫富济贫的税赋制度,其中的 λ 就是个人所得税的税率。

一元语法也可以通过线性插值来平滑:

p ( w t ) = λ p M L ( w t ) + ( 1 − λ ) 1 N p\left(w_{t}\right)=\lambda p_{\mathrm{ML}}\left(w_{t}\right)+(1-\lambda) \frac{1}{N} p(wt)=λpML(wt)+(1λ)N1

其中,N 是语料库总词频。

二元语法与词典分词比较

二元语法和词典分词的评测比较:
在这里插入图片描述
相较于词典分词,二元语法在精确度、召回率及IV召回率上全面胜出,最终F1值提高了 2.5%,成绩的提高主要受惠于消歧能力的提高。然而 OOV 召回依然是 n 元语法模型的硬伤,需要更强大的统计模型。

参考文献
《自然语言处理入门》详细笔记——3. 二元语法与中文分词

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值