首页 > 代码库 > N-gram

N-gram

N-gram

u  基础概念

-------------------------------------------------

条件概率的基本定理:

设A,B 是两个事件,且A不是不可能事件,则称

 

为在事件A发生的条件下,事件B发生的条件概率

-------------------------------------------------

P(W) = P(w1, w2, w3,...wn)

P(W) =  N-gram  = LM

 

P(W)=P(w1,w2,w3,…wn) = P(w1)P(w2|w1)P(w3|w1,w2)…P(wn|

w1…wn-1)

 

P(wn|w1,...wn-1) = C(w1,w2,...wn)/C(w1,w2,...wn-1)

   故ngram只是一阶马尔科夫链

 

不足:

1.统计时需要计算大量的语句的概率,计算量随着n的增加爆炸性增长

2.数据稀疏,不可能有足够多的语句来统计概率

 

引入马尔科夫假设:假设要估算的状态只和其前i-1个状态有关

故:P(wn|w1,...wn) ≈P(wn|wn-i+1,...wn-1)

 

采用最大似然估计(MLE)来计算概率

涉及到一系列的打折平滑算法

P(wn|wn-i+1,...wn-1) = C(wn-i+1,...wn)/ C(wn-i+1,...wn-1)

 

u  基于SRILM的LM的概率计算方式

P(word1, word2, word3)

   # if has (word3| word1, word2){

   #     returnP(word3| word1, word2);

   # }else if has (word2| word1){

   #     returnbackOff(word2| word1) * P(word3| word2);

    # }else{

   #    return P(word3| word2);

   # }

    # if has (word2| word1){

   #    return P(word2| word1);

   # }else{

   #    return backOff(word1) * P(word2); #Make sure OOV change to <unk>

   # }

u  基于SRILM的LM的PPL计算方式

    ngram -ppl TESTSET.seg-order 3 -lm LM.ARPA

    --------------------------------------------------------

    file TESTSET.seg: 2000 sentences, 52388 words, 249 OOVs

    0 zeroprobs, logprob= -105980 ppl= 90.6875 ppl1= 107.805

   

    TESTSET.seg       测试集的分词文件

    LM.ARPA           待评估的语言模型

    --------------------------------------------------------

    ppl=10^{-{logP(T)}/{Sen+Word}}

    ppl1=10^{-{logP(T)}/Word}

 

N-gram