经典统计语言模型 -- Statistical Language Model
模型介绍
NLP早期常用的统计方法,对于一个sequenc的句子S(w1w2w3⋯wn,wiS (w_1w_2w_3{\cdots}w_n, w_iS(w1w2w3⋯wn,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(w2∣w1)⋅P(w3∣w1w2)⋯P(wn∣w1w2⋯wn−1)(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(w2∣w1)⋅P(w3∣w2)⋯P(wn∣wn−1)(2)
核心思想
- 一个句子的合理性为该句子在语料中出现的概率
- 句子出现的概率为句子中词按顺序出现的概率
- 引入马尔可夫假设:N-gram模型为任意一个词出现的概率,和前N-1个词有关,以上公式(1)为Bigram,当前词的概率只和前一个有关
那么如何计算P(wn∣wn−1))P(w_n|w_{n-1}))P(wn∣wn−1))呢 ,P(wn∣wn−1)P(w_n|w_{n-1})P(wn∣wn−1)为条件概率,根据定义有
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(wn∣wn−1)=P(wn−1)P(wn−1,wn)(3)
其中P(wn−1,wn)P(w_{n-1},w_n)P(wn−1,wn)为联合概率密度, 只要语料库够大 P(wn−1,wn)=#(wn−1,wn)#P(w_{n-1},w_n)=\frac{\#(w_{n-1}, w_n)}{\#}P(wn−1,wn)=##(wn−1,wn), P(wn−1)=#(wn−1)#P(w_{n-1})=\frac{\#(w_{n-1})}{\#}P(wn−1)=##(wn−1), #(wn−1,wn)\#(w_{n-1}, w_n)#(wn−1,wn)为wn−1wnw_{n-1}w_nwn−1wn这个二元组在语料corpus中出现的次数,对P(wn−1)P(w_{n-1})P(wn−1)为0的情况
缺点
- Ngram是由词频率和共同出现的频率来估计概率的,算力的问题随着Ngram的N变大而指数增大
- 当N不太大的时候,无法解决长文本的依赖问题
- 对于共现次数为0的情况,wn−1wnw_{n-1}w_nwn−1wn出现的次数为0,需要考虑平滑处理,N越大,情况越严重
- N元组的共现无法体现语义相似
优点
- 原理简单,语料库来自人类的自然文本,数据量巨大且不用标注
- 奠定了之后NLP语言模型的发展基石
更多推荐


所有评论(0)