码迷,mamicode.com
首页 > 编程语言 > 详细

统计语言模型

时间:2017-12-25 15:05:33      阅读:207      评论:0      收藏:0      [点我收藏+]

标签:str   两种   努力   span   log   评价   线性   gpo   条件   

语言模型

技术分享图片

p(S) 就是语言模型,即用来计算一个句子 S 概率的模型。

那么,如何计算技术分享图片呢?最简单、直接的方法是计数后做除法,即最大似然估计(Maximum Likelihood Estimate,MLE),如下:

技术分享图片

 

其中,count(w1,w2,,wi?1,wi) 表示词序列(w1,w2,,wi?1,wi) 在语料库中出现的频率。这里面临两个重要的问题:数据稀疏严重和参数空间过大,导致无法实用。

实际中,我们一般较常使用的是 N 元语法模型(N-Gram),它采用了马尔科夫假设(Markov Assumption),即认为语言中每个单词只与其前面长度 N-1 的上下文有关。

  • 假设下一个词的出现依赖它前面的一个词,即 bigram,则有:

技术分享图片

  • 假设下一个词的出现依赖它前面的两个词,即 trigram,则有:

技术分享图片

那么,我们在面临实际问题时,如何选择依赖词的个数,即 N 呢?

  • 更大的 n:对下一个词出现的约束信息更多,具有更大的辨别力
  • 更小的 n:在训练语料库中出现的次数更多,具有更可靠的统计信息,具有更高的可靠性。

理论上,n 越大越好,经验上,trigram 用的最多,尽管如此,原则上,能用 bigram 解决,绝不使用 trigram。

从本质上说,这种统计语言模型描述的是有限状态的正则文法语言,而自然语言是不确定性语言,因此与真实语言差异较大,表达能力有限,尤其无法较好的处理长距离依赖语言现象。但是,其抓住了自然语言中的局部性约束(Local Constrain)性质,因此该模型在实际应用中取得了较大的成功。

言模型效果评估

语言模型构造完成后,如何确定其好坏呢?目前主要有两种评价方法:

  • 实用方法:通过查看该模型在实际应用(如拼写检查、机器翻译)中的表现来评价,优点是直观、实用,缺点是缺乏针对性、不够客观;
  • 理论方法:迷惑度/困惑度/混乱度(preplexity),其基本思想是给测试集赋予较高概率值的语言模型较好,公式如下:

技术分享图片

由公式可知,迷惑度越小,句子概率越大,语言模型越好。

数据稀疏与平滑技术

大规模数据统计方法与有限的训练语料之间必然产生数据稀疏问题,导致零概率问题,符合经典的 zip’f 定律。如 IBM Brown:366M 英语语料训练 trigram,在测试语料中,有14.7% 的 trigram 和 2.2% 的bigram 在训练语料中未出现。

为了解决数据稀疏问题,人们为理论模型实用化而进行了众多尝试与努力,诞生了一系列经典的平滑技术,它们的基本思想是“降低已出现 n-gram 的条件概率分布,以使未出现的 n-gram 条件概率分布非零”,且经数据平滑后一定保证概率和为1,数据平滑前后如下图所示:

 技术分享图片

  • Add-one(Laplace) Smoothing

加一平滑法,又称拉普拉斯定律,其保证每个 n-gram 在训练语料中至少出现 1次,以 bigram 为例,公式如下:

技术分享图片

其中,V 是所有 bigram 的个数。

V>>c(wi?1,wi)时,即训练语料库中绝大部分 n-gram 未出现的情况(一般都是如此),Add-one Smoothing后有些“喧宾夺主”的现象,效果不佳。

一种简单的改进方法是 add-δ smoothing (Lidstone, 1920; Jeffreys, 1948)。δ 是一个小于 1 的数。

  • Good-Turing Smoothing

其基本思想是利用频率的类别信息对频率进行平滑。如下图所示:

 技术分享图片

其中,Nc表示出现次数为 c 的 n-gram 的个数。调整出现频率为 c 的 n-gram 折扣频率为 c?

技术分享图片

但是,对于较大的 c,可能出现Nc+1=0 或者 Nc>Nc+1的情况,反而使得模型质量变差,如下图所示:

技术分享图片

直接的改进策略就是“对出现次数超过某个阈值的 gram 不进行平滑,阈值一般取8~10。

  • Interpolation Smoothing

不管是 Add-one,还是 Good Turing 平滑技术,对于未出现的 n-gram 都一视同仁,难免存在不合理性(事件发生概率存在差别),所以这里再介绍一种线性插值平滑技术,其基本思想是将高阶模型和低阶模型作线性组合,利用低元 n-gram 模型对高元 n-gram 模型进行线性插值。因为在没有足够的数据对高元 n-gram 模型进行概率估计时,低元 n-gram 模型通常可以提供有用的信息。

  • Katz Backoff

其基本思想是如果 n-gram 出现频率为 0,就回退到(n-1)-gram 近似求解。

 

统计语言模型

标签:str   两种   努力   span   log   评价   线性   gpo   条件   

原文地址:http://www.cnblogs.com/qniguoym/p/8109098.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!