N-gram基本原理
语言模型的作用在于构建为字符串s的概率分布p(s),也即是一个字符串作为一个句子出现的概率。语言模型与句子是否合法没有关系,即便一句话是符合逻辑的,但仍可以认为其出现的概率为零。但反过来不成立,即如果一句话不符合逻辑,那么直接认为这句话出现的概率为零。
对于一个有m个词的句子s=sw1w2w3…wm而言,其概率为:
P(s)=p(w1)p(w2|w1)p(w3|w1w2)…p(wm|w1w2…wm),即产生第i个词的概率是由产生的i-1个词共同决定的,这i-1个词称为第i个词的历史。如果历史的长度为i-1,词汇集有L个,那么将会有L的i-1次方个历史情况,这种数据量是不可想象的。为了解决这个问题,引用等价类的方法减少参数,即:如果两个历史最近的n-1(1≤n≤k)个词相同,那么把这两个历史映射到同一个等价类当中。这种方法就称为N元语法(n-gram),N是指的等价类的个数。
当N等于1时,即n-1=0,出现在第i位上的词独立与历史,记为unigram;
当N等于2时,即n-1=1,出现在第i位上的词只与前一个词有关,也就是一阶马尔科夫链,记为bigram;
当N等于3时,即n-1=2,出现在第i位上的词与前两个词有关,也就是二阶马尔科夫链,记为trigram。
以bigram为例,为了使i=1时有意义,在句子之前加一个标记;为了使所有字符串的概率纸盒等于1,在句子末尾加一个标记。为了估计p(wi|wi-1),可以用最大似然估计(MLE)计算:p(wi|wi-1)=c(wi-1wi)/(求和)c(wi-1wi),其中c表示wi-1wi在给定文本中的出现次数。