自然语言处理(NLP)基础知识——N-gram

N-Gram Model

N元模型

  • 在一般的序列生成任务中,我们生成序列中的某个词需要依赖于生成前面的所有词的条件下,生成某个词的条件概率,即 p ( x t ∣ x 1 : ( t − 1 ) ) p\left(x_{t} \mid \boldsymbol{x}_{1:(t-1)}\right) p(xtx1:(t1))。但当序列比较长时,依然很难估计上述条件概率

  • 一个简化的方案就是N-Gram Model,它假设每个词 x t x_t xt只依赖于前面的 N − 1 N-1 N1个词(即 N N N阶马尔可夫性质)

    p ( x t ∣ x 1 : ( t − 1 ) ) = p ( x t ∣ x ( t − N + 1 ) : ( t − 1 ) ) p\left(x_{t} \mid \boldsymbol{x}_{1:(t-1)}\right)=p\left(x_{t} \mid \boldsymbol{x}_{(t-N+1):(t-1)}\right) p(xtx1:(t1))=p(xtx(tN+1):(t1))
    N = 1 N=1 N=1时,称为一元模型(Unigram);当 N = 2 N=2 N=2时,称为二元模型(Bigram)

Unigram

一元模型

  • N = 1 N=1 N=1时,序列中每个词都和其他词独立,和它的上下文无关

  • 在一元模型中,序列 x 1 : T \boldsymbol{x}_{1: T} x1:T的概率可以写为

    p ( x 1 : T ; θ ) = ∏ t = 1 T p ( x t ) = ∏ k = 1 ∣ V ∣ θ k m k p\left(\boldsymbol{x}_{1: T} ; \theta\right)=\prod_{t=1}^{T} p\left(x_{t}\right)=\prod_{k=1}^{|\mathcal{V}|} \theta_{k}^{m_{k}} p(x1:T;θ)=t=1Tp(xt)=k=1Vθkmk
    其中 m k m_k mk为词表中第 k k k个词 v k v_k vk在序列中出现的次数

  • 给定一组训练集 { x 1 : T n ( n ) } n = 1 N ′ \left\{\boldsymbol{x}_{1: T_{n}}^{(n)}\right\}_{n=1}^{N^{\prime}} {x1:Tn(n)}n=1N其对数似然函数为

    log ⁡ ∏ n = 1 N ′ p ( x 1 : T n ( n ) ; θ ) = log ⁡ ∏ k = 1 ∣ v ∣ θ k m k = ∑ k = 1 ∣ v ∣ m k log ⁡ θ k \begin{aligned} \log \prod_{n=1}^{N^{\prime}} p\left(\boldsymbol{x}_{1: T_{n}}^{(n)} ; \theta\right) &=\log \prod_{k=1}^{|v|} \theta_{k}^{m_{k}} \\ &=\sum_{k=1}^{|v|} m_{k} \log \theta_{k} \end{aligned} logn=1Np(x1:Tn(n);θ)=logk=1vθkmk=k=1vmklogθk
    其中 m k m_k mk为第 k k k个词在整个训练集中出现的次数

    • 上述最大似然估计可转换为约束优化问题

    max ⁡ θ ∑ k = 1 ∣ v ∣ m k log ⁡ θ k  s.t.  ∑ k = 1 ∣ v ∣ θ k = 1 \begin{array}{ll} \max _{\theta} & \sum_{k=1}^{|v|} m_{k} \log \theta_{k} \\ \text { s.t. } & \sum_{k=1}^{|v|} \theta_{k}=1 \end{array} maxθ s.t. k=1vmklogθkk=1vθk=1

    • 通过引入拉格朗日函数可解得

    θ k = m k ∑ k ′ = 1 ∣ V ∣ m k ′ = m k m ˉ \theta_{k}=\frac{m_{k}}{\sum_{k^{\prime}=1}^{|\mathcal{V}|} m_{k^{\prime}}}=\frac{m_{k}}{\bar{m}} θk=k=1Vmkmk=mˉmk

    • 因此,在一元模型中,最大似然估计等价于频率估计

Bigram

二元模型

N-gram

N元模型

  • 条件概率 p ( x t ∣ x ( t − N + 1 ) : ( t − 1 ) ) p\left(x_{t} \mid \boldsymbol{x}_{(t-N+1):(t-1)}\right) p(xtx(tN+1):(t1))也能通过最大似然估计得到

    p ( x t ∣ x ( t − N + 1 ) : ( t − 1 ) ) = m ( x ( t − N + 1 ) : t ) m ( x ( t − N + 1 ) : ( t − 1 ) ) p\left(x_{t} \mid \boldsymbol{x}_{(t-N+1):(t-1)}\right)=\frac{\mathrm{m}\left(\boldsymbol{x}_{(t-N+1): t}\right)}{\mathrm{m}\left(\boldsymbol{x}_{(t-N+1):(t-1)}\right)} p(xtx(tN+1):(t1))=m(x(tN+1):(t1))m(x(tN+1):t)
    m ( x ( t − N + 1 ) : t ) \mathrm{m}\left(\boldsymbol{x}_{(t-N+1): t}\right) m(x(tN+1):t) x ( t − N + 1 ) : t \boldsymbol{x}_{(t-N+1): t} x(tN+1):t在数据集中出现的次数

Smoothing

平滑技术

  • N元模型的一个主要问题是数据稀疏问题。在一元模型中,如果一个词在训练集中不存在,就会导致任何包含该词的句子的概率都为0;在N元模型中,当一个N元组合在训练集中不存在时,包含这个组合的句子的概率也都为0

  • 数据稀疏的解决办法之一是平滑技术(Smoothing),即给一些没有出现的词组合赋予一定的先验概率。例如加法平滑的计算公式为

    p ( x t ∣ x ( t − N + 1 ) : ( t − 1 ) ) = m ( x ( t − N + 1 ) : t ) + δ m ( x ( t − N + 1 ) : ( t − 1 ) ) + δ ∣ V ∣ p\left(x_{t} \mid \boldsymbol{x}_{(t-N+1):(t-1)}\right)=\frac{\mathrm{m}\left(\boldsymbol{x}_{(t-N+1): t}\right)+\delta}{\mathrm{m}\left(\boldsymbol{x}_{(t-N+1):(t-1)}\right)+\delta|\mathcal{V}|} p(xtx(tN+1):(t1))=m(x(tN+1):(t1))+δVm(x(tN+1):t)+δ
    其中 δ ∈ ( 0 , 1 ] \delta \in (0,1] δ(0,1]为常数。当 δ = 1 \delta = 1 δ=1时,称为加1平滑

  • 除了加法平滑,还有Good-Turing平滑、Kneser-Ney平滑等

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值