本系列第三篇,承接前面的《浅谈机器学习基础》和《浅谈深度学习基础》。
自然语言处理绪论
什么是自然语言处理?
自然语言处理是研究人与人交际中以及人与计算机交际中的语言问题的一门学科。自然语言处理要研制表示语言能力和语言应用的模型,建立计算框架来实现这样的语言模型,提出相应的方法来不断完善这样的语言模型,根据这样的语言模型设计各种实用系统,并探讨这些实用系统的评测技术。
一般认为,自然语言处理中存在两种不同的研究方法,一种是理性主义方法,一种是经验主义方法。
理性主义的代表人物是乔姆斯基,主张建立符号处理系统,试图刻画人类思维的模型或方法,由人工编写自然语言处理规则。系统根据规则将自然语言理解为符号结构,再通过符号的意义推导出该结构的意义。
按这种思路,在自然语言处理系统中,一般先由词法分析器按照人编写的词法规则对输入句子的单词进行词法分析,然后,语法分析器根据人设计的语法规则对输入句子进行句法分析,最后再根据一套变换规则将语法结构映射到语义符号(如逻辑表达式,语义网络,中间语言等),进行语义分析。
而经验主义认为,人脑并不是从一开始就具有一些具体的处理原则和对具体语言成分的处理方法,而是假定孩子的大脑一开始具有处理联想、模式识别和泛化处理的能力,这些能力能够使孩子充分利用感官输入来掌握具体的自然语言处理结构。
理性主义试图刻画的是人类思维的模型或方法。对于这种方法而言,某种语言的真实文本数据只是提供间接地证据。而经验主义方法则直接关心如何刻画这种真实的语言本身。
在系统实现方法上,经验主义方法主张通过建立特定的数学模型来学习复杂的、广泛的语言结构,然后利用统计学、模式识别和机器学习等方法来训练模型的参数,以扩大语言使用的规模。因此,经验主义的自然语言处理方法是建立在统计方法基础之上的,因此,我们称其为统计自然语言处理。
20世纪20年代到60年代的近40年里,经验主义处于主导地位;
大约从20世纪60年代中期到20世纪80年代中后期,理性主义的研究方法控制着自然语言处理等领域的研究;
大约在20世纪80年代后期,人们越来越关注工程化、实用化的解决问题方法,经验主义方法被人们重新认识并得到迅速发展,人们开始倾向于结合经验主义与理性主义的方法。
预备知识
熵
熵H(X)
又称自信息,是描述一个随机变量不确定性大小的量,熵越大则不确定性越大,则需要用更多的信息量来消除这种不确定性。前面《浅谈机器学习基础》中讲决策树的时候就提到了香农熵。
在只掌握关于未知分布的部分知识的情况下,符合已知知识的概率分布可能有多个,但使熵值最大的概率分布真实的反映了事件的分布情况。以此为依据构建的模型叫做最大熵模型,后面会详细讲,这里只做简单介绍。
然后是联合熵H(X,Y)
、条件熵H(Y|X)
和互信息I(X;Y)
:
熵H(X)
是描述一个随机变量X
所需要的信息量,而联合熵H(X,Y)
就是描述两个随机变量X
和Y
所需要的信息量,联合熵大于或等于这两个变量中任一个的熵。
互信息I(X;Y)
描述的是两个随机变量X
和Y
之间的相关性,也即已知X
后,Y
不确定性的减少量(熵H(Y)的减少量),反之亦成立。换句话讲,X
与Y
关联越大,越相关,则互信息I(X;Y)
越大。
条件熵H(Y|X)
就是在已知X
的条件下,Y
的熵。因为互信息I(X;Y)
的存在,已知X
会使Y
的熵减少,减少后的Y
的熵就是H(Y|X)
。
从图中也可以看出:H(X,Y) = H(X) + H(Y|X) = H(Y) + H(X|Y)
。回想一下,是不是和条件概率的计算公式有相似的地方。
接下来是相对熵D(p||q)
,相对熵又称Kullback-Leibler差异,或简称KL距离,是衡量相同事件空间里两个概率分布相对差距的测度,当两个随机分布完全相同时,相对熵为0。当两个随机分布的差别增加时,其相对熵期望值也增大。
然后是交叉熵H(X,q)
,X
是随机变量,q
是模型。我们前面讲过交叉熵损失函数,交叉熵的概念就是用来衡量估计模型与真实概率分布之间差异情况的。而困惑度的概念与交叉熵相似,交叉熵对应的困惑度的计算方式为:2的交叉熵次方。交叉熵与困惑度都是越小越证明模型有效。
形式语言与自动机
在乔姆斯基的语法理论中,文法被划分为4种:3型文法、2型文法、1型文法和0型文法,分别称为正则文法、上下文无关文法、上下文相关文法和无约束文法。从0型文法到3型文法,对规则的约束越来越多,每一个正则文法都可以被认为是上下文无关文法,每一个上下文无关文法都是上下文有关文法,而每一个上下文有关文法都可以认为是0型文法。
正则文法要求所有含非终结符号的规则形式为A->Bx
(或A->xB
),分别为左线性正则文法和右线性正则文法。
上下文无关文法不要求所有含非终结符号的规则右侧为Bx
或xB
。
上下文相关文法对左侧的A增加了上下文要求,也即αAβ->αγβ
,只有A
前为α
、A
后为β
才能进行状态转换,也可以看出,若αβ
为空,也即成为了上下文无关文法。
自动机因为后面并没有用到,所以这里只简单提一下。
正则文法与有限状态自动机(FA)一一对应,FA是为研究有限内存的计算过程和某些语言类而抽象出的一种计算模型。有限状态自动机拥有有限数量的状态,每个状态可以迁移到零个或多个状态,输入字串决定执行哪个状态的迁移。有限状态自动机可以表示为一个有向图。FA又分为确定有限状态自动机(DFA)和不确定有限状态自动机(NFA),NFA可以转化为DFA。
上下文无关文法与下推自动机(PDA)一一对应。上下文相关文法与线性界限自动机相对应。无约束文法与图灵机一一对应。
语料库与语言知识库
自然语言处理系统离不开数据和知识库的支持。语料库(corpus base)就是存放语言材料的数据库,而语言知识库比语料库包含更广泛的内容,可以分为两种不同的类型:一类是词典、规则库、语义概念库等,分别与解析过程中的词法分析、句法分析和语义分析相对应;另一类语言知识存在于语料库之中,每个语言单位的出现,其范畴、意义、用法都是确定的。
这部分内容我主要想讲两种为我带来启发的知识库组织形式。