第 3 章 统计语言模型
Last updated
Last updated
讲述如何利用统计语言模型处理自然语言,以及如何确保结果的准确性、减少不平滑。
用来处理自然语言的上下文关系,它是所有自然语言处理的基础。并广泛应用于机器翻译、语音识别、印刷体或手写体识别、拼音纠错、汉字输入和文献查询。
假定表示某一个有意义的句子,由一连串特定顺序排列的词组成, 其中是句子的长度。现在我们想知道在文本中出现的可能性,即是的概率。 既然,那不妨将展开表示:
根据大数定律,只要统计量足够,相对频度就等于概率,即:
结合(3.4),(3.7),(3.8),可得:
二是自然语言中上下文的相关性可能跨度非常大,甚至可以从一个段落跨到另一个段落,所以即使模型阶数n再高,也没有太多意义。这是马尔科夫假设的局限。
通过对语料的统计,得到模型中的参数。
我们需要足够的语料才能得到较为可靠的概率。然而语料过多,可能会导致大部分条件概率为0的情况,这种模型叫做“不平滑”。
古德-图灵估计(Good-Turing Estimate):对于没有看见的事件,我们不能认为它的发生概率就是零,因此我们从概率的总量中,分配一个很小的概率给予这些没有看见的事件。这样一来,看见的时间的概率总和就要小于1了。至于小多少,要根据“越是不可信的统计折扣越多”的方法进行。
显然:
训练语料和模型应用的领域须保持一致,以减少噪音。
语料数据通常是越多越好,可以利用平滑过渡方法解决小/零概率事件。
最好能预处理能具有规律的、量比较大的噪音。
数学的魅力在于将复杂的问题简单化。
序列出现的概率,等于序列中每一个词出现的条件概率相乘,其中,并且出现的概率同他前面的所有词有关,于是可展开为:
由于计算复杂,所以就假设(马尔科夫假设)任意一个词出现的概率只同它前面的词有关:
接下来的问题就是估计条件概率根据定义,可知:
对与联合概率和边缘概率的估计就变得简单了。通过计数可获得这些词或者二元组的相对频度:
假设文本中的每个词和前面的个词有关系,而与更前面的词无关,则:
的一元模型实际上是一个上下文无关的模型,的值一般为2,或3。
值很少取更高值的原因:
一是 越大,复杂度越大(这里是一种语言词典的词汇量)。
一是 越大,复杂度越大(这里是一种语言词典的词汇量)。
二是自然语言中上下文的相关性可能跨度非常大,甚至可以从一个段落跨到另一个段落,所以即使模型阶数再高,也没有太多意义。
设语料库中出现次的词有个,特别地,未出面的词数量为,语料库大小为。那么,显然有:
出现次词在整个语料库中的相对频度(Relative Frequency)则是,若不做任何优化处理,就可用这个相对频度作为这些词的频率估计。
现在假定当比较小时,它的统计可能不可靠,因此出现次的那些词在计算它们的概率时要使用一个更小一点的次数(而不直接使用),古德-图灵估计按照下列公式计算:
删除插值法:因为一元组出现的次数平均比二元组出现的次数要高得多,根据大数定理,它的频度更接近概率分布。所以,用低阶语言模型和高阶模型进行线性差值来达到平滑的目的。即连续三个字出现的概率倍连续三个字出现的概率倍连续两个字出现的概率倍该字单独出现的概率: