内容纲要

欢迎转载,作者:Ling,注明出处:自然语言处理:原理简明教程03-语言模型

参考书:《统计自然语言处理(第2版)》,《形式语言与自动机理论》,《统计自然语言基础》,《自然语言处理综论》

形式语言缺陷

  • 对于像汉语,英语这样的大型自然语言系统,难以构造精确的文法
  • 不符合人类学习语言的习惯
  • 有些句子,语法正确(符合文法),但在语义上却是不可能发生的,形式语言无法排除这些句子,例如:大灰狼吃小羊,不可能是:小羊吃大灰狼

解决方向:基于大量语料,采用统计学手段建立模型

统计方法

  • 大规模语料库的出现为自然语言统计处理方法的实现提供了可能(也可能是进一步发展的制约)
  • 相比形式语言,可以发现语言使用的普遍规律
  • 可以利用机器学习模型自动获取语言知识,手段更为丰富
  • 可以发现推测未知语言现象
  • 语言模型是将统计方法用于解决自然语言处理问题的最基本尝试
  • 只有在数据不够充足的情况下,我们需要更加借助业务知识。只要有合适的,足够的海量数据,我们就可以抛弃业务,直接通过合适的学习模型,从海量数据里提炼出智能和知识,商业价值

语言模型:通俗地说就是通过语料,计算某个句子出现的概率

ml03001

问题:每次考虑前n-1个,需要存储概率的空间巨大

解决:N-gram: 只考虑前2,3,4..个,分别是2-gram,3-gram

二元文法(一阶马尔科夫链):2-gram

ml03002

  • 实例

给定句子:Mark wrote a book

增加标记:<BOS> Mark wrote a book <EOS>

2元文法的概率为:

P(Mark wrote a book) = P(Mark|<BOS>)×P(wrote|Mark)×P(a|wrote)×P(book|a)×P(<EOS>|book)

最大似然估计

  • 形式化表示

ml03003

  • 实例(宗书85页)

ml03004

  • 应用

    • 语音识别消除歧义

ml03005

ml03006

  • 输入法的长句
  • 汉语分词

ml03007

ml03008

语言模型解题步骤

  • 收集大量语料(这步是基础工作,也是最工作量最大的)
  • 对语料进行统计分析,得出知识(例如n元文法这类的)
  • 针对场景建立算法,即使是计算简单的概率也有很多复杂的算法可以运用,有些可以直接标注(不NLP相关的算法虽然都很复杂,但幸好来来去去就是那么几个)
  • 解释戒应用结果

语言模型性能评价:交叉熵,困惑度

  • 定义

ml03009

  • 意义:

    • 熵越大,表示越不确定,正确估计其值可能性越小
    • 熵最初表示信息传播要的最小带宽,例如a,b,c,d,e在单词中出现的概率不同,用0,1表示概率高的短,概率低的长,可以减小存储,但是最少也要熵的大小空间。

相对熵(KL距离):

  • 定义:

ml03010

  • 意义:反应p和q接近程度,越接近D越接近0
  • 推导:

ml03011

交叉熵

  • 定义:

ml03012

  • 意义:替代p(x)之后的熵值,
  • 推导:结合上面推到加上H(X)可得
  • 注意:其中p(x)还是未知,可以用均匀的概率近似替代,于是得到困惑度

语言模型评估

ml03013

  • 推导:

ml03014

困惑度

  • 定义:

ml03015

语言模型存在的问题:当语料中没有某个词,不能认为其不可能,需要做数据平滑,也就是给这些语料没有的数据,一个值,避免句子概率为0

ml03016

数据平滑

  • 目的:解决由于数据匮乏(稀疏) 引起的零概率问题。
  • 方法:从高概率句子分出微小的概率给不零概率句子(即所谓的“劫富济贫”)
  • 常见算法:

    • 加法平滑方法(加1法)
    • 古德-图灵(Good-Turing)估计法
    • Katz平滑方法
    • Jelinek-Mercer平滑方法
    • Witten-Bell平滑方法
    • 绝对减值法(absolute discounting)
    • Kneser-Ney平滑方法
    • 修正的Kneser-Ney平滑方法
  • 关系:

    • 不管训练语料规模多大,对于二元语法和三元语法而言,Kneser-Ney平滑方法和修正的Kneser-Ney平滑方法的效果都好于其他所有的平滑方法。Katz平滑方法和Jelinek-Mercer平滑方法次之。
    • 在稀疏数据的情况下,Jelinek-Mercer平滑方法优于Katz平滑方法;而在有大量数据的情况下,Katz平滑方法则优于Jelinek-Mercer平滑方法。

ml03017

加法平滑法

  • 基本思想:每一种情况出现的次数加1
  • 对2-gram:

ml03018

  • 例子:

ml03019

Good-Turning(宗书88页)

  • 定义:

ml03020

  • 思想:减小分子,考虑邻近的情况,如果和邻近比,n越小,则扣除越少,最终扣除的所有,平分给剩下的节点
  • 问题:平分给剩下的不太合理,所以出现了J-M算法

ml03021

Jelinek-Merer平滑方法

  • 基本思想:主要利用低元N-gram模型对高元N-gram模型进行线性插值。比如用unigram对2-gram插值
  • 定义:

ml03022

影响平滑算法性能的因素

ml03023

语言模型缺陷

  • 不同领域主题,应该有区别
  • n 元语言模型的独立性假设的前提是一个文本中的当前词出现的概率只不它前面相邻的n-1 个词相关,但这种假设在很多情况下是明显丌成立的

自适应方法

  • 基于缓存的语言模型(cache-based LM)
  • 基于混合方法的语言模型
  • 基于最大熵的语言模型