什么是语言模型
注:XX 模型是指利用建立的一整套系统可以给 XX 打出一个数字分数,则可以称为 XX 模型;语言模型是指,利用建立的一整套系统,且该系统可以给每一个句子打出一个分数;如上图中,第一个句子比第二个句子通顺,因此分数要高于第二个;
注:上图的话题模型中,可以用来回答 什么 是 语言 模型 这句的话题是什么时,NLP的概率要远大于三国;
概率语言模型
自然语言理解中,语言模型特指的是概率语言模型;
注:公式中的w1,w2...wn表示的是句子中的每个单词;
N-gram 语言模型
注:用链式法则计算句子中各单词的概率时,越到句子的后面,引入的变量就会越多,但其中符合预期的很少,因此,可以引入马尔可夫链来计算;
注:实际使用bigram等来计算概率时,通常会在句首加上start标识,在句尾加上end标识,用来识别句子的首句单词和句尾单词;
注:用链式法则计算句子中的单词概率时,可以从句首开始,也可以从句尾开始;
语言模型的评价
注:公式中,V表示单词的字典表示概率;Perplexity的定义来源于信息论;
注:上面公式中w表示句子中每个单词(可以重复),
中的v表示句子每种单词(不可重复,即句子中的多个相同词只算1个);
注:在一个有10000个词的字典中,要猜其中的某一个词的话,猜对的概率为1/10000,Bigram有可能将其降低到219;
PPX做为评价语言模型的一个标准,其值越低越好;
语言模型的两大挑战------OOV和平滑方法
公式的推导过程(极大似然估计):
解决OOV的方法:
注:UNK是unkonw的缩写,测试集中的UNK的替换方法是通过统计测试集中各个词的出现次数,然后将出现次数少的词全部替换成UNK(如大数据集中可以将出现次数小于5次的替换,小数据集中将小于2次的替换);
注:平滑方法针对的问题是,测试集中的某个句子,该句子中的每个单词都在训练集中出现过,但该句子的组合未在训练集中出现过,因此该组合在语言模型给出的数字为0,该问题本质上是一个贫富分化的问题,上图中的ABC为实现社会中解决该问题的方法;
历史上出现过的解决该问题的部分方法:
注:劫富济贫是指按一定比例,从每个概率不为0的单词上收取一定数值,将其分发到为0的单词上;
注:回退法是指比如说某个句子,我 喜欢 编程,这个句子的组合没有在训练集中出现过,则可以回退一步去在训练集中找喜欢 编程这个句子,还是没有就再回退一步去找编程这个单词;
Kneser-Ney Smoothing
Kneser-Ney Smoothing是目前工业上使用的用来解决,句子中所有的单词在训练集中都出现过,但该句子的单词组合的方式未出过的问题;
注:如上图所示的完形填空,如果按照绝对折扣法来计算,则会将 老铁 这个词填写进去,这是不符合预期的,老铁这个词只是一称呼,使用频率会比较高,但并不能说明该词在和其它词比较时,会比其它词更适合预期;
注:相较绝对折扣法的改进:如上图中,刘强西和奶茶这两个词组出现在一起的次数,虽然比玉思聪和其它词的组合出现的总次数要多,但刘强西和奶茶是一个固定的组合,而玉思聪和其它不同单词出现的种类要多,因此,按现实情况,当出现一个未出现过的单词时且只能在刘强西和玉思聪中选一个时,玉思聪的概率要高于刘强西;
注:上面公式中黑色实心圆表示单词的通配符;中,
都是N的下标,表示1加上通配符实际匹配到的单词的种数;用红色方框的交税来举例,下图中的D表示阶梯税率,c表示该单词的出现次数,是用来确定交税区间的依据;
https://github.com/shixing/xing_nlp/tree/master/LM
http://edu.sina.com.cn/en/2002-09-27/6063.html
潜在问题