自然语言处理——5.4 语言模型(自适应)
问题
① 在训练语言模型时所采用的语料往往来自多种不同的领域,这些综合性语料难以反映不同领域之 间在语言使用规律上的差异,而语言模型恰恰对于训 练文本的类型、主题和风格等都十分敏感;
② n 元语言模型的独立性假设的前提是一个文本中的当前词出现的概率只与它前面相邻的 n-1 个词相关,但这种假设在很多情况下是明显不成立的。
方法1——基于缓存的语言模型(cache-based LM)
该方法针对的问题是:在文本中刚刚出现过的一些词在后边的句子中再次出现的可能性往往较大,比标准 的 n-gram 模型预测的概率要大。针对这种现象, cache-based自适应方法的基本思路是:语言模型通过n-gram 的线性插值求得:
插值系数可以通过EM求得。
通常的处理方法是:在缓存中保留前面的 K个单词,每个词的概率(缓存概率)用其在缓存中出现的相对频率计算得出:
其中,为指示器函数(indicator function),如果表示的情况出现,则,否则
这种方法的缺陷是,缓存中一个词的重要性独立于该词与当前词的距离。P. R. Clarkson等人(1997) 的研究表明,缓存中每个词对当前词的影响随着与该词距离的增大呈指数级衰减。因此将上式改写为:
其中,为衰减率,为归一化常数,以使得,为词汇表。
方法2——基于混合方法的语言模型
该方法针对的问题是:由于大规模训练语料本身是异源的(heterogenous),来自不同领域的语料无论在主题(topic)方面,还是在风格(style)方面,或者两者都有一定 的差异,而测试语料一般是同源的(homogeneous),因此,为了获得最佳性能,语言模型必须适应各种不同类型的语料对其性能的影响。
基本方法:
① 对训练语料按来源、主题或类型等聚类(设为n类);
② 在模型运行时识别测试语料的主题或主题的集合;
③ 确定适当的训练语料子集,并利用这些语料建立特定的语言模型;
④ 利用针对各个语料子集的特定语言模型和线性插值公式(如下所示),获得整个语言模型。
EM 迭代计算插值系数 :
a) 对于个类,随机初始化插值系数;
b) 根据上述公式计算新的概率和期望;
c) 第 次迭代, 第个语言模型在第类上的系数:
其中,h为历史。
d)不断迭代,重复步骤b)和c),直至收敛。
方法3——基于最大熵的语言模型
基本思想
通过结合不同信息源的信息构建一个语言模型。每个信息源提供一组关于模型参数的约束条件,在所有满足约束的模型中,选择熵最大的模型。