模型介绍

NLP早期常用的统计方法,对于一个sequenc的句子S(w1w2w3⋯wn,wiS (w_1w_2w_3{\cdots}w_n, w_iS(w1w2w3wn,wi表示某个词),其出现的概率计算如下:
P(S)=P(w1)⋅P(w2∣w1)⋅P(w3∣w1w2)⋯P(wn∣w1w2⋯wn−1)(1) P(S)=P(w_1){\cdot}P(w_2|w_1){\cdot}P(w_3|w_1w_2){\cdots}P(w_{n}|w_1w_2{\cdots}w_{n-1}) \tag1 P(S)=P(w1)P(w2w1)P(w3w1w2)P(wnw1w2wn1)(1)
引入马尔可夫假设,任意一个词出现的概率,只和前N-1个词有关, 特别的当N=2的时候,公式1变为如下
P(S)=P(w1)⋅P(w2∣w1)⋅P(w3∣w2)⋯P(wn∣wn−1)(2) P(S)=P(w_1){\cdot}P(w_2|w_1){\cdot}P(w_3|w_2){\cdots}P(w_{n}|w_{n-1}) \tag2 P(S)=P(w1)P(w2w1)P(w3w2)P(wnwn1)(2)

核心思想

  1. 一个句子的合理性为该句子在语料中出现的概率
  2. 句子出现的概率为句子中词按顺序出现的概率
  3. 引入马尔可夫假设:N-gram模型为任意一个词出现的概率,和前N-1个词有关,以上公式(1)为Bigram,当前词的概率只和前一个有关

那么如何计算P(wn∣wn−1))P(w_n|w_{n-1}))P(wnwn1))呢 ,P(wn∣wn−1)P(w_n|w_{n-1})P(wnwn1)为条件概率,根据定义有
P(wn∣wn−1)=P(wn−1,wn)P(wn−1)(3) P(w_n|w_{n-1}) =\frac{P(w_{n-1},w_n)}{P(w_{n-1})} \tag3 P(wnwn1)=P(wn1)P(wn1,wn)(3)
其中P(wn−1,wn)P(w_{n-1},w_n)P(wn1,wn)为联合概率密度, 只要语料库够大 P(wn−1,wn)=#(wn−1,wn)#P(w_{n-1},w_n)=\frac{\#(w_{n-1}, w_n)}{\#}P(wn1,wn)=##(wn1,wn), P(wn−1)=#(wn−1)#P(w_{n-1})=\frac{\#(w_{n-1})}{\#}P(wn1)=##(wn1), #(wn−1,wn)\#(w_{n-1}, w_n)#(wn1,wn)wn−1wnw_{n-1}w_nwn1wn这个二元组在语料corpus中出现的次数,对P(wn−1)P(w_{n-1})P(wn1)为0的情况

缺点

  1. Ngram是由词频率和共同出现的频率来估计概率的,算力的问题随着Ngram的N变大而指数增大
  2. 当N不太大的时候,无法解决长文本的依赖问题
  3. 对于共现次数为0的情况,wn−1wnw_{n-1}w_nwn1wn出现的次数为0,需要考虑平滑处理,N越大,情况越严重
  4. N元组的共现无法体现语义相似

优点

  1. 原理简单,语料库来自人类的自然文本,数据量巨大且不用标注
  2. 奠定了之后NLP语言模型的发展基石

更多推荐