一、形式语言的缺陷

  • 对于像汉语,英语这样的大型自然语言系统,难以构造精确的文法
  • 不符合人类学习语言的习惯(先语感后语法)
  • 有些句子,语法正确(符合文法),但是语义上有明显错误,形式语言不能排除这些句子
  • 解决方向:基于大量语料,采用统计学手段建立模型

二、统计方法

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

三、语言模型

语言模型即通过语料,计算某个句子出现的概率

n元语法(n元文法)

  • 计算相邻词(字)的概率,而不是计算越来越长的词组,极大的减少了程序需要提前计算好的概率。
  • 计算时每个单位前面加个头,后面加个尾。

应用

  • 语音识别歧义消除
  • 汉语分词问题
    解决方法:计算句子在语料库中的不同概率,选用其中出现概率最大的句子。

四、语言模型的启示

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

五、语言模型性能评价

  • 评价目标:语言模型计算出的概率分布与“真实的”理想模型是否很接近
  • 困难:无法知道"真实的"理想模型的分布
  • 常用指标:交叉熵,困惑度
  • 熵有关的指标计算基础

六、信息论基本概念

泛指某些物质系统状态的一种量度,某些物质系统状态可能出现的程度。
简单来说就是,混乱程度越大,熵越大。
深度学习自然语言处理(2)

相对熵

相对熵是衡量相同事件空间里两个概率分布相对差距的测度。
简单来说,两个熵差的越多,相对熵就越大。
深度学习自然语言处理(2)

交叉熵

交叉熵是信息论中一个重要概念,主要用于度量两个概率分布间的差异性信息。
简单来说就是用该模型对文本识别的难度,或者从压缩的角度来看,每个词平均要用几个位(比特)来编码。深度学习自然语言处理(2)

困惑度

困惑度用来度量一个概率分布或概率模型预测样本的好坏程度。它也可以用来比较两个概率分布或概率模型。
简单来说,就是表达一个意思的词汇越多,越容易给人带来困惑,比如大便,大号,如厕等这些词都代表一个意思,因为词汇多,所以人们在看的时候困惑度可能就很高。
深度学习自然语言处理(2)

七、数据平滑

加1法

即在原有概率的算法上,分子分母都+1

加法平滑方法

即在原有概率的算法上,分子分母都加一个δ,0≤δ≤1

古德-图灵估计法

计算中考虑每个词不同出现次数的不同概率

https://www.bilibili.com/video/BV12J41197bB?p=15

Katz平滑方法

Jelinek-Mercer平滑方法

计算中不仅考虑每个词不同出现次数的不同概率,还考虑这个词和邻词匹配的概率

Witten-Bell平滑方法

绝对减值法

Kneser-Ney平滑方法

Church-Gale平滑方法

学界认为Kneser-Ney平滑方法是最优方法。

八、语言模型的缺陷

  • 在训练语言模型时所采用的语料往往来自多种不同的领域,这些综合性语料难以反映不同领域之间在语言使用规律上的差异,而语言模型恰恰对于训练文本的类型、主题和风格等都十分敏感
  • n元语言模型的独立性假设的前提时一个文本中的当前词出现的概率只与它前面相邻的n-1个词相关,但这种假设在很多情况下是明显不成立的

九、软件推荐

  • SRILM

美国SRI实现的语言模型工具
http://www.speech.sri.com/projects/srilm/

细节可参阅网站和文档
http://www.speech.sri.com/projects/srilm/papers/icslp2002-srilm.pdf

  • CMU Statistical LMToolkit

卡内基梅隆大学的Roni Rosenfeld开发
http://mi.eng.cam.ac.uk/~prc14/toolkit.html

相关文章: